<?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>226146</bug_id>
          
          <creation_ts>2021-05-22 15:42:12 -0700</creation_ts>
          <short_desc>[JSC] Add JIT ICs for `#x in obj` feature</short_desc>
          <delta_ts>2021-06-21 23:41:24 -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>JavaScriptCore</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=221093</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="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762849</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-05-22 15:42:12 -0700</bug_when>
    <thetext>This is needed in order to ship.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765141</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-29 15:43:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/78653813&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770011</commentid>
    <comment_count>2</comment_count>
      <attachid>431495</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-15 16:32:48 -0700</bug_when>
    <thetext>Created attachment 431495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770071</commentid>
    <comment_count>3</comment_count>
      <attachid>431514</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-15 21:03:38 -0700</bug_when>
    <thetext>Created attachment 431514
Test patch for MIPS EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770084</commentid>
    <comment_count>4</comment_count>
      <attachid>431520</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-15 22:38:18 -0700</bug_when>
    <thetext>Created attachment 431520
Test patch for MIPS EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770769</commentid>
    <comment_count>5</comment_count>
      <attachid>431704</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-17 12:29:44 -0700</bug_when>
    <thetext>Created attachment 431704
Baseline-only patch for MIPS EWS debugging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770777</commentid>
    <comment_count>6</comment_count>
      <attachid>431707</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-17 12:56:23 -0700</bug_when>
    <thetext>Created attachment 431707
Baseline-only patch for MIPS EWS debugging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770782</commentid>
    <comment_count>7</comment_count>
      <attachid>431708</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-17 13:03:32 -0700</bug_when>
    <thetext>Created attachment 431708
Baseline-only patch for MIPS EWS debugging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770876</commentid>
    <comment_count>8</comment_count>
      <attachid>431734</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-17 16:18:57 -0700</bug_when>
    <thetext>Created attachment 431734
Patch

Rebasing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770919</commentid>
    <comment_count>9</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-17 18:46:31 -0700</bug_when>
    <thetext>Well, I dunno what was up with MIPS before, but we&apos;re green now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771568</commentid>
    <comment_count>10</comment_count>
      <attachid>431734</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-21 18:51:26 -0700</bug_when>
    <thetext>Comment on attachment 431734
Patch

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

Nice. r=me

&gt; Source/JavaScriptCore/jit/Repatch.cpp:1083
&gt; +        InlineCacheAction action = actionForCell(vm, base);

Do we care about Structure::propertyAccessesAreCacheable for has private brand semantics?

I also wonder if we care about uncacheable dictionary. It looks like setPrivateBrand will always transition.

Not sure if we really care about those cases or not.

My hunch is: we don&apos;t care about Structure::propertyAccessesAreCacheable, but we probably shouldn&apos;t rely on UncacheableDictionary not transitioning. That said, I don&apos;t see in our current implementation how we could do it without always transitioning given that we rely on the m_parentBrand pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771570</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-21 18:54:01 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #10)
&gt; Comment on attachment 431734 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431734&amp;action=review
&gt; 
&gt; Nice. r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/Repatch.cpp:1083
&gt; &gt; +        InlineCacheAction action = actionForCell(vm, base);
&gt; 
&gt; Do we care about Structure::propertyAccessesAreCacheable for has private
&gt; brand semantics?
&gt; 
&gt; I also wonder if we care about uncacheable dictionary. It looks like
&gt; setPrivateBrand will always transition.
&gt; 
&gt; Not sure if we really care about those cases or not.
&gt; 
&gt; My hunch is: we don&apos;t care about Structure::propertyAccessesAreCacheable,
&gt; but we probably shouldn&apos;t rely on UncacheableDictionary not transitioning.
&gt; That said, I don&apos;t see in our current implementation how we could do it
&gt; without always transitioning given that we rely on the m_parentBrand pointer.

When I say &quot;we don&apos;t care&quot;, I mean in terms of correctness:

    bool propertyAccessesAreCacheable()
    {
        return dictionaryKind() != UncachedDictionaryKind
            &amp;&amp; prototypeQueriesAreCacheable()
            &amp;&amp; !(typeInfo().getOwnPropertySlotIsImpure() &amp;&amp; !typeInfo().newImpurePropertyFiresWatchpoints());
    }


I don&apos;t think &quot;typeInfo().getOwnPropertySlotIsImpure&quot; changes the semantics here.

I don&apos;t think prototypeQueriesAreCacheable() changes the semantics here either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771608</commentid>
    <comment_count>12</comment_count>
      <attachid>431734</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-21 23:13:28 -0700</bug_when>
    <thetext>Comment on attachment 431734
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/jit/Repatch.cpp:1083
&gt;&gt;&gt; +        InlineCacheAction action = actionForCell(vm, base);
&gt;&gt; 
&gt;&gt; Do we care about Structure::propertyAccessesAreCacheable for has private brand semantics?
&gt;&gt; 
&gt;&gt; I also wonder if we care about uncacheable dictionary. It looks like setPrivateBrand will always transition.
&gt;&gt; 
&gt;&gt; Not sure if we really care about those cases or not.
&gt;&gt; 
&gt;&gt; My hunch is: we don&apos;t care about Structure::propertyAccessesAreCacheable, but we probably shouldn&apos;t rely on UncacheableDictionary not transitioning. That said, I don&apos;t see in our current implementation how we could do it without always transitioning given that we rely on the m_parentBrand pointer.
&gt; 
&gt; When I say &quot;we don&apos;t care&quot;, I mean in terms of correctness:
&gt; 
&gt;     bool propertyAccessesAreCacheable()
&gt;     {
&gt;         return dictionaryKind() != UncachedDictionaryKind
&gt;             &amp;&amp; prototypeQueriesAreCacheable()
&gt;             &amp;&amp; !(typeInfo().getOwnPropertySlotIsImpure() &amp;&amp; !typeInfo().newImpurePropertyFiresWatchpoints());
&gt;     }
&gt; 
&gt; 
&gt; I don&apos;t think &quot;typeInfo().getOwnPropertySlotIsImpure&quot; changes the semantics here.
&gt; 
&gt; I don&apos;t think prototypeQueriesAreCacheable() changes the semantics here either.

Hmm, good question(s). tryCacheHasPrivateBrand is largely a mimicry of tryCacheCheckPrivateBrand except that it creates AccessCase::{InHit, InMiss}, so I&apos;m kind of relying on the other having been written correctly.

Happy to do follow-up work here if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771611</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-21 23:41:21 -0700</bug_when>
    <thetext>Committed r279105 (239022@main): &lt;https://commits.webkit.org/239022@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431734.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431495</attachid>
            <date>2021-06-15 16:32:48 -0700</date>
            <delta_ts>2021-06-17 16:18:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226146-20210615163247.patch</filename>
            <type>text/plain</type>
            <size>65619</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MmI4ZmVjNjM3Y2U3ODMxNTlhMWI2ZjVkMTA4MTJmN2Y2Y2Q3M2I2Li5iMDVjNDU2YWM5MThhMmFk
Y2UzMDZiZjYyNDQ2MmU2MzIzYTQ1NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAyMS0wNi0xNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIEpJVCBJQ3MgZm9yIGAjeCBpbiBvYmpgIGZlYXR1
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW1wbGVtZW50cyBKSVQgSUNzIGZvciB0aGUgbmV3IGAjeCBpbiBvYmpgIGZlYXR1cmUg
YW5kIHR1cm5zIHRoZSBmZWF0dXJlIG9uIGJ5IGRlZmF1bHQuCisgICAgICAgIEltcGxlbWVudGF0
aW9uIGNsb3NlbHkgZm9sbG93cyBJbkJ5VmFsLCB0aG91Z2ggSGFzUHJpdmF0ZUJyYW5kIGhhcyBh
IGZldyBzdWJ0bGV0aWVzCisgICAgICAgIChuYW1lbHksIGl0IGNhbm5vdCBiZSB2aWV3ZWQgaW4g
dGVybXMgb2YgYSBQcm9wZXJ0eVNsb3QgYW5kIHNob3VsZCBub3QgYmUgY29udmVydGVkIHRvIElu
QnlJZCkuCisKKyAgICAgICAgTWljcm9iZW5jaG1hcmtzOgorICAgICAgICAgICAgaGFzLXByaXZh
dGUtbmFtZSAgICAgICAgNDYuNTc3NystMC4xMzc0ICAgICBeICAgICAgNi4wNTg5Ky0wLjAyOTYg
ICAgICAgIF4gZGVmaW5pdGVseSA3LjY4NzV4IGZhc3RlcgorICAgICAgICAgICAgaGFzLXByaXZh
dGUtYnJhbmQgICAgICAgMjUuODgyMystMC4wNTYxICAgICBeICAgICAxOS4xNTA5Ky0wLjA0NDcg
ICAgICAgIF4gZGVmaW5pdGVseSAxLjM1MTV4IGZhc3RlcgorCisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6
cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5CeUFzTWF0Y2hTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQcml2YXRlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc1ByaXZhdGVOYW1l
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc1ByaXZhdGVC
cmFuZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAg
ICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
SW5CeVZhbEdlbmVyYXRvcjo6SklUSW5CeVZhbEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEhhc1ByaXZhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRIYXNQcml2YXRlU2xv
dyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0SGFzUHJpdmF0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEhhc1ByaXZhdGVTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19wcml2
YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25h
bWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ0lu
QnlGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY0luQnlGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJ
bkJ5KToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVIYXNQcml2YXRlQnJhbmQpOgorICAgICAgICAo
SlNDOjpyZXBhdGNoSGFzUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbkJ5KToK
KyAgICAgICAgKEpTQzo6cmVzZXRIYXNQcml2YXRlQnJhbmQpOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorCiAyMDIx
LTA2LTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbGRw
IGFuZCBzdHAgc3VwcG9ydCBmb3IgRlAgcmVnaXN0ZXJzLCBwbHVzIHNvbWUgYnVnIGZpeGVzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKaW5kZXggMWQ3MzUwYTI5Mzk0NmViNWVmYjYxZmQyNGZhMGUyZmUyYjI4MDcxYy4uYjg1
NWU4ODY1Yjk3Y2RmZGMwZWU4ZTUxZThiOTVkYjU3MTMwMzY3MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNzks
NiArMjc5LDEyIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29kZUJsb2NrKiBjCiAgICAgY2FzZSBBY2Nlc3NUeXBl
OjpJbkJ5VmFsOgogICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6
OkJ5VmFsKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRl
TmFtZToKKyAgICAgICAgcmVzZXRJbkJ5KGNvZGVCbG9jaywgKnRoaXMsIEluQnlLaW5kOjpQcml2
YXRlTmFtZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6SGFzUHJpdmF0
ZUJyYW5kOgorICAgICAgICByZXNldEhhc1ByaXZhdGVCcmFuZChjb2RlQmxvY2ssICp0aGlzKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAg
ICByZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApp
bmRleCAwZjY3NzVmMTZmYmM1YmFhZmQ3YTY3MTE3YzUwMTRmZGY3ZTYzNWMwLi43ZjJmNjI1NmMw
YzI2YmEwOGZmZmIyYzZmZjViNzFhZmI3MzY1YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtNTcsNiArNTcsOCBAQCBl
bnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIFB1dCwKICAgICBJbkJ5SWQsCiAg
ICAgSW5CeVZhbCwKKyAgICBIYXNQcml2YXRlTmFtZSwKKyAgICBIYXNQcml2YXRlQnJhbmQsCiAg
ICAgSW5zdGFuY2VPZiwKICAgICBEZWxldGVCeUlELAogICAgIERlbGV0ZUJ5VmFsLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBhNWY1
MmEwNWFmZTA1YjE4MDViMzU2MTA1NjcxZTJjYzVlZWE3NGNkLi5mYzgxZjY5MDQyOTkzM2M4OTZi
ZDEzNzUyNDdkZWE4NDIxMDViNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjY0LDYgKzI2NCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBoYW5kbGVEZWxldGVCeUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRp
b24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsIERlbGV0ZUJ5U3RhdHVzLCBFQ01BTW9kZSk7CiAKKyAgICBib29sIGhhbmRsZUluQnlB
c01hdGNoU3RydWN0dXJlKFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwg
SW5CeVN0YXR1cyk7CiAgICAgdm9pZCBoYW5kbGVJbkJ5SWQoVmlydHVhbFJlZ2lzdGVyIGRlc3Rp
bmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBJbkJ5U3RhdHVzKTsKIAog
ICAgIC8vIEVpdGhlciByZWdpc3RlciBhIHdhdGNocG9pbnQgb3IgZW1pdCBhIGNoZWNrIGZvciB0
aGlzIGNvbmRpdGlvbi4gUmV0dXJucyBmYWxzZSBpZiB0aGUKQEAgLTQ5NDEsMzIgKzQ5NDIsNDAg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRGVsZXRlQnlJZCgKICAgICByZXR1cm47CiB9
CiAKLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUluQnlJZChWaXJ0dWFsUmVnaXN0ZXIgZGVz
dGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSW5C
eVN0YXR1cyBzdGF0dXMpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbkJ5QXNNYXRjaFN0
cnVjdHVyZShWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIEluQnlTdGF0
dXMgc3RhdHVzKQogewotICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSAmJiBPcHRpb25zOjp1c2VB
Y2Nlc3NJbmxpbmluZygpKSB7Ci0gICAgICAgIGJvb2wgYWxsT0sgPSB0cnVlOwotICAgICAgICBN
YXRjaFN0cnVjdHVyZURhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbWF0Y2hTdHJ1Y3R1cmVEYXRhLmFk
ZCgpOwotICAgICAgICBmb3IgKGNvbnN0IEluQnlWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZh
cmlhbnRzKCkpIHsKLSAgICAgICAgICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQo
KSkpIHsKLSAgICAgICAgICAgICAgICBhbGxPSyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA6IHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpIHsKLSAgICAgICAgICAgICAgICBNYXRjaFN0cnVj
dHVyZVZhcmlhbnQgbWF0Y2hWYXJpYW50OwotICAgICAgICAgICAgICAgIG1hdGNoVmFyaWFudC5z
dHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgICAg
ICAgICAgICAgbWF0Y2hWYXJpYW50LnJlc3VsdCA9IHZhcmlhbnQuaXNIaXQoKTsKKyAgICBpZiAo
IXN0YXR1cy5pc1NpbXBsZSgpIHx8ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgICAgICBkYXRhLT52YXJpYW50cy5hcHBl
bmQoV1RGTW92ZShtYXRjaFZhcmlhbnQpKTsKLSAgICAgICAgICAgIH0KKyAgICBib29sIGFsbE9L
ID0gdHJ1ZTsKKyAgICBNYXRjaFN0cnVjdHVyZURhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbWF0Y2hT
dHJ1Y3R1cmVEYXRhLmFkZCgpOworICAgIGZvciAoY29uc3QgSW5CeVZhcmlhbnQmIHZhcmlhbnQg
OiBzdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0
aW9uU2V0KCkpKSB7CisgICAgICAgICAgICBhbGxPSyA9IGZhbHNlOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHZhcmlh
bnQuc3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAgIE1hdGNoU3RydWN0dXJlVmFyaWFudCBt
YXRjaFZhcmlhbnQ7CisgICAgICAgICAgICBtYXRjaFZhcmlhbnQuc3RydWN0dXJlID0gbV9ncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgbWF0Y2hWYXJpYW50
LnJlc3VsdCA9IHZhcmlhbnQuaXNIaXQoKTsKIAotICAgICAgICBpZiAoYWxsT0spIHsKLSAgICAg
ICAgICAgIGFkZFRvR3JhcGgoRmlsdGVySW5CeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFu
LnJlY29yZGVkU3RhdHVzZXMoKS5hZGRJbkJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHN0
YXR1cykpLCBiYXNlKTsKLSAgICAgICAgICAgIHNldChkZXN0aW5hdGlvbiwgYWRkVG9HcmFwaChN
YXRjaFN0cnVjdHVyZSwgT3BJbmZvKGRhdGEpLCBiYXNlKSk7Ci0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICBkYXRhLT52YXJpYW50cy5hcHBlbmQoV1RGTW92ZShtYXRjaFZhcmlhbnQp
KTsKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChhbGxPSykgeworICAgICAgICBhZGRUb0dy
YXBoKEZpbHRlckluQnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzKCkuYWRkSW5CeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBzdGF0dXMpKSwgYmFzZSk7
CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwgYWRkVG9HcmFwaChNYXRjaFN0cnVjdHVyZSwgT3BJ
bmZvKGRhdGEpLCBiYXNlKSk7CisgICAgfQorCisgICAgcmV0dXJuIGFsbE9LOworfQorCit2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbkJ5SWQoVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9u
LCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEluQnlTdGF0dXMg
c3RhdHVzKQoreworICAgIGlmIChoYW5kbGVJbkJ5QXNNYXRjaFN0cnVjdHVyZShkZXN0aW5hdGlv
biwgYmFzZSwgc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgc2V0KGRlc3RpbmF0aW9u
LCBhZGRUb0dyYXBoKEluQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBiYXNlKSk7CiB9CiAKQEAg
LTgzMDQsMTggKzgzMTMsNTkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY2FzZSBvcF9oYXNfcHJp
dmF0ZV9uYW1lOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSB0aGlzIG9uY2UgSW5C
eVZhbCBoYXMgYmVlbiBvcHRpbWl6ZWQuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQ2CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVOYW1lPigpOwotICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEhhc1ByaXZhdGVOYW1lLCBnZXQoYnl0
ZWNvZGUubV9iYXNlKSwgZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpKSk7CisgICAgICAgICAgICBO
b2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAgICBOb2RlKiBwcm9w
ZXJ0eSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICAgICAgICAgIGJvb2wgY29tcGls
ZWRBc0luQnlJZCA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAg
ICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRD
b25zdGFudFZhbHVlKSkgeworCisgICAgICAgICAgICAgICAgSW5CeVN0YXR1cyBzdGF0dXMgPSBJ
bkJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsCisg
ICAgICAgICAgICAgICAgICAgIG1faWNDb250ZXh0U3RhY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCkp
OworCisgICAgICAgICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9
IHN0YXR1cy5zaW5nbGVJZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAg
ICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmll
ci5jZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFu
dCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxl
SW5CeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlmaWVyLCBzdGF0dXMpOworICAgICAg
ICAgICAgICAgICAgICBjb21waWxlZEFzSW5CeUlkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghY29tcGlsZWRBc0luQnlJZCkKKyAg
ICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSGFzUHJpdmF0ZU5h
bWUsIGJhc2UsIHByb3BlcnR5KSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9oYXNfcHJp
dmF0ZV9uYW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfaGFzX3ByaXZhdGVfYnJh
bmQ6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJbXByb3ZlIHRoaXMgb25jZSBJbkJ5VmFsIGhh
cyBiZWVuIG9wdGltaXplZC4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjYxNDYKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigpOwotICAgICAgICAgICAgc2V0
KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEhhc1ByaXZhdGVCcmFuZCwgZ2V0KGJ5dGVjb2Rl
Lm1fYmFzZSksIGdldChieXRlY29kZS5tX2JyYW5kKSkpOworICAgICAgICAgICAgTm9kZSogYmFz
ZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAgICAgICAgICAgTm9kZSogYnJhbmQgPSBnZXQo
Ynl0ZWNvZGUubV9icmFuZCk7CisgICAgICAgICAgICBib29sIGNvbXBpbGVkQXNNYXRjaFN0cnVj
dHVyZSA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAg
ICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNr
VG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFu
dFZhbHVlKSkgeworCisgICAgICAgICAgICAgICAgSW5CeVN0YXR1cyBzdGF0dXMgPSBJbkJ5U3Rh
dHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsCisgICAgICAg
ICAgICAgICAgICAgIG1faWNDb250ZXh0U3RhY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisg
ICAgICAgICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IHN0YXR1
cy5zaW5nbGVJZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pZGVu
dGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBG
cm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxs
KCkpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJ
bmZvKGZyb3plbiksIGJyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZWRBc01hdGNo
U3RydWN0dXJlID0gaGFuZGxlSW5CeUFzTWF0Y2hTdHJ1Y3R1cmUoYnl0ZWNvZGUubV9kc3QsIGJh
c2UsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoIWNvbXBpbGVkQXNNYXRjaFN0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICBzZXQo
Ynl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSGFzUHJpdmF0ZUJyYW5kLCBiYXNlLCBicmFuZCkp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaGFzX3ByaXZhdGVfYnJhbmQpOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggMTQxNzFkODk2MDhhYzUxNTNlMmRmYjg4YWEyNzg4NGNlN2M5ZjAyMi4uMGI3NDVl
ZjhhNzgwNTNhMjg2YzE4MWNiYWQ3MzdlYzU5NTNkN2QwYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEzODksNyArMTM4OSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNl
cHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgp
KTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygp
OwogICAgIEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywK
KyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluQnlWYWwsIHVzZWRSZWdpc3RlcnMsCiAgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc3R1
YkluZm9HUFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICBpZiAoIUpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKQpAQCAtMTQxNCw0OCArMTQxNCw2OCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2RlKQogICAgIGJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBub2RlLCBVc2VDaGls
ZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SGFzUHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVI
YXNQcml2YXRlKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHByb3BlcnR5T3JCcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNWYWx1ZVJl
Z3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBwcm9wZXJ0eU9yQnJhbmQpOworICAgIHN0
ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKIAorICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0
dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7Ci0gICAgR1BSUmVnIGtleUdQUiA9IGtleS5ncHIoKTsKKyAgICBHUFJSZWcg
cHJvcGVydHlPckJyYW5kR1BSID0gcHJvcGVydHlPckJyYW5kLmdwcigpOworICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgc3BlY3VsYXRlU3ltYm9sKG5v
ZGUtPmNoaWxkMigpLCBrZXlHUFIpOworICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIo
KSwgcHJvcGVydHlPckJyYW5kR1BSKTsKIAogICAgIGJhc2UudXNlKCk7Ci0gICAga2V5LnVzZSgp
OworICAgIHByb3BlcnR5T3JCcmFuZC51c2UoKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25IYXNQcml2YXRlTmFtZSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VHUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGtleUdQUikpOwotICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0UmVncy5w
YXlsb2FkR1BSKCksIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Ci19Ci0KLXZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKLXsK
LSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBicmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7Ci0gICAgR1BSUmVnIGJyYW5kR1BSID0gYnJhbmQuZ3ByKCk7CisgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9u
SGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7Cisg
ICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKKyAg
ICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJ
VFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHR5cGUsIHVzZWRSZWdpc3RlcnMs
CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KHByb3BlcnR5T3JCcmFuZEdQUiksIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BS
KTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgaWYgKCFKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBi
cmFuZEdQUik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0
aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHR5
cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgPyBvcGVyYXRpb25IYXNQcml2YXRlTmFt
ZU9wdGltaXplIDogb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsCisgICAgICAgICAg
ICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisg
ICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShwcm9wZXJ0eU9yQnJhbmRHUFIpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgdHlwZSA9
PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0
aW1pemUgOiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5l
ZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAg
ICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1Yklu
Zm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOworICAgIH0KIAotICAgIGJhc2UudXNlKCk7Ci0g
ICAgYnJhbmQudXNlKCk7CisgICAgbV9qaXQuYWRkSW5CeVZhbChnZW4sIHNsb3dQYXRoLmdldCgp
KTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiAKLSAgICBm
bHVzaFJlZ2lzdGVycygpOwotICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOwotICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kLCByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YnJhbmRHUFIpKTsKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGJsZXNzZWRCb29s
ZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxl
ZEV4cGxpY2l0bHkpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJpdmF0
ZU5hbWUoTm9kZSogbm9kZSkKK3sKKyAgICBjb21waWxlSGFzUHJpdmF0ZShub2RlLCBBY2Nlc3NU
eXBlOjpIYXNQcml2YXRlTmFtZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVI
YXNQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKK3sKKyAgICBjb21waWxlSGFzUHJpdmF0ZShub2Rl
LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGN1cnJlbnRTY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMjliYTI5YWU0NzY2ZWFl
YmM3ZmVjNzhkZjFhYTRkN2Q1NDY1YzZhZS4uZWEwODhiYWUyMDk3ZGI0ZjljOTc3Mzc5MzYxNTYz
MjZlNjQ2NmVjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtNzM4LDkgKzczOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0
QnlJZEZsdXNoKE5vZGUqLCBBY2Nlc3NUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVJbkJ5SWQoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZUluQnlWYWwoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUhh
c1ByaXZhdGUoTm9kZSosIEFjY2Vzc1R5cGUpOwogICAgIHZvaWQgY29tcGlsZUhhc1ByaXZhdGVO
YW1lKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVIYXNQcml2YXRlQnJhbmQoTm9kZSopOwotICAg
IAorCiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVuZGVm
aW5lZChFZGdlIG9wZXJhbmQpOwogICAgIHZvaWQgbm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5j
aE51bGxPclVuZGVmaW5lZChFZGdlIG9wZXJhbmQsIE5vZGUqIGJyYW5jaE5vZGUpOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDdm
MzAzZjMzMTU4OTYwYjRmMDk5YWRlNjFmZjE4ZDBjZmYyNGZjMzIuLjViMDYxNzk0YTgzNjg0Y2Ey
MjczYzg4MWY5ZjkwOWNjODFmNjJjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEyMzUxLDI0ICsxMjM1MSwxMyBAQCBwcml2YXRlOgog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykpOwogICAgIH0KIAot
ICAgIHZvaWQgY29tcGlsZUhhc1ByaXZhdGVOYW1lKCkKLSAgICB7Ci0gICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5z
ZW1hbnRpYyk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25IYXNQ
cml2YXRlTmFtZSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpKSk7Ci0gICAgfQotCi0gICAgdm9p
ZCBjb21waWxlSGFzUHJpdmF0ZUJyYW5kKCkKLSAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRp
Yyk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25IYXNQcml2YXRl
QnJhbmQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKSkpOwotICAgIH0KLQotICAgIHRlbXBsYXRl
PEluQnlLaW5kIGtpbmQsIHR5cGVuYW1lIFN1YnNjcmlwdEtpbmQ+CisgICAgdGVtcGxhdGU8QWNj
ZXNzVHlwZSB0eXBlLCB0eXBlbmFtZSBTdWJzY3JpcHRLaW5kPgogICAgIHZvaWQgY29tcGlsZUlu
QnkoTFZhbHVlIGJhc2UsIFN1YnNjcmlwdEtpbmQgc3Vic2NyaXB0VmFsdWUpCiAgICAgeworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHR5cGUgPT0gQWNjZXNzVHlwZTo6SW5CeUlkIHx8IHR5cGUgPT0g
QWNjZXNzVHlwZTo6SW5CeVZhbCB8fCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1l
IHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKICAgICAgICAgUGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKLSAgICAgICAgaWYgY29uc3Rl
eHByIChraW5kICE9IEluQnlLaW5kOjpCeUlkKQorICAgICAgICBpZiBjb25zdGV4cHIgKHR5cGUg
IT0gQWNjZXNzVHlwZTo6SW5CeUlkKQogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29t
ZVJlZ2lzdGVyKHN1YnNjcmlwdFZhbHVlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1f
bm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0
ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6
bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwpAQCAtMTIzOTIsMTUgKzEyMzgx
LDI4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNb
MF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgYXV0byBiYXNlID0gSlNWYWx1ZVJlZ3MocGFyYW1z
WzFdLmdwcigpKTsKIAorICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBhdXRvIG9wdGltaXphdGlv
bkZ1bmN0aW9uID0gWyZdICgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByICh0
eXBlID09IEFjY2Vzc1R5cGU6OkluQnlJZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBj
b25zdGV4cHIgKHR5cGUgPT0gQWNjZXNzVHlwZTo6SW5CeVZhbCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemU7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgY29uc3RleHByICh0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1l
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1l
T3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Fzc2VydCh0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5k
T3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7CisK
ICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIHN1YnNjcmlwdCA9IFsmXSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgY29uc3RleHByICh0eXBlID09IEFjY2Vzc1R5cGU6OkluQnlJZCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
c3Vic2NyaXB0VmFsdWUucmF3Qml0cygpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7
CiAgICAgICAgICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byBnZW5l
cmF0b3IgPSBbJl0gewotICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0g
SW5CeUtpbmQ6OkJ5SWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByICh0eXBl
ID09IEFjY2Vzc1R5cGU6OkluQnlJZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEJveDxKSVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUsIGJhc2UsCkBAIC0xMjQwOCwx
NCArMTI0MTAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeVZhbEdlbmVyYXRvcj46OmNy
ZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5
cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNl
LCBzdWJzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsIHN1YnNjcmlwdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUik7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9KCk7CiAKICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKLSAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpCisgICAgICAgICAgICAgICAgaWYgY29uc3RleHByICh0
eXBlID09IEFjY2Vzc1R5cGU6OkluQnlJZCkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
RlRMSklUKSkKQEAgLTEyNDMwLDEwICsxMjQzMiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAodHlwZSAhPSBBY2Nlc3NU
eXBlOjpJbkJ5VmFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1
YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgcmV0dXJuR1BSLApAQCAtMTI0NDIsMTQgKzEyNDQ0LDE0IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJl
dHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2Us
IHN1YnNjcmlwdCkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3Bl
cmF0aW9uSW5CeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0
aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIHJldHVybkdQUiwKQEAgLTEyNDU5LDcgKzEyNDYxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5VmFs
T3B0aW1pemUsIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOwpAQCAtMTI0
ODEsMTIgKzEyNDgzLDIyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXBpbGVJbkJ5SWQoKQog
ICAgIHsKLSAgICAgICAgY29tcGlsZUluQnk8SW5CeUtpbmQ6OkJ5SWQ+KGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSksIG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKTsKKyAgICAgICAgY29t
cGlsZUluQnk8QWNjZXNzVHlwZTo6SW5CeUlkPihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBt
X25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxl
SW5CeVZhbCgpCiAgICAgewotICAgICAgICBjb21waWxlSW5CeTxJbkJ5S2luZDo6QnlWYWw+KGxv
d0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpOwor
ICAgICAgICBjb21waWxlSW5CeTxBY2Nlc3NUeXBlOjpJbkJ5VmFsPihsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKTsKKyAgICB9CisKKyAgICB2
b2lkIGNvbXBpbGVIYXNQcml2YXRlTmFtZSgpCisgICAgeworICAgICAgICBjb21waWxlSW5CeTxB
Y2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZT4obG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93
U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVIYXNQ
cml2YXRlQnJhbmQoKQorICAgIHsKKyAgICAgICAgY29tcGlsZUluQnk8QWNjZXNzVHlwZTo6SGFz
UHJpdmF0ZUJyYW5kPihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dTeW1ib2wobV9ub2Rl
LT5jaGlsZDIoKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUhhc093blByb3BlcnR5KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBmZDIzYmI5MWJjOTE3MDkwMjJiMTY2MjMx
NzM1ZjE1MjRjODk5MzE2Li5lZmI0M2MyYzk2ZTI5ZWZmMTJlOGY4MWQyMGUyN2Y5ZDk5Y2ExYTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yOTksOCArMjk5LDYgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNo
IChvcGNvZGVJRCkgewotICAgICAgICBERUZJTkVfU0xPV19PUChoYXNfcHJpdmF0ZV9uYW1lKQot
ICAgICAgICBERUZJTkVfU0xPV19PUChoYXNfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5F
X1NMT1dfT1AobGVzcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AobGVzc2VxKQogICAgICAgICBE
RUZJTkVfU0xPV19PUChncmVhdGVyKQpAQCAtMzc1LDYgKzM3Myw4IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3RyeV9nZXRfYnlfaWQp
CiAgICAgICAgIERFRklORV9PUChvcF9pbl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2lu
X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX2hhc19wcml2YXRlX25hbWUpCisgICAgICAg
IERFRklORV9PUChvcF9oYXNfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dl
dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpCiAgICAg
ICAgIERFRklORV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0KQpAQCAtNTg2LDYgKzU4Niw4IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF90cnlfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5f
YnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbl9ieV92YWwpCisgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9oYXNfcHJpdmF0ZV9uYW1lKQorICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfaGFzX3ByaXZhdGVfYnJhbmQpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlf
aWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX2Rp
cmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGIzMWE5ODhjN2E5ZDQxMWQzMzRhYjdk
OGFjNjUzOTU0Nzg3Y2ViNjAuLjhjYWY5ODcwYmRmZmM2MmNmY2MzM2Y2OWYzMTZmZDkzZjhlOTk4
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTczLDYgKzU3Myw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2YoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKQEAgLTcwNyw2ICs3MDksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2YoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFuY2VvZl9jdXN0b20oY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CkBAIC03NTUsNiArNzU5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdFJpZ2h0U2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwog
ICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0U2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIAorICAg
ICAgICB2b2lkIGVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdp
c3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlKTsK
KyAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGRzdCwgQWNj
ZXNzVHlwZSk7CisKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIHZvaWQg
ZW1pdE5ld0Z1bmNDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3A+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGFjMDUzODA4YWMxMmJkN2M4YTAyZWI3ZGZlNzhj
NjE0Mzc1YmM2OGYuLjY5YmYxYTFjM2Y4YTFhMzkxNjljNmQzOTljMmIwYzY3NmM4OGNmNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCkBAIC0yNDksOCArMjQ5LDggQEAgdm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpm
aW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiAgICAg
ICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbjsKIH0KIAotSklUSW5CeVZhbEdlbmVyYXRvcjo6SklUSW5CeVZhbEdlbmVyYXRvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVn
cyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUikKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRU
eXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpJbkJ5VmFsLCB1c2Vk
UmVnaXN0ZXJzKQorSklUSW5CeVZhbEdlbmVyYXRvcjo6SklUSW5CeVZhbEdlbmVyYXRvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAg
IDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFj
Y2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJ
ZGVudGlmaWVyID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCA0YjQ3OWI5NzZlMWU3NzE2YzAzMzZlNTI1
Zjc3MmVkMzJmY2QxNWNlLi5lZTY4MTQxMDFhODFlYmQxNTViZjRkYjY5M2ZmNDdjOGEyNzhmN2Zi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHVibGljOgogICAgIEpJVEluQnlWYWxHZW5l
cmF0b3IoKSB7IH0KIAogICAgIEpJVEluQnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9j
ayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywKICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpT
VmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBlYjg5MDJhYTVjYWRkODk5NjZkMWQ2YWNiOGFhMzA1
NGJiMzg2NTNhLi43NWRjN2MzNjlmMmFkM2ZhYjMyMGI4ZWI3OWZjN2Q3NTNmNjgwOGY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTUwOCw0MyAr
NTA4LDExMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbEdlbmVy
aWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwg
SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSwgYXJyYXlQcm9maWxl
KSkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZU5h
bWUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBrZXkpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KSkKIHsK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgCisK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkgewor
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlk
SW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOworICAgICAgICByZXR1
cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICB9CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBh
c09iamVjdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSBwcm9wZXJ0eVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7CisgICAgQVNTRVJUKHByb3BlcnR5VmFsdWUuaXNT
eW1ib2woKSk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHByb3BlcnR5VmFsdWUudG9Qcm9wZXJ0eUtl
eShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigp
KTsKKworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0
OjpnZXRQcml2YXRlRmllbGRTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHks
IHNsb3QpOwogCisgICAgQVNTRVJUKENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRl
bnRpZmllckNlbGwocHJvcGVydHlWYWx1ZSkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChwcm9wZXJ0eVZhbHVlLmFz
Q2VsbCgpKTsKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxv
Y2ssIGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSksIGlkZW50aWZpZXIpKQorICAgICAgICByZXBh
dGNoSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmllciwg
Zm91bmQsIHNsb3QsICpzdHViSW5mbywgSW5CeUtpbmQ6OlByaXZhdGVOYW1lKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZvdW5kKSk7Cit9CisKK0pTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZUdlbmVyaWMsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFByb3BlcnR5KSkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKCFiYXNlLT5pc09iamVjdCgp
KSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUlu
dmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgYmFzZSkpOworCisgICAgc3R1Yklu
Zm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkg
eworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZh
bGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOwogICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIHByb3BlcnR5VmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoa2V5KTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5KTsKICAgICBBU1NFUlQocHJvcGVydHlWYWx1
ZS5pc1N5bWJvbCgpKTsKICAgICBhdXRvIHByb3BlcnR5ID0gcHJvcGVydHlWYWx1ZS50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0
aW9uKCkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNPYmplY3Qo
YmFzZSktPmhhc1ByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5KSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1By
aXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5KSkpOwogfQogCi1KU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kLCBFbmNvZGVkSlNWYWx1ZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgRW5jb2RlZEpTVmFsdWUg
YnJhbmQpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFu
ZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCcmFuZCkpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIAorCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwor
ICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFs
T2JqZWN0LCBiYXNlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Cisg
ICAgfQorICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKwor
ICAgIEpTVmFsdWUgYnJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKTsKKyAgICBi
b29sIGZvdW5kID0gYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJpdmF0ZUJyYW5kKGdsb2JhbE9i
amVjdCwgYnJhbmQpOworCisgICAgQVNTRVJUKENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVh
YmxlSWRlbnRpZmllckNlbGwoYnJhbmQpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
ID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoYnJhbmQuYXNDZWxsKCkpOwor
ICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZU9i
amVjdC0+c3RydWN0dXJlKHZtKSwgaWRlbnRpZmllcikpCisgICAgICAgIHJlcGF0Y2hIYXNQcml2
YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIGlkZW50aWZpZXIs
IGZvdW5kLCAqc3R1YkluZm8pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oZm91bmQpKTsKK30KIAorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1By
aXZhdGVCcmFuZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJyYW5kKSkKK3sKKyAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgaWYgKCFiYXNlLT5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9i
amVjdCwgYmFzZSkpOworCisgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAg
aWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmpl
Y3QsIGJhc2VWYWx1ZSkpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9
CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChiYXNlKS0+
aGFzUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGJyYW5kKSkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChiYXNlVmFsdWUp
LT5oYXNQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJy
YW5kKSkpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWRT
dHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZDg3NzA2NmM4NTMzNTE5
NmNhYTVlYjRlYjcxZDdiOTA2YzMxOTZkYy4uY2QzZTFiZDQxNGVjZDE3MGJhNGEyNTU4OTM4ZjFl
ZDU0NDNhYjg5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
QEAgLTE3OCw4ICsxNzgsMTAgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25J
bkJ5SWRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWMKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCB1aW50
cHRyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbEdlbmVy
aWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEFycmF5UHJvZmlsZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9i
amVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9i
amVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVO
YW1lT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRHZW5lcmljLCBFbmNvZGVkSlNW
YWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
SGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwog
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QsIHZvaWQs
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QsIHZvaWQsIChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDU5ZGU3
YmU2NDA3MjE0MTRkMTU1Y2YzMTY3Y2ZlZWM5ZWNhYjNkMDMuLjE1ZTFkMzQ1NzliNmQ0YzhjMTcw
ZDIzNTBjNmMzNjQ0M2ZmZWE0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xNzEwLDcgKzE3MTAsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QyLCBwcm9maWxlKTsK
IAogICAgIEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFj
Y2Vzc1R5cGU6OkluQnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCkBAIC0x
NzcyLDYgKzE3NzIsOTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCit2b2lkIEpJVDo6ZW1pdEhh
c1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1
YWxSZWdpc3RlciBwcm9wZXJ0eU9yQnJhbmQsIEFjY2Vzc1R5cGUgdHlwZSkKK3sKKyAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwocmVnVDAsIGJhc2UpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVy
dHlPckJyYW5kLCByZWdUMSk7CisKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAg
ICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgdHlwZSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMik7CisgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CisgICAgbV9pbkJ5VmFs
cy5hcHBlbmQoZ2VuKTsKKworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBBY2Nlc3NU
eXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5h
bWUgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworCisgICAgSklUSW5C
eVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKyAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKHR5cGUgPT0gQWNjZXNzVHlwZTo6
SGFzUHJpdmF0ZU5hbWUgPyBvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplIDogb3BlcmF0
aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHJlZ1QxKTsKKyNlbHNl
CisgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKworICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CisgICAgbW92ZShUcnVzdGVkSW1tMzIo
Ynl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CisKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFz
ZUdQUiA9IHJlZ1QwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlPckJyYW5kR1BSID0g
cmVnVDE7CisgICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNB
Uk02NCgpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5T3JCcmFuZEdQUiA9PSBhcmd1bWVu
dEdQUjEpOworCisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgc3R1Yklu
Zm9HUFIpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlv
bkhhc1ByaXZhdGVOYW1lT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZU9wdGltaXplKT46OnZhbHVlKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNs
dHlwZShvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOworICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOworCisgICAgQ2FsbCBjYWxsOworICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4u
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2
YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUgOiBvcGVyYXRpb25IYXNQ
cml2YXRlQnJhbmRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgPyBvcGVyYXRpb25IYXNQcml2YXRl
TmFtZU9wdGltaXplIDogb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQor
CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7CisgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUu
bV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6
SGFzUHJpdmF0ZU5hbWUpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZh
dGVOYW1lPigpOworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2RzdCwgQWNjZXNz
VHlwZTo6SGFzUHJpdmF0ZU5hbWUpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0
ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigp
OworICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5
dGVjb2RlLm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7Cit9CisKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
eworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKKyAgICBlbWl0SGFzUHJp
dmF0ZVNsb3coYnl0ZWNvZGUubV9kc3QsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7Cit9
CisKIHZvaWQgSklUOjplbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlv
bkNoZWNrcykKIHsKICAgICBpZiAoIW5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5k
ZXggZjQ3YzkzMzg3YmIyOGY0NGQyNzEwOWIyZWQyMDM0NTZjNTM5NGYyNi4uNThlNWQ1MmZlNWIw
OGFlMjllM2U1ZGRkZTNkNzQ2Nzk2N2YyMzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC05MjQsNyArOTI0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCBy
ZWdUNCwgcHJvZmlsZSk7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpJbkJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCks
IEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtOTUxLDYgKzk1MSw2MSBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgY2FsbCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0
ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JC
cmFuZCwgQWNjZXNzVHlwZSB0eXBlKQoreworICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVn
VDAsIHByb3BlcnR5T3JCcmFuZCwgcmVnVDMsIHJlZ1QyKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOworCisgICAgSklUSW5CeVZhbEdlbmVyYXRvciBnZW4o
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIHR5cGUsIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1
ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSW52YWxpZEdQUlJlZyk7CisgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAg
bV9pbkJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdU
MCk7Cit9CisKK3ZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGRz
dCwgQWNjZXNzVHlwZSB0eXBlKQoreworICAgIEFTU0VSVCh0eXBlID09IEFjY2Vzc1R5cGU6Okhh
c1ByaXZhdGVOYW1lIHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKKwor
ICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgr
K107CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgPyBvcGVy
YXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplIDogb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0
aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBn
ZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSk7CisKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKKyAgICBlbWl0SGFzUHJp
dmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5
LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2Rl
Lm1fZHN0LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7Cit9CisKK3ZvaWQgSklUOjplbWl0
X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQ
cml2YXRlQnJhbmQ+KCk7CisgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVj
b2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5k
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigpOwor
ICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2RzdCwgQWNjZXNzVHlwZTo6SGFzUHJp
dmF0ZUJyYW5kKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5l
ZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogewogICAgIGlmICghbmVlZHNWYXJJbmplY3Rpb25DaGVj
a3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBkZWIxYWQ4MDkzODM2
ODlmZjIyN2QyMTg0MTcxMTNhNTlhYmI2YTA0Li4zN2E4MGIyOTU3NzIxMGYzNWUwNmQ4MWJhMTM0
NWY2OTc4MDA5NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTky
Miw2ICs5MjIsMzIgQEAgdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVAKICAgICB9CiB9CiAKK2lubGlu
ZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlT3B0aW1pemluZ0luQnlG
dW5jdGlvbihJbkJ5S2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2Ug
SW5CeUtpbmQ6OkJ5SWQ6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsK
KyAgICBjYXNlIEluQnlLaW5kOjpCeVZhbDoKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkluQnlW
YWxPcHRpbWl6ZTsKKyAgICBjYXNlIEluQnlLaW5kOjpQcml2YXRlTmFtZToKKyAgICAgICAgcmV0
dXJuIG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2lubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+IGFwcHJvcHJpYXRlR2VuZXJpY0luQnlGdW5jdGlvbihJbkJ5S2luZCBraW5kKQorewor
ICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgSW5CeUtpbmQ6OkJ5SWQ6CisgICAgICAgIHJl
dHVybiBvcGVyYXRpb25JbkJ5SWRHZW5lcmljOworICAgIGNhc2UgSW5CeUtpbmQ6OkJ5VmFsOgor
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uSW5CeVZhbEdlbmVyaWM7CisgICAgY2FzZSBJbkJ5S2lu
ZDo6UHJpdmF0ZU5hbWU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25IYXNQcml2YXRlTmFtZUdl
bmVyaWM7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnkoCiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBDYWNo
ZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwKICAgICBib29sIHdhc0ZvdW5kLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQg
a2luZCkKQEAgLTEwMTYsMTcgKzEwNDIsMTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlSW5CeSgKIAogICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsK
ICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKIAotICAg
ICAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgICAgICBjYXNlIEluQnlLaW5kOjpCeUlk
OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CisgICAgICAgICAg
ICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkKICAgICAgICAgICAgICAgICBJbmxpbmVBY2Nl
c3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9j
YXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBJbkJ5S2luZDo6QnlWYWw6CisgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNK
dW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBA
IC0xMDQyLDExICsxMDYzLDUzIEBAIHZvaWQgcmVwYXRjaEluQnkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiCiAKICAgICBpZiAo
dHJ5Q2FjaGVJbkJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkg
ewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluUmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlT2Jq
ZWN0LT5jbGFzc0luZm8oZ2xvYmFsT2JqZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwotICAgICAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6
QnlJZCkKLSAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5m
bywgb3BlcmF0aW9uSW5CeUlkR2VuZXJpYyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJl
cGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeVZhbEdl
bmVyaWMpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8s
IGFwcHJvcHJpYXRlR2VuZXJpY0luQnlGdW5jdGlvbihraW5kKSk7CisgICAgfQorfQorCitzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVIYXNQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBD
YWNoZWFibGVJZGVudGlmaWVyIGJyYW5kSUQsIGJvb2wgd2FzRm91bmQsIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElk
ZW50aWZpZXI6OmZyb21VaWQodm0sIGJyYW5kSUQudWlkKCkpOworCisgICAgeworICAgICAgICBH
Q1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFw
KTsKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGJhc2UtPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAgSW5saW5lQ2FjaGVBY3Rpb24gYWN0aW9u
ID0gYWN0aW9uRm9yQ2VsbCh2bSwgYmFzZSk7CisgICAgICAgIGlmIChhY3Rpb24gIT0gQXR0ZW1w
dFRvQ2FjaGUpCisgICAgICAgICAgICByZXR1cm4gYWN0aW9uOworCisgICAgICAgIGJvb2wgaXNC
YXNlUHJvcGVydHkgPSB0cnVlOworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluQWRkQWNjZXNz
Q2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CisK
KyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0s
IGNvZGVCbG9jaywgd2FzRm91bmQgPyBBY2Nlc3NDYXNlOjpJbkhpdCA6IEFjY2Vzc0Nhc2U6Oklu
TWlzcywgYnJhbmRJRCwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSk7CisKKyAg
ICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJyYW5kSUQsIFdURk1vdmUobmV3Q2Fz
ZSkpOworCisgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgeworICAgICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFz
c0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CisKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHJlc3VsdC5jb2RlKCkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVT
dHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZv
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkp
OworICAgICAgICB9CiAgICAgfQorCisgICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZO
ZWVkZWQodm0sIHN0dWJJbmZvLCBjb2RlQmxvY2ssIHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVz
dWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsK
K30KKwordm9pZCByZXBhdGNoSGFzUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZU9iamVjdCwgQ2FjaGVh
YmxlSWRlbnRpZmllciBicmFuZElELCBib29sIHdhc0ZvdW5kLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOworCisgICAgaWYgKHRyeUNhY2hlSGFzUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBicmFuZElELCB3YXNGb3VuZCwgc3R1YkluZm8pID09IEdpdmVV
cE9uQ2FjaGUpCisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5m
bywgb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKApAQCAtMTcyOCwxNiArMTc5MSwx
NyBAQCB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbgogCiB2b2lkIHJlc2V0SW5CeShDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBJbkJ5S2luZCBraW5kKQog
ewotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgSW5CeUtpbmQ6OkJ5SWQ6Ci0gICAgICAg
IHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUpOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
YXBwcm9wcmlhdGVPcHRpbWl6aW5nSW5CeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICBpZiAoa2luZCA9
PSBJbkJ5S2luZDo6QnlJZCkKICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJ
bkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
bkJ5S2luZDo6QnlWYWw6Ci0gICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBz
dHViSW5mbywgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKKyAgICBlbHNlCiAgICAgICAgIElu
bGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhj
b2RlQmxvY2ssIHN0dWJJbmZvKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorfQorCit2b2lkIHJl
c2V0SGFzUHJpdmF0ZUJyYW5kKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8pCit7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNz
OjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywg
c3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guaAppbmRleCA3MmM2NmIyODkxNDNiOTAwYmFiNzA5OGQ3ZTI3ZGI5OWQ0ODI3MDFjLi5jMTlm
MDJkNGQ0MDE5NTgxZTVhOTRhYmQ2MzczYzBhYzM2MjlkOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guaApAQCAtNTAsNyArNTAsOCBAQCBlbnVtIGNsYXNzIERlbEJ5S2luZCB7CiAK
IGVudW0gY2xhc3MgSW5CeUtpbmQgewogICAgIEJ5SWQsCi0gICAgQnlWYWwKKyAgICBCeVZhbCwK
KyAgICBQcml2YXRlTmFtZQogfTsKIAogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0
dXJlU3R1YkluZm8mKTsKQEAgLTU4LDYgKzU5LDcgQEAgdm9pZCByZXBhdGNoR2V0QnkoSlNHbG9i
YWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb24K
IHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVl
LCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3Qm
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwogdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNH
bG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBT
dHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5
S2luZCwgRUNNQU1vZGUpOwogdm9pZCByZXBhdGNoSW5CeShKU0dsb2JhbE9iamVjdCosIENvZGVC
bG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgYm9vbCB3YXNGb3VuZCwgY29u
c3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBJbkJ5S2luZCk7Cit2b2lkIHJl
cGF0Y2hIYXNQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVj
dCosIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsICBTdHJ1Y3R1cmVTdHViSW5m
byYpOwogdm9pZCByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBDb2Rl
QmxvY2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZv
Jik7CiB2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxv
Y2sqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVy
ZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJ
bmZvJiwgYm9vbCB3YXNGb3VuZCk7CkBAIC03MCw2ICs3Miw3IEBAIHZvaWQgcmVzZXRHZXRCeShD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0
QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5
KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgSW5CeUtpbmQpOwordm9pZCByZXNldEhh
c1ByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNl
dEluc3RhbmNlT2YoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRD
aGVja1ByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBy
ZXNldFNldFByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNzMz
NmE1YTMzMDg4MmU3ZTQ0ZTcxNGE3YjA1MDgwMjA4ZDE5NzdmNS4uOTViOWRhZWFiZjc3MjBkMDZj
OWRlMDMxYzJiM2RkYTVmYjVmN2M3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xNDMyLDYgKzE0MzIsMzUgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCkKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3BlcmFuZChjYWxs
RnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5t
X3Byb3BlcnR5KSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOwogfQogCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaGFzX3ByaXZhdGVfbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEhhc1ByaXZhdGVOYW1lPigpOwor
ICAgIGF1dG8gYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFz
ZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfVEhST1co
Y3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUpKTsK
KworICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX3Byb3BlcnR5KTsKKyAgICBBU1NFUlQocHJvcGVydHlWYWx1ZS5pc1N5bWJvbCgpKTsKKyAg
ICBhdXRvIHByb3BlcnR5ID0gcHJvcGVydHlWYWx1ZS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVj
dCk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7CisKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVG
aWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5KSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfaGFzX3ByaXZhdGVfYnJhbmQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKwor
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+KCk7CisgICAgYXV0
byBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAg
ICBpZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVJ
bnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOworCisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQcml2YXRlQnJh
bmQoZ2xvYmFsT2JqZWN0LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9icmFuZCkp
KSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfZ2V0dGVyX2J5X2lk
KQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCmluZGV4IDQzYzZjYTg0NTMwZTVmNDdhN2RkN2I2OThmNjRhMTM4YmNl
MDQyZTguLmZiZmQ1M2NjNTUxZjdiZjZmMjc2ZWVmNWU0MGZiMmQyNjMxODFlMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC03Myw2ICs3Myw4
IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhf
dGhpcyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW5fYnlfdmFsKTsKK0xMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaGFzX3ByaXZhdGVfbmFtZSk7CitMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hhc19wcml2YXRlX2JyYW5kKTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGNmMGQ2MGNm
MTMzZjQ4ZmQzMmY5OGE4MTliMWQ4ZWM0NWMxN2FjZmMuLjcxMjliMGFiMzBmMmEyOTA3NWE5ODk3
ZDIxMGRjODlhZThmOGVhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIwMTAsOCArMjAxMCw2IEBAIGlmIG5vdCBK
U1ZBTFVFNjQKICAgICBzbG93UGF0aE9wKGdldF9wcm90b3R5cGVfb2YpCiBlbmQKIAotc2xvd1Bh
dGhPcChoYXNfcHJpdmF0ZV9uYW1lKQotc2xvd1BhdGhPcChoYXNfcHJpdmF0ZV9icmFuZCkKIHNs
b3dQYXRoT3AoaXNfY2FsbGFibGUpCiBzbG93UGF0aE9wKGlzX2NvbnN0cnVjdG9yKQogc2xvd1Bh
dGhPcChsZXNzKQpAQCAtMjA0NCw2ICsyMDQyLDggQEAgZW5kCiAKIGxsaW50U2xvd1BhdGhPcChp
bl9ieV9pZCkKIGxsaW50U2xvd1BhdGhPcChpbl9ieV92YWwpCitsbGludFNsb3dQYXRoT3AoaGFz
X3ByaXZhdGVfbmFtZSkKK2xsaW50U2xvd1BhdGhPcChoYXNfcHJpdmF0ZV9icmFuZCkKIGxsaW50
U2xvd1BhdGhPcChkZWxfYnlfaWQpCiBsbGludFNsb3dQYXRoT3AoZGVsX2J5X3ZhbCkKIGxsaW50
U2xvd1BhdGhPcChpbnN0YW5jZW9mKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYTFjNDEzMTA4NjE0Zjc4N2Y2ZWMwMzRmMjcw
NDYwMWFjMmZhNjg3My4uMTEyOTU0YmI5YjZlNTAxMzY4ODNiNzQ1NmNiMWU4MzE4ZmI1YTUxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCkBAIC04MzAsMzUgKzgzMCw2IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfaXNfY29uc3RydWN0b3IpCiAgICAgUkVUVVJOKGpzQm9vbGVhbihHRVRfQyhieXRlY29k
ZS5tX29wZXJhbmQpLmpzVmFsdWUoKS5pc0NvbnN0cnVjdG9yKHZtKSkpOwogfQogCi1KU0NfREVG
SU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUpCi17Ci0gICAg
QkVHSU4oKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BIYXNQcml2YXRlTmFtZT4o
KTsKLSAgICBhdXRvIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgp
OwotICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIFRIUk9XKGNyZWF0ZUlu
dmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlKSk7Ci0KLSAgICBh
dXRvIHByb3BlcnR5VmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7
Ci0gICAgQVNTRVJUKHByb3BlcnR5VmFsdWUuaXNTeW1ib2woKSk7Ci0gICAgYXV0byBwcm9wZXJ0
eSA9IHByb3BlcnR5VmFsdWUudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwotICAgIEVYQ0VQ
VElPTl9BU1NFUlQoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwotCi0gICAgUkVUVVJOKGpzQm9v
bGVhbihhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eSkpKTsKLX0KLQotSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9o
YXNfcHJpdmF0ZV9icmFuZCkKLXsKLSAgICBCRUdJTigpOwotCi0gICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKLSAgICBhdXRvIGJhc2VWYWx1ZSA9IEdFVF9D
KGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOwotICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0
KCkpCi0gICAgICAgIFRIUk9XKGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9i
amVjdCwgYmFzZVZhbHVlKSk7Ci0KLSAgICBSRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJhc2VW
YWx1ZSktPmhhc1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIEdFVF9DKGJ5dGVjb2RlLm1fYnJh
bmQpLmpzVmFsdWUoKSkpKTsKLX0KLQogdGVtcGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4KIEFMV0FZ
U19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG9yT3BlblRyeUZhc3RJbXBsKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGM4MzA5ODFi
MDM5MzQzMjNjNDE1MzM1MWU4NjZkNmIxZTBjNmYyM2EuLmQ4ZDE1MDFmYjM1YmFjMjc5NGM2ZDk0
MTAyNzFiYjY4ZjRjYzA1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNTEsOCArMjUxLDYgQEAgSlNDX0RFQ0xBUkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfdHlwZW9mX2lzX29iamVjdCk7CiBKU0NfREVDTEFSRV9DT01N
T05fU0xPV19QQVRIKHNsb3dfcGF0aF90eXBlb2ZfaXNfZnVuY3Rpb24pOwogSlNDX0RFQ0xBUkVf
Q09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaXNfY2FsbGFibGUpOwogSlNDX0RFQ0xBUkVfQ09N
TU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaXNfY29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ09N
TU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaGFzX3ByaXZhdGVfbmFtZSk7Ci1KU0NfREVDTEFSRV9D
T01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9icmFuZCk7CiBKU0NfREVDTEFS
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9zdHJjYXQpOwogSlNDX0RFQ0xBUkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfdG9fcHJpbWl0aXZlKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9T
TE9XX1BBVEgoc2xvd19wYXRoX3RvX3Byb3BlcnR5X2tleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA5NWFiOWFjMGY0Y2U1ODViMmVkYmFkYTdh
ZmExYjE3ZDJjZTRhYWJiLi42N2NmYjk5ZjM5N2UxODFmZThiYmVhYTNjYWZlZjAxYTUxNmM0YjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUy
NCw3ICs1MjQsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKICAg
ICB2KEJvb2wsIHVzZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBzdGF0aWMgZGF0YSBmaWVs
ZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRz
LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2
YXRlIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKICAgICB2KEJvb2wsIHVzZVByaXZh
dGVNZXRob2RzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJz
dGFuZCBwcml2YXRlIG1ldGhvZHMgaW5zaWRlIGNsYXNzZXMuIikgXAotICAgIHYoQm9vbCwgdXNl
UHJpdmF0ZUluLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVy
c3RhbmQgcHJpdmF0ZSBtZW1iZXIgZXhpc3RlbmNlIGNoZWNrcyB3aXRoIHRoZSBgaW5gIG9wZXJh
dG9yLiIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVJbiwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1
ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZW1iZXIgZXhpc3RlbmNlIGNo
ZWNrcyB3aXRoIHRoZSBgaW5gIG9wZXJhdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2Vt
Ymx5U3RyZWFtaW5nLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0byBydW4gV2ViQXNzZW1ibHkncyBT
dHJlYW1pbmcgQVBJIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzLCB0
cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBmcm9tIHRoZSB3YXNtIHJlZmVyZW5jZXMgc3BlYy4i
KSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzLCBm
YWxzZSwgTm9ybWFsLCAiQWxsb3cgZnVuY3Rpb24gdHlwZXMgZnJvbSB0aGUgd2FzbSB0eXBlZCBm
dW5jdGlvbiByZWZlcmVuY2VzIHNwZWMuIikgXApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjMjVlODI3NTQwMzdhNjlkYjVkMWJlZWM0MWFi
YzczOTE0ODEyNGJlLi42NjA1NTU5MWIwOWM4M2EwNmExYTcwZTVkNjk5ZjllNDVmMmExY2M3IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDIxLTA2LTE1ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bz
b255LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgSklUIElDcyBmb3IgYCN4IGluIG9iamAgZmVh
dHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2
MTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
aWNyb2JlbmNobWFya3MvaGFzLXByaXZhdGUtYnJhbmQuanM6IEFkZGVkLgorICAgICAgICAqIG1p
Y3JvYmVuY2htYXJrcy9oYXMtcHJpdmF0ZS1uYW1lLmpzOiBBZGRlZC4KKwogMjAyMS0wNi0xMyAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTc2CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9oYXMtcHJpdmF0ZS1icmFuZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2hhcy1wcml2YXRlLWJyYW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4MTk3ZDhhZjQ4YmYzZGI3NDFi
Zjc4YzNhZGM5ZTY3ZDUxYzdjNGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9oYXMtcHJpdmF0ZS1icmFuZC5qcwpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBh
c3NlcnQoYikgeworICBpZiAoIWIpIHRocm93IG5ldyBFcnJvcjsKK30KKworY2xhc3MgTSB7Cisg
ICN4KCkge30KKyAgc3RhdGljIGlzTShvYmopIHsKKyAgICByZXR1cm4gI3ggaW4gb2JqOworICB9
Cit9Citub0lubGluZShNLnByb3RvdHlwZS5pc00pOworCitmdW5jdGlvbiB0ZXN0KCkgeworICBh
c3NlcnQoTS5pc00obmV3IE0pICYmICFNLmlzTShNKSAmJiAhTS5pc00oe30pKTsKK30KK25vSW5s
aW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICB0ZXN0KCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtcHJpdmF0ZS1uYW1lLmpzIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFzLXByaXZhdGUtbmFtZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MzU0MTU5NjdjZWExOWYxMDQ1YmUzNGI2YWY2NDMzMzMxNTM3NTNkCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFzLXByaXZhdGUtbmFtZS5qcwpAQCAtMCwwICsx
LDE5IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICBpZiAoIWIpIHRocm93IG5ldyBFcnJvcjsK
K30KKworY2xhc3MgRiB7CisgICN4OworICBzdGF0aWMgaXNGKG9iaikgeworICAgIHJldHVybiAj
eCBpbiBvYmo7CisgIH0KK30KK25vSW5saW5lKEYucHJvdG90eXBlLmlzRik7CisKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgIGFzc2VydChGLmlzRihuZXcgRikgJiYgIUYuaXNGKEYpICYmICFGLmlzRih7
fSkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kp
CisgIHRlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431514</attachid>
            <date>2021-06-15 21:03:38 -0700</date>
            <delta_ts>2021-06-15 22:33:33 -0700</delta_ts>
            <desc>Test patch for MIPS EWS</desc>
            <filename>226146-for-mips.diff</filename>
            <type>text/plain</type>
            <size>64137</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YzI1ZTgyNzU0MDM3Li42NjA1NTU5MWIwOWMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDYtMTUgIFJv
c3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtKU0NdIEFk
ZCBKSVQgSUNzIGZvciBgI3ggaW4gb2JqYCBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9oYXMtcHJpdmF0ZS1i
cmFuZC5qczogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2hhcy1wcml2YXRlLW5h
bWUuanM6IEFkZGVkLgorCiAyMDIxLTA2LTEzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjY1NzYKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1wcml2YXRlLWJy
YW5kLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFzLXByaXZhdGUtYnJhbmQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iODE5N2Q4YWY0OGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtcHJpdmF0ZS1icmFuZC5q
cwpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICBpZiAoIWIpIHRocm93
IG5ldyBFcnJvcjsKK30KKworY2xhc3MgTSB7CisgICN4KCkge30KKyAgc3RhdGljIGlzTShvYmop
IHsKKyAgICByZXR1cm4gI3ggaW4gb2JqOworICB9Cit9Citub0lubGluZShNLnByb3RvdHlwZS5p
c00pOworCitmdW5jdGlvbiB0ZXN0KCkgeworICBhc3NlcnQoTS5pc00obmV3IE0pICYmICFNLmlz
TShNKSAmJiAhTS5pc00oe30pKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDFlNjsgKytpKQorICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9oYXMtcHJpdmF0ZS1uYW1lLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFz
LXByaXZhdGUtbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjIzNTQxNTk2N2NlYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2hhcy1wcml2YXRlLW5hbWUuanMKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gYXNzZXJ0KGIp
IHsKKyAgaWYgKCFiKSB0aHJvdyBuZXcgRXJyb3I7Cit9CisKK2NsYXNzIEYgeworICAjeDsKKyAg
c3RhdGljIGlzRihvYmopIHsKKyAgICByZXR1cm4gI3ggaW4gb2JqOworICB9Cit9Citub0lubGlu
ZShGLnByb3RvdHlwZS5pc0YpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICBhc3NlcnQoRi5pc0Yo
bmV3IEYpICYmICFGLmlzRihGKSAmJiAhRi5pc0Yoe30pKTsKK30KK25vSW5saW5lKHRlc3QpOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiMmI4ZmVjNjM3Y2UuLmIwNWM0NTZhYzkxOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjEtMDYtMTUgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtKU0NdIEFkZCBKSVQgSUNzIGZvciBg
I3ggaW4gb2JqYCBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjYxNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgSklUIElDcyBmb3IgdGhlIG5ldyBgI3gg
aW4gb2JqYCBmZWF0dXJlIGFuZCB0dXJucyB0aGUgZmVhdHVyZSBvbiBieSBkZWZhdWx0LgorICAg
ICAgICBJbXBsZW1lbnRhdGlvbiBjbG9zZWx5IGZvbGxvd3MgSW5CeVZhbCwgdGhvdWdoIEhhc1By
aXZhdGVCcmFuZCBoYXMgYSBmZXcgc3VidGxldGllcworICAgICAgICAobmFtZWx5LCBpdCBjYW5u
b3QgYmUgdmlld2VkIGluIHRlcm1zIG9mIGEgUHJvcGVydHlTbG90IGFuZCBzaG91bGQgbm90IGJl
IGNvbnZlcnRlZCB0byBJbkJ5SWQpLgorCisgICAgICAgIE1pY3JvYmVuY2htYXJrczoKKyAgICAg
ICAgICAgIGhhcy1wcml2YXRlLW5hbWUgICAgICAgIDQ2LjU3NzcrLTAuMTM3NCAgICAgXiAgICAg
IDYuMDU4OSstMC4wMjk2ICAgICAgICBeIGRlZmluaXRlbHkgNy42ODc1eCBmYXN0ZXIKKyAgICAg
ICAgICAgIGhhcy1wcml2YXRlLWJyYW5kICAgICAgIDI1Ljg4MjMrLTAuMDU2MSAgICAgXiAgICAg
MTkuMTUwOSstMC4wNDQ3ICAgICAgICBeIGRlZmluaXRlbHkgMS4zNTE1eCBmYXN0ZXIKKworICAg
ICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUluQnlBc01hdGNoU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5CeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSGFzUHJpdmF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVIYXNQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVIYXNQcml2YXRlQnJhbmQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBq
aXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5lcmF0b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IpOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV92YWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRIYXNQcml2YXRlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0SGFzUHJpdmF0ZVNsb3cpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3ByaXZh
dGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1ByaXZhdGUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19wcml2
YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9i
cmFuZCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3By
aWF0ZU9wdGltaXppbmdJbkJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdl
bmVyaWNJbkJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluQnkpOgorICAgICAg
ICAoSlNDOjpyZXBhdGNoSW5CeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSGFzUHJpdmF0ZUJy
YW5kKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEhhc1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChK
U0M6OnJlc2V0SW5CeSk6CisgICAgICAgIChKU0M6OnJlc2V0SGFzUHJpdmF0ZUJyYW5kKToKKyAg
ICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDoKKwogMjAyMS0wNi0xNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIGxkcCBhbmQgc3RwIHN1cHBvcnQgZm9yIEZQIHJlZ2lzdGVycywgcGx1cyBz
b21lIGJ1ZyBmaXhlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDFkNzM1MGEyOTM5NC4uYjg1NWU4ODY1Yjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5jcHAKQEAgLTI3OSw2ICsyNzksMTIgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVz
ZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAg
ICBjYXNlIEFjY2Vzc1R5cGU6OkluQnlWYWw6CiAgICAgICAgIHJlc2V0SW5CeShjb2RlQmxvY2ss
ICp0aGlzLCBJbkJ5S2luZDo6QnlWYWwpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vz
c1R5cGU6Okhhc1ByaXZhdGVOYW1lOgorICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhp
cywgSW5CeUtpbmQ6OlByaXZhdGVOYW1lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nl
c3NUeXBlOjpIYXNQcml2YXRlQnJhbmQ6CisgICAgICAgIHJlc2V0SGFzUHJpdmF0ZUJyYW5kKGNv
ZGVCbG9jaywgKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Oklu
c3RhbmNlT2Y6CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZihjb2RlQmxvY2ssICp0aGlzKTsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oCmluZGV4IDBmNjc3NWYxNmZiYy4uN2YyZjYyNTZjMGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApA
QCAtNTcsNiArNTcsOCBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIFB1
dCwKICAgICBJbkJ5SWQsCiAgICAgSW5CeVZhbCwKKyAgICBIYXNQcml2YXRlTmFtZSwKKyAgICBI
YXNQcml2YXRlQnJhbmQsCiAgICAgSW5zdGFuY2VPZiwKICAgICBEZWxldGVCeUlELAogICAgIERl
bGV0ZUJ5VmFsLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBhNWY1MmEwNWFmZTAuLmZjODFmNjkwNDI5OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI2NCw2ICsyNjQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cywgRUNNQU1vZGUpOwogCisg
ICAgYm9vbCBoYW5kbGVJbkJ5QXNNYXRjaFN0cnVjdHVyZShWaXJ0dWFsUmVnaXN0ZXIgZGVzdGlu
YXRpb24sIE5vZGUqIGJhc2UsIEluQnlTdGF0dXMpOwogICAgIHZvaWQgaGFuZGxlSW5CeUlkKFZp
cnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgSW5CeVN0YXR1cyk7CiAKICAgICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9y
IGVtaXQgYSBjaGVjayBmb3IgdGhpcyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhlCkBA
IC00OTQxLDMyICs0OTQyLDQwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5
SWQoCiAgICAgcmV0dXJuOwogfQogCi12b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbkJ5SWQo
VmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEluQnlTdGF0dXMgc3RhdHVzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5CeUFzTWF0Y2hTdHJ1Y3R1cmUoVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBO
b2RlKiBiYXNlLCBJbkJ5U3RhdHVzIHN0YXR1cykKIHsKLSAgICBpZiAoc3RhdHVzLmlzU2ltcGxl
KCkgJiYgT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewotICAgICAgICBib29sIGFsbE9L
ID0gdHJ1ZTsKLSAgICAgICAgTWF0Y2hTdHJ1Y3R1cmVEYXRhKiBkYXRhID0gbV9ncmFwaC5tX21h
dGNoU3RydWN0dXJlRGF0YS5hZGQoKTsKLSAgICAgICAgZm9yIChjb25zdCBJbkJ5VmFyaWFudCYg
dmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7Ci0gICAgICAgICAgICBpZiAoIWNoZWNrKHZh
cmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgYWxsT0sgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiB2YXJpYW50LnN0cnVjdHVyZVNldCgpKSB7Ci0gICAgICAg
ICAgICAgICAgTWF0Y2hTdHJ1Y3R1cmVWYXJpYW50IG1hdGNoVmFyaWFudDsKLSAgICAgICAgICAg
ICAgICBtYXRjaFZhcmlhbnQuc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShz
dHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgIG1hdGNoVmFyaWFudC5yZXN1bHQgPSB2YXJpYW50
LmlzSGl0KCk7CisgICAgaWYgKCFzdGF0dXMuaXNTaW1wbGUoKSB8fCAhT3B0aW9uczo6dXNlQWNj
ZXNzSW5saW5pbmcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICAgICAg
ZGF0YS0+dmFyaWFudHMuYXBwZW5kKFdURk1vdmUobWF0Y2hWYXJpYW50KSk7Ci0gICAgICAgICAg
ICB9CisgICAgYm9vbCBhbGxPSyA9IHRydWU7CisgICAgTWF0Y2hTdHJ1Y3R1cmVEYXRhKiBkYXRh
ID0gbV9ncmFwaC5tX21hdGNoU3RydWN0dXJlRGF0YS5hZGQoKTsKKyAgICBmb3IgKGNvbnN0IElu
QnlWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgaWYgKCFj
aGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgpKSkgeworICAgICAgICAgICAgYWxsT0sgPSBmYWxz
ZTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGZvciAoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgOiB2YXJpYW50LnN0cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICBNYXRj
aFN0cnVjdHVyZVZhcmlhbnQgbWF0Y2hWYXJpYW50OworICAgICAgICAgICAgbWF0Y2hWYXJpYW50
LnN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIG1hdGNoVmFyaWFudC5yZXN1bHQgPSB2YXJpYW50LmlzSGl0KCk7CiAKLSAgICAgICAg
aWYgKGFsbE9LKSB7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckluQnlTdGF0dXMsIE9w
SW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkSW5CeVN0YXR1cyhjdXJy
ZW50Q29kZU9yaWdpbigpLCBzdGF0dXMpKSwgYmFzZSk7Ci0gICAgICAgICAgICBzZXQoZGVzdGlu
YXRpb24sIGFkZFRvR3JhcGgoTWF0Y2hTdHJ1Y3R1cmUsIE9wSW5mbyhkYXRhKSwgYmFzZSkpOwot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZGF0YS0+dmFyaWFudHMuYXBwZW5kKFdU
Rk1vdmUobWF0Y2hWYXJpYW50KSk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoYWxsT0sp
IHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJJbkJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5t
X3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZEluQnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4o
KSwgc3RhdHVzKSksIGJhc2UpOworICAgICAgICBzZXQoZGVzdGluYXRpb24sIGFkZFRvR3JhcGgo
TWF0Y2hTdHJ1Y3R1cmUsIE9wSW5mbyhkYXRhKSwgYmFzZSkpOworICAgIH0KKworICAgIHJldHVy
biBhbGxPSzsKK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5CeUlkKFZpcnR1YWxS
ZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBJbkJ5U3RhdHVzIHN0YXR1cykKK3sKKyAgICBpZiAoaGFuZGxlSW5CeUFzTWF0Y2hT
dHJ1Y3R1cmUoZGVzdGluYXRpb24sIGJhc2UsIHN0YXR1cykpCisgICAgICAgIHJldHVybjsKKwog
ICAgIHNldChkZXN0aW5hdGlvbiwgYWRkVG9HcmFwaChJbkJ5SWQsIE9wSW5mbyhpZGVudGlmaWVy
KSwgYmFzZSkpOwogfQogCkBAIC04MzA0LDE4ICs4MzEzLDU5IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGNhc2Ugb3BfaGFzX3ByaXZhdGVfbmFtZTogewotICAgICAgICAgICAgLy8gRklYTUU6IElt
cHJvdmUgdGhpcyBvbmNlIEluQnlWYWwgaGFzIGJlZW4gb3B0aW1pemVkLgotICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0NgogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRl
TmFtZT4oKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChIYXNQ
cml2YXRlTmFtZSwgZ2V0KGJ5dGVjb2RlLm1fYmFzZSksIGdldChieXRlY29kZS5tX3Byb3BlcnR5
KSkpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAg
ICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAg
ICAgICAgICBib29sIGNvbXBpbGVkQXNJbkJ5SWQgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYg
KCFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudElu
ZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkKKyAgICAgICAg
ICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKworICAgICAgICAgICAgICAgIElu
QnlTdGF0dXMgc3RhdHVzID0gSW5CeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9w
LT5tX2Jhc2VsaW5lTWFwLAorICAgICAgICAgICAgICAgICAgICBtX2ljQ29udGV4dFN0YWNrLCBj
dXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgICAgIGlmIChDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBzdGF0dXMuc2luZ2xlSWRlbnRpZmllcigpKSB7CisgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRpZmllci51aWQo
KSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJl
ZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChDaGVja0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBwcm9wZXJ0eSk7CisgICAgICAg
ICAgICAgICAgICAgIGhhbmRsZUluQnlJZChieXRlY29kZS5tX2RzdCwgYmFzZSwgaWRlbnRpZmll
ciwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZWRBc0luQnlJZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWNv
bXBpbGVkQXNJbkJ5SWQpCisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRU
b0dyYXBoKEhhc1ByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkpOwogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfaGFzX3ByaXZhdGVfbmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX2hhc19wcml2YXRlX2JyYW5kOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSB0
aGlzIG9uY2UgSW5CeVZhbCBoYXMgYmVlbiBvcHRpbWl6ZWQuCi0gICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQ2CiAgICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4o
KTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChIYXNQcml2YXRl
QnJhbmQsIGdldChieXRlY29kZS5tX2Jhc2UpLCBnZXQoYnl0ZWNvZGUubV9icmFuZCkpKTsKKyAg
ICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAg
IE5vZGUqIGJyYW5kID0gZ2V0KGJ5dGVjb2RlLm1fYnJhbmQpOworICAgICAgICAgICAgYm9vbCBj
b21waWxlZEFzTWF0Y2hTdHJ1Y3R1cmUgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKCFtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRJZGVudCkKKyAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkKKyAgICAgICAgICAgICAg
ICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKworICAgICAgICAgICAgICAgIEluQnlTdGF0
dXMgc3RhdHVzID0gSW5CeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jh
c2VsaW5lTWFwLAorICAgICAgICAgICAgICAgICAgICBtX2ljQ29udGV4dFN0YWNrLCBjdXJyZW50
Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgICAgIGlmIChDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSBzdGF0dXMuc2luZ2xlSWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRpZmllci51aWQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ry
b25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChD
aGVja0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBicmFuZCk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbXBpbGVkQXNNYXRjaFN0cnVjdHVyZSA9IGhhbmRsZUluQnlBc01hdGNoU3RydWN0dXJl
KGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFjb21waWxlZEFzTWF0Y2hTdHJ1Y3R1cmUpCisg
ICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEhhc1ByaXZhdGVC
cmFuZCwgYmFzZSwgYnJhbmQpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2hhc19wcml2
YXRlX2JyYW5kKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDE0MTcxZDg5NjA4YS4uYTkzZDUyZjFhZDllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtMTM4OSw3ICsxMzg5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwo
Tm9kZSogbm9kZSkKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2Fs
bFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmln
aW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0
aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeVZhbEdlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6
REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW5CeVZhbCwgdXNlZFJl
Z2lzdGVycywKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlS
ZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
bV9qaXQpOwogICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpCkBA
IC0xNDE0LDQ4ICsxNDE0LDY4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5VmFs
KE5vZGUqIG5vZGUpCiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0UmVncy5wYXlsb2Fk
R1BSKCksIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQcml2YXRlTmFtZShOb2RlKiBub2RlKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUhhc1ByaXZhdGUoTm9kZSogbm9kZSwgQWNjZXNzVHlwZSB0eXBl
KQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Cisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHlPckJyYW5kKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2Us
IFBheWxvYWRXb3JkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87
CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBs
YWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9
CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgIEdQUlJlZyBrZXlHUFIgPSBr
ZXkuZ3ByKCk7CisgICAgR1BSUmVnIHByb3BlcnR5T3JCcmFuZEdQUiA9IHByb3BlcnR5T3JCcmFu
ZC5ncHIoKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAot
ICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIoKSwga2V5R1BSKTsKKyAgICBzcGVjdWxh
dGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIHByb3BlcnR5T3JCcmFuZEdQUik7CiAKICAgICBiYXNl
LnVzZSgpOwotICAgIGtleS51c2UoKTsKLQotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgSlNW
YWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25I
YXNQcml2YXRlTmFtZSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VHUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGtleUdQUikpOwotICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7Ci0gICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0UmVncy5wYXlsb2Fk
R1BSKCksIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Ci19CisgICAgcHJvcGVy
dHlPckJyYW5kLnVzZSgpOwogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJpdmF0
ZUJyYW5kKE5vZGUqIG5vZGUpCi17Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmQodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2VzOwog
Ci0gICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgIEdQUlJlZyBicmFuZEdQUiA9
IGJyYW5kLmdwcigpOworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNp
dGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4s
IG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlz
LT51c2VkUmVnaXN0ZXJzKCk7CisgICAgSklUSW5CeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCB0eXBlLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YmFzZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShwcm9wZXJ0eU9yQnJhbmRHUFIpLCBy
ZXN1bHRSZWdzLCBzdHViSW5mb0dQUik7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQp
OworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHNwZWN1bGF0ZVN5
bWJvbChub2RlLT5jaGlsZDIoKSwgYnJhbmRHUFIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lID8g
b3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFu
ZE9wdGltaXplLAorICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
R1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlPckJyYW5kR1BSKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgPyBvcGVy
YXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplIDogb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0
aW1pemUsCisgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eU9yQnJhbmRHUFIpKTsKKyAgICB9
CiAKLSAgICBiYXNlLnVzZSgpOwotICAgIGJyYW5kLnVzZSgpOworICAgIG1faml0LmFkZEluQnlW
YWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92
ZShzbG93UGF0aCkpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBKU1ZhbHVlUmVnc0Zs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc1ByaXZhdGVC
cmFuZCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwg
bm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIAordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUhhc1ByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCit7CisgICAgY29tcGlsZUhh
c1ByaXZhdGUobm9kZSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOworfQorCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCit7CisgICAg
Y29tcGlsZUhhc1ByaXZhdGUobm9kZSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKK30K
Kwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hXaXRoU2NvcGUoTm9kZSogbm9kZSkK
IHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjdXJyZW50U2NvcGUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CmluZGV4IDI5YmEyOWFlNDc2Ni4uZWEwODhiYWUyMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC03MzgsOSArNzM4LDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSosIEFjY2Vzc1R5cGUpOwogICAg
IHZvaWQgY29tcGlsZUluQnlJZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSW5CeVZhbChOb2Rl
Kik7CisgICAgdm9pZCBjb21waWxlSGFzUHJpdmF0ZShOb2RlKiwgQWNjZXNzVHlwZSk7CiAgICAg
dm9pZCBjb21waWxlSGFzUHJpdmF0ZU5hbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUhhc1By
aXZhdGVCcmFuZChOb2RlKik7Ci0gICAgCisKICAgICB2b2lkIG5vblNwZWN1bGF0aXZlTm9uUGVl
cGhvbGVDb21wYXJlTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCk7CiAgICAgdm9pZCBub25T
cGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCwgTm9k
ZSogYnJhbmNoTm9kZSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKaW5kZXggN2YzMDNmMzMxNTg5Li41YjA2MTc5NGE4MzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEyMzUxLDI0
ICsxMjM1MSwxMyBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2
NCwgcmVzdWx0cykpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUhhc1ByaXZhdGVOYW1lKCkK
LSAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1D
YWxsKEludDY0LCBvcGVyYXRpb25IYXNQcml2YXRlTmFtZSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQy
KCkpKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlSGFzUHJpdmF0ZUJyYW5kKCkKLSAgICB7
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKElu
dDY0LCBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKSkp
OwotICAgIH0KLQotICAgIHRlbXBsYXRlPEluQnlLaW5kIGtpbmQsIHR5cGVuYW1lIFN1YnNjcmlw
dEtpbmQ+CisgICAgdGVtcGxhdGU8QWNjZXNzVHlwZSB0eXBlLCB0eXBlbmFtZSBTdWJzY3JpcHRL
aW5kPgogICAgIHZvaWQgY29tcGlsZUluQnkoTFZhbHVlIGJhc2UsIFN1YnNjcmlwdEtpbmQgc3Vi
c2NyaXB0VmFsdWUpCiAgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHR5cGUgPT0gQWNjZXNz
VHlwZTo6SW5CeUlkIHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6SW5CeVZhbCB8fCB0eXBlID09IEFj
Y2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lIHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0
ZUJyYW5kKTsKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0
Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihi
YXNlKTsKLSAgICAgICAgaWYgY29uc3RleHByIChraW5kICE9IEluQnlLaW5kOjpCeUlkKQorICAg
ICAgICBpZiBjb25zdGV4cHIgKHR5cGUgIT0gQWNjZXNzVHlwZTo6SW5CeUlkKQogICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHN1YnNjcmlwdFZhbHVlKTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
cikpOwpAQCAtMTIzOTIsMTUgKzEyMzgxLDI4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
YXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgYXV0byBi
YXNlID0gSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKTsKIAorICAgICAgICAgICAgICAgIGNv
bnN0ZXhwciBhdXRvIG9wdGltaXphdGlvbkZ1bmN0aW9uID0gWyZdICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgY29uc3RleHByICh0eXBlID09IEFjY2Vzc1R5cGU6OkluQnlJZCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHR5cGUgPT0gQWNjZXNzVHlwZTo6SW5C
eVZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25JbkJ5VmFsT3B0
aW1pemU7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0eXBlID09IEFj
Y2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Fzc2VydCh0eXBlID09IEFjY2Vz
c1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
b3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9KCk7CisKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIHN1YnNj
cmlwdCA9IFsmXSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJ
bkJ5S2luZDo6QnlJZCkKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByICh0eXBlID09
IEFjY2Vzc1R5cGU6OkluQnlJZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2NyaXB0VmFsdWUucmF3Qml0cygpKTsKICAgICAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgfSgpOwogCiAgICAgICAg
ICAgICAgICAgY29uc3QgYXV0byBnZW5lcmF0b3IgPSBbJl0gewotICAgICAgICAgICAgICAgICAg
ICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgY29uc3RleHByICh0eXBlID09IEFjY2Vzc1R5cGU6OkluQnlJZCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpG
VExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgc3Vic2NyaXB0
VmFsdWUsIGJhc2UsCkBAIC0xMjQwOCwxNCArMTI0MTAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8
SklUSW5CeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLCBzdWJzY3JpcHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsIHN1YnNj
cmlwdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIp
LCBzdHViSW5mb0dQUik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
KCk7CiAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsK
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKLSAgICAg
ICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpCisgICAgICAg
ICAgICAgICAgaWYgY29uc3RleHByICh0eXBlID09IEFjY2Vzc1R5cGU6OkluQnlJZCkKICAgICAg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgp
KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkKQEAgLTEyNDMwLDEwICsxMjQzMiwxMCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVn
aW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
Q2FsbCBzbG93UGF0aENhbGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNv
bnN0ZXhwciAodHlwZSAhPSBBY2Nlc3NUeXBlOjpJbkJ5VmFsKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1p
emF0aW9uRnVuY3Rpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmV0dXJuR1BSLApAQCAtMTI0NDIsMTQg
KzEyNDQ0LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUsIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1
cm5HUFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpG
VExKSVQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQ
Uik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJldHVybkdQUiwK
QEAgLTEyNDU5LDcgKzEyNDYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsIHJldHVybkdQUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1
bmN0aW9uLCByZXR1cm5HUFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2UsIHN1
YnNjcmlwdCkuY2FsbCgpOwpAQCAtMTI0ODEsMTIgKzEyNDgzLDIyIEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGNvbXBpbGVJbkJ5SWQoKQogICAgIHsKLSAgICAgICAgY29tcGlsZUluQnk8SW5CeUtp
bmQ6OkJ5SWQ+KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1fbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpKTsKKyAgICAgICAgY29tcGlsZUluQnk8QWNjZXNzVHlwZTo6SW5CeUlkPihsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSk7CiAg
ICAgfQogCiAgICAgdm9pZCBjb21waWxlSW5CeVZhbCgpCiAgICAgewotICAgICAgICBjb21waWxl
SW5CeTxJbkJ5S2luZDo6QnlWYWw+KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSkpOworICAgICAgICBjb21waWxlSW5CeTxBY2Nlc3NUeXBlOjpJ
bkJ5VmFsPihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQyKCkpKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVIYXNQcml2YXRlTmFtZSgpCisgICAg
eworICAgICAgICBjb21waWxlSW5CeTxBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZT4obG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKSwgbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpKTsKKyAgICB9
CisKKyAgICB2b2lkIGNvbXBpbGVIYXNQcml2YXRlQnJhbmQoKQorICAgIHsKKyAgICAgICAgY29t
cGlsZUluQnk8QWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kPihsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSkpOwogICAgIH0KIAogICAgIHZvaWQg
Y29tcGlsZUhhc093blByb3BlcnR5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBm
ZDIzYmI5MWJjOTEuLmVmYjQzYzJjOTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtMjk5LDggKzI5OSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKLSAgICAgICAgREVGSU5FX1NM
T1dfT1AoaGFzX3ByaXZhdGVfbmFtZSkKLSAgICAgICAgREVGSU5FX1NMT1dfT1AoaGFzX3ByaXZh
dGVfYnJhbmQpCiAgICAgICAgIERFRklORV9TTE9XX09QKGxlc3MpCiAgICAgICAgIERFRklORV9T
TE9XX09QKGxlc3NlcSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoZ3JlYXRlcikKQEAgLTM3NSw2
ICszNzMsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERF
RklORV9PUChvcF90cnlfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfaW5fYnlfaWQp
CiAgICAgICAgIERFRklORV9PUChvcF9pbl9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9o
YXNfcHJpdmF0ZV9uYW1lKQorICAgICAgICBERUZJTkVfT1Aob3BfaGFzX3ByaXZhdGVfYnJhbmQp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9n
ZXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX2RpcmVj
dCkKQEAgLTU4Niw2ICs1ODYsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMo
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfdHJ5X2dldF9ieV9pZCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2luX2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfaW5fYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaGFzX3ByaXZh
dGVfbmFtZSkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2hhc19wcml2YXRlX2JyYW5k
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCBiMzFhOTg4YzdhOWQuLjhjYWY5ODcwYmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC01NzMsNiArNTczLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfcHJvdG90eXBlX29mKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5f
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9oYXNfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9oYXNf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
aW5pdF9sYXp5X3JlZyhjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
b3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNzA3LDYgKzcwOSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVu
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2YXRlX25h
bWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9m
X2N1c3RvbShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbGVzcyhjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKQEAgLTc1NSw2ICs3NTksOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdChjb25zdCBJbnN0cnVj
dGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRTbG93
Q2FzZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
LCBib29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGUoVmlydHVh
bFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9w
ZXJ0eU9yQnJhbmQsIEFjY2Vzc1R5cGUpOworICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlU2xv
dyhWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBBY2Nlc3NUeXBlKTsKKwogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggYWMw
NTM4MDhhYzEyLi42OWJmMWExYzNmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0yNDksOCArMjQ5LDggQEAg
dm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwg
TGlua0J1ZmZlciYgc2xvd1BhdGgpCiAgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1f
c3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklUSW5CeVZhbEdlbmVyYXRv
cjo6SklUSW5CeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRU
eXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUikK
LSAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlOjpJbkJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQorSklUSW5CeVZhbEdlbmVyYXRv
cjo6SklUSW5CeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRU
eXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiB7CiAg
ICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRl
eCA0YjQ3OWI5NzZlMWUuLmVlNjgxNDEwMWE4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMjAyLDcgKzIwMiw3IEBA
IHB1YmxpYzoKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRJbkJ5VmFs
R2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgQ29k
ZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCiAgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHVi
SW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZWI4
OTAyYWE1Y2FkLi43NWRjN2MzNjlmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtNTA4LDQzICs1MDgsMTEwIEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25JbkJ5VmFsR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2Jh
bE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1Bh
dGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoYmFzZSksIEpTVmFs
dWU6OmRlY29kZShrZXkpLCBhcnJheVByb2ZpbGUpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGtleSkp
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6
ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVy
U2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICAKKwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBp
ZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVj
dCwgYmFzZVZhbHVlKSk7CisgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOworICAgIH0K
KyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisKKyAgICBK
U1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5KTsK
KyAgICBBU1NFUlQocHJvcGVydHlWYWx1ZS5pc1N5bWJvbCgpKTsKKyAgICBhdXRvIHByb3BlcnR5
ID0gcHJvcGVydHlWYWx1ZS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgRVhDRVBU
SU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3Qo
YmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5
KTsKKyAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QoYmFzZU9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAKKyAgICBBU1NFUlQoQ2FjaGVh
YmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChwcm9wZXJ0eVZhbHVlKSk7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21DZWxsKHByb3BlcnR5VmFsdWUuYXNDZWxsKCkpOworICAgIGlmIChzdHViSW5mby0+
Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZU9iamVjdC0+c3RydWN0dXJlKHZt
KSwgaWRlbnRpZmllcikpCisgICAgICAgIHJlcGF0Y2hJbkJ5KGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCBmb3VuZCwgc2xvdCwgKnN0dWJJbmZvLCBJbkJ5
S2luZDo6UHJpdmF0ZU5hbWUpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oZm91bmQpKTsKK30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1By
aXZhdGVOYW1lR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpKQoreworICAgIFN1cGVyU2Ft
cGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBpZiAoIWJhc2UtPmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFs
T2JqZWN0LCBiYXNlKSk7CisKKyAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKwor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAg
ICBpZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9i
amVjdCwgYmFzZVZhbHVlKSk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAg
IH0KIAotICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShrZXkpOwor
ICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVy
dHkpOwogICAgIEFTU0VSVChwcm9wZXJ0eVZhbHVlLmlzU3ltYm9sKCkpOwogICAgIGF1dG8gcHJv
cGVydHkgPSBwcm9wZXJ0eVZhbHVlLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBF
WENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChiYXNlKS0+aGFzUHJpdmF0ZUZpZWxkKGdsb2Jh
bE9iamVjdCwgcHJvcGVydHkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHkpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2
YXRlQnJhbmQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBicmFuZCkpCitKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJyYW5k
KSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0g
ICAgCisKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3Qo
KSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJ
bnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOworICAgICAg
ICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICB9CisgICAgSlNPYmplY3QqIGJhc2VPYmpl
Y3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSBicmFuZCA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkQnJhbmQpOworICAgIGJvb2wgZm91bmQgPSBhc09iamVjdChiYXNlVmFs
dWUpLT5oYXNQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBicmFuZCk7CisKKyAgICBBU1NFUlQo
Q2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChicmFuZCkpOwor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tQ2VsbChicmFuZC5hc0NlbGwoKSk7CisgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNh
Y2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLCBpZGVudGlm
aWVyKSkKKyAgICAgICAgcmVwYXRjaEhhc1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmllciwgZm91bmQsICpzdHViSW5mbyk7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmb3VuZCkpOworfQogCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kR2VuZXJpYywgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQnJhbmQpKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZh
bHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBpZiAoIWJhc2UtPmlzT2JqZWN0KCkp
IHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52
YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2JqZWN0LCBiYXNlKSk7CisKKyAgICBzdHViSW5m
by0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKSB7
CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFs
aWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlKSk7CiAgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGFzT2JqZWN0KGJhc2UpLT5oYXNQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlOjpkZWNvZGUoYnJhbmQpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVCcmFuZChnbG9iYWxPYmpl
Y3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQnJhbmQpKSkpOwogfQogCiBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJZFN0cmljdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJh
d0NhY2hlYWJsZUlkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAppbmRleCBkODc3MDY2Yzg1MzMuLmNkM2UxYmQ0MTRlYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE3OCw4ICsxNzgsMTAgQEAgSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5SWRHZW5lcmljLCBFbmNvZGVkSlNWYWx1
ZSwgKEpTR2xvYmFsT2JqZWMKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5C
eUlkT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCB1aW50cHRyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25JbkJ5VmFsT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFt
ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1Zh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFu
ZCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1Zh
bHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1l
R2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQ
cml2YXRlQnJhbmRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgdWludHB0cl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblB1dEJ5SWROb25TdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgdWludHB0cl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDU5ZGU3YmU2NDA3Mi4uMTVlMWQzNDU3OWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAt
MTcxMCw3ICsxNzEwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdp
dGhDZWxsKHJlZ1QwLCByZWdUMiwgcHJvZmlsZSk7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9j
aywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpJbkJ5VmFsLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQpAQCAtMTc3Miw2ICsxNzcyLDk0IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBjYWxsKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBk
c3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5k
LCBBY2Nlc3NUeXBlIHR5cGUpCit7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBy
ZWdUMCk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKKyAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5T3JCcmFuZCwgcmVnVDEpOworCisgICAg
SklUSW5CeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpC
YXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIHR5cGUsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisg
ICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAg
ICBhZGRTbG93Q2FzZSgpOworICAgIG1faW5CeVZhbHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZVNs
b3coVmlydHVhbFJlZ2lzdGVyIGRzdCwgQWNjZXNzVHlwZSB0eXBlKQoreworICAgIEFTU0VSVCh0
eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lIHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6
SGFzUHJpdmF0ZUJyYW5kKTsKKworICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5C
eVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisKKyNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbih0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lID8gb3BlcmF0aW9u
SGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXpl
LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIHJlZ1QwLCByZWdUMSk7CisjZWxzZQorICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CisKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIzOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVP
ZmZzZXRHUFIpOworCisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50
R1BSMjsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5T3JCcmFuZEdQUiA9IHJlZ1QxOworICAgIHN0YXRpY19hc3NlcnQo
YmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7CisgICAgc3RhdGljX2Fzc2Vy
dChwcm9wZXJ0eU9yQnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKKworICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihnZW4uc3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplKSwg
ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7CisgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZUJy
YW5kT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46
OnZhbHVlKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgPyBvcGVyYXRpb25IYXNQcml2
YXRlTmFtZU9wdGltaXplIDogb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemU7CisgICAg
ZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbCh0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1By
aXZhdGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlvbkhh
c1ByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwor
CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2hhc19wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVOYW1lPigp
OworICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5
dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKK30KKwordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKKyAgICBlbWl0SGFzUHJp
dmF0ZVNsb3coYnl0ZWNvZGUubV9kc3QsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKK30K
Kwordm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKKyAgICBlbWl0SGFzUHJpdmF0ZShieXRl
Y29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBl
OjpIYXNQcml2YXRlQnJhbmQpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZh
dGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0
ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQ
cml2YXRlQnJhbmQ+KCk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fZHN0LCBB
Y2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworfQorCiB2b2lkIEpJVDo6ZW1pdFZhckluamVj
dGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCiB7CiAgICAgaWYgKCFuZWVk
c1ZhckluamVjdGlvbkNoZWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGY0N2M5MzM4N2JiMi4uNThlNWQ1MmZl
NWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKQEAgLTkyNCw3ICs5MjQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0QXJy
YXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1Q0LCBwcm9maWxlKTsKIAogICAgIEpJ
VEluQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6
OkluQnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAg
ICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJl
Z1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CkBAIC05NTEsNiArOTUxLDYxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBi
YXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlIHR5cGUpCit7
CisgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlPckJyYW5kLCByZWdU
MywgcmVnVDIpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7
CisKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgdHlwZSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBJbnZh
bGlkR1BSUmVnKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2luQnlWYWxzLmFwcGVuZChnZW4pOwor
CisgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKK30KKwordm9pZCBKSVQ6OmVtaXRI
YXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBBY2Nlc3NUeXBlIHR5cGUpCit7Cisg
ICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwgdHlwZSA9PSBB
Y2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworCisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24odHlwZSA9PSBB
Y2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1p
emUgOiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVn
cyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsKKworICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhh
c1ByaXZhdGVOYW1lPigpOworICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRl
Y29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVO
YW1lKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsK
KyAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9kc3QsIEFjY2Vzc1R5cGU6Okhhc1By
aXZhdGVOYW1lKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKKyAgICBlbWl0
SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2Jy
YW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+KCk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5
dGVjb2RlLm1fZHN0LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworfQorCiB2b2lkIEpJ
VDo6ZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCiB7
CiAgICAgaWYgKCFuZWVkc1ZhckluamVjdGlvbkNoZWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCmluZGV4IGRlYjFhZDgwOTM4My4uMzdhODBiMjk1NzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTkyMiw2ICs5MjIsMzIgQEAgdm9pZCByZXBh
dGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIERlbGV0ZVAKICAgICB9CiB9CiAKK2lubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+IGFwcHJvcHJpYXRlT3B0aW1pemluZ0luQnlGdW5jdGlvbihJbkJ5S2luZCBraW5kKQor
eworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgSW5CeUtpbmQ6OkJ5SWQ6CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICBjYXNlIEluQnlLaW5kOjpCeVZh
bDoKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZTsKKyAgICBjYXNlIElu
QnlLaW5kOjpQcml2YXRlTmFtZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkhhc1ByaXZhdGVO
YW1lT3B0aW1pemU7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK2lubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlR2VuZXJp
Y0luQnlGdW5jdGlvbihJbkJ5S2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAg
IGNhc2UgSW5CeUtpbmQ6OkJ5SWQ6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25JbkJ5SWRHZW5l
cmljOworICAgIGNhc2UgSW5CeUtpbmQ6OkJ5VmFsOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9u
SW5CeVZhbEdlbmVyaWM7CisgICAgY2FzZSBJbkJ5S2luZDo6UHJpdmF0ZU5hbWU6CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25IYXNQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgfQorICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUluQnkoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwKICAgICBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQga2luZCkKQEAgLTEwMTYsMTcgKzEwNDIs
MTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeSgKIAogICAgICAgICBp
ZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKICAgICAgICAgICAgIExPR19JQygoSUNF
dmVudDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBz
bG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7
Ci0gICAgICAgICAgICBjYXNlIEluQnlLaW5kOjpCeUlkOgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0LmNvZGUoKSk7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6
QnlJZCkKICAgICAgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFj
Y2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBJbkJ5S2luZDo6QnlWYWw6CisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGlu
ZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDQyLDExICsxMDYzLDUzIEBAIHZv
aWQgcmVwYXRjaEluQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpTT2JqZWN0KiBiCiAKICAgICBpZiAodHJ5Q2FjaGVJbkJ5KGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBz
dHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OkluUmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8oZ2xvYmFsT2Jq
ZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkp
OwotICAgICAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkKLSAgICAgICAgICAgIHJlcGF0
Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkR2VuZXJp
Yyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJs
b2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMpOworICAgICAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlR2VuZXJpY0luQnlG
dW5jdGlvbihraW5kKSk7CisgICAgfQorfQorCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVIYXNQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGJyYW5k
SUQsIGJvb2wgd2FzRm91bmQsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBy
ZXN1bHQ7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGJy
YW5kSUQudWlkKCkpOworCisgICAgeworICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgaWYgKGZvcmNlSUNG
YWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsK
KworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2UtPnN0cnVjdHVyZSh2bSk7CisK
KyAgICAgICAgSW5saW5lQ2FjaGVBY3Rpb24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCh2bSwgYmFz
ZSk7CisgICAgICAgIGlmIChhY3Rpb24gIT0gQXR0ZW1wdFRvQ2FjaGUpCisgICAgICAgICAgICBy
ZXR1cm4gYWN0aW9uOworCisgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOworICAg
ICAgICBMT0dfSUMoKElDRXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0lu
Zm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CisKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+
IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgd2FzRm91bmQgPyBB
Y2Nlc3NDYXNlOjpJbkhpdCA6IEFjY2Vzc0Nhc2U6OkluTWlzcywgYnJhbmRJRCwgaW52YWxpZE9m
ZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSk7CisKKyAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8u
YWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6
c3RyaWN0KCksIGJyYW5kSUQsIFdURk1vdmUobmV3Q2FzZSkpOworCisgICAgICAgIGlmIChyZXN1
bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgeworICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJ
blJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVBy
b3BlcnR5KSk7CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwor
ICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2lu
Z0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICB9CiAgICAgfQorCisg
ICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQodm0sIHN0dWJJbmZvLCBjb2Rl
QmxvY2ssIHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8g
R2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKK30KKwordm9pZCByZXBhdGNoSGFzUHJp
dmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJs
b2NrLCBKU09iamVjdCogYmFzZU9iamVjdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFuZElELCBi
b29sIHdhc0ZvdW5kLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgaWYgKHRyeUNhY2hl
SGFzUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBicmFu
ZElELCB3YXNGb3VuZCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCisgICAgICAgIHJlcGF0
Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSGFzUHJpdmF0ZUJy
YW5kR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNr
UHJpdmF0ZUJyYW5kKApAQCAtMTcyOCwxNiArMTc5MSwxNyBAQCB2b2lkIHJlc2V0RGVsQnkoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5k
IGtpbgogCiB2b2lkIHJlc2V0SW5CeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBJbkJ5S2luZCBraW5kKQogewotICAgIHN3aXRjaCAoa2luZCkgewot
ICAgIGNhc2UgSW5CeUtpbmQ6OkJ5SWQ6Ci0gICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgIHJlcGF0Y2hT
bG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nSW5C
eUZ1bmN0aW9uKGtpbmQpKTsKKyAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkKICAgICAg
ICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJ
bmZvKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbkJ5S2luZDo6QnlWYWw6Ci0gICAgICAg
IHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeVZh
bE9wdGltaXplKTsKKyAgICBlbHNlCiAgICAgICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNK
dW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQorfQorCit2b2lkIHJlc2V0SGFzUHJpdmF0ZUJyYW5kKENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgcmVw
YXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25IYXNQcml2YXRl
QnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vz
c05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJl
c2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCA3MmM2NmIyODkxNDMu
LmMxOWYwMmQ0ZDQwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTUwLDcg
KzUwLDggQEAgZW51bSBjbGFzcyBEZWxCeUtpbmQgewogCiBlbnVtIGNsYXNzIEluQnlLaW5kIHsK
ICAgICBCeUlkLAotICAgIEJ5VmFsCisgICAgQnlWYWwsCisgICAgUHJpdmF0ZU5hbWUKIH07CiAK
IHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBK
U1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJik7CkBAIC01OCw2
ICs1OSw3IEBAIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwg
SlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uCiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpT
R2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQ
dXRLaW5kKTsKIHZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2Nr
KiwgRGVsZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQsIEVDTUFNb2RlKTsKIHZvaWQg
cmVwYXRjaEluQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIENhY2hl
YWJsZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVj
dHVyZVN0dWJJbmZvJiwgSW5CeUtpbmQpOwordm9pZCByZXBhdGNoSGFzUHJpdmF0ZUJyYW5kKEpT
R2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBib29sIHdhc0ZvdW5kLCAgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaENoZWNr
UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoU2V0UHJp
dmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBh
dGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUs
IEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwpA
QCAtNzAsNiArNzIsNyBAQCB2b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1
YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXREZWxCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlc2V0SW5CeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVT
dHViSW5mbyYsIEluQnlLaW5kKTsKK3ZvaWQgcmVzZXRIYXNQcml2YXRlQnJhbmQoQ29kZUJsb2Nr
KiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRJbnN0YW5jZU9mKENvZGVCbG9jayos
IFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJs
b2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29k
ZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDczMzZhNWEzMzA4OC4uOTViOWRhZWFiZjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
QEAgLTE0MzIsNiArMTQzMiwzNSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5f
YnlfdmFsKQogICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcElu
QnlWYWwoZ2xvYmFsT2JqZWN0LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNl
KSwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpLCAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGUpKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9o
YXNfcHJpdmF0ZV9uYW1lKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7CisgICAgYXV0byBiYXNlVmFsdWUgPSBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBpZiAoIWJhc2VWYWx1
ZS5pc09iamVjdCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkSW5QYXJhbWV0
ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOworCisgICAgYXV0byBwcm9wZXJ0eVZh
bHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgIEFT
U0VSVChwcm9wZXJ0eVZhbHVlLmlzU3ltYm9sKCkpOworICAgIGF1dG8gcHJvcGVydHkgPSBwcm9w
ZXJ0eVZhbHVlLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBFWENFUFRJT05fQVNT
RVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHkpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYXNfcHJpdmF0
ZV9icmFuZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKKyAgICBhdXRvIGJhc2VWYWx1ZSA9IGdldE9wZXJh
bmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIGlmICghYmFzZVZhbHVlLmlzT2Jq
ZWN0KCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9y
KGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlKSk7CisKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2JyYW5kKSkpKTsKK30KKwogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3B1dF9nZXR0ZXJfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXgg
NDNjNmNhODQ1MzBlLi5mYmZkNTNjYzU1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCkBAIC03Myw2ICs3Myw4IEBAIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfaW5fYnlfdmFsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaGFzX3ByaXZhdGVfbmFtZSk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2hhc19wcml2YXRlX2JyYW5kKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZGVsX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dl
dF9wcml2YXRlX25hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGNmMGQ2MGNmMTMzZi4uNzEyOWIwYWIzMGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC0yMDEwLDggKzIwMTAsNiBAQCBpZiBub3QgSlNWQUxVRTY0CiAgICAgc2xvd1Bh
dGhPcChnZXRfcHJvdG90eXBlX29mKQogZW5kCiAKLXNsb3dQYXRoT3AoaGFzX3ByaXZhdGVfbmFt
ZSkKLXNsb3dQYXRoT3AoaGFzX3ByaXZhdGVfYnJhbmQpCiBzbG93UGF0aE9wKGlzX2NhbGxhYmxl
KQogc2xvd1BhdGhPcChpc19jb25zdHJ1Y3RvcikKIHNsb3dQYXRoT3AobGVzcykKQEAgLTIwNDQs
NiArMjA0Miw4IEBAIGVuZAogCiBsbGludFNsb3dQYXRoT3AoaW5fYnlfaWQpCiBsbGludFNsb3dQ
YXRoT3AoaW5fYnlfdmFsKQorbGxpbnRTbG93UGF0aE9wKGhhc19wcml2YXRlX25hbWUpCitsbGlu
dFNsb3dQYXRoT3AoaGFzX3ByaXZhdGVfYnJhbmQpCiBsbGludFNsb3dQYXRoT3AoZGVsX2J5X2lk
KQogbGxpbnRTbG93UGF0aE9wKGRlbF9ieV92YWwpCiBsbGludFNsb3dQYXRoT3AoaW5zdGFuY2Vv
ZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCmluZGV4IGExYzQxMzEwODYxNC4uMTEyOTU0YmI5YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTgzMCwzNSArODMw
LDYgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9pc19jb25zdHJ1Y3Rv
cikKICAgICBSRVRVUk4oanNCb29sZWFuKEdFVF9DKGJ5dGVjb2RlLm1fb3BlcmFuZCkuanNWYWx1
ZSgpLmlzQ29uc3RydWN0b3Iodm0pKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFU
SChzbG93X3BhdGhfaGFzX3ByaXZhdGVfbmFtZSkKLXsKLSAgICBCRUdJTigpOwotCi0gICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcEhhc1ByaXZhdGVOYW1lPigpOwotICAgIGF1dG8gYmFzZVZh
bHVlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7Ci0gICAgaWYgKCFiYXNlVmFs
dWUuaXNPYmplY3QoKSkKLSAgICAgICAgVEhST1coY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJy
b3IoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUpKTsKLQotICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9
IEdFVF9DKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKLSAgICBBU1NFUlQocHJvcGVy
dHlWYWx1ZS5pc1N5bWJvbCgpKTsKLSAgICBhdXRvIHByb3BlcnR5ID0gcHJvcGVydHlWYWx1ZS50
b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7Ci0gICAgRVhDRVBUSU9OX0FTU0VSVCghdGhyb3dT
Y29wZS5leGNlcHRpb24oKSk7Ci0KLSAgICBSRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJhc2VW
YWx1ZSktPmhhc1ByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5KSkpOwotfQotCi1K
U0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2hhc19wcml2YXRlX2JyYW5kKQot
ewotICAgIEJFR0lOKCk7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSGFzUHJpdmF0
ZUJyYW5kPigpOwotICAgIGF1dG8gYmFzZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5q
c1ZhbHVlKCk7Ci0gICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgVEhST1co
Y3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUpKTsK
LQotICAgIFJFVFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJpdmF0ZUJy
YW5kKGdsb2JhbE9iamVjdCwgR0VUX0MoYnl0ZWNvZGUubV9icmFuZCkuanNWYWx1ZSgpKSkpOwot
fQotCiB0ZW1wbGF0ZTxPcGNvZGVTaXplIHdpZHRoPgogQUxXQVlTX0lOTElORSBTbG93UGF0aFJl
dHVyblR5cGUgaXRlcmF0b3JPcGVuVHJ5RmFzdEltcGwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IGNvbnN0IEluc3RydWN0aW9uKiBwYykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYzgzMDk4MWIwMzkzLi5kOGQxNTAxZmIzNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CkBAIC0yNTEsOCArMjUxLDYgQEAgSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3Bh
dGhfdHlwZW9mX2lzX29iamVjdCk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3df
cGF0aF90eXBlb2ZfaXNfZnVuY3Rpb24pOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChz
bG93X3BhdGhfaXNfY2FsbGFibGUpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfaXNfY29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfaGFzX3ByaXZhdGVfbmFtZSk7Ci1KU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF9oYXNfcHJpdmF0ZV9icmFuZCk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF9zdHJjYXQpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3Bh
dGhfdG9fcHJpbWl0aXZlKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRo
X3RvX3Byb3BlcnR5X2tleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAppbmRleCA5NWFiOWFjMGY0Y2UuLjY3Y2ZiOTlmMzk3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01MjQsNyArNTI0LDcgQEAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihCb29sLCB1c2VQcml2
YXRlU3RhdGljQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIg
d2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgc3RhdGljIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2Vz
LiIpIFwKICAgICB2KEJvb2wsIHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAi
SWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBp
bnNpZGUgY2xhc3Nlcy4iKSBcCiAgICAgdihCb29sLCB1c2VQcml2YXRlTWV0aG9kcywgdHJ1ZSwg
Tm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZXRo
b2RzIGluc2lkZSBjbGFzc2VzLiIpIFwKLSAgICB2KEJvb2wsIHVzZVByaXZhdGVJbiwgZmFsc2Us
IE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgbWVt
YmVyIGV4aXN0ZW5jZSBjaGVja3Mgd2l0aCB0aGUgYGluYCBvcGVyYXRvci4iKSBcCisgICAgdihC
b29sLCB1c2VQcml2YXRlSW4sIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2ls
bCB1bmRlcnN0YW5kIHByaXZhdGUgbWVtYmVyIGV4aXN0ZW5jZSBjaGVja3Mgd2l0aCB0aGUgYGlu
YCBvcGVyYXRvci4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVN0cmVhbWluZywgdHJ1
ZSwgTm9ybWFsLCAiQWxsb3cgdG8gcnVuIFdlYkFzc2VtYmx5J3MgU3RyZWFtaW5nIEFQSSIpIFwK
ICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcywgdHJ1ZSwgTm9ybWFsLCAiQWxs
b3cgdHlwZXMgZnJvbSB0aGUgd2FzbSByZWZlcmVuY2VzIHNwZWMuIikgXAogICAgIHYoQm9vbCwg
dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcywgZmFsc2UsIE5vcm1hbCwgIkFs
bG93IGZ1bmN0aW9uIHR5cGVzIGZyb20gdGhlIHdhc20gdHlwZWQgZnVuY3Rpb24gcmVmZXJlbmNl
cyBzcGVjLiIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431520</attachid>
            <date>2021-06-15 22:38:18 -0700</date>
            <delta_ts>2021-06-16 00:19:48 -0700</delta_ts>
            <desc>Test patch for MIPS EWS</desc>
            <filename>226146-for-mips.diff</filename>
            <type>text/plain</type>
            <size>64111</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YzI1ZTgyNzU0MDM3Li42NjA1NTU5MWIwOWMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDYtMTUgIFJv
c3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtKU0NdIEFk
ZCBKSVQgSUNzIGZvciBgI3ggaW4gb2JqYCBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9oYXMtcHJpdmF0ZS1i
cmFuZC5qczogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2hhcy1wcml2YXRlLW5h
bWUuanM6IEFkZGVkLgorCiAyMDIxLTA2LTEzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjY1NzYKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1wcml2YXRlLWJy
YW5kLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFzLXByaXZhdGUtYnJhbmQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iODE5N2Q4YWY0OGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtcHJpdmF0ZS1icmFuZC5q
cwpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICBpZiAoIWIpIHRocm93
IG5ldyBFcnJvcjsKK30KKworY2xhc3MgTSB7CisgICN4KCkge30KKyAgc3RhdGljIGlzTShvYmop
IHsKKyAgICByZXR1cm4gI3ggaW4gb2JqOworICB9Cit9Citub0lubGluZShNLnByb3RvdHlwZS5p
c00pOworCitmdW5jdGlvbiB0ZXN0KCkgeworICBhc3NlcnQoTS5pc00obmV3IE0pICYmICFNLmlz
TShNKSAmJiAhTS5pc00oe30pKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDFlNjsgKytpKQorICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9oYXMtcHJpdmF0ZS1uYW1lLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFz
LXByaXZhdGUtbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjIzNTQxNTk2N2NlYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2hhcy1wcml2YXRlLW5hbWUuanMKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gYXNzZXJ0KGIp
IHsKKyAgaWYgKCFiKSB0aHJvdyBuZXcgRXJyb3I7Cit9CisKK2NsYXNzIEYgeworICAjeDsKKyAg
c3RhdGljIGlzRihvYmopIHsKKyAgICByZXR1cm4gI3ggaW4gb2JqOworICB9Cit9Citub0lubGlu
ZShGLnByb3RvdHlwZS5pc0YpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICBhc3NlcnQoRi5pc0Yo
bmV3IEYpICYmICFGLmlzRihGKSAmJiAhRi5pc0Yoe30pKTsKK30KK25vSW5saW5lKHRlc3QpOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiMmI4ZmVjNjM3Y2UuLmIwNWM0NTZhYzkxOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjEtMDYtMTUgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtKU0NdIEFkZCBKSVQgSUNzIGZvciBg
I3ggaW4gb2JqYCBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjYxNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgSklUIElDcyBmb3IgdGhlIG5ldyBgI3gg
aW4gb2JqYCBmZWF0dXJlIGFuZCB0dXJucyB0aGUgZmVhdHVyZSBvbiBieSBkZWZhdWx0LgorICAg
ICAgICBJbXBsZW1lbnRhdGlvbiBjbG9zZWx5IGZvbGxvd3MgSW5CeVZhbCwgdGhvdWdoIEhhc1By
aXZhdGVCcmFuZCBoYXMgYSBmZXcgc3VidGxldGllcworICAgICAgICAobmFtZWx5LCBpdCBjYW5u
b3QgYmUgdmlld2VkIGluIHRlcm1zIG9mIGEgUHJvcGVydHlTbG90IGFuZCBzaG91bGQgbm90IGJl
IGNvbnZlcnRlZCB0byBJbkJ5SWQpLgorCisgICAgICAgIE1pY3JvYmVuY2htYXJrczoKKyAgICAg
ICAgICAgIGhhcy1wcml2YXRlLW5hbWUgICAgICAgIDQ2LjU3NzcrLTAuMTM3NCAgICAgXiAgICAg
IDYuMDU4OSstMC4wMjk2ICAgICAgICBeIGRlZmluaXRlbHkgNy42ODc1eCBmYXN0ZXIKKyAgICAg
ICAgICAgIGhhcy1wcml2YXRlLWJyYW5kICAgICAgIDI1Ljg4MjMrLTAuMDU2MSAgICAgXiAgICAg
MTkuMTUwOSstMC4wNDQ3ICAgICAgICBeIGRlZmluaXRlbHkgMS4zNTE1eCBmYXN0ZXIKKworICAg
ICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUluQnlBc01hdGNoU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5CeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSGFzUHJpdmF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVIYXNQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVIYXNQcml2YXRlQnJhbmQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBq
aXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5lcmF0b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IpOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV92YWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRIYXNQcml2YXRlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0SGFzUHJpdmF0ZVNsb3cpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3ByaXZh
dGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1ByaXZhdGUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19wcml2
YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9i
cmFuZCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3By
aWF0ZU9wdGltaXppbmdJbkJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdl
bmVyaWNJbkJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluQnkpOgorICAgICAg
ICAoSlNDOjpyZXBhdGNoSW5CeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSGFzUHJpdmF0ZUJy
YW5kKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEhhc1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChK
U0M6OnJlc2V0SW5CeSk6CisgICAgICAgIChKU0M6OnJlc2V0SGFzUHJpdmF0ZUJyYW5kKToKKyAg
ICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDoKKwogMjAyMS0wNi0xNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIGxkcCBhbmQgc3RwIHN1cHBvcnQgZm9yIEZQIHJlZ2lzdGVycywgcGx1cyBz
b21lIGJ1ZyBmaXhlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDFkNzM1MGEyOTM5NC4uYjg1NWU4ODY1Yjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5jcHAKQEAgLTI3OSw2ICsyNzksMTIgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVz
ZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAg
ICBjYXNlIEFjY2Vzc1R5cGU6OkluQnlWYWw6CiAgICAgICAgIHJlc2V0SW5CeShjb2RlQmxvY2ss
ICp0aGlzLCBJbkJ5S2luZDo6QnlWYWwpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vz
c1R5cGU6Okhhc1ByaXZhdGVOYW1lOgorICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhp
cywgSW5CeUtpbmQ6OlByaXZhdGVOYW1lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nl
c3NUeXBlOjpIYXNQcml2YXRlQnJhbmQ6CisgICAgICAgIHJlc2V0SGFzUHJpdmF0ZUJyYW5kKGNv
ZGVCbG9jaywgKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Oklu
c3RhbmNlT2Y6CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZihjb2RlQmxvY2ssICp0aGlzKTsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oCmluZGV4IDBmNjc3NWYxNmZiYy4uN2YyZjYyNTZjMGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApA
QCAtNTcsNiArNTcsOCBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIFB1
dCwKICAgICBJbkJ5SWQsCiAgICAgSW5CeVZhbCwKKyAgICBIYXNQcml2YXRlTmFtZSwKKyAgICBI
YXNQcml2YXRlQnJhbmQsCiAgICAgSW5zdGFuY2VPZiwKICAgICBEZWxldGVCeUlELAogICAgIERl
bGV0ZUJ5VmFsLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBhNWY1MmEwNWFmZTAuLmZjODFmNjkwNDI5OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI2NCw2ICsyNjQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cywgRUNNQU1vZGUpOwogCisg
ICAgYm9vbCBoYW5kbGVJbkJ5QXNNYXRjaFN0cnVjdHVyZShWaXJ0dWFsUmVnaXN0ZXIgZGVzdGlu
YXRpb24sIE5vZGUqIGJhc2UsIEluQnlTdGF0dXMpOwogICAgIHZvaWQgaGFuZGxlSW5CeUlkKFZp
cnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgSW5CeVN0YXR1cyk7CiAKICAgICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9y
IGVtaXQgYSBjaGVjayBmb3IgdGhpcyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhlCkBA
IC00OTQxLDMyICs0OTQyLDQwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5
SWQoCiAgICAgcmV0dXJuOwogfQogCi12b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbkJ5SWQo
VmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEluQnlTdGF0dXMgc3RhdHVzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5CeUFzTWF0Y2hTdHJ1Y3R1cmUoVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBO
b2RlKiBiYXNlLCBJbkJ5U3RhdHVzIHN0YXR1cykKIHsKLSAgICBpZiAoc3RhdHVzLmlzU2ltcGxl
KCkgJiYgT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewotICAgICAgICBib29sIGFsbE9L
ID0gdHJ1ZTsKLSAgICAgICAgTWF0Y2hTdHJ1Y3R1cmVEYXRhKiBkYXRhID0gbV9ncmFwaC5tX21h
dGNoU3RydWN0dXJlRGF0YS5hZGQoKTsKLSAgICAgICAgZm9yIChjb25zdCBJbkJ5VmFyaWFudCYg
dmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7Ci0gICAgICAgICAgICBpZiAoIWNoZWNrKHZh
cmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgYWxsT0sgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiB2YXJpYW50LnN0cnVjdHVyZVNldCgpKSB7Ci0gICAgICAg
ICAgICAgICAgTWF0Y2hTdHJ1Y3R1cmVWYXJpYW50IG1hdGNoVmFyaWFudDsKLSAgICAgICAgICAg
ICAgICBtYXRjaFZhcmlhbnQuc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShz
dHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgIG1hdGNoVmFyaWFudC5yZXN1bHQgPSB2YXJpYW50
LmlzSGl0KCk7CisgICAgaWYgKCFzdGF0dXMuaXNTaW1wbGUoKSB8fCAhT3B0aW9uczo6dXNlQWNj
ZXNzSW5saW5pbmcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICAgICAg
ZGF0YS0+dmFyaWFudHMuYXBwZW5kKFdURk1vdmUobWF0Y2hWYXJpYW50KSk7Ci0gICAgICAgICAg
ICB9CisgICAgYm9vbCBhbGxPSyA9IHRydWU7CisgICAgTWF0Y2hTdHJ1Y3R1cmVEYXRhKiBkYXRh
ID0gbV9ncmFwaC5tX21hdGNoU3RydWN0dXJlRGF0YS5hZGQoKTsKKyAgICBmb3IgKGNvbnN0IElu
QnlWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgaWYgKCFj
aGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgpKSkgeworICAgICAgICAgICAgYWxsT0sgPSBmYWxz
ZTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGZvciAoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgOiB2YXJpYW50LnN0cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICBNYXRj
aFN0cnVjdHVyZVZhcmlhbnQgbWF0Y2hWYXJpYW50OworICAgICAgICAgICAgbWF0Y2hWYXJpYW50
LnN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIG1hdGNoVmFyaWFudC5yZXN1bHQgPSB2YXJpYW50LmlzSGl0KCk7CiAKLSAgICAgICAg
aWYgKGFsbE9LKSB7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckluQnlTdGF0dXMsIE9w
SW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkSW5CeVN0YXR1cyhjdXJy
ZW50Q29kZU9yaWdpbigpLCBzdGF0dXMpKSwgYmFzZSk7Ci0gICAgICAgICAgICBzZXQoZGVzdGlu
YXRpb24sIGFkZFRvR3JhcGgoTWF0Y2hTdHJ1Y3R1cmUsIE9wSW5mbyhkYXRhKSwgYmFzZSkpOwot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZGF0YS0+dmFyaWFudHMuYXBwZW5kKFdU
Rk1vdmUobWF0Y2hWYXJpYW50KSk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoYWxsT0sp
IHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJJbkJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5t
X3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZEluQnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4o
KSwgc3RhdHVzKSksIGJhc2UpOworICAgICAgICBzZXQoZGVzdGluYXRpb24sIGFkZFRvR3JhcGgo
TWF0Y2hTdHJ1Y3R1cmUsIE9wSW5mbyhkYXRhKSwgYmFzZSkpOworICAgIH0KKworICAgIHJldHVy
biBhbGxPSzsKK30KKwordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5CeUlkKFZpcnR1YWxS
ZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBJbkJ5U3RhdHVzIHN0YXR1cykKK3sKKyAgICBpZiAoaGFuZGxlSW5CeUFzTWF0Y2hT
dHJ1Y3R1cmUoZGVzdGluYXRpb24sIGJhc2UsIHN0YXR1cykpCisgICAgICAgIHJldHVybjsKKwog
ICAgIHNldChkZXN0aW5hdGlvbiwgYWRkVG9HcmFwaChJbkJ5SWQsIE9wSW5mbyhpZGVudGlmaWVy
KSwgYmFzZSkpOwogfQogCkBAIC04MzA0LDE4ICs4MzEzLDU5IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGNhc2Ugb3BfaGFzX3ByaXZhdGVfbmFtZTogewotICAgICAgICAgICAgLy8gRklYTUU6IElt
cHJvdmUgdGhpcyBvbmNlIEluQnlWYWwgaGFzIGJlZW4gb3B0aW1pemVkLgotICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0NgogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRl
TmFtZT4oKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChIYXNQ
cml2YXRlTmFtZSwgZ2V0KGJ5dGVjb2RlLm1fYmFzZSksIGdldChieXRlY29kZS5tX3Byb3BlcnR5
KSkpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAg
ICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAg
ICAgICAgICBib29sIGNvbXBpbGVkQXNJbkJ5SWQgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYg
KCFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudElu
ZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkKKyAgICAgICAg
ICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKworICAgICAgICAgICAgICAgIElu
QnlTdGF0dXMgc3RhdHVzID0gSW5CeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9w
LT5tX2Jhc2VsaW5lTWFwLAorICAgICAgICAgICAgICAgICAgICBtX2ljQ29udGV4dFN0YWNrLCBj
dXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgICAgIGlmIChDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBzdGF0dXMuc2luZ2xlSWRlbnRpZmllcigpKSB7CisgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRpZmllci51aWQo
KSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJl
ZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChDaGVja0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBwcm9wZXJ0eSk7CisgICAgICAg
ICAgICAgICAgICAgIGhhbmRsZUluQnlJZChieXRlY29kZS5tX2RzdCwgYmFzZSwgaWRlbnRpZmll
ciwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZWRBc0luQnlJZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWNv
bXBpbGVkQXNJbkJ5SWQpCisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRU
b0dyYXBoKEhhc1ByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkpOwogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfaGFzX3ByaXZhdGVfbmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX2hhc19wcml2YXRlX2JyYW5kOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSB0
aGlzIG9uY2UgSW5CeVZhbCBoYXMgYmVlbiBvcHRpbWl6ZWQuCi0gICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQ2CiAgICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4o
KTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChIYXNQcml2YXRl
QnJhbmQsIGdldChieXRlY29kZS5tX2Jhc2UpLCBnZXQoYnl0ZWNvZGUubV9icmFuZCkpKTsKKyAg
ICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAg
IE5vZGUqIGJyYW5kID0gZ2V0KGJ5dGVjb2RlLm1fYnJhbmQpOworICAgICAgICAgICAgYm9vbCBj
b21waWxlZEFzTWF0Y2hTdHJ1Y3R1cmUgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKCFtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRJZGVudCkKKyAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkKKyAgICAgICAgICAgICAg
ICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKworICAgICAgICAgICAgICAgIEluQnlTdGF0
dXMgc3RhdHVzID0gSW5CeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jh
c2VsaW5lTWFwLAorICAgICAgICAgICAgICAgICAgICBtX2ljQ29udGV4dFN0YWNrLCBjdXJyZW50
Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgICAgIGlmIChDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSBzdGF0dXMuc2luZ2xlSWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRpZmllci51aWQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ry
b25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChD
aGVja0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBicmFuZCk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbXBpbGVkQXNNYXRjaFN0cnVjdHVyZSA9IGhhbmRsZUluQnlBc01hdGNoU3RydWN0dXJl
KGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFjb21waWxlZEFzTWF0Y2hTdHJ1Y3R1cmUpCisg
ICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEhhc1ByaXZhdGVC
cmFuZCwgYmFzZSwgYnJhbmQpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2hhc19wcml2
YXRlX2JyYW5kKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDE0MTcxZDg5NjA4YS4uODVkMGRjYmIwNWQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtMTM4OSw3ICsxMzg5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwo
Tm9kZSogbm9kZSkKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2Fs
bFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmln
aW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0
aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeVZhbEdlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6
REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW5CeVZhbCwgdXNlZFJl
Z2lzdGVycywKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlS
ZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
bV9qaXQpOwogICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpCkBA
IC0xNDE0LDQ4ICsxNDE0LDY4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5VmFs
KE5vZGUqIG5vZGUpCiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0UmVncy5wYXlsb2Fk
R1BSKCksIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQcml2YXRlTmFtZShOb2RlKiBub2RlKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUhhc1ByaXZhdGUoTm9kZSogbm9kZSwgQWNjZXNzVHlwZSB0eXBl
KQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Cisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHlPckJyYW5kKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgc3RkOjpv
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1Yklu
Zm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKLSAgICBHUFJSZWcga2V5R1BSID0ga2V5LmdwcigpOworICAgIEdQUlJlZyBwcm9w
ZXJ0eU9yQnJhbmRHUFIgPSBwcm9wZXJ0eU9yQnJhbmQuZ3ByKCk7CisgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+
Y2hpbGQyKCksIGtleUdQUik7CisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBw
cm9wZXJ0eU9yQnJhbmRHUFIpOwogCiAgICAgYmFzZS51c2UoKTsKLSAgICBrZXkudXNlKCk7Ci0K
LSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwotICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWUsIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShrZXlHUFIpKTsKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGJsZXNzZWRC
b29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBub2RlLCBVc2VDaGlsZHJlbkNh
bGxlZEV4cGxpY2l0bHkpOwotfQorICAgIHByb3BlcnR5T3JCcmFuZC51c2UoKTsKIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQotewotICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKLSAgICBHUFJSZWcgYnJhbmRHUFIgPSBicmFuZC5ncHIoKTsKKyAgICBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5k
bGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOworICAgIEpJ
VEluQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlw
ZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdHlwZSwgdXNlZFJlZ2lzdGVycywKKyAg
ICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkocHJvcGVydHlPckJyYW5kR1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwor
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93
UGF0aEp1bXAoKSk7CiAKLSAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIGJyYW5k
R1BSKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBz
bG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBn
ZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgdHlwZSA9
PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0
aW1pemUgOiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5l
ZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAg
ICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCB0eXBlID09IEFj
Y2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6
ZSA6IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplLAorICAgICAgICAgICAgTmVlZFRv
U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAg
ICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUocHJvcGVydHlPckJyYW5kR1BSKSk7CisgICAgfQogCi0gICAgYmFzZS51c2UoKTsKLSAgICBi
cmFuZC51c2UoKTsKKyAgICBtX2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwor
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKIAotICAgIGZsdXNo
UmVnaXN0ZXJzKCk7Ci0gICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25IYXNQcml2YXRlQnJhbmQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFu
ZEdQUikpOwotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgYmxlc3NlZEJvb2xlYW5S
ZXN1bHQocmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhw
bGljaXRseSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQcml2YXRlTmFt
ZShOb2RlKiBub2RlKQoreworICAgIGNvbXBpbGVIYXNQcml2YXRlKG5vZGUsIEFjY2Vzc1R5cGU6
Okhhc1ByaXZhdGVOYW1lKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc1By
aXZhdGVCcmFuZChOb2RlKiBub2RlKQoreworICAgIGNvbXBpbGVIYXNQcml2YXRlKG5vZGUsIEFj
Y2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXNoV2l0aFNjb3BlKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgY3VycmVudFNjb3BlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAyOWJhMjlhZTQ3NjYuLmVhMDg4
YmFlMjA5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtNzM4LDkgKzczOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlJ
ZEZsdXNoKE5vZGUqLCBBY2Nlc3NUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVJbkJ5SWQoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZUluQnlWYWwoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUhhc1By
aXZhdGUoTm9kZSosIEFjY2Vzc1R5cGUpOwogICAgIHZvaWQgY29tcGlsZUhhc1ByaXZhdGVOYW1l
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVIYXNQcml2YXRlQnJhbmQoTm9kZSopOwotICAgIAor
CiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVuZGVmaW5l
ZChFZGdlIG9wZXJhbmQpOwogICAgIHZvaWQgbm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51
bGxPclVuZGVmaW5lZChFZGdlIG9wZXJhbmQsIE5vZGUqIGJyYW5jaE5vZGUpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDdmMzAz
ZjMzMTU4OS4uNWIwNjE3OTRhODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMjM1MSwyNCArMTIzNTEsMTMgQEAgcHJpdmF0ZToKICAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHJlc3VsdHMpKTsKICAgICB9CiAKLSAg
ICB2b2lkIGNvbXBpbGVIYXNQcml2YXRlTmFtZSgpCi0gICAgewotICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpOwotICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uSGFzUHJp
dmF0ZU5hbWUsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSksIGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKSkpOwotICAgIH0KLQotICAgIHZvaWQg
Y29tcGlsZUhhc1ByaXZhdGVCcmFuZCgpCi0gICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMp
OwotICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uSGFzUHJpdmF0ZUJy
YW5kLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
LCBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSkpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxJ
bkJ5S2luZCBraW5kLCB0eXBlbmFtZSBTdWJzY3JpcHRLaW5kPgorICAgIHRlbXBsYXRlPEFjY2Vz
c1R5cGUgdHlwZSwgdHlwZW5hbWUgU3Vic2NyaXB0S2luZD4KICAgICB2b2lkIGNvbXBpbGVJbkJ5
KExWYWx1ZSBiYXNlLCBTdWJzY3JpcHRLaW5kIHN1YnNjcmlwdFZhbHVlKQogICAgIHsKKyAgICAg
ICAgc3RhdGljX2Fzc2VydCh0eXBlID09IEFjY2Vzc1R5cGU6OkluQnlJZCB8fCB0eXBlID09IEFj
Y2Vzc1R5cGU6OkluQnlWYWwgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSB8
fCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiAgICAgICAgIFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7Ci0gICAgICAgIGlmIGNvbnN0ZXhw
ciAoa2luZCAhPSBJbkJ5S2luZDo6QnlJZCkKKyAgICAgICAgaWYgY29uc3RleHByICh0eXBlICE9
IEFjY2Vzc1R5cGU6OkluQnlJZCkKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVS
ZWdpc3RlcihzdWJzY3JpcHRWYWx1ZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25v
dENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVy
KSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKQEAgLTEyMzkyLDE1ICsxMjM4MSwy
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0gcGFyYW1zWzBd
LmdwcigpOwogICAgICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sx
XS5ncHIoKSk7CiAKKyAgICAgICAgICAgICAgICBjb25zdGV4cHIgYXV0byBvcHRpbWl6YXRpb25G
dW5jdGlvbiA9IFsmXSAoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAodHlw
ZSA9PSBBY2Nlc3NUeXBlOjpJbkJ5SWQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgY29u
c3RleHByICh0eXBlID09IEFjY2Vzc1R5cGU6OkluQnlWYWwpCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmIGNvbnN0ZXhwciAodHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9w
dGltaXplOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQodHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9w
dGltaXplOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSgpOworCiAg
ICAgICAgICAgICAgICAgY29uc3QgYXV0byBzdWJzY3JpcHQgPSBbJl0gewotICAgICAgICAgICAg
ICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpCisgICAgICAgICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAodHlwZSA9PSBBY2Nlc3NUeXBlOjpJbkJ5SWQpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1
YnNjcmlwdFZhbHVlLnJhd0JpdHMoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpOwog
ICAgICAgICAgICAgICAgIH0oKTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJh
dG9yID0gWyZdIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IElu
QnlLaW5kOjpCeUlkKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAodHlwZSA9
PSBBY2Nlc3NUeXBlOjpJbkJ5SWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBC
b3g8SklUSW5CeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLApAQCAtMTI0MDgsMTQg
KzEyNDEwLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVEluQnlWYWxHZW5lcmF0b3I+OjpjcmVh
dGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBl
OjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwg
c3Vic2NyaXB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLCBzdWJzY3JpcHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgc3R1YkluZm9HUFIpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7Ci0gICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChr
aW5kID09IEluQnlLaW5kOjpCeUlkKQorICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAodHlw
ZSA9PSBBY2Nlc3NUeXBlOjpJbkJ5SWQpCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZU
TEpJVCkpCkBAIC0xMjQzMCwxMCArMTI0MzIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpCeUlkKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHR5cGUgIT0gQWNjZXNzVHlw
ZTo6SW5CeVZhbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgc3R1YkluZm9HUFIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9w
dGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJ
bmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIHJldHVybkdQUiwKQEAgLTEyNDQyLDE0ICsxMjQ0NCwxNCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCByZXR1
cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLCBz
dWJzY3JpcHQpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvbkluQnlWYWxPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlv
bjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCByZXR1cm5HUFIsCkBAIC0xMjQ1OSw3ICsxMjQ2MSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeVZhbE9w
dGltaXplLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlLCBzdWJzY3JpcHQpLmNhbGwoKTsKQEAgLTEyNDgx
LDEyICsxMjQ4MywyMiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21waWxlSW5CeUlkKCkKICAg
ICB7Ci0gICAgICAgIGNvbXBpbGVJbkJ5PEluQnlLaW5kOjpCeUlkPihsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpLCBtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSk7CisgICAgICAgIGNvbXBp
bGVJbkJ5PEFjY2Vzc1R5cGU6OkluQnlJZD4obG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9u
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUlu
QnlWYWwoKQogICAgIHsKLSAgICAgICAgY29tcGlsZUluQnk8SW5CeUtpbmQ6OkJ5VmFsPihsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKTsKKyAg
ICAgICAgY29tcGlsZUluQnk8QWNjZXNzVHlwZTo6SW5CeVZhbD4obG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKSk7CisgICAgfQorCisgICAgdm9p
ZCBjb21waWxlSGFzUHJpdmF0ZU5hbWUoKQorICAgIHsKKyAgICAgICAgY29tcGlsZUluQnk8QWNj
ZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWU+KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd1N5
bWJvbChtX25vZGUtPmNoaWxkMigpKSk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlSGFzUHJp
dmF0ZUJyYW5kKCkKKyAgICB7CisgICAgICAgIGNvbXBpbGVJbkJ5PEFjY2Vzc1R5cGU6Okhhc1By
aXZhdGVCcmFuZD4obG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93U3ltYm9sKG1fbm9kZS0+
Y2hpbGQyKCkpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVIYXNPd25Qcm9wZXJ0eSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZmQyM2JiOTFiYzkxLi5lZmI0M2MyYzk2ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5OSw4ICsyOTksNiBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2gg
KG9wY29kZUlEKSB7Ci0gICAgICAgIERFRklORV9TTE9XX09QKGhhc19wcml2YXRlX25hbWUpCi0g
ICAgICAgIERFRklORV9TTE9XX09QKGhhc19wcml2YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVf
U0xPV19PUChsZXNzKQogICAgICAgICBERUZJTkVfU0xPV19PUChsZXNzZXEpCiAgICAgICAgIERF
RklORV9TTE9XX09QKGdyZWF0ZXIpCkBAIC0zNzUsNiArMzczLDggQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdHJ5X2dldF9ieV9pZCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2luX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfaW5f
YnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfaGFzX3ByaXZhdGVfbmFtZSkKKyAgICAgICAg
REVGSU5FX09QKG9wX2hhc19wcml2YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0
X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICAg
ICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCkBAIC01ODYsNiArNTg2LDggQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX3RyeV9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbl9i
eV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2luX2J5X3ZhbCkKKyAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2hhc19wcml2YXRlX25hbWUpCisgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9oYXNfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9p
ZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWRfZGly
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYjMxYTk4OGM3YTlkLi44Y2FmOTg3MGJk
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTczLDYgKzU3Myw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2YoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKQEAgLTcwNyw2ICs3MDksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2YoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFuY2VvZl9jdXN0b20oY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CkBAIC03NTUsNiArNzU5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdFJpZ2h0U2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwog
ICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0U2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIAorICAg
ICAgICB2b2lkIGVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdp
c3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlKTsK
KyAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGRzdCwgQWNj
ZXNzVHlwZSk7CisKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIHZvaWQg
ZW1pdE5ld0Z1bmNDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3A+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGFjMDUzODA4YWMxMi4uNjliZjFhMWMzZjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcApAQCAtMjQ5LDggKzI0OSw4IEBAIHZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6
ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogICAg
ICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9j
YXRpb247CiB9CiAKLUpJVEluQnlWYWxHZW5lcmF0b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJl
Z3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgaml0
VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6SW5CeVZhbCwgdXNl
ZFJlZ2lzdGVycykKK0pJVEluQnlWYWxHZW5lcmF0b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAg
ICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBh
Y2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50
SWRlbnRpZmllciA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggNGI0NzliOTc2ZTFlLi5lZTY4MTQxMDFh
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgSklUSW5CeVZhbEdl
bmVyYXRvcigpIHsgfQogCiAgICAgSklUSW5CeVZhbEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJs
b2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLAogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGViODkwMmFhNWNhZC4uNzVkYzdjMzY5ZjJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTUwOCw0
MyArNTA4LDExMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbEdl
bmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVj
dCwgSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSwgYXJyYXlQcm9m
aWxlKSkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0
ZU5hbWUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBrZXkpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KSkK
IHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAg
CisKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkg
eworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZh
bGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOworICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICB9CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3Qg
PSBhc09iamVjdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSBwcm9wZXJ0eVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7CisgICAgQVNTRVJUKHByb3BlcnR5VmFsdWUu
aXNTeW1ib2woKSk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHByb3BlcnR5VmFsdWUudG9Qcm9wZXJ0
eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlv
bigpKTsKKworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAgYm9vbCBmb3VuZCA9IEpTT2Jq
ZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHNsb3QpOwogCisgICAgQVNTRVJUKENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxl
SWRlbnRpZmllckNlbGwocHJvcGVydHlWYWx1ZSkpOworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChwcm9wZXJ0eVZhbHVl
LmFzQ2VsbCgpKTsKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2Rl
QmxvY2ssIGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSksIGlkZW50aWZpZXIpKQorICAgICAgICBy
ZXBhdGNoSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmll
ciwgZm91bmQsIHNsb3QsICpzdHViSW5mbywgSW5CeUtpbmQ6OlByaXZhdGVOYW1lKTsKKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZvdW5kKSk7Cit9CisKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZUdlbmVyaWMsIEVuY29kZWRK
U1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFByb3BlcnR5KSkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKCFiYXNlLT5pc09iamVj
dCgpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgYmFzZSkpOworCisgICAgc3R1
YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3Qo
KSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJ
bnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOwogICAgICAg
ICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIHByb3BlcnR5
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoa2V5KTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5KTsKICAgICBBU1NFUlQocHJvcGVydHlW
YWx1ZS5pc1N5bWJvbCgpKTsKICAgICBhdXRvIHByb3BlcnR5ID0gcHJvcGVydHlWYWx1ZS50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhj
ZXB0aW9uKCkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNPYmpl
Y3QoYmFzZSktPmhhc1ByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5KSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhh
c1ByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5KSkpOwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgRW5jb2RlZEpTVmFs
dWUgYnJhbmQpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVC
cmFuZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCcmFuZCkpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIAorCiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2Up
OworICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xv
YmFsT2JqZWN0LCBiYXNlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7
CisgICAgfQorICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsK
KworICAgIEpTVmFsdWUgYnJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKTsKKyAg
ICBib29sIGZvdW5kID0gYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJpdmF0ZUJyYW5kKGdsb2Jh
bE9iamVjdCwgYnJhbmQpOworCisgICAgQVNTRVJUKENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2Fj
aGVhYmxlSWRlbnRpZmllckNlbGwoYnJhbmQpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoYnJhbmQuYXNDZWxsKCkp
OworICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFz
ZU9iamVjdC0+c3RydWN0dXJlKHZtKSwgaWRlbnRpZmllcikpCisgICAgICAgIHJlcGF0Y2hIYXNQ
cml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIGlkZW50aWZp
ZXIsIGZvdW5kLCAqc3R1YkluZm8pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZm91bmQpKTsKK30KIAorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhh
c1ByaXZhdGVCcmFuZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJyYW5kKSkKK3sKKyAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgaWYgKCFiYXNlLT5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9u
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2Jh
bE9iamVjdCwgYmFzZSkpOworCisgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7Cisg
ICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxP
YmplY3QsIGJhc2VWYWx1ZSkpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChiYXNl
KS0+aGFzUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGJyYW5kKSkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChiYXNlVmFs
dWUpLT5oYXNQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJyYW5kKSkpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5
SWRTdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZDg3NzA2NmM4NTMz
Li5jZDNlMWJkNDE0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCkBAIC0xNzgsOCArMTc4LDEwIEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uSW5CeUlkR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjCiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1
ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwg
dWludHB0cl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlWYWxH
ZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBBcnJheVByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2Zp
bGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlQnJhbmQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZUdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2
YXRlTmFtZU9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKK0pTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kR2VuZXJpYywgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUp
KTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU3RyaWN0LCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0LCB2b2lk
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA1
OWRlN2JlNjQwNzIuLjE1ZTFkMzQ1NzliNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTE3MTAsNyArMTcxMCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDIsIHByb2Zp
bGUpOwogCiAgICAgSklUSW5CeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgQWNjZXNzVHlwZTo6SW5CeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAogICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwg
SlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
QEAgLTE3NzIsNiArMTc3Miw5NCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKK3ZvaWQgSklUOjpl
bWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwg
VmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNjZXNzVHlwZSB0eXBlKQoreworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihw
cm9wZXJ0eU9yQnJhbmQsIHJlZ1QxKTsKKworICAgIEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCB0eXBlLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsK
KyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKKyAgICBtX2lu
QnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwor
fQorCit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBkc3QsIEFj
Y2Vzc1R5cGUgdHlwZSkKK3sKKyAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2
YXRlTmFtZSB8fCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CisKKyAgICBK
SVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwor
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisjaWYgIUVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQorICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24odHlwZSA9PSBBY2Nlc3NU
eXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUgOiBv
cGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEpOwor
I2Vsc2UKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworCisgICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKKworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7CisgICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gcmVnVDA7CisgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eU9yQnJhbmRH
UFIgPSByZWdUMTsKKyAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8
ICFpc0FSTTY0KCkpOworICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlPckJyYW5kR1BSID09IGFy
Z3VtZW50R1BSMSk7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBz
dHViSW5mb0dQUik7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3Bl
cmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZh
dGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PGRlY2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplKSwgZGVjbHR5cGUob3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7CisgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBDYWxsIGNhbGw7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAg
IGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSB0eXBlID09IEFjY2Vzc1R5cGU6Okhh
c1ByaXZhdGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlv
bkhhc1ByaXZhdGVCcmFuZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVu
ZENhbGwodHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1By
aXZhdGVOYW1lT3B0aW1pemUgOiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Cisg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCisKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwor
fQorCit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKKyAgICBlbWl0SGFzUHJpdmF0ZShieXRl
Y29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5LCBBY2Nlc3NU
eXBlOjpIYXNQcml2YXRlTmFtZSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFz
UHJpdmF0ZU5hbWU+KCk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fZHN0LCBB
Y2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2hhc19w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlQnJh
bmQ+KCk7CisgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFz
ZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigpOworICAgIGVtaXRI
YXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2RzdCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5k
KTsKK30KKwogdm9pZCBKSVQ6OmVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5q
ZWN0aW9uQ2hlY2tzKQogewogICAgIGlmICghbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAppbmRleCBmNDdjOTMzODdiYjIuLjU4ZTVkNTJmZTViMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJl
Z1QwLCByZWdUNCwgcHJvZmlsZSk7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpJbkJ5VmFsLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCBy
ZWdUMCksIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtOTUxLDYgKzk1MSw2MSBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZShWaXJ0dWFs
UmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5T3JCcmFuZCwgQWNjZXNzVHlwZSB0eXBlKQoreworICAgIGVtaXRMb2FkMihiYXNlLCByZWdU
MSwgcmVnVDAsIHByb3BlcnR5T3JCcmFuZCwgcmVnVDMsIHJlZ1QyKTsKKyAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOworCisgICAgSklUSW5CeVZhbEdlbmVyYXRv
ciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIHR5
cGUsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwg
SlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSW52YWxpZEdQUlJlZyk7CisgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgbV9pbkJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIGVtaXRTdG9yZShkc3QsIHJlZ1Qx
LCByZWdUMCk7Cit9CisKK3ZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lz
dGVyIGRzdCwgQWNjZXNzVHlwZSB0eXBlKQoreworICAgIEFTU0VSVCh0eXBlID09IEFjY2Vzc1R5
cGU6Okhhc1ByaXZhdGVOYW1lIHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5k
KTsKKworICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFs
SW5kZXgrK107CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUg
PyBvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplIDogb3BlcmF0aW9uSGFzUHJpdmF0ZUJy
YW5kT3B0aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSk7CisKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIGNhbGwpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKKyAgICBlbWl0
SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3By
b3BlcnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7Cit9CisKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5
dGVjb2RlLm1fZHN0LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7Cit9CisKK3ZvaWQgSklU
OjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BIYXNQcml2YXRlQnJhbmQ+KCk7CisgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3Qs
IGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0
ZUJyYW5kKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5k
PigpOworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2RzdCwgQWNjZXNzVHlwZTo6
SGFzUHJpdmF0ZUJyYW5kKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRWYXJJbmplY3Rpb25DaGVjayhi
b29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogewogICAgIGlmICghbmVlZHNWYXJJbmplY3Rp
b25DaGVja3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBkZWIxYWQ4
MDkzODMuLjM3YTgwYjI5NTc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC05MjIsNiArOTIyLDMyIEBAIHZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQCiAgICAgfQogfQog
CitpbmxpbmUgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZU9wdGltaXpp
bmdJbkJ5RnVuY3Rpb24oSW5CeUtpbmQga2luZCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAg
ICBjYXNlIEluQnlLaW5kOjpCeUlkOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uSW5CeUlkT3B0
aW1pemU7CisgICAgY2FzZSBJbkJ5S2luZDo6QnlWYWw6CisgICAgICAgIHJldHVybiBvcGVyYXRp
b25JbkJ5VmFsT3B0aW1pemU7CisgICAgY2FzZSBJbkJ5S2luZDo6UHJpdmF0ZU5hbWU6CisgICAg
ICAgIHJldHVybiBvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplOworICAgIH0KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitpbmxpbmUgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZUdlbmVyaWNJbkJ5RnVuY3Rpb24oSW5CeUtpbmQga2lu
ZCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIEluQnlLaW5kOjpCeUlkOgorICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uSW5CeUlkR2VuZXJpYzsKKyAgICBjYXNlIEluQnlLaW5kOjpC
eVZhbDoKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkluQnlWYWxHZW5lcmljOworICAgIGNhc2Ug
SW5CeUtpbmQ6OlByaXZhdGVOYW1lOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uSGFzUHJpdmF0
ZU5hbWVHZW5lcmljOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5KAogICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFz
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsCiAgICAgYm9vbCB3YXNGb3VuZCwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIElu
QnlLaW5kIGtpbmQpCkBAIC0xMDE2LDE3ICsxMDQyLDEyIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUluQnkoCiAKICAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29k
ZSgpKSB7CiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluUmVwbGFjZVdpdGhKdW1wLCBz
dHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7
CiAKLSAgICAgICAgICAgIHN3aXRjaCAoa2luZCkgewotICAgICAgICAgICAgY2FzZSBJbkJ5S2lu
ZDo6QnlJZDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOworICAg
ICAgICAgICAgaWYgKGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpCiAgICAgICAgICAgICAgICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgSW5CeUtpbmQ6OkJ5VmFs
OgorICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5m
bywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkp
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KIApAQCAtMTA0MiwxMSArMTA2Myw1MyBAQCB2b2lkIHJlcGF0Y2hJbkJ5KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYgogCiAg
ICAgaWYgKHRyeUNhY2hlSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwg
cHJvcGVydHlOYW1lLCB3YXNGb3VuZCwgc2xvdCwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9u
Q2FjaGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoR2VuZXJpYywg
YmFzZU9iamVjdC0+Y2xhc3NJbmZvKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZy
b21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKLSAgICAgICAgaWYgKGtpbmQgPT0gSW5C
eUtpbmQ6OkJ5SWQpCi0gICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZEdlbmVyaWMpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbklu
QnlWYWxHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLCBhcHByb3ByaWF0ZUdlbmVyaWNJbkJ5RnVuY3Rpb24oa2luZCkpOworICAgIH0KK30K
Kworc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSGFzUHJpdmF0ZUJyYW5kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCog
YmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFuZElELCBib29sIHdhc0ZvdW5kLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0OworICAgIElkZW50aWZpZXIgaWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBicmFuZElELnVpZCgpKTsKKworICAgIHsKKyAg
ICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywg
dm0uaGVhcCk7CisgICAgICAgIGlmIChmb3JjZUlDRmFpbHVyZShnbG9iYWxPYmplY3QpKQorICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBiYXNlLT5zdHJ1Y3R1cmUodm0pOworCisgICAgICAgIElubGluZUNhY2hlQWN0aW9u
IGFjdGlvbiA9IGFjdGlvbkZvckNlbGwodm0sIGJhc2UpOworICAgICAgICBpZiAoYWN0aW9uICE9
IEF0dGVtcHRUb0NhY2hlKQorICAgICAgICAgICAgcmV0dXJuIGFjdGlvbjsKKworICAgICAgICBi
b29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkFk
ZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0
eSkpOworCisgICAgICAgIFJlZjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3Jl
YXRlKHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5IaXQgOiBBY2Nlc3ND
YXNlOjpJbk1pc3MsIGJyYW5kSUQsIGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgeyB9LCB7IH0p
OworCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3Zl
KG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsK
KyAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOworCisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6
cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBz
dHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5j
b2RlKCkpKTsKKyAgICAgICAgfQogICAgIH0KKworICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFy
U3R1YklmTmVlZGVkKHZtLCBzdHViSW5mbywgY29kZUJsb2NrLCByZXN1bHQpOworCisgICAgcmV0
dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBOb3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hl
TGF0ZXI7Cit9CisKK3ZvaWQgcmVwYXRjaEhhc1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2VPYmplY3Qs
IENhY2hlYWJsZUlkZW50aWZpZXIgYnJhbmRJRCwgYm9vbCB3YXNGb3VuZCwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNj
b3BlKGZhbHNlKTsKKworICAgIGlmICh0cnlDYWNoZUhhc1ByaXZhdGVCcmFuZChnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgYnJhbmRJRCwgd2FzRm91bmQsIHN0dWJJbmZvKSA9
PSBHaXZlVXBPbkNhY2hlKQorICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZEdlbmVyaWMpOwogfQogCiBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgKQEAgLTE3MjgsMTYg
KzE3OTEsMTcgQEAgdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW4KIAogdm9pZCByZXNldEluQnkoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQg
a2luZCkKIHsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEluQnlLaW5kOjpCeUlkOgot
ICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlv
bkluQnlJZE9wdGltaXplKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0luQnlGdW5jdGlvbihraW5kKSk7CisgICAgaWYg
KGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpCiAgICAgICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHVi
QXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSW5CeUtpbmQ6OkJ5VmFsOgotICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSk7CisgICAgZWxzZQogICAg
ICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVB
Y2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KK30KKwor
dm9pZCByZXNldEhhc1ByaXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mbywgb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIElubGlu
ZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2Rl
QmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldEluc3RhbmNlT2YoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmgKaW5kZXggNzJjNjZiMjg5MTQzLi5jMTlmMDJkNGQ0MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC01MCw3ICs1MCw4IEBAIGVudW0gY2xhc3MgRGVsQnlL
aW5kIHsKIAogZW51bSBjbGFzcyBJbkJ5S2luZCB7CiAgICAgQnlJZCwKLSAgICBCeVZhbAorICAg
IEJ5VmFsLAorICAgIFByaXZhdGVOYW1lCiB9OwogCiB2b2lkIHJlcGF0Y2hBcnJheUdldEJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGluZGV4
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwpAQCAtNTgsNiArNTksNyBAQCB2b2lkIHJlcGF0Y2hHZXRC
eShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIGNvbgogdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayos
IEpTVmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFB1dFByb3Bl
cnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7CiB2b2lkIHJlcGF0Y2hEZWxl
dGVCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpT
VmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZv
JiwgRGVsQnlLaW5kLCBFQ01BTW9kZSk7CiB2b2lkIHJlcGF0Y2hJbkJ5KEpTR2xvYmFsT2JqZWN0
KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBib29sIHdhc0Zv
dW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEluQnlLaW5kKTsK
K3ZvaWQgcmVwYXRjaEhhc1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayos
IEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgYm9vbCB3YXNGb3VuZCwgIFN0cnVjdHVy
ZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJl
U3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaFNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCos
IENvZGVCbG9jayosIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
U3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmpl
Y3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0
dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKQEAgLTcwLDYgKzcyLDcgQEAgdm9pZCByZXNl
dEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQg
cmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0
RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCBy
ZXNldEluQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBJbkJ5S2luZCk7Cit2b2lk
IHJlc2V0SGFzUHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2
b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9p
ZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7
CiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZv
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApp
bmRleCA3MzM2YTVhMzMwODguLjk1YjlkYWVhYmY3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xNDMyLDYgKzE0MzIsMzUgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCkKICAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3Bl
cmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX3Byb3BlcnR5KSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOwogfQogCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFzX3ByaXZhdGVfbmFtZSkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEhhc1ByaXZhdGVO
YW1lPigpOworICAgIGF1dG8gYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVj
b2RlLm1fYmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgTExJ
TlRfVEhST1coY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2JqZWN0LCBiYXNl
VmFsdWUpKTsKKworICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1l
LCBieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICBBU1NFUlQocHJvcGVydHlWYWx1ZS5pc1N5bWJv
bCgpKTsKKyAgICBhdXRvIHByb3BlcnR5ID0gcHJvcGVydHlWYWx1ZS50b1Byb3BlcnR5S2V5KGds
b2JhbE9iamVjdCk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24o
KSk7CisKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhh
c1ByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5KSkpOworfQorCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaGFzX3ByaXZhdGVfYnJhbmQpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+KCk7
CisgICAgYXV0byBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9i
YXNlKTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICBMTElOVF9USFJP
VyhjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkp
OworCisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQ
cml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUu
bV9icmFuZCkpKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfZ2V0
dGVyX2J5X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDQzYzZjYTg0NTMwZS4uZmJmZDUzY2M1NTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAt
NzMsNiArNzMsOCBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9i
eV9pZF93aXRoX3RoaXMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9p
ZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7CitM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUpOwor
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9icmFuZCk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWwpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRl
eCBjZjBkNjBjZjEzM2YuLjcxMjliMGFiMzBmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjAxMCw4ICsyMDEwLDYg
QEAgaWYgbm90IEpTVkFMVUU2NAogICAgIHNsb3dQYXRoT3AoZ2V0X3Byb3RvdHlwZV9vZikKIGVu
ZAogCi1zbG93UGF0aE9wKGhhc19wcml2YXRlX25hbWUpCi1zbG93UGF0aE9wKGhhc19wcml2YXRl
X2JyYW5kKQogc2xvd1BhdGhPcChpc19jYWxsYWJsZSkKIHNsb3dQYXRoT3AoaXNfY29uc3RydWN0
b3IpCiBzbG93UGF0aE9wKGxlc3MpCkBAIC0yMDQ0LDYgKzIwNDIsOCBAQCBlbmQKIAogbGxpbnRT
bG93UGF0aE9wKGluX2J5X2lkKQogbGxpbnRTbG93UGF0aE9wKGluX2J5X3ZhbCkKK2xsaW50U2xv
d1BhdGhPcChoYXNfcHJpdmF0ZV9uYW1lKQorbGxpbnRTbG93UGF0aE9wKGhhc19wcml2YXRlX2Jy
YW5kKQogbGxpbnRTbG93UGF0aE9wKGRlbF9ieV9pZCkKIGxsaW50U2xvd1BhdGhPcChkZWxfYnlf
dmFsKQogbGxpbnRTbG93UGF0aE9wKGluc3RhbmNlb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBhMWM0MTMxMDg2MTQuLjEx
Mjk1NGJiOWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC04MzAsMzUgKzgzMCw2IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NM
T1dfUEFUSChzbG93X3BhdGhfaXNfY29uc3RydWN0b3IpCiAgICAgUkVUVVJOKGpzQm9vbGVhbihH
RVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS5pc0NvbnN0cnVjdG9yKHZtKSkpOwog
fQogCi1KU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2hhc19wcml2YXRlX25h
bWUpCi17Ci0gICAgQkVHSU4oKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BIYXNQ
cml2YXRlTmFtZT4oKTsKLSAgICBhdXRvIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFz
ZSkuanNWYWx1ZSgpOwotICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIFRI
Uk9XKGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVl
KSk7Ci0KLSAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX3Byb3BlcnR5
KS5qc1ZhbHVlKCk7Ci0gICAgQVNTRVJUKHByb3BlcnR5VmFsdWUuaXNTeW1ib2woKSk7Ci0gICAg
YXV0byBwcm9wZXJ0eSA9IHByb3BlcnR5VmFsdWUudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OwotICAgIEVYQ0VQVElPTl9BU1NFUlQoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwotCi0gICAg
UkVUVVJOKGpzQm9vbGVhbihhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQcml2YXRlRmllbGQoZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eSkpKTsKLX0KLQotSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRI
KHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9icmFuZCkKLXsKLSAgICBCRUdJTigpOwotCi0gICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKLSAgICBhdXRvIGJhc2VW
YWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOwotICAgIGlmICghYmFzZVZh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIFRIUk9XKGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVy
cm9yKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlKSk7Ci0KLSAgICBSRVRVUk4oanNCb29sZWFuKGFz
T2JqZWN0KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIEdFVF9DKGJ5
dGVjb2RlLm1fYnJhbmQpLmpzVmFsdWUoKSkpKTsKLX0KLQogdGVtcGxhdGU8T3Bjb2RlU2l6ZSB3
aWR0aD4KIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBlIGl0ZXJhdG9yT3BlblRyeUZh
c3RJbXBsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmlu
ZGV4IGM4MzA5ODFiMDM5My4uZDhkMTUwMWZiMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjUxLDggKzI1MSw2IEBAIEpTQ19E
RUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3R5cGVvZl9pc19vYmplY3QpOwogSlND
X0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdHlwZW9mX2lzX2Z1bmN0aW9uKTsK
IEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2lzX2NhbGxhYmxlKTsKIEpT
Q19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2lzX2NvbnN0cnVjdG9yKTsKLUpT
Q19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUpOwot
SlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaGFzX3ByaXZhdGVfYnJhbmQp
OwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfc3RyY2F0KTsKIEpTQ19E
RUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSk7CiBKU0NfREVD
TEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF90b19wcm9wZXJ0eV9rZXkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggOTVhYjlhYzBmNGNl
Li42N2NmYjk5ZjM5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaApAQCAtNTI0LDcgKzUyNCw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNl
SklUQ2FnZSgpOwogICAgIHYoQm9vbCwgdXNlUHJpdmF0ZVN0YXRpY0NsYXNzRmllbGRzLCB0cnVl
LCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIHN0
YXRpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAgICAgdihCb29sLCB1c2VQcml2
YXRlQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1
bmRlcnN0YW5kIHByaXZhdGUgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYo
Qm9vbCwgdXNlUHJpdmF0ZU1ldGhvZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJz
ZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgbWV0aG9kcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCi0g
ICAgdihCb29sLCB1c2VQcml2YXRlSW4sIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFy
c2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIG1lbWJlciBleGlzdGVuY2UgY2hlY2tzIHdpdGgg
dGhlIGBpbmAgb3BlcmF0b3IuIikgXAorICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUluLCB0cnVlLCBO
b3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIG1lbWJl
ciBleGlzdGVuY2UgY2hlY2tzIHdpdGggdGhlIGBpbmAgb3BlcmF0b3IuIikgXAogICAgIHYoQm9v
bCwgdXNlV2ViQXNzZW1ibHlTdHJlYW1pbmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRvIHJ1biBX
ZWJBc3NlbWJseSdzIFN0cmVhbWluZyBBUEkiKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJs
eVJlZmVyZW5jZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gcmVm
ZXJlbmNlcyBzcGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlv
blJlZmVyZW5jZXMsIGZhbHNlLCBOb3JtYWwsICJBbGxvdyBmdW5jdGlvbiB0eXBlcyBmcm9tIHRo
ZSB3YXNtIHR5cGVkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgc3BlYy4iKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431704</attachid>
            <date>2021-06-17 12:29:44 -0700</date>
            <delta_ts>2021-06-17 12:35:22 -0700</delta_ts>
            <desc>Baseline-only patch for MIPS EWS debugging</desc>
            <filename>226146-for-mips.diff</filename>
            <type>text/plain</type>
            <size>36911</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uY3BwCmluZGV4IDFkNzM1MGEyOTM5NC4uYjg1NWU4ODY1Yjk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI3
OSw2ICsyNzksMTIgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAgICBjYXNlIEFjY2Vzc1R5
cGU6OkluQnlWYWw6CiAgICAgICAgIHJlc2V0SW5CeShjb2RlQmxvY2ssICp0aGlzLCBJbkJ5S2lu
ZDo6QnlWYWwpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6Okhhc1ByaXZh
dGVOYW1lOgorICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6OlBy
aXZhdGVOYW1lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2
YXRlQnJhbmQ6CisgICAgICAgIHJlc2V0SGFzUHJpdmF0ZUJyYW5kKGNvZGVCbG9jaywgKnRoaXMp
OworICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6CiAgICAg
ICAgIHJlc2V0SW5zdGFuY2VPZihjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CmluZGV4IDBmNjc3NWYxNmZiYy4uN2YyZjYyNTZjMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtNTcsNiArNTcsOCBA
QCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIFB1dCwKICAgICBJbkJ5SWQs
CiAgICAgSW5CeVZhbCwKKyAgICBIYXNQcml2YXRlTmFtZSwKKyAgICBIYXNQcml2YXRlQnJhbmQs
CiAgICAgSW5zdGFuY2VPZiwKICAgICBEZWxldGVCeUlELAogICAgIERlbGV0ZUJ5VmFsLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGZkMjNiYjkxYmM5MS4uZWZiNDNjMmM5NmUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yOTksOCArMjk5LDYgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChv
cGNvZGVJRCkgewotICAgICAgICBERUZJTkVfU0xPV19PUChoYXNfcHJpdmF0ZV9uYW1lKQotICAg
ICAgICBERUZJTkVfU0xPV19PUChoYXNfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX1NM
T1dfT1AobGVzcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AobGVzc2VxKQogICAgICAgICBERUZJ
TkVfU0xPV19PUChncmVhdGVyKQpAQCAtMzc1LDYgKzM3Myw4IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3RyeV9nZXRfYnlfaWQpCiAg
ICAgICAgIERFRklORV9PUChvcF9pbl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2luX2J5
X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX2hhc19wcml2YXRlX25hbWUpCisgICAgICAgIERF
RklORV9PUChvcF9oYXNfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9i
eV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAg
IERFRklORV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0KQpAQCAtNTg2LDYgKzU4Niw4IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF90cnlfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5fYnlf
aWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbl9ieV92YWwpCisgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9oYXNfcHJpdmF0ZV9uYW1lKQorICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfaGFzX3ByaXZhdGVfYnJhbmQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWRf
d2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX2RpcmVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGIzMWE5ODhjN2E5ZC4uOGNhZjk4NzBiZGZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU3Myw2ICs1NzMsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0
IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IElu
c3RydWN0aW9uKik7CkBAIC03MDcsNiArNzA5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9o
YXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3VzdG9tKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2psZXNzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwpAQCAtNzU1LDYgKzc1OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRSaWdodFNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAg
ICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CiAKKyAgICAg
ICAgdm9pZCBlbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNjZXNzVHlwZSk7Cisg
ICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBkc3QsIEFjY2Vz
c1R5cGUpOworCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICB2b2lkIGVt
aXROZXdGdW5jQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBhYzA1MzgwOGFjMTIuLjY5YmYxYTFjM2Y4YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAKQEAgLTI0OSw4ICsyNDksOCBAQCB2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZp
bmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKICAgICAg
ICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0
aW9uOwogfQogCi1KSVRJbkJ5VmFsR2VuZXJhdG9yOjpKSVRJbkJ5VmFsR2VuZXJhdG9yKENvZGVC
bG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdz
IHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5
cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkluQnlWYWwsIHVzZWRS
ZWdpc3RlcnMpCitKSVRJbkJ5VmFsR2VuZXJhdG9yOjpKSVRJbkJ5VmFsR2VuZXJhdG9yKENvZGVC
bG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAg
OiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNj
ZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElk
ZW50aWZpZXIgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDRiNDc5Yjk3NmUxZS4uZWU2ODE0MTAxYTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHVibGljOgogICAgIEpJVEluQnlWYWxHZW5l
cmF0b3IoKSB7IH0KIAogICAgIEpJVEluQnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9j
ayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywKICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpT
VmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBlYjg5MDJhYTVjYWQuLjYwMjk3OGZmYTJlMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC01MDgsNiAr
NTA4LDExMiBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbEdlbmVy
aWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwg
SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSwgYXJyYXlQcm9maWxl
KSkpOwogfQogCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZU5h
bWVPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpKQoreworICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAg
ICBpZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9i
amVjdCwgYmFzZVZhbHVlKSk7CisgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOworICAg
IH0KKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisKKyAg
ICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5
KTsKKyAgICBBU1NFUlQocHJvcGVydHlWYWx1ZS5pc1N5bWJvbCgpKTsKKyAgICBhdXRvIHByb3Bl
cnR5ID0gcHJvcGVydHlWYWx1ZS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgRVhD
RVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgUHJvcGVydHlTbG90IHNs
b3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3Bl
cnR5KTsKKyAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QoYmFz
ZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CisKKyAgICBBU1NFUlQoQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChwcm9wZXJ0eVZhbHVl
KSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwor
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21DZWxsKHByb3BlcnR5VmFsdWUuYXNDZWxsKCkpOworICAgIGlmIChzdHViSW5m
by0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZU9iamVjdC0+c3RydWN0dXJl
KHZtKSwgaWRlbnRpZmllcikpCisgICAgICAgIHJlcGF0Y2hJbkJ5KGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCBmb3VuZCwgc2xvdCwgKnN0dWJJbmZvLCBJ
bkJ5S2luZDo6UHJpdmF0ZU5hbWUpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZm91bmQpKTsKK30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhh
c1ByaXZhdGVOYW1lR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpKQoreworICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworCisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIGlmICghYmFz
ZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2JqZWN0LCBiYXNl
VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CisgICAgfQorCisgICAg
SlNWYWx1ZSBwcm9wZXJ0eVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7
CisgICAgQVNTRVJUKHByb3BlcnR5VmFsdWUuaXNTeW1ib2woKSk7CisgICAgYXV0byBwcm9wZXJ0
eSA9IHByb3BlcnR5VmFsdWUudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQ
VElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVGaWVsZChnbG9i
YWxPYmplY3QsIHByb3BlcnR5KSkpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJyYW5kKSkKK3sKKyAg
ICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0
ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOworICAgICAgICByZXR1cm4gZW5jb2Rl
ZEpTVmFsdWUoKTsKKyAgICB9CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChi
YXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSBicmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QnJhbmQpOworICAgIGJvb2wgZm91bmQgPSBhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQcml2YXRl
QnJhbmQoZ2xvYmFsT2JqZWN0LCBicmFuZCk7CisKKyAgICBBU1NFUlQoQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChicmFuZCkpOworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChicmFu
ZC5hc0NlbGwoKSk7CisgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLCBpZGVudGlmaWVyKSkKKyAgICAgICAg
cmVwYXRjaEhhc1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVj
dCwgaWRlbnRpZmllciwgZm91bmQsICpzdHViSW5mbyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihmb3VuZCkpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQnJhbmQpKQorewor
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworCisg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAg
IGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBiYXNlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CisgICAg
fQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZh
bHVlKS0+aGFzUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCcmFuZCkpKSk7Cit9CisKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQ
cml2YXRlTmFtZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGtleSkpCiB7CiAgICAgU3VwZXJTYW1wbGVy
U2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAppbmRleCBkODc3MDY2Yzg1MzMuLmFkZmVmMDEyMDE5MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE3OCw2ICsxNzgsMTEg
QEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5SWRHZW5lcmljLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWMKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCB1aW50cHRyX3QpKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQ
cml2YXRlTmFtZUdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOworSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uSGFzUHJpdmF0ZUJyYW5kR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9w
dGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKKwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZSwgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZCwgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNTlkZTdiZTY0MDcy
Li4xNWUxZDM0NTc5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCkBAIC0xNzEwLDcgKzE3MTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
bl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QyLCBwcm9maWxlKTsKIAogICAg
IEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5
cGU6OkluQnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBp
ZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCkBAIC0xNzcyLDYg
KzE3NzIsOTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBnZW4ucmVwb3J0U2xvd1Bh
dGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZh
dGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdp
c3RlciBwcm9wZXJ0eU9yQnJhbmQsIEFjY2Vzc1R5cGUgdHlwZSkKK3sKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwocmVnVDAsIGJhc2UpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHlPckJy
YW5kLCByZWdUMSk7CisKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9j
b2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgdHlwZSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMik7CisgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CisgICAgbV9pbkJ5VmFscy5hcHBl
bmQoZ2VuKTsKKworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwordm9pZCBK
SVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBBY2Nlc3NUeXBlIHR5
cGUpCit7CisgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwg
dHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworCisgICAgSklUSW5CeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKyAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
KyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJp
dmF0ZU5hbWUgPyBvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplIDogb3BlcmF0aW9uSGFz
UHJpdmF0ZUJyYW5kT3B0aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHJlZ1QxKTsKKyNlbHNlCisgICAg
Vk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9m
ZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNv
ZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CisKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IHJlZ1QwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlPckJyYW5kR1BSID0gcmVnVDE7
CisgICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgp
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5T3JCcmFuZEdQUiA9PSBhcmd1bWVudEdQUjEp
OworCisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIp
OworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkhhc1By
aXZhdGVOYW1lT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGlt
aXplKT46OnZhbHVlKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShv
cGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldFBy
aXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOworCisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1Yklu
Zm8oKS0+bV9zbG93T3BlcmF0aW9uID0gdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFt
ZSA/IG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUgOiBvcGVyYXRpb25IYXNQcml2YXRl
QnJhbmRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKHR5cGUg
PT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgPyBvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9w
dGltaXplIDogb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0
dXJuVmFsdWVHUFIpOworI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSGFzUHJpdmF0ZU5hbWU+KCk7CisgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3Qs
IGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJp
dmF0ZU5hbWUpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVOYW1l
PigpOworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2RzdCwgQWNjZXNzVHlwZTo6
SGFzUHJpdmF0ZU5hbWUpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFu
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigpOworICAg
IGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2Rl
Lm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKKyAgICBlbWl0SGFzUHJpdmF0ZVNs
b3coYnl0ZWNvZGUubV9kc3QsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7Cit9CisKIHZv
aWQgSklUOjplbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNr
cykKIHsKICAgICBpZiAoIW5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggZjQ3
YzkzMzg3YmIyLi41OGU1ZDUyZmU1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtOTI0LDcgKzkyNCw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDQs
IHByb2ZpbGUpOwogCiAgICAgSklUSW5CeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgQWNjZXNzVHlwZTo6SW5CeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBJbnZh
bGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTk1MSw2ICs5NTEsNjEgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2wKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOwogfQogCit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRz
dCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU9yQnJhbmQs
IEFjY2Vzc1R5cGUgdHlwZSkKK3sKKyAgICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBw
cm9wZXJ0eU9yQnJhbmQsIHJlZ1QzLCByZWdUMik7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKGJhc2UsIHJlZ1QxKTsKKworICAgIEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAg
ICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCB0eXBlLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCksIEludmFsaWRHUFJSZWcpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1faW5C
eVZhbHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwor
fQorCit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBkc3QsIEFj
Y2Vzc1R5cGUgdHlwZSkKK3sKKyAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2
YXRlTmFtZSB8fCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CisKKyAgICBK
SVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwor
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbih0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lID8gb3BlcmF0aW9u
SGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXpl
LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCBy
ZWdUMikpOworCisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxs
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7CisgICAgZW1pdEhhc1ByaXZhdGUo
Ynl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSwgQWNj
ZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFz
X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEhhc1ByaXZhdGVOYW1lPigpOworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2Rz
dCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9o
YXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0
ZUJyYW5kPigpOworICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5t
X2Jhc2UsIGJ5dGVjb2RlLm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7Cit9
CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKKyAgICBl
bWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9kc3QsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVC
cmFuZCk7Cit9CisKIHZvaWQgSklUOjplbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1Zh
ckluamVjdGlvbkNoZWNrcykKIHsKICAgICBpZiAoIW5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZGViMWFkODA5MzgzLi4zN2E4
MGIyOTU3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtOTIyLDYg
KzkyMiwzMiBAQCB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUAogICAgIH0KIH0KIAoraW5saW5lIEZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVPcHRpbWl6aW5nSW5CeUZ1bmN0
aW9uKEluQnlLaW5kIGtpbmQpCit7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBJbkJ5
S2luZDo6QnlJZDoKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkluQnlJZE9wdGltaXplOworICAg
IGNhc2UgSW5CeUtpbmQ6OkJ5VmFsOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uSW5CeVZhbE9w
dGltaXplOworICAgIGNhc2UgSW5CeUtpbmQ6OlByaXZhdGVOYW1lOgorICAgICAgICByZXR1cm4g
b3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworaW5saW5lIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4gYXBwcm9wcmlhdGVHZW5lcmljSW5CeUZ1bmN0aW9uKEluQnlLaW5kIGtpbmQpCit7CisgICAg
c3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBJbkJ5S2luZDo6QnlJZDoKKyAgICAgICAgcmV0dXJu
IG9wZXJhdGlvbkluQnlJZEdlbmVyaWM7CisgICAgY2FzZSBJbkJ5S2luZDo6QnlWYWw6CisgICAg
ICAgIHJldHVybiBvcGVyYXRpb25JbkJ5VmFsR2VuZXJpYzsKKyAgICBjYXNlIEluQnlLaW5kOjpQ
cml2YXRlTmFtZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lR2VuZXJp
YzsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIENhY2hlYWJs
ZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLAogICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBJbkJ5S2luZCBraW5k
KQpAQCAtMTAxNiwxNyArMTA0MiwxMiBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVJbkJ5KAogCiAgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgewogICAg
ICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5j
bGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogCi0gICAgICAg
ICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgICAgIGNhc2UgSW5CeUtpbmQ6OkJ5SWQ6Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKKyAgICAgICAgICAgIGlm
IChraW5kID09IEluQnlLaW5kOjpCeUlkKQogICAgICAgICAgICAgICAgIElubGluZUFjY2Vzczo6
cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEluQnlLaW5kOjpCeVZhbDoKKyAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJ
bkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEw
NDIsMTEgKzEwNjMsNTMgQEAgdm9pZCByZXBhdGNoSW5CeShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGIKIAogICAgIGlmICh0cnlD
YWNoZUluQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHByb3BlcnR5TmFt
ZSwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZvLCBraW5kKSA9PSBHaXZlVXBPbkNhY2hlKSB7CiAg
ICAgICAgIExPR19JQygoSUNFdmVudDo6SW5SZXBsYWNlV2l0aEdlbmVyaWMsIGJhc2VPYmplY3Qt
PmNsYXNzSW5mbyhnbG9iYWxPYmplY3QtPnZtKCkpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBw
cm9wZXJ0eU5hbWUudWlkKCkpKSk7Ci0gICAgICAgIGlmIChraW5kID09IEluQnlLaW5kOjpCeUlk
KQotICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBv
cGVyYXRpb25JbkJ5SWRHZW5lcmljKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVwYXRj
aFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5VmFsR2VuZXJp
Yyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBw
cm9wcmlhdGVHZW5lcmljSW5CeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICB9Cit9CisKK3N0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUhhc1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIENhY2hl
YWJsZUlkZW50aWZpZXIgYnJhbmRJRCwgYm9vbCB3YXNGb3VuZCwgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgYnJhbmRJRC51aWQoKSk7CisKKyAgICB7CisgICAgICAgIEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOwor
ICAgICAgICBpZiAoZm9yY2VJQ0ZhaWx1cmUoZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOworCisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFz
ZS0+c3RydWN0dXJlKHZtKTsKKworICAgICAgICBJbmxpbmVDYWNoZUFjdGlvbiBhY3Rpb24gPSBh
Y3Rpb25Gb3JDZWxsKHZtLCBiYXNlKTsKKyAgICAgICAgaWYgKGFjdGlvbiAhPSBBdHRlbXB0VG9D
YWNoZSkKKyAgICAgICAgICAgIHJldHVybiBhY3Rpb247CisKKyAgICAgICAgYm9vbCBpc0Jhc2VQ
cm9wZXJ0eSA9IHRydWU7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5BZGRBY2Nlc3NDYXNl
LCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKKworICAg
ICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29k
ZUJsb2NrLCB3YXNGb3VuZCA/IEFjY2Vzc0Nhc2U6OkluSGl0IDogQWNjZXNzQ2FzZTo6SW5NaXNz
LCBicmFuZElELCBpbnZhbGlkT2Zmc2V0LCBzdHJ1Y3R1cmUsIHsgfSwgeyB9KTsKKworICAgICAg
ICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgYnJhbmRJRCwgV1RGTW92ZShuZXdDYXNlKSk7
CisKKyAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29kZSgpKSB7CisgICAgICAgICAg
ICBMT0dfSUMoKElDRXZlbnQ6OkluUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKKworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0LmNvZGUoKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7Cisg
ICAgICAgIH0KICAgICB9CisKKyAgICBmaXJlV2F0Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRl
ZCh2bSwgc3R1YkluZm8sIGNvZGVCbG9jaywgcmVzdWx0KTsKKworICAgIHJldHVybiByZXN1bHQu
c2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOworfQor
Cit2b2lkIHJlcGF0Y2hIYXNQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBDYWNoZWFibGVJ
ZGVudGlmaWVyIGJyYW5kSUQsIGJvb2wgd2FzRm91bmQsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbykKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7
CisKKyAgICBpZiAodHJ5Q2FjaGVIYXNQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2VPYmplY3QsIGJyYW5kSUQsIHdhc0ZvdW5kLCBzdHViSW5mbykgPT0gR2l2ZVVwT25D
YWNoZSkKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBv
cGVyYXRpb25IYXNQcml2YXRlQnJhbmRHZW5lcmljKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCkBAIC0xNzI4LDE2ICsxNzkxLDE3IEBA
IHZvaWQgcmVzZXREZWxCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBEZWxCeUtpbmQga2luCiAKIHZvaWQgcmVzZXRJbkJ5KENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEluQnlLaW5kIGtpbmQpCiB7Ci0g
ICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBJbkJ5S2luZDo6QnlJZDoKLSAgICAgICAgcmVw
YXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5SWRPcHRp
bWl6ZSk7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHBy
b3ByaWF0ZU9wdGltaXppbmdJbkJ5RnVuY3Rpb24oa2luZCkpOworICAgIGlmIChraW5kID09IElu
QnlLaW5kOjpCeUlkKQogICAgICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNj
ZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEluQnlL
aW5kOjpCeVZhbDoKLSAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpOworICAgIGVsc2UKICAgICAgICAgSW5saW5l
QWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVC
bG9jaywgc3R1YkluZm8pOwotICAgICAgICBicmVhazsKLSAgICB9Cit9CisKK3ZvaWQgcmVzZXRI
YXNQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKK3sKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8s
IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJl
c2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHVi
SW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRJbnN0YW5jZU9mKENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CmluZGV4IDcyYzY2YjI4OTE0My4uYzE5ZjAyZDRkNDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guaApAQCAtNTAsNyArNTAsOCBAQCBlbnVtIGNsYXNzIERlbEJ5S2luZCB7CiAKIGVu
dW0gY2xhc3MgSW5CeUtpbmQgewogICAgIEJ5SWQsCi0gICAgQnlWYWwKKyAgICBCeVZhbCwKKyAg
ICBQcml2YXRlTmFtZQogfTsKIAogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJl
U3R1YkluZm8mKTsKQEAgLTU4LDYgKzU5LDcgQEAgdm9pZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxP
YmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb24KIHZv
aWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBT
dHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBT
dHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwogdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9i
YWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1
Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2lu
ZCwgRUNNQU1vZGUpOwogdm9pZCByZXBhdGNoSW5CeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9j
ayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgYm9vbCB3YXNGb3VuZCwgY29uc3Qg
UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBJbkJ5S2luZCk7Cit2b2lkIHJlcGF0
Y2hIYXNQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCos
IENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsICBTdHJ1Y3R1cmVTdHViSW5mbyYp
Owogdm9pZCByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxv
Y2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7
CiB2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sq
LCBKU09iamVjdCosIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0
dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJs
b2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZv
JiwgYm9vbCB3YXNGb3VuZCk7CkBAIC03MCw2ICs3Miw3IEBAIHZvaWQgcmVzZXRHZXRCeShDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJ
RChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5KENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgSW5CeUtpbmQpOwordm9pZCByZXNldEhhc1By
aXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldElu
c3RhbmNlT2YoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRDaGVj
a1ByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNl
dFNldFByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNzMzNmE1
YTMzMDg4Li45NWI5ZGFlYWJmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTQzMiw2ICsxNDMyLDM1IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9pbl9ieV92YWwpCiAgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihD
b21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGdldE9wZXJhbmQoY2FsbEZy
YW1lLCBieXRlY29kZS5tX2Jhc2UpLCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9w
cm9wZXJ0eSksICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKIH0KIAorTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKKyAg
ICBhdXRvIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2Up
OworICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNy
ZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlKSk7CisK
KyAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUu
bV9wcm9wZXJ0eSk7CisgICAgQVNTRVJUKHByb3BlcnR5VmFsdWUuaXNTeW1ib2woKSk7CisgICAg
YXV0byBwcm9wZXJ0eSA9IHByb3BlcnR5VmFsdWUudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQcml2YXRlRmll
bGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2hhc19wcml2YXRlX2JyYW5kKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigpOworICAgIGF1dG8g
YmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAg
aWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlSW52
YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUpKTsKKworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJpdmF0ZUJyYW5k
KGdsb2JhbE9iamVjdCwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYnJhbmQpKSkp
OworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2dldHRlcl9ieV9pZCkK
IHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuaAppbmRleCA0M2M2Y2E4NDUzMGUuLmZiZmQ1M2NjNTUxZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTczLDYgKzczLDgg
QEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90
aGlzKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW5fYnlfaWQpOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV92YWwpOworTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9uYW1lKTsKK0xMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaGFzX3ByaXZhdGVfYnJhbmQpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfaWQpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggY2YwZDYwY2Yx
MzNmLi43MTI5YjBhYjMwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIwMTAsOCArMjAxMCw2IEBAIGlmIG5vdCBK
U1ZBTFVFNjQKICAgICBzbG93UGF0aE9wKGdldF9wcm90b3R5cGVfb2YpCiBlbmQKIAotc2xvd1Bh
dGhPcChoYXNfcHJpdmF0ZV9uYW1lKQotc2xvd1BhdGhPcChoYXNfcHJpdmF0ZV9icmFuZCkKIHNs
b3dQYXRoT3AoaXNfY2FsbGFibGUpCiBzbG93UGF0aE9wKGlzX2NvbnN0cnVjdG9yKQogc2xvd1Bh
dGhPcChsZXNzKQpAQCAtMjA0NCw2ICsyMDQyLDggQEAgZW5kCiAKIGxsaW50U2xvd1BhdGhPcChp
bl9ieV9pZCkKIGxsaW50U2xvd1BhdGhPcChpbl9ieV92YWwpCitsbGludFNsb3dQYXRoT3AoaGFz
X3ByaXZhdGVfbmFtZSkKK2xsaW50U2xvd1BhdGhPcChoYXNfcHJpdmF0ZV9icmFuZCkKIGxsaW50
U2xvd1BhdGhPcChkZWxfYnlfaWQpCiBsbGludFNsb3dQYXRoT3AoZGVsX2J5X3ZhbCkKIGxsaW50
U2xvd1BhdGhPcChpbnN0YW5jZW9mKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYTFjNDEzMTA4NjE0Li4xMTI5NTRiYjliNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcApAQCAtODMwLDM1ICs4MzAsNiBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2lzX2NvbnN0cnVjdG9yKQogICAgIFJFVFVSTihqc0Jvb2xlYW4oR0VUX0MoYnl0ZWNv
ZGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkuaXNDb25zdHJ1Y3Rvcih2bSkpKTsKIH0KIAotSlNDX0RF
RklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9uYW1lKQotewotICAg
IEJFR0lOKCk7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSGFzUHJpdmF0ZU5hbWU+
KCk7Ci0gICAgYXV0byBiYXNlVmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUo
KTsKLSAgICBpZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICBUSFJPVyhjcmVhdGVJ
bnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOwotCi0gICAg
YXV0byBwcm9wZXJ0eVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuanNWYWx1ZSgp
OwotICAgIEFTU0VSVChwcm9wZXJ0eVZhbHVlLmlzU3ltYm9sKCkpOwotICAgIGF1dG8gcHJvcGVy
dHkgPSBwcm9wZXJ0eVZhbHVlLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKLSAgICBFWENF
UFRJT05fQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLQotICAgIFJFVFVSTihqc0Jv
b2xlYW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwg
cHJvcGVydHkpKSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhf
aGFzX3ByaXZhdGVfYnJhbmQpCi17Ci0gICAgQkVHSU4oKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+KCk7Ci0gICAgYXV0byBiYXNlVmFsdWUgPSBHRVRf
QyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKLSAgICBpZiAoIWJhc2VWYWx1ZS5pc09iamVj
dCgpKQotICAgICAgICBUSFJPVyhjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxP
YmplY3QsIGJhc2VWYWx1ZSkpOwotCi0gICAgUkVUVVJOKGpzQm9vbGVhbihhc09iamVjdChiYXNl
VmFsdWUpLT5oYXNQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBHRVRfQyhieXRlY29kZS5tX2Jy
YW5kKS5qc1ZhbHVlKCkpKSk7Ci19Ci0KIHRlbXBsYXRlPE9wY29kZVNpemUgd2lkdGg+CiBBTFdB
WVNfSU5MSU5FIFNsb3dQYXRoUmV0dXJuVHlwZSBpdGVyYXRvck9wZW5UcnlGYXN0SW1wbChWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBjODMwOTgx
YjAzOTMuLmQ4ZDE1MDFmYjM1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI1MSw4ICsyNTEsNiBAQCBKU0NfREVDTEFSRV9DT01N
T05fU0xPV19QQVRIKHNsb3dfcGF0aF90eXBlb2ZfaXNfb2JqZWN0KTsKIEpTQ19ERUNMQVJFX0NP
TU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3R5cGVvZl9pc19mdW5jdGlvbik7CiBKU0NfREVDTEFS
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9pc19jYWxsYWJsZSk7CiBKU0NfREVDTEFSRV9D
T01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9pc19jb25zdHJ1Y3Rvcik7Ci1KU0NfREVDTEFSRV9D
T01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9uYW1lKTsKLUpTQ19ERUNMQVJF
X0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2hhc19wcml2YXRlX2JyYW5kKTsKIEpTQ19ERUNM
QVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3N0cmNhdCk7CiBKU0NfREVDTEFSRV9DT01N
T05fU0xPV19QQVRIKHNsb3dfcGF0aF90b19wcmltaXRpdmUpOwogSlNDX0RFQ0xBUkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfdG9fcHJvcGVydHlfa2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDk1YWI5YWMwZjRjZS4uNjdjZmI5OWYz
OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAg
LTUyNCw3ICs1MjQsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsK
ICAgICB2KEJvb2wsIHVzZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAi
SWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBzdGF0aWMgZGF0YSBm
aWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmll
bGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBw
cml2YXRlIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKICAgICB2KEJvb2wsIHVzZVBy
aXZhdGVNZXRob2RzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5k
ZXJzdGFuZCBwcml2YXRlIG1ldGhvZHMgaW5zaWRlIGNsYXNzZXMuIikgXAotICAgIHYoQm9vbCwg
dXNlUHJpdmF0ZUluLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVu
ZGVyc3RhbmQgcHJpdmF0ZSBtZW1iZXIgZXhpc3RlbmNlIGNoZWNrcyB3aXRoIHRoZSBgaW5gIG9w
ZXJhdG9yLiIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVJbiwgdHJ1ZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZW1iZXIgZXhpc3RlbmNl
IGNoZWNrcyB3aXRoIHRoZSBgaW5gIG9wZXJhdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFz
c2VtYmx5U3RyZWFtaW5nLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0byBydW4gV2ViQXNzZW1ibHkn
cyBTdHJlYW1pbmcgQVBJIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlSZWZlcmVuY2Vz
LCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBmcm9tIHRoZSB3YXNtIHJlZmVyZW5jZXMgc3Bl
Yy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2Vz
LCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgZnVuY3Rpb24gdHlwZXMgZnJvbSB0aGUgd2FzbSB0eXBl
ZCBmdW5jdGlvbiByZWZlcmVuY2VzIHNwZWMuIikgXAo=
</data>
<flag name="commit-queue"
          id="453545"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431707</attachid>
            <date>2021-06-17 12:56:23 -0700</date>
            <delta_ts>2021-06-17 13:00:35 -0700</delta_ts>
            <desc>Baseline-only patch for MIPS EWS debugging</desc>
            <filename>226146-for-mips.diff</filename>
            <type>text/plain</type>
            <size>39628</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1wcml2YXRlLWJyYW5kLmpz
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFzLXByaXZhdGUtYnJhbmQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iODE5N2Q4YWY0OGIKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtcHJpdmF0ZS1icmFuZC5qcwpAQCAt
MCwwICsxLDE5IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICBpZiAoIWIpIHRocm93IG5ldyBF
cnJvcjsKK30KKworY2xhc3MgTSB7CisgICN4KCkge30KKyAgc3RhdGljIGlzTShvYmopIHsKKyAg
ICByZXR1cm4gI3ggaW4gb2JqOworICB9Cit9Citub0lubGluZShNLnByb3RvdHlwZS5pc00pOwor
CitmdW5jdGlvbiB0ZXN0KCkgeworICBhc3NlcnQoTS5pc00obmV3IE0pICYmICFNLmlzTShNKSAm
JiAhTS5pc00oe30pKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDFlNjsgKytpKQorICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9oYXMtcHJpdmF0ZS1uYW1lLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFzLXByaXZh
dGUtbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjIzNTQx
NTk2N2NlYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1w
cml2YXRlLW5hbWUuanMKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAg
aWYgKCFiKSB0aHJvdyBuZXcgRXJyb3I7Cit9CisKK2NsYXNzIEYgeworICAjeDsKKyAgc3RhdGlj
IGlzRihvYmopIHsKKyAgICByZXR1cm4gI3ggaW4gb2JqOworICB9Cit9Citub0lubGluZShGLnBy
b3RvdHlwZS5pc0YpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICBhc3NlcnQoRi5pc0YobmV3IEYp
ICYmICFGLmlzRihGKSAmJiAhRi5pc0Yoe30pKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCAxZDczNTBh
MjkzOTQuLmI4NTVlODg2NWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNzksNiArMjc5LDEyIEBAIHZvaWQg
U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxv
Y2tlciwgQ29kZUJsb2NrKiBjCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5VmFsOgogICAgICAg
ICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6OkJ5VmFsKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZToKKyAgICAgICAgcmVz
ZXRJbkJ5KGNvZGVCbG9jaywgKnRoaXMsIEluQnlLaW5kOjpQcml2YXRlTmFtZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kOgorICAgICAgICBy
ZXNldEhhc1ByaXZhdGVCcmFuZChjb2RlQmxvY2ssICp0aGlzKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICByZXNldEluc3RhbmNlT2Yo
Y29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCAwZjY3NzVmMTZmYmMu
LjdmMmY2MjU2YzBjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU3LDYgKzU3LDggQEAgZW51bSBjbGFzcyBBY2Nlc3NU
eXBlIDogaW50OF90IHsKICAgICBQdXQsCiAgICAgSW5CeUlkLAogICAgIEluQnlWYWwsCisgICAg
SGFzUHJpdmF0ZU5hbWUsCisgICAgSGFzUHJpdmF0ZUJyYW5kLAogICAgIEluc3RhbmNlT2YsCiAg
ICAgRGVsZXRlQnlJRCwKICAgICBEZWxldGVCeVZhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMTQxNzFkODk2MDhhLi42NDdlOTMx
YzRiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0xMzg5LDcgKzEzODksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5CeVZhbChOb2RlKiBub2RlKQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5y
ZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQo
Y29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lz
dGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdp
biwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBK
SVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpJbkJ5VmFs
LCB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQ
UiksIGtleVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aChtX2ppdCk7CiAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZH
SklUKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCA3ZjMwM2YzMzE1ODkuLjQ4MjgwNDE2MDRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTI0MDgsNyArMTI0MDgsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEJveDxKSVRJbkJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsIHN1YnNjcmlwdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXNzVHlwZTo6SW5CeVZhbCwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsIHN1YnNjcmlwdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUik7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKaW5kZXggZmQyM2JiOTFiYzkxLi5lZmI0M2MyYzk2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKQEAgLTI5OSw4ICsyOTksNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgICAg
IERFRklORV9TTE9XX09QKGhhc19wcml2YXRlX25hbWUpCi0gICAgICAgIERFRklORV9TTE9XX09Q
KGhhc19wcml2YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVfU0xPV19PUChsZXNzKQogICAgICAg
ICBERUZJTkVfU0xPV19PUChsZXNzZXEpCiAgICAgICAgIERFRklORV9TTE9XX09QKGdyZWF0ZXIp
CkBAIC0zNzUsNiArMzczLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICBERUZJTkVfT1Aob3BfdHJ5X2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9w
X2luX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfaW5fYnlfdmFsKQorICAgICAgICBERUZJ
TkVfT1Aob3BfaGFzX3ByaXZhdGVfbmFtZSkKKyAgICAgICAgREVGSU5FX09QKG9wX2hhc19wcml2
YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZ2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9i
eV9pZF9kaXJlY3QpCkBAIC01ODYsNiArNTg2LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
U2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3RyeV9nZXRfYnlfaWQp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbl9ieV9pZCkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX2luX2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2hhc19wcml2YXRlX25hbWUpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9oYXNfcHJp
dmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZCkKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKaW5kZXggYjMxYTk4OGM3YTlkLi44Y2FmOTg3MGJkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaApAQCAtNTczLDYgKzU3Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTcw
Nyw2ICs3MDksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9n
ZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9oYXNf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
aW5zdGFuY2VvZl9jdXN0b20oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3MoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkBAIC03NTUsNiAr
NzU5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdo
dFNoaWZ0U2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVtaXRIYXNQcml2
YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVn
aXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlKTsKKyAgICAgICAgdm9pZCBlbWl0SGFz
UHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGRzdCwgQWNjZXNzVHlwZSk7CisKICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
CmluZGV4IGFjMDUzODA4YWMxMi4uNjliZjFhMWMzZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMjQ5LDgg
KzI0OSw4IEBAIHZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYg
ZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogICAgICAgICBtX3N0dWJJbmZvLT5tX2Nv
ZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKLUpJVEluQnlW
YWxHZW5lcmF0b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJ
VFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1
YkluZm9HUFIpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2Fs
bFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6SW5CeVZhbCwgdXNlZFJlZ2lzdGVycykKK0pJVEluQnlW
YWxHZW5lcmF0b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJ
VFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBq
aXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0
ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmgKaW5kZXggNGI0NzliOTc2ZTFlLi5lZTY4MTQxMDFhODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTIwMiw3
ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgSklUSW5CeVZhbEdlbmVyYXRvcigpIHsgfQogCiAgICAg
SklUSW5CeVZhbEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisg
ICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBH
UFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhK
dW1wKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IGViODkwMmFhNWNhZC4uNjAyOTc4ZmZhMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTUwOCw2ICs1MDgsMTEyIEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5VmFsR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUs
IChKU0dsb2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oQ29t
bW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoYmFz
ZSksIEpTVmFsdWU6OmRlY29kZShrZXkpLCBhcnJheVByb2ZpbGUpKSk7CiB9CiAKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRQcm9wZXJ0eSkpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2Nv
cGUoZmFsc2UpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIGlmICghYmFzZVZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUpKTsK
KyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CisgICAgfQorICAgIEpTT2JqZWN0KiBi
YXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcHJvcGVydHlW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpOworICAgIEFTU0VSVChwcm9w
ZXJ0eVZhbHVlLmlzU3ltYm9sKCkpOworICAgIGF1dG8gcHJvcGVydHkgPSBwcm9wZXJ0eVZhbHVl
LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29w
ZS5leGNlcHRpb24oKSk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOworICAgIGJvb2wgZm91
bmQgPSBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdChiYXNlT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5LCBzbG90KTsKKworICAgIEFTU0VSVChDYWNoZWFibGVJZGVudGlmaWVyOjpp
c0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHByb3BlcnR5VmFsdWUpKTsKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwocHJv
cGVydHlWYWx1ZS5hc0NlbGwoKSk7CisgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdC
eSh2bSwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLCBpZGVudGlmaWVyKSkK
KyAgICAgICAgcmVwYXRjaEluQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3Qs
IGlkZW50aWZpZXIsIGZvdW5kLCBzbG90LCAqc3R1YkluZm8sIEluQnlLaW5kOjpQcml2YXRlTmFt
ZSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmb3VuZCkpOworfQor
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVHZW5lcmlj
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJT
YW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgc3R1Yklu
Zm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkg
eworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZh
bGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOworICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICB9CisKKyAgICBKU1ZhbHVlIHByb3BlcnR5VmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5KTsKKyAgICBBU1NFUlQocHJvcGVy
dHlWYWx1ZS5pc1N5bWJvbCgpKTsKKyAgICBhdXRvIHByb3BlcnR5ID0gcHJvcGVydHlWYWx1ZS50
b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUu
ZXhjZXB0aW9uKCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNP
YmplY3QoYmFzZVZhbHVlKS0+aGFzUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHkp
KSk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlQnJh
bmRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQnJhbmQpKQoreworICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBp
ZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVj
dCwgYmFzZVZhbHVlKSk7CisgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOworICAgIH0K
KyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisKKyAgICBK
U1ZhbHVlIGJyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCcmFuZCk7CisgICAgYm9vbCBm
b3VuZCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3Qs
IGJyYW5kKTsKKworICAgIEFTU0VSVChDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlk
ZW50aWZpZXJDZWxsKGJyYW5kKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpOworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKGJyYW5kLmFzQ2VsbCgpKTsKKyAgICBp
ZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VPYmplY3Qt
PnN0cnVjdHVyZSh2bSksIGlkZW50aWZpZXIpKQorICAgICAgICByZXBhdGNoSGFzUHJpdmF0ZUJy
YW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCBmb3Vu
ZCwgKnN0dWJJbmZvKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZv
dW5kKSk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRl
QnJhbmRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCcmFuZCkpCit7CisgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNP
YmplY3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOwor
ICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQcml2YXRlQnJh
bmQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKSkpKTsKK30KKwog
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgRW5j
b2RlZEpTVmFsdWUga2V5KSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmlu
ZGV4IGQ4NzcwNjZjODUzMy4uYWRmZWYwMTIwMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTc4LDYgKzE3OCwxMSBAQCBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkluQnlJZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplYwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5SWRPcHRpbWl6
ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25JbkJ5VmFsR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlWYWxP
cHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgQXJyYXlQcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7CitK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lR2VuZXJpYywg
RW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlQnJh
bmRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKK0pTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSkpOworCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkhhc1ByaXZhdGVOYW1lLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
SGFzUHJpdmF0ZUJyYW5kLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiwgRW5jb2RlZEpTVmFsdWUpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA1OWRlN2JlNjQwNzIuLjE1ZTFkMzQ1NzliNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAg
LTE3MTAsNyArMTcxMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVX
aXRoQ2VsbChyZWdUMCwgcmVnVDIsIHByb2ZpbGUpOwogCiAgICAgSklUSW5CeVZhbEdlbmVyYXRv
ciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6SW5CeVZhbCwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMik7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGlmICghSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKQEAgLTE3NzIsNiArMTc3Miw5NCBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgY2FsbCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIg
ZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFu
ZCwgQWNjZXNzVHlwZSB0eXBlKQoreworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwg
cmVnVDApOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Cisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eU9yQnJhbmQsIHJlZ1QxKTsKKworICAg
IEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCB0eXBlLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBK
U1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQor
ICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAg
ICAgYWRkU2xvd0Nhc2UoKTsKKyAgICBtX2luQnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworfQorCit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVT
bG93KFZpcnR1YWxSZWdpc3RlciBkc3QsIEFjY2Vzc1R5cGUgdHlwZSkKK3sKKyAgICBBU1NFUlQo
dHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSB8fCB0eXBlID09IEFjY2Vzc1R5cGU6
Okhhc1ByaXZhdGVCcmFuZCk7CisKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2lu
QnlWYWxzW21faW5CeVZhbEluZGV4KytdOworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOworCisjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24odHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlv
bkhhc1ByaXZhdGVOYW1lT3B0aW1pemUgOiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6
ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5z
dHViSW5mbygpLCByZWdUMCwgcmVnVDEpOworI2Vsc2UKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OworICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
OworICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOworCisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMzsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2Rl
T2Zmc2V0R1BSKTsKKworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVu
dEdQUjI7CisgICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7CisgICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9wZXJ0eU9yQnJhbmRHUFIgPSByZWdUMTsKKyAgICBzdGF0aWNfYXNzZXJ0
KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOworICAgIHN0YXRpY19hc3Nl
cnQocHJvcGVydHlPckJyYW5kR1BSID09IGFyZ3VtZW50R1BSMSk7CisKKyAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSks
IGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOworICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVC
cmFuZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+
Ojp2YWx1ZSk7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CisKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRp
b24gPSB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lID8gb3BlcmF0aW9uSGFzUHJp
dmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplOworICAg
IGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwodHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQ
cml2YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUgOiBvcGVyYXRpb25I
YXNQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
KworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4o
KTsKKyAgICBlbWl0SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBi
eXRlY29kZS5tX3Byb3BlcnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7Cit9CisKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7CisgICAgZW1pdEhhc1By
aXZhdGVTbG93KGJ5dGVjb2RlLm1fZHN0LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7Cit9
CisKK3ZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+KCk7CisgICAgZW1pdEhhc1ByaXZhdGUoYnl0
ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlw
ZTo6SGFzUHJpdmF0ZUJyYW5kKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2
YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFz
UHJpdmF0ZUJyYW5kPigpOworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2RzdCwg
QWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRWYXJJbmpl
Y3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogewogICAgIGlmICghbmVl
ZHNWYXJJbmplY3Rpb25DaGVja3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCBmNDdjOTMzODdiYjIuLjU4ZTVkNTJm
ZTViMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5f
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEFy
cmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUNCwgcHJvZmlsZSk7CiAKICAgICBK
SVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBl
OjpJbkJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCBy
ZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEludmFsaWRHUFJSZWcpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOwpAQCAtOTUxLDYgKzk1MSw2MSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNjZXNzVHlwZSB0eXBlKQor
eworICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5T3JCcmFuZCwgcmVn
VDMsIHJlZ1QyKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEp
OworCisgICAgSklUSW5CeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBK
SVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIHR5cGUsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSW52
YWxpZEdQUlJlZyk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9pbkJ5VmFscy5hcHBlbmQoZ2VuKTsK
KworICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7Cit9CisKK3ZvaWQgSklUOjplbWl0
SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGRzdCwgQWNjZXNzVHlwZSB0eXBlKQorewor
ICAgIEFTU0VSVCh0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lIHx8IHR5cGUgPT0g
QWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKKworICAgIEpJVEluQnlWYWxHZW5lcmF0b3Im
IGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CisgICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKHR5cGUgPT0g
QWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgPyBvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGlt
aXplIDogb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJl
Z3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisKKyAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworfQorCit2b2lkIEpJVDo6
ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BI
YXNQcml2YXRlTmFtZT4oKTsKKyAgICBlbWl0SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0
ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRl
TmFtZSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7
CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fZHN0LCBBY2Nlc3NUeXBlOjpIYXNQ
cml2YXRlTmFtZSk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+KCk7CisgICAgZW1p
dEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9i
cmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKK30KKwordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigpOworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhi
eXRlY29kZS5tX2RzdCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKK30KKwogdm9pZCBK
SVQ6OmVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQog
ewogICAgIGlmICghbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAppbmRleCBkZWIxYWQ4MDkzODMuLjM3YTgwYjI5NTc3MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC05MjIsNiArOTIyLDMyIEBAIHZvaWQgcmVw
YXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBEZWxldGVQCiAgICAgfQogfQogCitpbmxpbmUgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPiBhcHByb3ByaWF0ZU9wdGltaXppbmdJbkJ5RnVuY3Rpb24oSW5CeUtpbmQga2luZCkK
K3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIEluQnlLaW5kOjpCeUlkOgorICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CisgICAgY2FzZSBJbkJ5S2luZDo6QnlW
YWw6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemU7CisgICAgY2FzZSBJ
bkJ5S2luZDo6UHJpdmF0ZU5hbWU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25IYXNQcml2YXRl
TmFtZU9wdGltaXplOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCitpbmxpbmUgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZUdlbmVy
aWNJbkJ5RnVuY3Rpb24oSW5CeUtpbmQga2luZCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAg
ICBjYXNlIEluQnlLaW5kOjpCeUlkOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uSW5CeUlkR2Vu
ZXJpYzsKKyAgICBjYXNlIEluQnlLaW5kOjpCeVZhbDoKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlv
bkluQnlWYWxHZW5lcmljOworICAgIGNhc2UgSW5CeUtpbmQ6OlByaXZhdGVOYW1lOgorICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVHZW5lcmljOworICAgIH0KKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVJbkJ5KAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsCiAgICAgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEluQnlLaW5kIGtpbmQpCkBAIC0xMDE2LDE3ICsxMDQy
LDEyIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnkoCiAKICAgICAgICAg
aWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29kZSgpKSB7CiAgICAgICAgICAgICBMT0dfSUMoKElD
RXZlbnQ6OkluUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwg
c2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAKLSAgICAgICAgICAgIHN3aXRjaCAoa2luZCkg
ewotICAgICAgICAgICAgY2FzZSBJbkJ5S2luZDo6QnlJZDoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHJlc3VsdC5jb2RlKCkpOworICAgICAgICAgICAgaWYgKGtpbmQgPT0gSW5CeUtpbmQ6
OkJ5SWQpCiAgICAgICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5B
Y2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgSW5CeUtpbmQ6OkJ5VmFsOgorICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxp
bmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMTA0MiwxMSArMTA2Myw1MyBAQCB2
b2lkIHJlcGF0Y2hJbkJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU09iamVjdCogYgogCiAgICAgaWYgKHRyeUNhY2hlSW5CeShnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgcHJvcGVydHlOYW1lLCB3YXNGb3VuZCwgc2xvdCwg
c3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpJblJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKGdsb2JhbE9i
amVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkp
KTsKLSAgICAgICAgaWYgKGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpCi0gICAgICAgICAgICByZXBh
dGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZEdlbmVy
aWMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlWYWxHZW5lcmljKTsKKyAgICAgICAgcmVwYXRj
aFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZUdlbmVyaWNJbkJ5
RnVuY3Rpb24oa2luZCkpOworICAgIH0KK30KKworc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlSGFzUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFu
ZElELCBib29sIHdhc0ZvdW5kLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
cmVzdWx0OworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBi
cmFuZElELnVpZCgpKTsKKworICAgIHsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgIGlmIChmb3JjZUlD
RmFpbHVyZShnbG9iYWxPYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7
CisKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlLT5zdHJ1Y3R1cmUodm0pOwor
CisgICAgICAgIElubGluZUNhY2hlQWN0aW9uIGFjdGlvbiA9IGFjdGlvbkZvckNlbGwodm0sIGJh
c2UpOworICAgICAgICBpZiAoYWN0aW9uICE9IEF0dGVtcHRUb0NhY2hlKQorICAgICAgICAgICAg
cmV0dXJuIGFjdGlvbjsKKworICAgICAgICBib29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsKKyAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOworCisgICAgICAgIFJlZjxBY2Nlc3NDYXNl
PiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8g
QWNjZXNzQ2FzZTo6SW5IaXQgOiBBY2Nlc3NDYXNlOjpJbk1pc3MsIGJyYW5kSUQsIGludmFsaWRP
ZmZzZXQsIHN0cnVjdHVyZSwgeyB9LCB7IH0pOworCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZv
LmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6
OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVz
dWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6
SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQ
cm9wZXJ0eSkpOworCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsK
KyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNp
bmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgfQogICAgIH0KKwor
ICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFyU3R1YklmTmVlZGVkKHZtLCBzdHViSW5mbywgY29k
ZUJsb2NrLCByZXN1bHQpOworCisgICAgcmV0dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBOb3coKSA/
IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7Cit9CisKK3ZvaWQgcmVwYXRjaEhhc1By
aXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSlNPYmplY3QqIGJhc2VPYmplY3QsIENhY2hlYWJsZUlkZW50aWZpZXIgYnJhbmRJRCwg
Ym9vbCB3YXNGb3VuZCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIGlmICh0cnlDYWNo
ZUhhc1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgYnJh
bmRJRCwgd2FzRm91bmQsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQorICAgICAgICByZXBh
dGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkhhc1ByaXZhdGVC
cmFuZEdlbmVyaWMpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVj
a1ByaXZhdGVCcmFuZCgKQEAgLTE3MjgsMTYgKzE3OTEsMTcgQEAgdm9pZCByZXNldERlbEJ5KENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2lu
ZCBraW4KIAogdm9pZCByZXNldEluQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQga2luZCkKIHsKLSAgICBzd2l0Y2ggKGtpbmQpIHsK
LSAgICBjYXNlIEluQnlLaW5kOjpCeUlkOgotICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0lu
QnlGdW5jdGlvbihraW5kKSk7CisgICAgaWYgKGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpCiAgICAg
ICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHVi
SW5mbyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5CeUtpbmQ6OkJ5VmFsOgotICAgICAg
ICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlW
YWxPcHRpbWl6ZSk7CisgICAgZWxzZQogICAgICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFz
SnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KK30KKwordm9pZCByZXNldEhhc1ByaXZhdGVCcmFuZChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHJl
cGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSGFzUHJpdmF0
ZUJyYW5kT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nl
c3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCBy
ZXNldEluc3RhbmNlT2YoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggNzJjNjZiMjg5MTQz
Li5jMTlmMDJkNGQ0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC01MCw3
ICs1MCw4IEBAIGVudW0gY2xhc3MgRGVsQnlLaW5kIHsKIAogZW51bSBjbGFzcyBJbkJ5S2luZCB7
CiAgICAgQnlJZCwKLSAgICBCeVZhbAorICAgIEJ5VmFsLAorICAgIFByaXZhdGVOYW1lCiB9Owog
CiB2b2lkIHJlcGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwg
SlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwpAQCAtNTgs
NiArNTksNyBAQCB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayos
IEpTVmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbgogdm9pZCByZXBhdGNoUHV0QnlJRChK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJs
ZUlkZW50aWZpZXIsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwg
UHV0S2luZCk7CiB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9j
ayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kLCBFQ01BTW9kZSk7CiB2b2lk
IHJlcGF0Y2hJbkJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIEluQnlLaW5kKTsKK3ZvaWQgcmVwYXRjaEhhc1ByaXZhdGVCcmFuZChK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgYm9vbCB3YXNGb3VuZCwgIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hDaGVj
a1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaFNldFBy
aXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgU3RydWN0
dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVw
YXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVl
LCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsK
QEAgLTcwLDYgKzcyLDcgQEAgdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1
YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJl
U3R1YkluZm8mLCBJbkJ5S2luZCk7Cit2b2lkIHJlc2V0SGFzUHJpdmF0ZUJyYW5kKENvZGVCbG9j
ayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA3MzM2YTVhMzMwODguLjk1YjlkYWVhYmY3
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CkBAIC0xNDMyLDYgKzE0MzIsMzUgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lu
X2J5X3ZhbCkKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJ
bkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFz
ZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KSwgJm1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlKSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
aGFzX3ByaXZhdGVfbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcEhhc1ByaXZhdGVOYW1lPigpOworICAgIGF1dG8gYmFzZVZhbHVlID0g
Z2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgaWYgKCFiYXNlVmFs
dWUuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlSW52YWxpZEluUGFyYW1l
dGVyRXJyb3IoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUpKTsKKworICAgIGF1dG8gcHJvcGVydHlW
YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICBB
U1NFUlQocHJvcGVydHlWYWx1ZS5pc1N5bWJvbCgpKTsKKyAgICBhdXRvIHByb3BlcnR5ID0gcHJv
cGVydHlWYWx1ZS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgRVhDRVBUSU9OX0FT
U0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHBy
b3BlcnR5KSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFzX3ByaXZh
dGVfYnJhbmQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+KCk7CisgICAgYXV0byBiYXNlVmFsdWUgPSBnZXRPcGVy
YW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc09i
amVjdCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJv
cihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOworCisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9icmFuZCkpKSk7Cit9CisKIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfZ2V0dGVyX2J5X2lkKQogewogICAgIExMSU5UX0JFR0lO
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4
IDQzYzZjYTg0NTMwZS4uZmJmZDUzY2M1NTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtNzMsNiArNzMsOCBAQCBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2luX2J5X3ZhbCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2hhc19wcml2YXRlX25hbWUpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9oYXNfcHJpdmF0ZV9icmFuZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2RlbF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9n
ZXRfcHJpdmF0ZV9uYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBjZjBkNjBjZjEzM2YuLjcxMjliMGFiMzBmMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQpAQCAtMjAxMCw4ICsyMDEwLDYgQEAgaWYgbm90IEpTVkFMVUU2NAogICAgIHNsb3dQ
YXRoT3AoZ2V0X3Byb3RvdHlwZV9vZikKIGVuZAogCi1zbG93UGF0aE9wKGhhc19wcml2YXRlX25h
bWUpCi1zbG93UGF0aE9wKGhhc19wcml2YXRlX2JyYW5kKQogc2xvd1BhdGhPcChpc19jYWxsYWJs
ZSkKIHNsb3dQYXRoT3AoaXNfY29uc3RydWN0b3IpCiBzbG93UGF0aE9wKGxlc3MpCkBAIC0yMDQ0
LDYgKzIwNDIsOCBAQCBlbmQKIAogbGxpbnRTbG93UGF0aE9wKGluX2J5X2lkKQogbGxpbnRTbG93
UGF0aE9wKGluX2J5X3ZhbCkKK2xsaW50U2xvd1BhdGhPcChoYXNfcHJpdmF0ZV9uYW1lKQorbGxp
bnRTbG93UGF0aE9wKGhhc19wcml2YXRlX2JyYW5kKQogbGxpbnRTbG93UGF0aE9wKGRlbF9ieV9p
ZCkKIGxsaW50U2xvd1BhdGhPcChkZWxfYnlfdmFsKQogbGxpbnRTbG93UGF0aE9wKGluc3RhbmNl
b2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAppbmRleCBhMWM0MTMxMDg2MTQuLjExMjk1NGJiOWI2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC04MzAsMzUgKzgz
MCw2IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaXNfY29uc3RydWN0
b3IpCiAgICAgUkVUVVJOKGpzQm9vbGVhbihHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFs
dWUoKS5pc0NvbnN0cnVjdG9yKHZtKSkpOwogfQogCi1KU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BB
VEgoc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUpCi17Ci0gICAgQkVHSU4oKTsKLQotICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKLSAgICBhdXRvIGJhc2VW
YWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOwotICAgIGlmICghYmFzZVZh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIFRIUk9XKGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVy
cm9yKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlKSk7Ci0KLSAgICBhdXRvIHByb3BlcnR5VmFsdWUg
PSBHRVRfQyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7Ci0gICAgQVNTRVJUKHByb3Bl
cnR5VmFsdWUuaXNTeW1ib2woKSk7Ci0gICAgYXV0byBwcm9wZXJ0eSA9IHByb3BlcnR5VmFsdWUu
dG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwotICAgIEVYQ0VQVElPTl9BU1NFUlQoIXRocm93
U2NvcGUuZXhjZXB0aW9uKCkpOwotCi0gICAgUkVUVVJOKGpzQm9vbGVhbihhc09iamVjdChiYXNl
VmFsdWUpLT5oYXNQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkpKTsKLX0KLQot
SlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9icmFuZCkK
LXsKLSAgICBCRUdJTigpOwotCi0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEhhc1ByaXZh
dGVCcmFuZD4oKTsKLSAgICBhdXRvIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSku
anNWYWx1ZSgpOwotICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIFRIUk9X
KGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlKSk7
Ci0KLSAgICBSRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVC
cmFuZChnbG9iYWxPYmplY3QsIEdFVF9DKGJ5dGVjb2RlLm1fYnJhbmQpLmpzVmFsdWUoKSkpKTsK
LX0KLQogdGVtcGxhdGU8T3Bjb2RlU2l6ZSB3aWR0aD4KIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhS
ZXR1cm5UeXBlIGl0ZXJhdG9yT3BlblRyeUZhc3RJbXBsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGM4MzA5ODFiMDM5My4uZDhkMTUwMWZiMzVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aApAQCAtMjUxLDggKzI1MSw2IEBAIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19w
YXRoX3R5cGVvZl9pc19vYmplY3QpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfdHlwZW9mX2lzX2Z1bmN0aW9uKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgo
c2xvd19wYXRoX2lzX2NhbGxhYmxlKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2lzX2NvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2hhc19wcml2YXRlX25hbWUpOwotSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChz
bG93X3BhdGhfaGFzX3ByaXZhdGVfYnJhbmQpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFU
SChzbG93X3BhdGhfc3RyY2F0KTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19w
YXRoX3RvX3ByaW1pdGl2ZSk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0
aF90b19wcm9wZXJ0eV9rZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmgKaW5kZXggOTVhYjlhYzBmNGNlLi42N2NmYjk5ZjM5N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTI0LDcgKzUyNCw3IEBAIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYoQm9vbCwgdXNlUHJp
dmF0ZVN0YXRpY0NsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2Vy
IHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIHN0YXRpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nl
cy4iKSBcCiAgICAgdihCb29sLCB1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwg
IklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgZGF0YSBmaWVsZHMg
aW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYoQm9vbCwgdXNlUHJpdmF0ZU1ldGhvZHMsIHRydWUs
IE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgbWV0
aG9kcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCi0gICAgdihCb29sLCB1c2VQcml2YXRlSW4sIGZhbHNl
LCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIG1l
bWJlciBleGlzdGVuY2UgY2hlY2tzIHdpdGggdGhlIGBpbmAgb3BlcmF0b3IuIikgXAorICAgIHYo
Qm9vbCwgdXNlUHJpdmF0ZUluLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdp
bGwgdW5kZXJzdGFuZCBwcml2YXRlIG1lbWJlciBleGlzdGVuY2UgY2hlY2tzIHdpdGggdGhlIGBp
bmAgb3BlcmF0b3IuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlTdHJlYW1pbmcsIHRy
dWUsIE5vcm1hbCwgIkFsbG93IHRvIHJ1biBXZWJBc3NlbWJseSdzIFN0cmVhbWluZyBBUEkiKSBc
CiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMsIHRydWUsIE5vcm1hbCwgIkFs
bG93IHR5cGVzIGZyb20gdGhlIHdhc20gcmVmZXJlbmNlcyBzcGVjLiIpIFwKICAgICB2KEJvb2ws
IHVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMsIGZhbHNlLCBOb3JtYWwsICJB
bGxvdyBmdW5jdGlvbiB0eXBlcyBmcm9tIHRoZSB3YXNtIHR5cGVkIGZ1bmN0aW9uIHJlZmVyZW5j
ZXMgc3BlYy4iKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431708</attachid>
            <date>2021-06-17 13:03:32 -0700</date>
            <delta_ts>2021-06-17 16:18:54 -0700</delta_ts>
            <desc>Baseline-only patch for MIPS EWS debugging</desc>
            <filename>226146-for-mips.diff</filename>
            <type>text/plain</type>
            <size>39624</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1wcml2YXRlLWJyYW5kLmpz
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFzLXByaXZhdGUtYnJhbmQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iODE5N2Q4YWY0OGIKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtcHJpdmF0ZS1icmFuZC5qcwpAQCAt
MCwwICsxLDE5IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICBpZiAoIWIpIHRocm93IG5ldyBF
cnJvcjsKK30KKworY2xhc3MgTSB7CisgICN4KCkge30KKyAgc3RhdGljIGlzTShvYmopIHsKKyAg
ICByZXR1cm4gI3ggaW4gb2JqOworICB9Cit9Citub0lubGluZShNLnByb3RvdHlwZS5pc00pOwor
CitmdW5jdGlvbiB0ZXN0KCkgeworICBhc3NlcnQoTS5pc00obmV3IE0pICYmICFNLmlzTShNKSAm
JiAhTS5pc00oe30pKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDFlNjsgKytpKQorICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9oYXMtcHJpdmF0ZS1uYW1lLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaGFzLXByaXZh
dGUtbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjIzNTQx
NTk2N2NlYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1w
cml2YXRlLW5hbWUuanMKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAg
aWYgKCFiKSB0aHJvdyBuZXcgRXJyb3I7Cit9CisKK2NsYXNzIEYgeworICAjeDsKKyAgc3RhdGlj
IGlzRihvYmopIHsKKyAgICByZXR1cm4gI3ggaW4gb2JqOworICB9Cit9Citub0lubGluZShGLnBy
b3RvdHlwZS5pc0YpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICBhc3NlcnQoRi5pc0YobmV3IEYp
ICYmICFGLmlzRihGKSAmJiAhRi5pc0Yoe30pKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCAxZDczNTBh
MjkzOTQuLmI4NTVlODg2NWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNzksNiArMjc5LDEyIEBAIHZvaWQg
U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxv
Y2tlciwgQ29kZUJsb2NrKiBjCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5VmFsOgogICAgICAg
ICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6OkJ5VmFsKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZToKKyAgICAgICAgcmVz
ZXRJbkJ5KGNvZGVCbG9jaywgKnRoaXMsIEluQnlLaW5kOjpQcml2YXRlTmFtZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kOgorICAgICAgICBy
ZXNldEhhc1ByaXZhdGVCcmFuZChjb2RlQmxvY2ssICp0aGlzKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICByZXNldEluc3RhbmNlT2Yo
Y29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCAwZjY3NzVmMTZmYmMu
LjdmMmY2MjU2YzBjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU3LDYgKzU3LDggQEAgZW51bSBjbGFzcyBBY2Nlc3NU
eXBlIDogaW50OF90IHsKICAgICBQdXQsCiAgICAgSW5CeUlkLAogICAgIEluQnlWYWwsCisgICAg
SGFzUHJpdmF0ZU5hbWUsCisgICAgSGFzUHJpdmF0ZUJyYW5kLAogICAgIEluc3RhbmNlT2YsCiAg
ICAgRGVsZXRlQnlJRCwKICAgICBEZWxldGVCeVZhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggYTU0MGViMzU0MGY3Li4xOGM1MmE3
N2RiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0xMzg5LDcgKzEzODksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5CeVZhbChOb2RlKiBub2RlKQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5y
ZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQo
Y29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lz
dGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdp
biwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBK
SVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpJbkJ5VmFs
LCB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQ
UiksIGtleVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aChtX2ppdCk7CiAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZH
SklUKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCBjYzc0ZWJiNGIzZWMuLmNiM2Q2MjFlMzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTI0NzgsNyArMTI0NzgsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEJveDxKSVRJbkJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBzZW1hbnRp
Y05vZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsIHN1YnNjcmlwdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlOjpJbkJ5VmFsLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgYmFzZSwgc3Vic2NyaXB0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZvR1BSKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApp
bmRleCBmZDIzYmI5MWJjOTEuLmVmYjQzYzJjOTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcApAQCAtMjk5LDggKzI5OSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKLSAgICAgICAgREVG
SU5FX1NMT1dfT1AoaGFzX3ByaXZhdGVfbmFtZSkKLSAgICAgICAgREVGSU5FX1NMT1dfT1AoaGFz
X3ByaXZhdGVfYnJhbmQpCiAgICAgICAgIERFRklORV9TTE9XX09QKGxlc3MpCiAgICAgICAgIERF
RklORV9TTE9XX09QKGxlc3NlcSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoZ3JlYXRlcikKQEAg
LTM3NSw2ICszNzMsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF90cnlfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfaW5f
YnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9pbl9ieV92YWwpCisgICAgICAgIERFRklORV9P
UChvcF9oYXNfcHJpdmF0ZV9uYW1lKQorICAgICAgICBERUZJTkVfT1Aob3BfaGFzX3ByaXZhdGVf
YnJhbmQpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lk
X2RpcmVjdCkKQEAgLTU4Niw2ICs1ODYsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfdHJ5X2dldF9ieV9pZCkKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2luX2J5X2lkKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfaW5fYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaGFz
X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2hhc19wcml2YXRl
X2JyYW5kKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAppbmRleCBiMzFhOTg4YzdhOWQuLjhjYWY5ODcwYmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCkBAIC01NzMsNiArNTczLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9o
YXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfaW5pdF9sYXp5X3JlZyhjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNzA3LDYg
KzcwOSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9h
cmd1bWVudF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0
YW5jZW9mX2N1c3RvbShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbGVzcyhjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKQEAgLTc1NSw2ICs3NTks
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UmlnaHRTaGlmdChjb25zdCBJ
bnN0cnVjdGlvbiosIGJvb2wgaXNVbnNpZ25lZCk7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hp
ZnRTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImLCBib29sIGlzVW5zaWduZWQpOwogCisgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGUo
VmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eU9yQnJhbmQsIEFjY2Vzc1R5cGUpOworICAgICAgICB2b2lkIGVtaXRIYXNQcml2
YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBBY2Nlc3NUeXBlKTsKKwogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJ
bnN0cnVjdGlvbiopOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5k
ZXggYWMwNTM4MDhhYzEyLi42OWJmMWExYzNmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0yNDksOCArMjQ5
LDggQEAgdm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0
UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiAgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0
ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklUSW5CeVZhbEdl
bmVyYXRvcjo6SklUSW5CeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlw
ZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5m
b0dQUikKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlOjpJbkJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQorSklUSW5CeVZhbEdl
bmVyYXRvcjo6SklUSW5CeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlw
ZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdz
IHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5
cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMp
CiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAppbmRleCA0YjQ3OWI5NzZlMWUuLmVlNjgxNDEwMWE4MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMjAyLDcgKzIw
Miw3IEBAIHB1YmxpYzoKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRJ
bkJ5VmFsR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAg
ICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNz
VHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCiAgICAgICAgIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJl
ZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5k
ZXggZWI4OTAyYWE1Y2FkLi42MDI5NzhmZmEyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNTA4LDYgKzUwOCwxMTIgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlWYWxHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpT
R2xvYmFsT2JqZWMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25T
bG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShiYXNlKSwg
SlNWYWx1ZTo6ZGVjb2RlKGtleSksIGFycmF5UHJvZmlsZSkpKTsKIH0KIAorSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFByb3BlcnR5KSkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmpl
Y3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOworICAg
ICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICB9CisgICAgSlNPYmplY3QqIGJhc2VP
YmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSBwcm9wZXJ0eVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7CisgICAgQVNTRVJUKHByb3BlcnR5
VmFsdWUuaXNTeW1ib2woKSk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHByb3BlcnR5VmFsdWUudG9Q
cm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4
Y2VwdGlvbigpKTsKKworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAgYm9vbCBmb3VuZCA9
IEpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHksIHNsb3QpOworCisgICAgQVNTRVJUKENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2Fj
aGVhYmxlSWRlbnRpZmllckNlbGwocHJvcGVydHlWYWx1ZSkpOworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChwcm9wZXJ0
eVZhbHVlLmFzQ2VsbCgpKTsKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZt
LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSksIGlkZW50aWZpZXIpKQorICAg
ICAgICByZXBhdGNoSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRl
bnRpZmllciwgZm91bmQsIHNsb3QsICpzdHViSW5mbywgSW5CeUtpbmQ6OlByaXZhdGVOYW1lKTsK
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZvdW5kKSk7Cit9CisKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZUdlbmVyaWMsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3BlcnR5KSkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBs
ZXJTY29wZShmYWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBzdHViSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKSB7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJ
blBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlKSk7CisgICAgICAgIHJldHVy
biBlbmNvZGVkSlNWYWx1ZSgpOworICAgIH0KKworICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpOworICAgIEFTU0VSVChwcm9wZXJ0eVZh
bHVlLmlzU3ltYm9sKCkpOworICAgIGF1dG8gcHJvcGVydHkgPSBwcm9wZXJ0eVZhbHVlLnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNl
cHRpb24oKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVj
dChiYXNlVmFsdWUpLT5oYXNQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkpKTsK
K30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9w
dGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCcmFuZCkpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3Vw
ZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIGlmICgh
YmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2JqZWN0LCBi
YXNlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CisgICAgfQorICAg
IEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKworICAgIEpTVmFs
dWUgYnJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKTsKKyAgICBib29sIGZvdW5k
ID0gYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgYnJh
bmQpOworCisgICAgQVNTRVJUKENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRp
ZmllckNlbGwoYnJhbmQpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCk7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoYnJhbmQuYXNDZWxsKCkpOworICAgIGlmIChz
dHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZU9iamVjdC0+c3Ry
dWN0dXJlKHZtKSwgaWRlbnRpZmllcikpCisgICAgICAgIHJlcGF0Y2hIYXNQcml2YXRlQnJhbmQo
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIGZvdW5kLCAq
c3R1YkluZm8pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZm91bmQp
KTsKK30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFu
ZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJyYW5kKSkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBz
dHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc09iamVj
dCgpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlKSk7CisgICAg
ICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVCcmFuZChn
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQnJhbmQpKSkpOworfQorCiBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWUsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBFbmNvZGVk
SlNWYWx1ZSBrZXkpKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXgg
ZDg3NzA2NmM4NTMzLi5hZGZlZjAxMjAxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCkBAIC0xNzgsNiArMTc4LDExIEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uSW5CeUlkR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9i
amVjCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBF
bmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkluQnlWYWxHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbE9wdGlt
aXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBBcnJheVByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVHZW5lcmljLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZEdl
bmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUs
IChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlKSk7CisKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFz
UHJpdmF0ZU5hbWUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBF
bmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQ
cml2YXRlQnJhbmQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBF
bmNvZGVkSlNWYWx1ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCmluZGV4IDU5ZGU3YmU2NDA3Mi4uMTVlMWQzNDU3OWI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTcx
MCw3ICsxNzEwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhD
ZWxsKHJlZ1QwLCByZWdUMiwgcHJvZmlsZSk7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpJbkJ5VmFsLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQpAQCAtMTc3Miw2ICsxNzcyLDk0IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBj
YWxsKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3Qs
IFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBB
Y2Nlc3NUeXBlIHR5cGUpCit7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdU
MCk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5T3JCcmFuZCwgcmVnVDEpOworCisgICAgSklU
SW5CeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIHR5cGUsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
KyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBh
ZGRTbG93Q2FzZSgpOworICAgIG1faW5CeVZhbHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZVNsb3co
VmlydHVhbFJlZ2lzdGVyIGRzdCwgQWNjZXNzVHlwZSB0eXBlKQoreworICAgIEFTU0VSVCh0eXBl
ID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lIHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFz
UHJpdmF0ZUJyYW5kKTsKKworICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZh
bHNbbV9pbkJ5VmFsSW5kZXgrK107CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
CisKKyNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbih0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lID8gb3BlcmF0aW9uSGFz
UHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplLCBk
c3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIHJlZ1QwLCByZWdUMSk7CisjZWxzZQorICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Cisg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7Cisg
ICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRl
eCk7CisKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFIzOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZz
ZXRHUFIpOworCisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BS
MjsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5T3JCcmFuZEdQUiA9IHJlZ1QxOworICAgIHN0YXRpY19hc3NlcnQoYmFz
ZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7CisgICAgc3RhdGljX2Fzc2VydChw
cm9wZXJ0eU9yQnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKKworICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihnZW4uc3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplKSwgZGVj
bHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7CisgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5k
T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OnZh
bHVlKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKKworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgPyBvcGVyYXRpb25IYXNQcml2YXRl
TmFtZU9wdGltaXplIDogb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemU7CisgICAgZWxz
ZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbCh0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZh
dGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlvbkhhc1By
aXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOworCisg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVOYW1lPigpOwor
ICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVj
b2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sK
KyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKKyAgICBlbWl0SGFzUHJpdmF0
ZVNsb3coYnl0ZWNvZGUubV9kc3QsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKKyAgICBlbWl0SGFzUHJpdmF0ZShieXRlY29k
ZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpI
YXNQcml2YXRlQnJhbmQpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVf
YnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OworCisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2
YXRlQnJhbmQ+KCk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fZHN0LCBBY2Nl
c3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworfQorCiB2b2lkIEpJVDo6ZW1pdFZhckluamVjdGlv
bkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCiB7CiAgICAgaWYgKCFuZWVkc1Zh
ckluamVjdGlvbkNoZWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGY0N2M5MzM4N2JiMi4uNThlNWQ1MmZlNWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAKQEAgLTkyNCw3ICs5MjQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0QXJyYXlQ
cm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1Q0LCBwcm9maWxlKTsKIAogICAgIEpJVElu
QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxp
bmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6Oklu
QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1Qy
KSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CkBAIC05NTEsNiArOTUxLDYxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAordm9pZCBKSVQ6
OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNl
LCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlIHR5cGUpCit7Cisg
ICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlPckJyYW5kLCByZWdUMywg
cmVnVDIpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CisK
KyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgdHlwZSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBJbnZhbGlk
R1BSUmVnKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nh
c2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2luQnlWYWxzLmFwcGVuZChnZW4pOworCisg
ICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKK30KKwordm9pZCBKSVQ6OmVtaXRIYXNQ
cml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBBY2Nlc3NUeXBlIHR5cGUpCit7CisgICAg
QVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwgdHlwZSA9PSBBY2Nl
c3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworCisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2Vu
ID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24odHlwZSA9PSBBY2Nl
c3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUg
OiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhy
ZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsKKworICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKK3ZvaWQgSklUOjplbWl0
X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1By
aXZhdGVOYW1lPigpOworICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29k
ZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1l
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKKyAg
ICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9kc3QsIEFjY2Vzc1R5cGU6Okhhc1ByaXZh
dGVOYW1lKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKKyAgICBlbWl0SGFz
UHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5k
LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+KCk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVj
b2RlLm1fZHN0LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworfQorCiB2b2lkIEpJVDo6
ZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCiB7CiAg
ICAgaWYgKCFuZWVkc1ZhckluamVjdGlvbkNoZWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCmluZGV4IGRlYjFhZDgwOTM4My4uMzdhODBiMjk1NzcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTkyMiw2ICs5MjIsMzIgQEAgdm9pZCByZXBhdGNo
RGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIERlbGV0ZVAKICAgICB9CiB9CiAKK2lubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+IGFwcHJvcHJpYXRlT3B0aW1pemluZ0luQnlGdW5jdGlvbihJbkJ5S2luZCBraW5kKQorewor
ICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgSW5CeUtpbmQ6OkJ5SWQ6CisgICAgICAgIHJl
dHVybiBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICBjYXNlIEluQnlLaW5kOjpCeVZhbDoK
KyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZTsKKyAgICBjYXNlIEluQnlL
aW5kOjpQcml2YXRlTmFtZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1l
T3B0aW1pemU7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K2lubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlR2VuZXJpY0lu
QnlGdW5jdGlvbihJbkJ5S2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNh
c2UgSW5CeUtpbmQ6OkJ5SWQ6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25JbkJ5SWRHZW5lcmlj
OworICAgIGNhc2UgSW5CeUtpbmQ6OkJ5VmFsOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uSW5C
eVZhbEdlbmVyaWM7CisgICAgY2FzZSBJbkJ5S2luZDo6UHJpdmF0ZU5hbWU6CisgICAgICAgIHJl
dHVybiBvcGVyYXRpb25IYXNQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZUluQnkoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSwKICAgICBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQga2luZCkKQEAgLTEwMTYsMTcgKzEwNDIsMTIg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeSgKIAogICAgICAgICBpZiAo
cmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKICAgICAgICAgICAgIExPR19JQygoSUNFdmVu
dDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90
LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0g
ICAgICAgICAgICBjYXNlIEluQnlLaW5kOjpCeUlkOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0LmNvZGUoKSk7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6QnlJ
ZCkKICAgICAgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vz
cyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4ocmVzdWx0LmNvZGUoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBJbkJ5S2luZDo6QnlWYWw6CisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFj
Y2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDQyLDExICsxMDYzLDUzIEBAIHZvaWQg
cmVwYXRjaEluQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpTT2JqZWN0KiBiCiAKICAgICBpZiAodHJ5Q2FjaGVJbkJ5KGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHVi
SW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6
OkluUmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8oZ2xvYmFsT2JqZWN0
LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwot
ICAgICAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkKLSAgICAgICAgICAgIHJlcGF0Y2hT
bG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkR2VuZXJpYyk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xv
d1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlR2VuZXJpY0luQnlGdW5j
dGlvbihraW5kKSk7CisgICAgfQorfQorCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVIYXNQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGJyYW5kSUQs
IGJvb2wgd2FzRm91bmQsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1
bHQ7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGJyYW5k
SUQudWlkKCkpOworCisgICAgeworICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgaWYgKGZvcmNlSUNGYWls
dXJlKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKwor
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2UtPnN0cnVjdHVyZSh2bSk7CisKKyAg
ICAgICAgSW5saW5lQ2FjaGVBY3Rpb24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCh2bSwgYmFzZSk7
CisgICAgICAgIGlmIChhY3Rpb24gIT0gQXR0ZW1wdFRvQ2FjaGUpCisgICAgICAgICAgICByZXR1
cm4gYWN0aW9uOworCisgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOworICAgICAg
ICBMT0dfSUMoKElDRXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8o
KSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CisKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5l
d0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgd2FzRm91bmQgPyBBY2Nl
c3NDYXNlOjpJbkhpdCA6IEFjY2Vzc0Nhc2U6OkluTWlzcywgYnJhbmRJRCwgaW52YWxpZE9mZnNl
dCwgc3RydWN0dXJlLCB7IH0sIHsgfSk7CisKKyAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRk
QWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3Ry
aWN0KCksIGJyYW5kSUQsIFdURk1vdmUobmV3Q2FzZSkpOworCisgICAgICAgIGlmIChyZXN1bHQu
Z2VuZXJhdGVkU29tZUNvZGUoKSkgeworICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJl
cGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3Bl
cnR5KSk7CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOworICAg
ICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lu
bGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICB9CiAgICAgfQorCisgICAg
ZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQodm0sIHN0dWJJbmZvLCBjb2RlQmxv
Y2ssIHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2
ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKK30KKwordm9pZCByZXBhdGNoSGFzUHJpdmF0
ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKU09iamVjdCogYmFzZU9iamVjdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFuZElELCBib29s
IHdhc0ZvdW5kLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgU3VwZXJTYW1w
bGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgaWYgKHRyeUNhY2hlSGFz
UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBicmFuZElE
LCB3YXNGb3VuZCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCisgICAgICAgIHJlcGF0Y2hT
bG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5k
R2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJp
dmF0ZUJyYW5kKApAQCAtMTcyOCwxNiArMTc5MSwxNyBAQCB2b2lkIHJlc2V0RGVsQnkoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtp
bgogCiB2b2lkIHJlc2V0SW5CeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvLCBJbkJ5S2luZCBraW5kKQogewotICAgIHN3aXRjaCAoa2luZCkgewotICAg
IGNhc2UgSW5CeUtpbmQ6OkJ5SWQ6Ci0gICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJs
b2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgIHJlcGF0Y2hTbG93
UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nSW5CeUZ1
bmN0aW9uKGtpbmQpKTsKKyAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkKICAgICAgICAg
SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZv
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbkJ5S2luZDo6QnlWYWw6Ci0gICAgICAgIHJl
cGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeVZhbE9w
dGltaXplKTsKKyAgICBlbHNlCiAgICAgICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQorfQorCit2b2lkIHJlc2V0SGFzUHJpdmF0ZUJyYW5kKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgcmVwYXRj
aFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25IYXNQcml2YXRlQnJh
bmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05v
dFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0
SW5zdGFuY2VPZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCA3MmM2NmIyODkxNDMuLmMx
OWYwMmQ0ZDQwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTUwLDcgKzUw
LDggQEAgZW51bSBjbGFzcyBEZWxCeUtpbmQgewogCiBlbnVtIGNsYXNzIEluQnlLaW5kIHsKICAg
ICBCeUlkLAotICAgIEJ5VmFsCisgICAgQnlWYWwsCisgICAgUHJpdmF0ZU5hbWUKIH07CiAKIHZv
aWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1Zh
bHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJik7CkBAIC01OCw2ICs1
OSw3IEBAIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNW
YWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uCiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xv
YmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRL
aW5kKTsKIHZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwg
RGVsZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQsIEVDTUFNb2RlKTsKIHZvaWQgcmVw
YXRjaEluQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIENhY2hlYWJs
ZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVy
ZVN0dWJJbmZvJiwgSW5CeUtpbmQpOwordm9pZCByZXBhdGNoSGFzUHJpdmF0ZUJyYW5kKEpTR2xv
YmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBi
b29sIHdhc0ZvdW5kLCAgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaENoZWNrUHJp
dmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoU2V0UHJpdmF0
ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNo
SW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpT
VmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwpAQCAt
NzAsNiArNzIsNyBAQCB2b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1Yklu
Zm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJl
U3R1YkluZm8mKTsKIHZvaWQgcmVzZXREZWxCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIERlbEJ5S2luZCk7CiB2b2lkIHJlc2V0SW5CeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYsIEluQnlLaW5kKTsKK3ZvaWQgcmVzZXRIYXNQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRJbnN0YW5jZU9mKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2Nr
KiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJs
b2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDczMzZhNWEzMzA4OC4uOTViOWRhZWFiZjc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAg
LTE0MzIsNiArMTQzMiwzNSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5fYnlf
dmFsKQogICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlW
YWwoZ2xvYmFsT2JqZWN0LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKSwg
Z2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpLCAmbWV0YWRhdGEubV9h
cnJheVByb2ZpbGUpKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYXNf
cHJpdmF0ZV9uYW1lKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7CisgICAgYXV0byBiYXNlVmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5p
c09iamVjdCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJF
cnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOworCisgICAgYXV0byBwcm9wZXJ0eVZhbHVl
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgIEFTU0VS
VChwcm9wZXJ0eVZhbHVlLmlzU3ltYm9sKCkpOworICAgIGF1dG8gcHJvcGVydHkgPSBwcm9wZXJ0
eVZhbHVlLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBFWENFUFRJT05fQVNTRVJU
KCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
YXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHkpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9i
cmFuZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKKyAgICBhdXRvIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQo
Y2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0
KCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGds
b2JhbE9iamVjdCwgYmFzZVZhbHVlKSk7CisKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGFz
T2JqZWN0KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGdldE9wZXJh
bmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2JyYW5kKSkpKTsKK30KKwogTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9nZXR0ZXJfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggNDNj
NmNhODQ1MzBlLi5mYmZkNTNjYzU1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCkBAIC03Myw2ICs3Myw4IEBAIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfaW5fYnlfdmFsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfaGFzX3ByaXZhdGVfbmFtZSk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2hhc19wcml2YXRlX2JyYW5kKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZGVsX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Z2V0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9w
cml2YXRlX25hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGNmMGQ2MGNmMTMzZi4uNzEyOWIwYWIzMGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCkBAIC0yMDEwLDggKzIwMTAsNiBAQCBpZiBub3QgSlNWQUxVRTY0CiAgICAgc2xvd1BhdGhP
cChnZXRfcHJvdG90eXBlX29mKQogZW5kCiAKLXNsb3dQYXRoT3AoaGFzX3ByaXZhdGVfbmFtZSkK
LXNsb3dQYXRoT3AoaGFzX3ByaXZhdGVfYnJhbmQpCiBzbG93UGF0aE9wKGlzX2NhbGxhYmxlKQog
c2xvd1BhdGhPcChpc19jb25zdHJ1Y3RvcikKIHNsb3dQYXRoT3AobGVzcykKQEAgLTIwNDQsNiAr
MjA0Miw4IEBAIGVuZAogCiBsbGludFNsb3dQYXRoT3AoaW5fYnlfaWQpCiBsbGludFNsb3dQYXRo
T3AoaW5fYnlfdmFsKQorbGxpbnRTbG93UGF0aE9wKGhhc19wcml2YXRlX25hbWUpCitsbGludFNs
b3dQYXRoT3AoaGFzX3ByaXZhdGVfYnJhbmQpCiBsbGludFNsb3dQYXRoT3AoZGVsX2J5X2lkKQog
bGxpbnRTbG93UGF0aE9wKGRlbF9ieV92YWwpCiBsbGludFNsb3dQYXRoT3AoaW5zdGFuY2VvZikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CmluZGV4IGExYzQxMzEwODYxNC4uMTEyOTU0YmI5YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTgzMCwzNSArODMwLDYg
QEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9pc19jb25zdHJ1Y3RvcikK
ICAgICBSRVRVUk4oanNCb29sZWFuKEdFVF9DKGJ5dGVjb2RlLm1fb3BlcmFuZCkuanNWYWx1ZSgp
LmlzQ29uc3RydWN0b3Iodm0pKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChz
bG93X3BhdGhfaGFzX3ByaXZhdGVfbmFtZSkKLXsKLSAgICBCRUdJTigpOwotCi0gICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxPcEhhc1ByaXZhdGVOYW1lPigpOwotICAgIGF1dG8gYmFzZVZhbHVl
ID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7Ci0gICAgaWYgKCFiYXNlVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgVEhST1coY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3Io
Z2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUpKTsKLQotICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IEdF
VF9DKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKLSAgICBBU1NFUlQocHJvcGVydHlW
YWx1ZS5pc1N5bWJvbCgpKTsKLSAgICBhdXRvIHByb3BlcnR5ID0gcHJvcGVydHlWYWx1ZS50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7Ci0gICAgRVhDRVBUSU9OX0FTU0VSVCghdGhyb3dTY29w
ZS5leGNlcHRpb24oKSk7Ci0KLSAgICBSRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1
ZSktPmhhc1ByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5KSkpOwotfQotCi1KU0Nf
REVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2hhc19wcml2YXRlX2JyYW5kKQotewot
ICAgIEJFR0lOKCk7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSGFzUHJpdmF0ZUJy
YW5kPigpOwotICAgIGF1dG8gYmFzZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1Zh
bHVlKCk7Ci0gICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgVEhST1coY3Jl
YXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUpKTsKLQot
ICAgIFJFVFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJpdmF0ZUJyYW5k
KGdsb2JhbE9iamVjdCwgR0VUX0MoYnl0ZWNvZGUubV9icmFuZCkuanNWYWx1ZSgpKSkpOwotfQot
CiB0ZW1wbGF0ZTxPcGNvZGVTaXplIHdpZHRoPgogQUxXQVlTX0lOTElORSBTbG93UGF0aFJldHVy
blR5cGUgaXRlcmF0b3JPcGVuVHJ5RmFzdEltcGwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uKiBwYykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYzgzMDk4MWIwMzkzLi5kOGQxNTAxZmIzNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBA
IC0yNTEsOCArMjUxLDYgQEAgSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhf
dHlwZW9mX2lzX29iamVjdCk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0
aF90eXBlb2ZfaXNfZnVuY3Rpb24pOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93
X3BhdGhfaXNfY2FsbGFibGUpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3Bh
dGhfaXNfY29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3Bh
dGhfaGFzX3ByaXZhdGVfbmFtZSk7Ci1KU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3df
cGF0aF9oYXNfcHJpdmF0ZV9icmFuZCk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF9zdHJjYXQpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhf
dG9fcHJpbWl0aXZlKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3Rv
X3Byb3BlcnR5X2tleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaAppbmRleCA5NWFiOWFjMGY0Y2UuLjY3Y2ZiOTlmMzk3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01MjQsNyArNTI0LDcgQEAgSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihCb29sLCB1c2VQcml2YXRl
U3RhdGljQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2ls
bCB1bmRlcnN0YW5kIHByaXZhdGUgc3RhdGljIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIp
IFwKICAgICB2KEJvb2wsIHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBpbnNp
ZGUgY2xhc3Nlcy4iKSBcCiAgICAgdihCb29sLCB1c2VQcml2YXRlTWV0aG9kcywgdHJ1ZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZXRob2Rz
IGluc2lkZSBjbGFzc2VzLiIpIFwKLSAgICB2KEJvb2wsIHVzZVByaXZhdGVJbiwgZmFsc2UsIE5v
cm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgbWVtYmVy
IGV4aXN0ZW5jZSBjaGVja3Mgd2l0aCB0aGUgYGluYCBvcGVyYXRvci4iKSBcCisgICAgdihCb29s
LCB1c2VQcml2YXRlSW4sIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1
bmRlcnN0YW5kIHByaXZhdGUgbWVtYmVyIGV4aXN0ZW5jZSBjaGVja3Mgd2l0aCB0aGUgYGluYCBv
cGVyYXRvci4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVN0cmVhbWluZywgdHJ1ZSwg
Tm9ybWFsLCAiQWxsb3cgdG8gcnVuIFdlYkFzc2VtYmx5J3MgU3RyZWFtaW5nIEFQSSIpIFwKICAg
ICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cg
dHlwZXMgZnJvbSB0aGUgd2FzbSByZWZlcmVuY2VzIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNl
V2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcywgZmFsc2UsIE5vcm1hbCwgIkFsbG93
IGZ1bmN0aW9uIHR5cGVzIGZyb20gdGhlIHdhc20gdHlwZWQgZnVuY3Rpb24gcmVmZXJlbmNlcyBz
cGVjLiIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431734</attachid>
            <date>2021-06-17 16:18:57 -0700</date>
            <delta_ts>2021-06-21 23:41:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226146-20210617161856.patch</filename>
            <type>text/plain</type>
            <size>68217</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YmMyZGE3MDM4ODliNGY5ZDY2ODVjYmJiYjc5OTdmOGVmZTU0NjJjLi42MWViMmFmYmQwYzU0NWYx
YmYzMzM2OWJhY2EyMWMyNjA0YTI2YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAyMS0wNi0xNyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIEpJVCBJQ3MgZm9yIGAjeCBpbiBvYmpgIGZlYXR1
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW1wbGVtZW50cyBKSVQgSUNzIGZvciB0aGUgbmV3IGAjeCBpbiBvYmpgIGZlYXR1cmUg
YW5kIHR1cm5zIHRoZSBmZWF0dXJlIG9uIGJ5IGRlZmF1bHQuCisgICAgICAgIEltcGxlbWVudGF0
aW9uIGNsb3NlbHkgZm9sbG93cyBJbkJ5VmFsLCB0aG91Z2ggSGFzUHJpdmF0ZUJyYW5kIGhhcyBh
IGZldyBzdWJ0bGV0aWVzCisgICAgICAgIChuYW1lbHksIGl0IGNhbm5vdCBiZSB2aWV3ZWQgaW4g
dGVybXMgb2YgYSBQcm9wZXJ0eVNsb3QgYW5kIHNob3VsZCBub3QgYmUgY29udmVydGVkIHRvIElu
QnlJZCkuCisKKyAgICAgICAgTWljcm9iZW5jaG1hcmtzOgorICAgICAgICAgICAgaGFzLXByaXZh
dGUtbmFtZSAgICAgICAgNDYuNTc3NystMC4xMzc0ICAgICBeICAgICAgNi4wNTg5Ky0wLjAyOTYg
ICAgICAgIF4gZGVmaW5pdGVseSA3LjY4NzV4IGZhc3RlcgorICAgICAgICAgICAgaGFzLXByaXZh
dGUtYnJhbmQgICAgICAgMjUuODgyMystMC4wNTYxICAgICBeICAgICAxOS4xNTA5Ky0wLjA0NDcg
ICAgICAgIF4gZGVmaW5pdGVseSAxLjM1MTV4IGZhc3RlcgorCisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6
cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5CeUFzTWF0Y2hTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQcml2YXRlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc1ByaXZhdGVOYW1l
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc1ByaXZhdGVC
cmFuZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAg
ICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
SW5CeVZhbEdlbmVyYXRvcjo6SklUSW5CeVZhbEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEhhc1ByaXZhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRIYXNQcml2YXRlU2xv
dyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0SGFzUHJpdmF0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEhhc1ByaXZhdGVTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19wcml2
YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25h
bWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ0lu
QnlGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY0luQnlGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJ
bkJ5KToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVIYXNQcml2YXRlQnJhbmQpOgorICAgICAgICAo
SlNDOjpyZXBhdGNoSGFzUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbkJ5KToK
KyAgICAgICAgKEpTQzo6cmVzZXRIYXNQcml2YXRlQnJhbmQpOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorCiAyMDIx
LTA2LTE3ICBZaWppYSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYSBuZXcgcGF0dGVybiB0byBpbnN0cnVjdGlvbiBzZWxlY3RvciB0byB1dGlsaXplIFVCRlgg
c3VwcG9ydGVkIGJ5IEFSTTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCAxZDczNTBhMjkzOTQ2ZWI1ZWZiNjFmZDI0
ZmEwZTJmZTJiMjgwNzFjLi5iODU1ZTg4NjViOTdjZGZkYzBlZThlNTFlOGI5NWRiNTcxMzAzNjcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAKQEAgLTI3OSw2ICsyNzksMTIgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6
cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMK
ICAgICBjYXNlIEFjY2Vzc1R5cGU6OkluQnlWYWw6CiAgICAgICAgIHJlc2V0SW5CeShjb2RlQmxv
Y2ssICp0aGlzLCBJbkJ5S2luZDo6QnlWYWwpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFj
Y2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lOgorICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAq
dGhpcywgSW5CeUtpbmQ6OlByaXZhdGVOYW1lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
Y2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQ6CisgICAgICAgIHJlc2V0SGFzUHJpdmF0ZUJyYW5k
KGNvZGVCbG9jaywgKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6
Okluc3RhbmNlT2Y6CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZihjb2RlQmxvY2ssICp0aGlzKTsK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDBmNjc3NWYxNmZiYzViYWFmZDdhNjcxMTdjNTAxNGZk
ZjdlNjM1YzAuLjdmMmY2MjU2YzBjMjZiYTA4ZmZmYjJjNmZmNWI3MWFmYjczNjViNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CkBAIC01Nyw2ICs1Nyw4IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdCB7CiAgICAg
UHV0LAogICAgIEluQnlJZCwKICAgICBJbkJ5VmFsLAorICAgIEhhc1ByaXZhdGVOYW1lLAorICAg
IEhhc1ByaXZhdGVCcmFuZCwKICAgICBJbnN0YW5jZU9mLAogICAgIERlbGV0ZUJ5SUQsCiAgICAg
RGVsZXRlQnlWYWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IGE1ZjUyYTA1YWZlMDViMTgwNWIzNTYxMDU2NzFlMmNjNWVlYTc0Y2Qu
LmZjODFmNjkwNDI5OTMzYzg5NmJkMTM3NTI0N2RlYTg0MjEwNWI0YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNjQsNiArMjY0
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZURlbGV0ZUJ5SWQoCiAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRlQnlTdGF0dXMsIEVDTUFNb2RlKTsKIAor
ICAgIGJvb2wgaGFuZGxlSW5CeUFzTWF0Y2hTdHJ1Y3R1cmUoVmlydHVhbFJlZ2lzdGVyIGRlc3Rp
bmF0aW9uLCBOb2RlKiBiYXNlLCBJbkJ5U3RhdHVzKTsKICAgICB2b2lkIGhhbmRsZUluQnlJZChW
aXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIEluQnlTdGF0dXMpOwogCiAgICAgLy8gRWl0aGVyIHJlZ2lzdGVyIGEgd2F0Y2hwb2ludCBv
ciBlbWl0IGEgY2hlY2sgZm9yIHRoaXMgY29uZGl0aW9uLiBSZXR1cm5zIGZhbHNlIGlmIHRoZQpA
QCAtNDk0MSwzMiArNDk0Miw0MCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVC
eUlkKAogICAgIHJldHVybjsKIH0KIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5CeUlk
KFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBJbkJ5U3RhdHVzIHN0YXR1cykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUluQnlBc01hdGNoU3RydWN0dXJlKFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwg
Tm9kZSogYmFzZSwgSW5CeVN0YXR1cyBzdGF0dXMpCiB7Ci0gICAgaWYgKHN0YXR1cy5pc1NpbXBs
ZSgpICYmIE9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKLSAgICAgICAgYm9vbCBhbGxP
SyA9IHRydWU7Ci0gICAgICAgIE1hdGNoU3RydWN0dXJlRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9t
YXRjaFN0cnVjdHVyZURhdGEuYWRkKCk7Ci0gICAgICAgIGZvciAoY29uc3QgSW5CeVZhcmlhbnQm
IHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkgewotICAgICAgICAgICAgaWYgKCFjaGVjayh2
YXJpYW50LmNvbmRpdGlvblNldCgpKSkgewotICAgICAgICAgICAgICAgIGFsbE9LID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3Ig
KFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSkgewotICAgICAg
ICAgICAgICAgIE1hdGNoU3RydWN0dXJlVmFyaWFudCBtYXRjaFZhcmlhbnQ7Ci0gICAgICAgICAg
ICAgICAgbWF0Y2hWYXJpYW50LnN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
c3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICBtYXRjaFZhcmlhbnQucmVzdWx0ID0gdmFyaWFu
dC5pc0hpdCgpOworICAgIGlmICghc3RhdHVzLmlzU2ltcGxlKCkgfHwgIU9wdGlvbnM6OnVzZUFj
Y2Vzc0lubGluaW5nKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgICAg
IGRhdGEtPnZhcmlhbnRzLmFwcGVuZChXVEZNb3ZlKG1hdGNoVmFyaWFudCkpOwotICAgICAgICAg
ICAgfQorICAgIGJvb2wgYWxsT0sgPSB0cnVlOworICAgIE1hdGNoU3RydWN0dXJlRGF0YSogZGF0
YSA9IG1fZ3JhcGgubV9tYXRjaFN0cnVjdHVyZURhdGEuYWRkKCk7CisgICAgZm9yIChjb25zdCBJ
bkJ5VmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgIGlmICgh
Y2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKKyAgICAgICAgICAgIGFsbE9LID0gZmFs
c2U7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBmb3IgKFN0cnVjdHVy
ZSogc3RydWN0dXJlIDogdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSkgeworICAgICAgICAgICAgTWF0
Y2hTdHJ1Y3R1cmVWYXJpYW50IG1hdGNoVmFyaWFudDsKKyAgICAgICAgICAgIG1hdGNoVmFyaWFu
dC5zdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBtYXRjaFZhcmlhbnQucmVzdWx0ID0gdmFyaWFudC5pc0hpdCgpOwogCi0gICAgICAg
IGlmIChhbGxPSykgewotICAgICAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJJbkJ5U3RhdHVzLCBP
cEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZEluQnlTdGF0dXMoY3Vy
cmVudENvZGVPcmlnaW4oKSwgc3RhdHVzKSksIGJhc2UpOwotICAgICAgICAgICAgc2V0KGRlc3Rp
bmF0aW9uLCBhZGRUb0dyYXBoKE1hdGNoU3RydWN0dXJlLCBPcEluZm8oZGF0YSksIGJhc2UpKTsK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGRhdGEtPnZhcmlhbnRzLmFwcGVuZChX
VEZNb3ZlKG1hdGNoVmFyaWFudCkpOwogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKGFsbE9L
KSB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVySW5CeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgu
bV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRJbkJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2lu
KCksIHN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBhZGRUb0dyYXBo
KE1hdGNoU3RydWN0dXJlLCBPcEluZm8oZGF0YSksIGJhc2UpKTsKKyAgICB9CisKKyAgICByZXR1
cm4gYWxsT0s7Cit9CisKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUluQnlJZChWaXJ0dWFs
UmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgSW5CeVN0YXR1cyBzdGF0dXMpCit7CisgICAgaWYgKGhhbmRsZUluQnlBc01hdGNo
U3RydWN0dXJlKGRlc3RpbmF0aW9uLCBiYXNlLCBzdGF0dXMpKQorICAgICAgICByZXR1cm47CisK
ICAgICBzZXQoZGVzdGluYXRpb24sIGFkZFRvR3JhcGgoSW5CeUlkLCBPcEluZm8oaWRlbnRpZmll
ciksIGJhc2UpKTsKIH0KIApAQCAtODMwNCwxOCArODMxMyw1OSBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBjYXNlIG9wX2hhc19wcml2YXRlX25hbWU6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJ
bXByb3ZlIHRoaXMgb25jZSBJbkJ5VmFsIGhhcyBiZWVuIG9wdGltaXplZC4KLSAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDYKICAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0
ZU5hbWU+KCk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSGFz
UHJpdmF0ZU5hbWUsIGdldChieXRlY29kZS5tX2Jhc2UpLCBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpKTsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAg
ICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAg
ICAgICAgICAgYm9vbCBjb21waWxlZEFzSW5CeUlkID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlm
ICghbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAg
ICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENvbnN0YW50VmFsdWUpKSB7CisKKyAgICAgICAgICAgICAgICBJ
bkJ5U3RhdHVzIHN0YXR1cyA9IEluQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1Rv
cC0+bV9iYXNlbGluZU1hcCwKKyAgICAgICAgICAgICAgICAgICAgbV9pY0NvbnRleHRTdGFjaywg
Y3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyID0gc3RhdHVzLnNpbmdsZUlkZW50aWZpZXIoKSkgeworICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlk
KCkpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbENlbGwo
KSk7CisgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZy
ZWV6ZVN0cm9uZyhpZGVudGlmaWVyLmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOworICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVJbkJ5SWQoYnl0ZWNvZGUubV9kc3QsIGJhc2UsIGlkZW50aWZp
ZXIsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVkQXNJbkJ5SWQgPSB0cnVl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFj
b21waWxlZEFzSW5CeUlkKQorICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRk
VG9HcmFwaChIYXNQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2hhc19wcml2YXRlX25hbWUpOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBvcF9oYXNfcHJpdmF0ZV9icmFuZDogewotICAgICAgICAgICAgLy8gRklYTUU6IEltcHJvdmUg
dGhpcyBvbmNlIEluQnlWYWwgaGFzIGJlZW4gb3B0aW1pemVkLgotICAgICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0NgogICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+
KCk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSGFzUHJpdmF0
ZUJyYW5kLCBnZXQoYnl0ZWNvZGUubV9iYXNlKSwgZ2V0KGJ5dGVjb2RlLm1fYnJhbmQpKSk7Cisg
ICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAg
ICBOb2RlKiBicmFuZCA9IGdldChieXRlY29kZS5tX2JyYW5kKTsKKyAgICAgICAgICAgIGJvb2wg
Y29tcGlsZWRBc01hdGNoU3RydWN0dXJlID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmICghbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkSWRlbnQpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAgICAgICAg
ICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZENvbnN0YW50VmFsdWUpKSB7CisKKyAgICAgICAgICAgICAgICBJbkJ5U3Rh
dHVzIHN0YXR1cyA9IEluQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+bV9i
YXNlbGluZU1hcCwKKyAgICAgICAgICAgICAgICAgICAgbV9pY0NvbnRleHRTdGFjaywgY3VycmVu
dENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyID0gc3RhdHVzLnNpbmdsZUlkZW50aWZpZXIoKSkgeworICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkpOwor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0
cm9uZyhpZGVudGlmaWVyLmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
Q2hlY2tJc0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgYnJhbmQpOworICAgICAgICAgICAgICAg
ICAgICBjb21waWxlZEFzTWF0Y2hTdHJ1Y3R1cmUgPSBoYW5kbGVJbkJ5QXNNYXRjaFN0cnVjdHVy
ZShieXRlY29kZS5tX2RzdCwgYmFzZSwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghY29tcGlsZWRBc01hdGNoU3RydWN0dXJlKQor
ICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChIYXNQcml2YXRl
QnJhbmQsIGJhc2UsIGJyYW5kKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9oYXNfcHJp
dmF0ZV9icmFuZCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBhNTQwZWIzNTQwZjc1MDI4YzFlYmVlYWZhZDBh
ZDg0Zjk1ZTU0ODhjLi4wMTJkYzFiOTgwOGVmMTlhYjRjNGJmMDY4YzNhMTQxZDVjZDhiNjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtMTM1MCwxMiArMTM1MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlk
KE5vZGUqIG5vZGUpCiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKICAgICAgICAgICAgIE5l
ZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAg
ICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKS5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRp
b25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRz
KCkpOworICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1Yklu
Zm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKS5yYXdCaXRzKCkpOwogICAgIH0KIAogICAgIG1faml0LmFkZEluQnlJZChnZW4s
IHNsb3dQYXRoLmdldCgpKTsKQEAgLTEzODksNyArMTM4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4
aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNl
dCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIEpJVEluQnlWYWxH
ZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklU
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5
cGU6OkluQnlWYWwsIHVzZWRSZWdpc3RlcnMsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpERkdKSVQpKQpAQCAtMTQwMCwxMiArMTQwMCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2RlKQogICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoSUNDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwg
c3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5CeVZhbE9wdGlt
aXplLAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6
OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
YXNlR1BSKSwga2V5UmVncyk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwga2V5UmVncyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENh
bGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6
ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpD
aGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIGtleVJlZ3MpOworICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIGtleVJlZ3MpOwogICAgIH0KIAogICAgIG1faml0LmFkZEluQnlWYWwoZ2VuLCBzbG93
UGF0aC5nZXQoKSk7CkBAIC0xNDE0LDQ4ICsxNDE0LDcwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVz
dWx0UmVncy5wYXlsb2FkR1BSKCksIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQcml2YXRlTmFtZShOb2RlKiBu
b2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc1ByaXZhdGUoTm9kZSogbm9kZSwg
QWNjZXNzVHlwZSB0eXBlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGtleSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHlPckJyYW5kKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIGJhc2UpOworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5m
bzsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVt
cGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAg
IH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0gICAgR1BSUmVnIGtleUdQUiA9
IGtleS5ncHIoKTsKKyAgICBHUFJSZWcgcHJvcGVydHlPckJyYW5kR1BSID0gcHJvcGVydHlPckJy
YW5kLmdwcigpOworICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwog
Ci0gICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBrZXlHUFIpOworICAgIHNwZWN1
bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIoKSwgcHJvcGVydHlPckJyYW5kR1BSKTsKIAogICAgIGJh
c2UudXNlKCk7Ci0gICAga2V5LnVzZSgpOworICAgIHByb3BlcnR5T3JCcmFuZC51c2UoKTsKIAot
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNQcml2YXRlTmFtZSwgcmVzdWx0UmVncywg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGtleUdQUikpOwotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIG5vZGUsIFVzZUNoaWxkcmVuQ2Fs
bGVkRXhwbGljaXRseSk7Ci19CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7
CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQcml2YXRlQnJhbmQoTm9kZSogbm9k
ZSkKLXsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBicmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRl
RXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNp
emUoKSk7CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3Rl
cnMoKTsKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHR5cGUsIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHByb3BlcnR5T3JCcmFuZEdQUiksIHJlc3VsdFJlZ3MsIHN0
dWJJbmZvR1BSKTsKIAotICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKLSAgICBHUFJS
ZWcgYnJhbmRHUFIgPSBicmFuZC5ncHIoKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJ
c1N5bWJvbCA9IHRydWU7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIGlm
ICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHNwZWN1bGF0ZVN5bWJvbChub2Rl
LT5jaGlsZDIoKSwgYnJhbmRHUFIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lID8gb3BlcmF0aW9u
SGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXpl
LAorICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNo
ZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHVi
SW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCB0eXBl
ID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVP
cHRpbWl6ZSA6IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplLAorICAgICAgICAgICAg
TmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAg
ICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHBy
b3BlcnR5T3JCcmFuZEdQUikpOworICAgIH0KIAotICAgIGJhc2UudXNlKCk7Ci0gICAgYnJhbmQu
dXNlKCk7CisgICAgbV9qaXQuYWRkSW5CeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiAKLSAgICBmbHVzaFJlZ2lz
dGVycygpOwotICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwot
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIp
KTsKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0
KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJpdmF0ZU5hbWUoTm9k
ZSogbm9kZSkKK3sKKyAgICBjb21waWxlSGFzUHJpdmF0ZShub2RlLCBBY2Nlc3NUeXBlOjpIYXNQ
cml2YXRlTmFtZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQcml2YXRl
QnJhbmQoTm9kZSogbm9kZSkKK3sKKyAgICBjb21waWxlSGFzUHJpdmF0ZShub2RlLCBBY2Nlc3NU
eXBlOjpIYXNQcml2YXRlQnJhbmQpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGN1
cnJlbnRTY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMjliYTI5YWU0NzY2ZWFlYmM3ZmVjNzhk
ZjFhYTRkN2Q1NDY1YzZhZS4uZWEwODhiYWUyMDk3ZGI0ZjljOTc3Mzc5MzYxNTYzMjZlNjQ2NmVj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApA
QCAtNzM4LDkgKzczOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0QnlJZEZsdXNo
KE5vZGUqLCBBY2Nlc3NUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVJbkJ5SWQoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUluQnlWYWwoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUhhc1ByaXZhdGUo
Tm9kZSosIEFjY2Vzc1R5cGUpOwogICAgIHZvaWQgY29tcGlsZUhhc1ByaXZhdGVOYW1lKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVIYXNQcml2YXRlQnJhbmQoTm9kZSopOwotICAgIAorCiAgICAg
dm9pZCBub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVuZGVmaW5lZChFZGdl
IG9wZXJhbmQpOwogICAgIHZvaWQgbm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGxPclVu
ZGVmaW5lZChFZGdlIG9wZXJhbmQsIE5vZGUqIGJyYW5jaE5vZGUpOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGNjNzRlYmI0YjNl
Yzg3MzNkZDRjNDJmMzU5ODdiNTdiZDE5MTljZjEuLmExYTE2YzVhYzQwYjZkNDExZWI0ZDUzMWRl
ZWZhZTNhYzRjNzdjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTEyNDIwLDI0ICsxMjQyMCwxMyBAQCBwcml2YXRlOgogICAgICAgICBz
ZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykpOwogICAgIH0KIAotICAgIHZvaWQg
Y29tcGlsZUhhc1ByaXZhdGVOYW1lKCkKLSAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7
Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25IYXNQcml2YXRlTmFt
ZSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwg
bG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxl
SGFzUHJpdmF0ZUJyYW5kKCkKLSAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7Ci0gICAg
ICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmQsIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd1N5
bWJvbChtX25vZGUtPmNoaWxkMigpKSkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPEluQnlLaW5k
IGtpbmQsIHR5cGVuYW1lIFN1YnNjcmlwdEtpbmQ+CisgICAgdGVtcGxhdGU8QWNjZXNzVHlwZSB0
eXBlLCB0eXBlbmFtZSBTdWJzY3JpcHRLaW5kPgogICAgIHZvaWQgY29tcGlsZUluQnkoTFZhbHVl
IGJhc2UsIFN1YnNjcmlwdEtpbmQgc3Vic2NyaXB0VmFsdWUpCiAgICAgeworICAgICAgICBzdGF0
aWNfYXNzZXJ0KHR5cGUgPT0gQWNjZXNzVHlwZTo6SW5CeUlkIHx8IHR5cGUgPT0gQWNjZXNzVHlw
ZTo6SW5CeVZhbCB8fCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lIHx8IHR5cGUg
PT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKICAgICAgICAgUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKLSAgICAgICAgaWYgY29uc3RleHByIChraW5k
ICE9IEluQnlLaW5kOjpCeUlkKQorICAgICAgICBpZiBjb25zdGV4cHIgKHR5cGUgIT0gQWNjZXNz
VHlwZTo6SW5CeUlkKQogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVy
KHN1YnNjcmlwdFZhbHVlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1h
c2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhH
UFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwpAQCAtMTI0NjIsMTUgKzEyNDUxLDI4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7
CiAgICAgICAgICAgICAgICAgYXV0byBiYXNlID0gSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigp
KTsKIAorICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBhdXRvIG9wdGltaXphdGlvbkZ1bmN0aW9u
ID0gWyZdICgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByICh0eXBlID09IEFj
Y2Vzc1R5cGU6OkluQnlJZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRp
b25JbkJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIg
KHR5cGUgPT0gQWNjZXNzVHlwZTo6SW5CeVZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgY29uc3RleHByICh0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemU7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Fzc2VydCh0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemU7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7CisKICAgICAgICAg
ICAgICAgICBjb25zdCBhdXRvIHN1YnNjcmlwdCA9IFsmXSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgY29uc3RleHByICh0eXBlID09IEFjY2Vzc1R5cGU6OkluQnlJZCkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2NyaXB0
VmFsdWUucmF3Qml0cygpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAg
ICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byBnZW5lcmF0b3IgPSBb
Jl0gewotICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6
OkJ5SWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByICh0eXBlID09IEFjY2Vz
c1R5cGU6OkluQnlJZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVRJ
bkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIHNlbWFudGljTm9kZU9yaWdpbiwgY2FsbFNp
dGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUsIGJhc2UsCkBAIC0xMjQ3OCwxNCArMTI0ODAsMTQg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwg
c2VtYW50aWNOb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLCBzdWJzY3JpcHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGJhc2UsIHN1YnNjcmlwdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUik7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9KCk7CiAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFz
dFBhdGgoaml0KTsKLSAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtp
bmQ6OkJ5SWQpCisgICAgICAgICAgICAgICAgaWYgY29uc3RleHByICh0eXBlID09IEFjY2Vzc1R5
cGU6OkluQnlJZCkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0
b3ItPnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkKQEAgLTEy
NTAwLDEwICsxMjUwMiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAodHlwZSAhPSBBY2Nlc3NUeXBlOjpJbkJ5VmFsKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpGVExKSVQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHVi
SW5mb0dQUik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1
YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmV0dXJuR1BS
LApAQCAtMTI1MTIsMTQgKzEyNTE0LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNO
b2RlT3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJldHVybkdQUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1
bmN0aW9uLCByZXR1cm5HUFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpGVExKSVQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBz
dHViSW5mb0dQUik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1f
c2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJldHVy
bkdQUiwKQEAgLTEyNTI5LDcgKzEyNTMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRp
Y05vZGVPcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25zLmdldCgpLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsIHJldHVybkdQUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlv
bkZ1bmN0aW9uLCByZXR1cm5HUFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2UsIHN1
YnNjcmlwdCkuY2FsbCgpOwpAQCAtMTI1NTEsMTIgKzEyNTUzLDIyIEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGNvbXBpbGVJbkJ5SWQoKQogICAgIHsKLSAgICAgICAgY29tcGlsZUluQnk8SW5CeUtp
bmQ6OkJ5SWQ+KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1fbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpKTsKKyAgICAgICAgY29tcGlsZUluQnk8QWNjZXNzVHlwZTo6SW5CeUlkPihsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSk7CiAg
ICAgfQogCiAgICAgdm9pZCBjb21waWxlSW5CeVZhbCgpCiAgICAgewotICAgICAgICBjb21waWxl
SW5CeTxJbkJ5S2luZDo6QnlWYWw+KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSkpOworICAgICAgICBjb21waWxlSW5CeTxBY2Nlc3NUeXBlOjpJ
bkJ5VmFsPihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQyKCkpKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVIYXNQcml2YXRlTmFtZSgpCisgICAg
eworICAgICAgICBjb21waWxlSW5CeTxBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZT4obG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKSwgbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpKTsKKyAgICB9
CisKKyAgICB2b2lkIGNvbXBpbGVIYXNQcml2YXRlQnJhbmQoKQorICAgIHsKKyAgICAgICAgY29t
cGlsZUluQnk8QWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kPihsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSkpOwogICAgIH0KIAogICAgIHZvaWQg
Y29tcGlsZUhhc093blByb3BlcnR5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBm
ZDIzYmI5MWJjOTE3MDkwMjJiMTY2MjMxNzM1ZjE1MjRjODk5MzE2Li5lZmI0M2MyYzk2ZTI5ZWZm
MTJlOGY4MWQyMGUyN2Y5ZDk5Y2ExYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBA
IC0yOTksOCArMjk5LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICB9CiAKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAgICAgICBERUZJTkVfU0xP
V19PUChoYXNfcHJpdmF0ZV9uYW1lKQotICAgICAgICBERUZJTkVfU0xPV19PUChoYXNfcHJpdmF0
ZV9icmFuZCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AobGVzcykKICAgICAgICAgREVGSU5FX1NM
T1dfT1AobGVzc2VxKQogICAgICAgICBERUZJTkVfU0xPV19PUChncmVhdGVyKQpAQCAtMzc1LDYg
KzM3Myw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVG
SU5FX09QKG9wX3RyeV9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9pbl9ieV9pZCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2luX2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX2hh
c19wcml2YXRlX25hbWUpCisgICAgICAgIERFRklORV9PUChvcF9oYXNfcHJpdmF0ZV9icmFuZCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dl
dF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0
KQpAQCAtNTg2LDYgKzU4Niw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF90cnlfZ2V0X2J5X2lkKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5fYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9pbl9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9oYXNfcHJpdmF0
ZV9uYW1lKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaGFzX3ByaXZhdGVfYnJhbmQp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWQpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfZ2V0X2J5X2lkX2RpcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4
IGIzMWE5ODhjN2E5ZDQxMWQzMzRhYjdkOGFjNjUzOTU0Nzg3Y2ViNjAuLjhjYWY5ODcwYmRmZmM2
MmNmY2MzM2Y2OWYzMTZmZDkzZjhlOTk4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAt
NTczLDYgKzU3Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0
X3Byb3RvdHlwZV9vZihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
aW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lu
aXRfbGF6eV9yZWcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX292
ZXJyaWRlc19oYXNfaW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTcwNyw2ICs3MDksOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1l
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwor
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFuY2VvZl9j
dXN0b20oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkBAIC03NTUsNiArNzU5LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0U2xvd0Nh
c2UoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwg
Ym9vbCBpc1Vuc2lnbmVkKTsKIAorICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlKFZpcnR1YWxS
ZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVy
dHlPckJyYW5kLCBBY2Nlc3NUeXBlKTsKKyAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3co
VmlydHVhbFJlZ2lzdGVyIGRzdCwgQWNjZXNzVHlwZSk7CisKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+CiAgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGFjMDUz
ODA4YWMxMmJkN2M4YTAyZWI3ZGZlNzhjNjE0Mzc1YmM2OGYuLjY5YmYxYTFjM2Y4YTFhMzkxNjlj
NmQzOTljMmIwYzY3NmM4OGNmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0yNDksOCArMjQ5LDggQEAgdm9p
ZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlu
a0J1ZmZlciYgc2xvd1BhdGgpCiAgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1
YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklUSW5CeVZhbEdlbmVyYXRvcjo6
SklUSW5CeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBl
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUikKLSAg
ICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBB
Y2Nlc3NUeXBlOjpJbkJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQorSklUSW5CeVZhbEdlbmVyYXRvcjo6
SklUSW5CeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBl
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNj
ZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwg
R1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVP
cmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAg
bV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCA0
YjQ3OWI5NzZlMWU3NzE2YzAzMzZlNTI1Zjc3MmVkMzJmY2QxNWNlLi5lZTY4MTQxMDFhODFlYmQx
NTViZjRkYjY5M2ZmNDdjOGEyNzhmN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHVi
bGljOgogICAgIEpJVEluQnlWYWxHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEluQnlWYWxHZW5l
cmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBDb2RlQmxv
Y2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZv
R1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBlYjg5MDJh
YTVjYWRkODk5NjZkMWQ2YWNiOGFhMzA1NGJiMzg2NTNhLi43NWRjN2MzNjlmMmFkM2ZhYjMyMGI4
ZWI3OWZjN2Q3NTNmNjgwOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKQEAgLTUwOCw0MyArNTA4LDExMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
YwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6
b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpk
ZWNvZGUoa2V5KSwgYXJyYXlQcm9maWxlKSkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBrZXkpKQorSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3BlcnR5KSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBs
ZXJTY29wZShmYWxzZSk7Ci0gICAgCisKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYgKCFi
YXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJh
c2VWYWx1ZSkpOworICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICB9CisgICAg
SlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1
ZSBwcm9wZXJ0eVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7CisgICAg
QVNTRVJUKHByb3BlcnR5VmFsdWUuaXNTeW1ib2woKSk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHBy
b3BlcnR5VmFsdWUudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9B
U1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7Cisg
ICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KGJhc2VPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOwogCisgICAgQVNTRVJUKENhY2hlYWJsZUlk
ZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwocHJvcGVydHlWYWx1ZSkpOworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tQ2VsbChwcm9wZXJ0eVZhbHVlLmFzQ2VsbCgpKTsKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSksIGlk
ZW50aWZpZXIpKQorICAgICAgICByZXBhdGNoSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
YmFzZU9iamVjdCwgaWRlbnRpZmllciwgZm91bmQsIHNsb3QsICpzdHViSW5mbywgSW5CeUtpbmQ6
OlByaXZhdGVOYW1lKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZv
dW5kKSk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRl
TmFtZUdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KSkKK3sKKyAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgaWYgKCFiYXNlLT5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVj
dCwgYmFzZSkpOworCisgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYg
KCFiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3Qs
IGJhc2VWYWx1ZSkpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAK
LSAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoa2V5KTsKKyAgICBK
U1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5KTsK
ICAgICBBU1NFUlQocHJvcGVydHlWYWx1ZS5pc1N5bWJvbCgpKTsKICAgICBhdXRvIHByb3BlcnR5
ID0gcHJvcGVydHlWYWx1ZS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBU
SU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZSktPmhhc1ByaXZhdGVGaWVsZChnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFz
T2JqZWN0KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5
KSkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZUJy
YW5kLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgYnJhbmQpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCcmFuZCkpCiB7
CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIAor
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsK
KyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxp
ZEluUGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUpKTsKKyAgICAgICAgcmV0
dXJuIGVuY29kZWRKU1ZhbHVlKCk7CisgICAgfQorICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0g
YXNPYmplY3QoYmFzZVZhbHVlKTsKKworICAgIEpTVmFsdWUgYnJhbmQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEJyYW5kKTsKKyAgICBib29sIGZvdW5kID0gYXNPYmplY3QoYmFzZVZhbHVlKS0+
aGFzUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgYnJhbmQpOworCisgICAgQVNTRVJUKENhY2hl
YWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoYnJhbmQpKTsKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUNlbGwoYnJhbmQuYXNDZWxsKCkpOworICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5n
Qnkodm0sIGNvZGVCbG9jaywgYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSwgaWRlbnRpZmllcikp
CisgICAgICAgIHJlcGF0Y2hIYXNQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIGZvdW5kLCAqc3R1YkluZm8pOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZm91bmQpKTsKK30KIAorSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJy
YW5kKSkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7
CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKCFiYXNlLT5pc09iamVjdCgpKSB7Ci0g
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJ
blBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgYmFzZSkpOworCisgICAgc3R1YkluZm8tPnRv
b2tTbG93UGF0aCA9IHRydWU7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5Q
YXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOwogICAgICAgICByZXR1cm4g
ZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihhc09iamVjdChiYXNlKS0+aGFzUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgSlNW
YWx1ZTo6ZGVjb2RlKGJyYW5kKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKSkpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNo
ZWFibGVJZGVudGlmaWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKaW5kZXggZDg3NzA2NmM4NTMzNTE5NmNhYTVlYjRlYjcxZDdiOTA2YzMxOTZkYy4uY2QzZTFi
ZDQxNGVjZDE3MGJhNGEyNTU4OTM4ZjFlZDU0NDNhYjg5NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE3OCw4ICsxNzgsMTAgQEAgSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5SWRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpT
R2xvYmFsT2JqZWMKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeUlkT3B0
aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlLCB1aW50cHRyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5
VmFsT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEFycmF5UHJvZmlsZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZSwgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7
Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZCwgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lR2VuZXJp
YywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRl
QnJhbmRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsIEVuY29kZWRK
U1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblB1dEJ5SWRTdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgdWludHB0cl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1
dEJ5SWROb25TdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgdWludHB0cl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCmluZGV4IDU5ZGU3YmU2NDA3MjE0MTRkMTU1Y2YzMTY3Y2ZlZWM5ZWNhYjNk
MDMuLjE1ZTFkMzQ1NzliNmQ0YzhjMTcwZDIzNTBjNmMzNjQ0M2ZmZWE0MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xNzEwLDcg
KzE3MTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwo
cmVnVDAsIHJlZ1QyLCBwcm9maWxlKTsKIAogICAgIEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkluQnlWYWwsIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCkBAIC0xNzcyLDYgKzE3NzIsOTQgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2wKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwp
OwogfQogCit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmly
dHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU9yQnJhbmQsIEFjY2Vz
c1R5cGUgdHlwZSkKK3sKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsK
KyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHlPckJyYW5kLCByZWdUMSk7CisKKyAgICBKSVRJbkJ5
VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgdHlwZSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCByZWdUMik7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAg
IGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNs
b3dDYXNlKCk7CisgICAgbV9pbkJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwordm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0
dWFsUmVnaXN0ZXIgZHN0LCBBY2Nlc3NUeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHR5cGUgPT0g
QWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2
YXRlQnJhbmQpOworCisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1tt
X2luQnlWYWxJbmRleCsrXTsKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKwor
I2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0
aW9uKHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgPyBvcGVyYXRpb25IYXNQcml2
YXRlTmFtZU9wdGltaXplIDogb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsIGRzdCwg
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8o
KSwgcmVnVDAsIHJlZ1QxKTsKKyNlbHNlCisgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICB1
aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAgICBB
U1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsK
KworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7
CisgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQ
Uik7CisKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlPckJyYW5kR1BSID0gcmVnVDE7CisgICAgc3RhdGljX2Fzc2VydChiYXNlR1BS
ID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb3Bl
cnR5T3JCcmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOworCisgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGdlbi5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUpLCBkZWNsdHlw
ZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OnZhbHVlKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRp
bWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUp
OworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwor
CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gdHlw
ZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1l
T3B0aW1pemUgOiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZTsKKyAgICBlbHNlCisg
ICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5h
bWUgPyBvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplIDogb3BlcmF0aW9uSGFzUHJpdmF0
ZUJyYW5kT3B0aW1pemUpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFt
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7CisgICAg
ZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUu
bV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOworfQorCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVOYW1lPigpOworICAgIGVtaXRIYXNQcml2YXRlU2xv
dyhieXRlY29kZS5tX2RzdCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOworfQorCit2b2lk
IEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigpOworICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1f
ZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1By
aXZhdGVCcmFuZCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFu
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisK
KyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVC
cmFuZD4oKTsKKyAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9kc3QsIEFjY2Vzc1R5
cGU6Okhhc1ByaXZhdGVCcmFuZCk7Cit9CisKIHZvaWQgSklUOjplbWl0VmFySW5qZWN0aW9uQ2hl
Y2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcykKIHsKICAgICBpZiAoIW5lZWRzVmFySW5q
ZWN0aW9uQ2hlY2tzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggZjQ3YzkzMzg3YmIyOGY0NGQyNzEwOWIyZWQyMDM0
NTZjNTM5NGYyNi4uNThlNWQ1MmZlNWIwOGFlMjllM2U1ZGRkZTNkNzQ2Nzk2N2YyMzAxOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEFycmF5UHJvZmls
aW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUNCwgcHJvZmlsZSk7CiAKICAgICBKSVRJbkJ5VmFs
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklU
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpJbkJ5VmFs
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpA
QCAtOTUxLDYgKzk1MSw2MSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0
SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNjZXNzVHlwZSB0eXBlKQoreworICAgIGVt
aXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5T3JCcmFuZCwgcmVnVDMsIHJlZ1Qy
KTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOworCisgICAg
SklUSW5CeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpC
YXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIHR5cGUsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSW52YWxpZEdQUlJl
Zyk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9pbkJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIGVt
aXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7Cit9CisKK3ZvaWQgSklUOjplbWl0SGFzUHJpdmF0
ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGRzdCwgQWNjZXNzVHlwZSB0eXBlKQoreworICAgIEFTU0VS
VCh0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lIHx8IHR5cGUgPT0gQWNjZXNzVHlw
ZTo6SGFzUHJpdmF0ZUJyYW5kKTsKKworICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
aW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKHR5cGUgPT0gQWNjZXNzVHlw
ZTo6SGFzUHJpdmF0ZU5hbWUgPyBvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplIDogb3Bl
cmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDEs
IHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisKKyAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9o
YXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRl
TmFtZT4oKTsKKyAgICBlbWl0SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9i
YXNlLCBieXRlY29kZS5tX3Byb3BlcnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7Cit9
CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7CisgICAgZW1p
dEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fZHN0LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFt
ZSk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+KCk7CisgICAgZW1pdEhhc1ByaXZh
dGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNj
ZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hh
c19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSGFzUHJpdmF0ZUJyYW5kPigpOworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5t
X2RzdCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRW
YXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogewogICAgIGlm
ICghbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAppbmRleCBkZWIxYWQ4MDkzODM2ODlmZjIyN2QyMTg0MTcxMTNhNTlhYmI2YTA0Li4zN2E4
MGIyOTU3NzIxMGYzNWUwNmQ4MWJhMTM0NWY2OTc4MDA5NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTkyMiw2ICs5MjIsMzIgQEAgdm9pZCByZXBhdGNoRGVsZXRl
QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERl
bGV0ZVAKICAgICB9CiB9CiAKK2lubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFw
cHJvcHJpYXRlT3B0aW1pemluZ0luQnlGdW5jdGlvbihJbkJ5S2luZCBraW5kKQoreworICAgIHN3
aXRjaCAoa2luZCkgeworICAgIGNhc2UgSW5CeUtpbmQ6OkJ5SWQ6CisgICAgICAgIHJldHVybiBv
cGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICBjYXNlIEluQnlLaW5kOjpCeVZhbDoKKyAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZTsKKyAgICBjYXNlIEluQnlLaW5kOjpQ
cml2YXRlTmFtZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1p
emU7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2lubGlu
ZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlR2VuZXJpY0luQnlGdW5j
dGlvbihJbkJ5S2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgSW5C
eUtpbmQ6OkJ5SWQ6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25JbkJ5SWRHZW5lcmljOworICAg
IGNhc2UgSW5CeUtpbmQ6OkJ5VmFsOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uSW5CeVZhbEdl
bmVyaWM7CisgICAgY2FzZSBJbkJ5S2luZDo6UHJpdmF0ZU5hbWU6CisgICAgICAgIHJldHVybiBv
cGVyYXRpb25IYXNQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUlu
QnkoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTT2JqZWN0KiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwKICAg
ICBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbywgSW5CeUtpbmQga2luZCkKQEAgLTEwMTYsMTcgKzEwNDIsMTIgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeSgKIAogICAgICAgICBpZiAocmVzdWx0
LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5S
ZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RC
YXNlKCkgPT0gYmFzZSkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAg
ICAgICBjYXNlIEluQnlLaW5kOjpCeUlkOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVz
dWx0LmNvZGUoKSk7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkKICAg
ICAgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2Rl
QmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
cmVzdWx0LmNvZGUoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBJbkJ5S2luZDo6QnlWYWw6CisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhj
b2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4ocmVzdWx0LmNvZGUoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDQyLDExICsxMDYzLDUzIEBAIHZvaWQgcmVwYXRj
aEluQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTT2JqZWN0KiBiCiAKICAgICBpZiAodHJ5Q2FjaGVJbkJ5KGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLCBiYXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbywg
a2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluUmVw
bGFjZVdpdGhHZW5lcmljLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8oZ2xvYmFsT2JqZWN0LT52bSgp
KSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwotICAgICAg
ICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkKLSAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkR2VuZXJpYyk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mbywgb3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlR2VuZXJpY0luQnlGdW5jdGlvbihr
aW5kKSk7CisgICAgfQorfQorCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVIYXNQ
cml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGJyYW5kSUQsIGJvb2wg
d2FzRm91bmQsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7Cisg
ICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGJyYW5kSUQudWlk
KCkpOworCisgICAgeworICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNv
ZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGds
b2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2UtPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAg
SW5saW5lQ2FjaGVBY3Rpb24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCh2bSwgYmFzZSk7CisgICAg
ICAgIGlmIChhY3Rpb24gIT0gQXR0ZW1wdFRvQ2FjaGUpCisgICAgICAgICAgICByZXR1cm4gYWN0
aW9uOworCisgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOworICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRl
bnQsIGlzQmFzZVByb3BlcnR5KSk7CisKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2Ug
PSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgd2FzRm91bmQgPyBBY2Nlc3NDYXNl
OjpJbkhpdCA6IEFjY2Vzc0Nhc2U6OkluTWlzcywgYnJhbmRJRCwgaW52YWxpZE9mZnNldCwgc3Ry
dWN0dXJlLCB7IH0sIHsgfSk7CisKKyAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNz
Q2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCks
IGJyYW5kSUQsIFdURk1vdmUobmV3Q2FzZSkpOworCisgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJh
dGVkU29tZUNvZGUoKSkgeworICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VX
aXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7
CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOworICAgICAgICAg
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFj
Y2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICB9CiAgICAgfQorCisgICAgZmlyZVdh
dGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQodm0sIHN0dWJJbmZvLCBjb2RlQmxvY2ssIHJl
c3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25D
YWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKK30KKwordm9pZCByZXBhdGNoSGFzUHJpdmF0ZUJyYW5k
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09i
amVjdCogYmFzZU9iamVjdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFuZElELCBib29sIHdhc0Zv
dW5kLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgaWYgKHRyeUNhY2hlSGFzUHJpdmF0
ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBicmFuZElELCB3YXNG
b3VuZCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCisgICAgICAgIHJlcGF0Y2hTbG93UGF0
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kR2VuZXJp
Yyk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJy
YW5kKApAQCAtMTcyOCwxNiArMTc5MSwxNyBAQCB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbgogCiB2
b2lkIHJlc2V0SW5CeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLCBJbkJ5S2luZCBraW5kKQogewotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2Ug
SW5CeUtpbmQ6OkJ5SWQ6Ci0gICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBz
dHViSW5mbywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgIHJlcGF0Y2hTbG93UGF0aENh
bGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nSW5CeUZ1bmN0aW9u
KGtpbmQpKTsKKyAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkKICAgICAgICAgSW5saW5l
QWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbkJ5S2luZDo6QnlWYWw6Ci0gICAgICAgIHJlcGF0Y2hT
bG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXpl
KTsKKyAgICBlbHNlCiAgICAgICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nl
c3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQorfQorCit2b2lkIHJlc2V0SGFzUHJpdmF0ZUJyYW5kKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgcmVwYXRjaFNsb3dQ
YXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRp
bWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5n
SW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0SW5zdGFu
Y2VPZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCA3MmM2NmIyODkxNDNiOTAwYmFiNzA5
OGQ3ZTI3ZGI5OWQ0ODI3MDFjLi5jMTlmMDJkNGQ0MDE5NTgxZTVhOTRhYmQ2MzczYzBhYzM2Mjlk
OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNTAsNyArNTAsOCBAQCBl
bnVtIGNsYXNzIERlbEJ5S2luZCB7CiAKIGVudW0gY2xhc3MgSW5CeUtpbmQgewogICAgIEJ5SWQs
Ci0gICAgQnlWYWwKKyAgICBCeVZhbCwKKyAgICBQcml2YXRlTmFtZQogfTsKIAogdm9pZCByZXBh
dGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFz
ZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mKTsKQEAgLTU4LDYgKzU5LDcgQEAg
dm9pZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBjb24KIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmpl
Y3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwog
dm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCwgRUNNQU1vZGUpOwogdm9pZCByZXBhdGNoSW5C
eShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1Yklu
Zm8mLCBJbkJ5S2luZCk7Cit2b2lkIHJlcGF0Y2hIYXNQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmpl
Y3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgd2Fz
Rm91bmQsICBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoQ2hlY2tQcml2YXRlQnJh
bmQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50
aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQo
SlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIENhY2hl
YWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5j
ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBw
cm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CkBAIC03MCw2ICs3
Miw3IEBAIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdl
dEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5m
byYpOwogdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVs
QnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwg
SW5CeUtpbmQpOwordm9pZCByZXNldEhhc1ByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwogdm9pZCByZXNldEluc3RhbmNlT2YoQ29kZUJsb2NrKiwgU3RydWN0dXJl
U3R1YkluZm8mKTsKIHZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldFNldFByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKaW5kZXggNzMzNmE1YTMzMDg4MmU3ZTQ0ZTcxNGE3YjA1MDgwMjA4ZDE5
NzdmNS4uOTViOWRhZWFiZjc3MjBkMDZjOWRlMDMxYzJiM2RkYTVmYjVmN2M3YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xNDMyLDYg
KzE0MzIsMzUgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCkKICAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2Jh
bE9iamVjdCwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9wZXJh
bmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9m
aWxlKSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFzX3ByaXZhdGVf
bmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcEhhc1ByaXZhdGVOYW1lPigpOworICAgIGF1dG8gYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3Qo
KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZ2xv
YmFsT2JqZWN0LCBiYXNlVmFsdWUpKTsKKworICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICBBU1NFUlQocHJvcGVy
dHlWYWx1ZS5pc1N5bWJvbCgpKTsKKyAgICBhdXRvIHByb3BlcnR5ID0gcHJvcGVydHlWYWx1ZS50
b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghdGhyb3dT
Y29wZS5leGNlcHRpb24oKSk7CisKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0
KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5KSkpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFzX3ByaXZhdGVfYnJhbmQpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BIYXNQ
cml2YXRlQnJhbmQ+KCk7CisgICAgYXV0byBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKQorICAg
ICAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmpl
Y3QsIGJhc2VWYWx1ZSkpOworCisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihhc09iamVjdChi
YXNlVmFsdWUpLT5oYXNQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgYnl0ZWNvZGUubV9icmFuZCkpKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfZ2V0dGVyX2J5X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDQzYzZjYTg0NTMw
ZTVmNDdhN2RkN2I2OThmNjRhMTM4YmNlMDQyZTguLmZiZmQ1M2NjNTUxZjdiZjZmMjc2ZWVmNWU0
MGZiMmQyNjMxODFlMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCkBAIC03Myw2ICs3Myw4IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3B1dF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2luX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
aW5fYnlfdmFsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaGFzX3By
aXZhdGVfbmFtZSk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hhc19w
cml2YXRlX2JyYW5kKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVs
X2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3Zh
bCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IGNmMGQ2MGNmMTMzZjQ4ZmQzMmY5OGE4MTliMWQ4ZWM0NWMxN2FjZmMu
LjcxMjliMGFiMzBmMmEyOTA3NWE5ODk3ZDIxMGRjODlhZThmOGVhODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIw
MTAsOCArMjAxMCw2IEBAIGlmIG5vdCBKU1ZBTFVFNjQKICAgICBzbG93UGF0aE9wKGdldF9wcm90
b3R5cGVfb2YpCiBlbmQKIAotc2xvd1BhdGhPcChoYXNfcHJpdmF0ZV9uYW1lKQotc2xvd1BhdGhP
cChoYXNfcHJpdmF0ZV9icmFuZCkKIHNsb3dQYXRoT3AoaXNfY2FsbGFibGUpCiBzbG93UGF0aE9w
KGlzX2NvbnN0cnVjdG9yKQogc2xvd1BhdGhPcChsZXNzKQpAQCAtMjA0NCw2ICsyMDQyLDggQEAg
ZW5kCiAKIGxsaW50U2xvd1BhdGhPcChpbl9ieV9pZCkKIGxsaW50U2xvd1BhdGhPcChpbl9ieV92
YWwpCitsbGludFNsb3dQYXRoT3AoaGFzX3ByaXZhdGVfbmFtZSkKK2xsaW50U2xvd1BhdGhPcCho
YXNfcHJpdmF0ZV9icmFuZCkKIGxsaW50U2xvd1BhdGhPcChkZWxfYnlfaWQpCiBsbGludFNsb3dQ
YXRoT3AoZGVsX2J5X3ZhbCkKIGxsaW50U2xvd1BhdGhPcChpbnN0YW5jZW9mKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYTFj
NDEzMTA4NjE0Zjc4N2Y2ZWMwMzRmMjcwNDYwMWFjMmZhNjg3My4uMTEyOTU0YmI5YjZlNTAxMzY4
ODNiNzQ1NmNiMWU4MzE4ZmI1YTUxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC04MzAsMzUgKzgzMCw2IEBAIEpTQ19ERUZJ
TkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaXNfY29uc3RydWN0b3IpCiAgICAgUkVUVVJO
KGpzQm9vbGVhbihHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS5pc0NvbnN0cnVj
dG9yKHZtKSkpOwogfQogCi1KU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2hh
c19wcml2YXRlX25hbWUpCi17Ci0gICAgQkVHSU4oKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKLSAgICBhdXRvIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5
dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOwotICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkp
Ci0gICAgICAgIFRIUk9XKGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVj
dCwgYmFzZVZhbHVlKSk7Ci0KLSAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBHRVRfQyhieXRlY29k
ZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7Ci0gICAgQVNTRVJUKHByb3BlcnR5VmFsdWUuaXNTeW1i
b2woKSk7Ci0gICAgYXV0byBwcm9wZXJ0eSA9IHByb3BlcnR5VmFsdWUudG9Qcm9wZXJ0eUtleShn
bG9iYWxPYmplY3QpOwotICAgIEVYQ0VQVElPTl9BU1NFUlQoIXRocm93U2NvcGUuZXhjZXB0aW9u
KCkpOwotCi0gICAgUkVUVVJOKGpzQm9vbGVhbihhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQcml2
YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkpKTsKLX0KLQotSlNDX0RFRklORV9DT01N
T05fU0xPV19QQVRIKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9icmFuZCkKLXsKLSAgICBCRUdJTigp
OwotCi0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKLSAg
ICBhdXRvIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOwotICAg
IGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIFRIUk9XKGNyZWF0ZUludmFsaWRJ
blBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlKSk7Ci0KLSAgICBSRVRVUk4o
anNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmhhc1ByaXZhdGVCcmFuZChnbG9iYWxPYmpl
Y3QsIEdFVF9DKGJ5dGVjb2RlLm1fYnJhbmQpLmpzVmFsdWUoKSkpKTsKLX0KLQogdGVtcGxhdGU8
T3Bjb2RlU2l6ZSB3aWR0aD4KIEFMV0FZU19JTkxJTkUgU2xvd1BhdGhSZXR1cm5UeXBlIGl0ZXJh
dG9yT3BlblRyeUZhc3RJbXBsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVj
dGlvbiogcGMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCmluZGV4IGM4MzA5ODFiMDM5MzQzMjNjNDE1MzM1MWU4NjZkNmIxZTBjNmYyM2Eu
LmQ4ZDE1MDFmYjM1YmFjMjc5NGM2ZDk0MTAyNzFiYjY4ZjRjYzA1N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNTEsOCArMjUx
LDYgQEAgSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdHlwZW9mX2lzX29i
amVjdCk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF90eXBlb2ZfaXNf
ZnVuY3Rpb24pOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaXNfY2Fs
bGFibGUpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaXNfY29uc3Ry
dWN0b3IpOwotSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaGFzX3ByaXZh
dGVfbmFtZSk7Ci1KU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9oYXNfcHJp
dmF0ZV9icmFuZCk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9zdHJj
YXQpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdG9fcHJpbWl0aXZl
KTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3RvX3Byb3BlcnR5X2tl
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA5
NWFiOWFjMGY0Y2U1ODViMmVkYmFkYTdhZmExYjE3ZDJjZTRhYWJiLi42N2NmYjk5ZjM5N2UxODFm
ZThiYmVhYTNjYWZlZjAxYTUxNmM0YjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUyNCw3ICs1MjQsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBi
b29sIGNhblVzZUpJVENhZ2UoKTsKICAgICB2KEJvb2wsIHVzZVByaXZhdGVTdGF0aWNDbGFzc0Zp
ZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQg
cHJpdmF0ZSBzdGF0aWMgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYoQm9v
bCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFy
c2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIp
IFwKICAgICB2KEJvb2wsIHVzZVByaXZhdGVNZXRob2RzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVl
LCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIG1ldGhvZHMgaW5zaWRlIGNsYXNz
ZXMuIikgXAotICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUluLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1
ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZW1iZXIgZXhpc3RlbmNlIGNo
ZWNrcyB3aXRoIHRoZSBgaW5gIG9wZXJhdG9yLiIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVJ
biwgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJp
dmF0ZSBtZW1iZXIgZXhpc3RlbmNlIGNoZWNrcyB3aXRoIHRoZSBgaW5gIG9wZXJhdG9yLiIpIFwK
ICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5U3RyZWFtaW5nLCB0cnVlLCBOb3JtYWwsICJBbGxv
dyB0byBydW4gV2ViQXNzZW1ibHkncyBTdHJlYW1pbmcgQVBJIikgXAogICAgIHYoQm9vbCwgdXNl
V2ViQXNzZW1ibHlSZWZlcmVuY2VzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBmcm9tIHRo
ZSB3YXNtIHJlZmVyZW5jZXMgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVR5
cGVkRnVuY3Rpb25SZWZlcmVuY2VzLCBmYWxzZSwgTm9ybWFsLCAiQWxsb3cgZnVuY3Rpb24gdHlw
ZXMgZnJvbSB0aGUgd2FzbSB0eXBlZCBmdW5jdGlvbiByZWZlcmVuY2VzIHNwZWMuIikgXApkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA2ODA0
NjZkYzRkNGZhMTA0OWZlZTBjZTkyNDdjYjY2MDRmZGU5NTA3Li5kYTVhYTZlYjRhZDIwOWVkZDNi
YTVkMDRjZDIzMWUzOTlhZjIxNjA2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTE3ICBSb3NzIEtp
cnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgSklU
IElDcyBmb3IgYCN4IGluIG9iamAgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaGFzLXByaXZhdGUtYnJhbmQu
anM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9oYXMtcHJpdmF0ZS1uYW1lLmpz
OiBBZGRlZC4KKwogMjAyMS0wNi0xNiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBBc3NlbWJseUhlbHBlcnMgc2hvdWxkIHNhdmUvcmVzdG9yZSBjYWxsZWUg
c2F2ZSBGUFJzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtcHJpdmF0
ZS1icmFuZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2hhcy1wcml2YXRlLWJyYW5kLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI4MTk3ZDhhZjQ4YmYzZGI3NDFiZjc4YzNhZGM5ZTY3ZDUxYzdjNGIKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9oYXMtcHJpdmF0ZS1icmFu
ZC5qcwpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICBpZiAoIWIpIHRo
cm93IG5ldyBFcnJvcjsKK30KKworY2xhc3MgTSB7CisgICN4KCkge30KKyAgc3RhdGljIGlzTShv
YmopIHsKKyAgICByZXR1cm4gI3ggaW4gb2JqOworICB9Cit9Citub0lubGluZShNLnByb3RvdHlw
ZS5pc00pOworCitmdW5jdGlvbiB0ZXN0KCkgeworICBhc3NlcnQoTS5pc00obmV3IE0pICYmICFN
LmlzTShNKSAmJiAhTS5pc00oe30pKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNjsgKytpKQorICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9oYXMtcHJpdmF0ZS1uYW1lLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
aGFzLXByaXZhdGUtbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzU0MTU5NjdjZWExOWYxMDQ1YmUzNGI2
YWY2NDMzMzMxNTM3NTNkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvaGFzLXByaXZhdGUtbmFtZS5qcwpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBhc3NlcnQo
YikgeworICBpZiAoIWIpIHRocm93IG5ldyBFcnJvcjsKK30KKworY2xhc3MgRiB7CisgICN4Owor
ICBzdGF0aWMgaXNGKG9iaikgeworICAgIHJldHVybiAjeCBpbiBvYmo7CisgIH0KK30KK25vSW5s
aW5lKEYucHJvdG90eXBlLmlzRik7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgIGFzc2VydChGLmlz
RihuZXcgRikgJiYgIUYuaXNGKEYpICYmICFGLmlzRih7fSkpOworfQorbm9JbmxpbmUodGVzdCk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgIHRlc3QoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>