<?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>236871</bug_id>
          
          <creation_ts>2022-02-18 16:13:43 -0800</creation_ts>
          <short_desc>Optimize DOM storage event dispatch</short_desc>
          <delta_ts>2022-02-21 10:56:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>236985</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>pangle</cc>
    
    <cc>sam</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1843697</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-18 16:13:43 -0800</bug_when>
    <thetext>Optimize DOM storage event dispatch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843702</commentid>
    <comment_count>1</comment_count>
      <attachid>452601</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-18 16:18:03 -0800</bug_when>
    <thetext>Created attachment 452601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843886</commentid>
    <comment_count>2</comment_count>
      <attachid>452650</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-19 12:34:56 -0800</bug_when>
    <thetext>Created attachment 452650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843945</commentid>
    <comment_count>3</comment_count>
      <attachid>452650</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-19 20:19:41 -0800</bug_when>
    <thetext>Comment on attachment 452650
Patch

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

r=me

&gt; Source/WebCore/storage/StorageEventDispatcher.cpp:55
&gt; +        if (!frame-&gt;document() || !frame-&gt;window())
&gt;              continue;
&gt; -        if (sourceFrame != frame &amp;&amp; frame-&gt;document()-&gt;securityOrigin().equal(securityOrigin.securityOrigin().ptr()))
&gt; -            frames.append(frame);
&gt; +        if (!frame-&gt;window()-&gt;hasEventListeners(eventNames().storageEvent))

window() also checks document(). maybe something like:
if (auto* window = frame-&gt;window(); !window || !window-&gt;hasEventListeners(eventNames().storageEvent)) continue;

&gt; Source/WebCore/storage/StorageEventDispatcher.cpp:77
&gt; +            if (!frame-&gt;document() || !frame-&gt;window())
&gt; +                continue;
&gt; +            if (!frame-&gt;window()-&gt;hasEventListeners(eventNames().storageEvent))

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843950</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-19 20:35:55 -0800</bug_when>
    <thetext>(In reply to Sihui Liu from comment #3)
&gt; Comment on attachment 452650 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452650&amp;action=review
&gt; 
&gt; r=me

No r+? :)

&gt; &gt; Source/WebCore/storage/StorageEventDispatcher.cpp:55
&gt; &gt; +        if (!frame-&gt;document() || !frame-&gt;window())
&gt; &gt;              continue;
&gt; &gt; -        if (sourceFrame != frame &amp;&amp; frame-&gt;document()-&gt;securityOrigin().equal(securityOrigin.securityOrigin().ptr()))
&gt; &gt; -            frames.append(frame);
&gt; &gt; +        if (!frame-&gt;window()-&gt;hasEventListeners(eventNames().storageEvent))
&gt; 
&gt; window() also checks document(). maybe something like:
&gt; if (auto* window = frame-&gt;window(); !window ||
&gt; !window-&gt;hasEventListeners(eventNames().storageEvent)) continue;
&gt; 
&gt; &gt; Source/WebCore/storage/StorageEventDispatcher.cpp:77
&gt; &gt; +            if (!frame-&gt;document() || !frame-&gt;window())
&gt; &gt; +                continue;
&gt; &gt; +            if (!frame-&gt;window()-&gt;hasEventListeners(eventNames().storageEvent))
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843953</commentid>
    <comment_count>5</comment_count>
      <attachid>452669</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-19 20:42:01 -0800</bug_when>
    <thetext>Created attachment 452669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843954</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-19 20:42:42 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Sihui Liu from comment #3)
&gt; &gt; Comment on attachment 452650 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=452650&amp;action=review
&gt; &gt; 
&gt; &gt; r=me
&gt; 
&gt; No r+? :)
&gt; 
&gt; &gt; &gt; Source/WebCore/storage/StorageEventDispatcher.cpp:55
&gt; &gt; &gt; +        if (!frame-&gt;document() || !frame-&gt;window())
&gt; &gt; &gt;              continue;
&gt; &gt; &gt; -        if (sourceFrame != frame &amp;&amp; frame-&gt;document()-&gt;securityOrigin().equal(securityOrigin.securityOrigin().ptr()))
&gt; &gt; &gt; -            frames.append(frame);
&gt; &gt; &gt; +        if (!frame-&gt;window()-&gt;hasEventListeners(eventNames().storageEvent))
&gt; &gt; 
&gt; &gt; window() also checks document(). maybe something like:
&gt; &gt; if (auto* window = frame-&gt;window(); !window ||
&gt; &gt; !window-&gt;hasEventListeners(eventNames().storageEvent)) continue;
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/storage/StorageEventDispatcher.cpp:77
&gt; &gt; &gt; +            if (!frame-&gt;document() || !frame-&gt;window())
&gt; &gt; &gt; +                continue;
&gt; &gt; &gt; +            if (!frame-&gt;window()-&gt;hasEventListeners(eventNames().storageEvent))
&gt; &gt; 
&gt; &gt; Ditto.

Thanks for reviewing, I made the suggested changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843955</commentid>
    <comment_count>7</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-19 20:51:38 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; (In reply to Sihui Liu from comment #3)
&gt; &gt; &gt; Comment on attachment 452650 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=452650&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; r=me
&gt; &gt; 
&gt; &gt; No r+? :)

r+

&gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/storage/StorageEventDispatcher.cpp:55
&gt; &gt; &gt; &gt; +        if (!frame-&gt;document() || !frame-&gt;window())
&gt; &gt; &gt; &gt;              continue;
&gt; &gt; &gt; &gt; -        if (sourceFrame != frame &amp;&amp; frame-&gt;document()-&gt;securityOrigin().equal(securityOrigin.securityOrigin().ptr()))
&gt; &gt; &gt; &gt; -            frames.append(frame);
&gt; &gt; &gt; &gt; +        if (!frame-&gt;window()-&gt;hasEventListeners(eventNames().storageEvent))
&gt; &gt; &gt; 
&gt; &gt; &gt; window() also checks document(). maybe something like:
&gt; &gt; &gt; if (auto* window = frame-&gt;window(); !window ||
&gt; &gt; &gt; !window-&gt;hasEventListeners(eventNames().storageEvent)) continue;
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/storage/StorageEventDispatcher.cpp:77
&gt; &gt; &gt; &gt; +            if (!frame-&gt;document() || !frame-&gt;window())
&gt; &gt; &gt; &gt; +                continue;
&gt; &gt; &gt; &gt; +            if (!frame-&gt;window()-&gt;hasEventListeners(eventNames().storageEvent))
&gt; &gt; &gt; 
&gt; &gt; &gt; Ditto.
&gt; 
&gt; Thanks for reviewing, I made the suggested changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844026</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-19 23:13:40 -0800</bug_when>
    <thetext>Committed r290223 (247549@main): &lt;https://commits.webkit.org/247549@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452669.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844027</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-19 23:14:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/89197481&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452601</attachid>
            <date>2022-02-18 16:18:03 -0800</date>
            <delta_ts>2022-02-19 12:34:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236871-20220218161802.patch</filename>
            <type>text/plain</type>
            <size>37747</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTczNDc1YTkxZjMxYWMz
ZDA0MDNkYTBiMzFmMDMyZDhkZjAwMTlkNi4uODc0NGEwMzhkYzdlYTljYjhkNTU5YjAwZGQxYWRl
NGNlYmU0Mjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIyLTAyLTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgRE9NIHN0b3Jh
Z2UgZXZlbnQgZGlzcGF0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNjg3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1hZGUgdGhlIGZvbGxvd2luZyBvcHRpbWl6YXRpb24gdG8gRE9NIHN0b3JhZ2Ug
ZXZlbnQgZGlzcGF0Y2g6CisgICAgICAgIDEuIFBhc3MgYSBTZWN1cml0eU9yaWdpbiBhcm91bmQg
aW5zdGVhZCBvZiBhIFNlY3VyaXR5T3JpZ2luRGF0YS4gT3RoZXJ3aXNlLAorICAgICAgICAgICBk
aXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50cygpIC8gZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50
cygpIGp1c3Qga2VlcAorICAgICAgICAgICByZWNvbnN0cnVjdGluZyB0aGUgU2VjdXJpdHlPcmln
aW4gZnJvbSB0aGUgU2VjdXJpdHlPcmlnaW5EYXRhIGZvciBldmVyeQorICAgICAgICAgICBmcmFt
ZS4KKyAgICAgICAgMi4gV2hlbiBnYXRoZXJpbmcgdGhlIGxpc3Qgb2YgZnJhbWVzIHdoZXJlIHdl
IG5lZWQgdG8gZGlzcGF0Y2ggdGhlIHN0b3JhZ2UKKyAgICAgICAgICAgZXZlbnQsIGRpc2NhcmQg
dGhlIG9uZXMgdGhhdCBkbyBub3QgaGF2ZSBhICJzdG9yYWdlIiBldmVudCBsaXN0ZW5lci4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3Jh
Z2VFdmVudEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlz
cGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZl
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
TG9jYWxTdG9yYWdlRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50
c1RvRnJhbWVzKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuaDoK
KyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorCiAyMDIyLTAyLTE4ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIEZpeCBpZGVv
Z3JhcGhpYyBiYXNlbGluZSBmb3IgYXRvbWljIGlubGluZSBsZXZlbCBib3hlcyB3aXRoIG5vbi16
ZXJvIGRlc2NlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWYwMTFiZWMxMDExNGZiNjZmZjMzYzRlMzI4ZDQ0NmJm
NWRmNGQyNS4uNTNjMzQ4MmRmMjNlMzUxY2NiN2IzODU2ODVlN2U0ZGMxMDZhNmZhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMi0wMi0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIE9wdGltaXplIERPTSBzdG9yYWdlIGV2ZW50IGRpc3BhdGNoCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4NzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWRlIHRoZSBm
b2xsb3dpbmcgb3B0aW1pemF0aW9uIHRvIERPTSBzdG9yYWdlIGV2ZW50IGRpc3BhdGNoOgorICAg
ICAgICAxLiBQYXNzIGEgU2VjdXJpdHlPcmlnaW4gYXJvdW5kIGluc3RlYWQgb2YgYSBTZWN1cml0
eU9yaWdpbkRhdGEuIE90aGVyd2lzZSwKKyAgICAgICAgICAgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VF
dmVudHMoKSAvIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHMoKSBqdXN0IGtlZXAKKyAgICAg
ICAgICAgcmVjb25zdHJ1Y3RpbmcgdGhlIFNlY3VyaXR5T3JpZ2luIGZyb20gdGhlIFNlY3VyaXR5
T3JpZ2luRGF0YSBmb3IgZXZlcnkKKyAgICAgICAgICAgZnJhbWUuCisgICAgICAgIDIuIFdoZW4g
Z2F0aGVyaW5nIHRoZSBsaXN0IG9mIGZyYW1lcyB3aGVyZSB3ZSBuZWVkIHRvIGRpc3BhdGNoIHRo
ZSBzdG9yYWdlCisgICAgICAgICAgIGV2ZW50LCBkaXNjYXJkIHRoZSBvbmVzIHRoYXQgZG8gbm90
IGhhdmUgYSAic3RvcmFnZSIgZXZlbnQgbGlzdGVuZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
QXJlYU1hcDo6U3RvcmFnZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpmcmFtZXNGb3JFdmVu
dERpc3BhdGNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNo
U2Vzc2lvblN0b3JhZ2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpk
aXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6c3RvcmFnZUFyZWEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5oOgorCiAyMDIyLTAyLTE4ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEFkZCBjcmVkZW50aWFsSUQgdG8gX1dLV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSBhbmQgdXNlckhhbmRsZSBpbiBnZXRBbGxM
b2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCAzODJj
YmE5ODI0OTIwMTkyY2JiMWEzYmY2Mzg2NWE4NmFhNzhmODQ5Li5jM2IzNTc0MzIyNWYzYmJhZGRk
NTdiNjIxMDhjZTlkZDUyNDk0Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDIyLTAyLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgT3B0aW1pemUgRE9NIHN0b3JhZ2UgZXZlbnQgZGlzcGF0Y2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg3MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgdGhlIGZvbGxvd2luZyBvcHRpbWl6
YXRpb24gdG8gRE9NIHN0b3JhZ2UgZXZlbnQgZGlzcGF0Y2g6CisgICAgICAgIDEuIFBhc3MgYSBT
ZWN1cml0eU9yaWdpbiBhcm91bmQgaW5zdGVhZCBvZiBhIFNlY3VyaXR5T3JpZ2luRGF0YS4gT3Ro
ZXJ3aXNlLAorICAgICAgICAgICBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50cygpIC8gZGlzcGF0
Y2hTZXNzaW9uU3RvcmFnZUV2ZW50cygpIGp1c3Qga2VlcAorICAgICAgICAgICByZWNvbnN0cnVj
dGluZyB0aGUgU2VjdXJpdHlPcmlnaW4gZnJvbSB0aGUgU2VjdXJpdHlPcmlnaW5EYXRhIGZvciBl
dmVyeQorICAgICAgICAgICBmcmFtZS4KKyAgICAgICAgMi4gV2hlbiBnYXRoZXJpbmcgdGhlIGxp
c3Qgb2YgZnJhbWVzIHdoZXJlIHdlIG5lZWQgdG8gZGlzcGF0Y2ggdGhlIHN0b3JhZ2UKKyAgICAg
ICAgICAgZXZlbnQsIGRpc2NhcmQgdGhlIG9uZXMgdGhhdCBkbyBub3QgaGF2ZSBhICJzdG9yYWdl
IiBldmVudCBsaXN0ZW5lci4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJlYUltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VBcmVhSW1wbDo6Y2xlYXJGb3JPcmlnaW5EZWxldGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6c3luYyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VB
cmVhSW1wbDo6c2Vzc2lvbkNoYW5nZWQpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmg6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAg
ICogU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oOgorCiAyMDIyLTAyLTA5ICBTaWh1aSBM
aXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIE1hbmFnZSBJbmRleGVkREIgc3Rv
cmFnZSBieSBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZjk2ZjQwY2YzODM5NTE1MmVjMzNjNDhjN2Ew
YzQ3MjNkZmEwYzU3My4uZjE4NjcxMjk4YTI3MTRmZGQ5MGJhYzc0ODJjOGVjNjMwZDdiYzA0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRPcGVuRGF0YWJhc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
CiAgICAgICAgIGRhdGFiYXNlQWdlbnQtPmRpZE9wZW5EYXRhYmFzZShkYXRhYmFzZSk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVu
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4p
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZl
bnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVl
LCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5
T3JpZ2luKQogewogICAgIGlmIChhdXRvKiBkb21TdG9yYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmVuYWJsZWRET01TdG9yYWdlQWdlbnQoKSkKICAgICAgICAgZG9tU3RvcmFnZUFnZW50
LT5kaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc3Rv
cmFnZVR5cGUsIHNlY3VyaXR5T3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBiNjFmNmEwZGNhYjI5NmJiYWNi
YzEyNWNhYWMwMzU4NmU5YzE5N2YwLi42NWQ1MTcwMDEyZGQzMWRjOTM5NjlhMjg4MDQ0NzA2YTYy
MjUzYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCkBAIC0yNzQsNyArMjc0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgZGlkT3BlbkRhdGFiYXNlKERhdGFiYXNlJik7CiAKLSAgICBzdGF0aWMgdm9pZCBkaWRE
aXNwYXRjaERPTVN0b3JhZ2VFdmVudChQYWdlJiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1
cml0eU9yaWdpbiopOworICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50
KFBhZ2UmLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7CiAK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRXYWl0Rm9yRGVidWdnZXJPblN0YXJ0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgdm9pZCB3b3JrZXJTdGFydGVkKFdvcmtlckluc3Bl
Y3RvclByb3h5Jik7CkBAIC00NzcsNyArNDc3LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2
b2lkIGRpZE9wZW5EYXRhYmFzZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERhdGFiYXNlJik7
CiAKLSAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVl
LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4m
KTsKIAogICAgIHN0YXRpYyBib29sIHNob3VsZFdhaXRGb3JEZWJ1Z2dlck9uU3RhcnRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmKTsKICAgICBzdGF0aWMgdm9pZCB3b3JrZXJTdGFydGVkSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgV29ya2VySW5zcGVjdG9yUHJveHkmKTsKQEAgLTEzMjUsNyAr
MTMyNSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRh
dGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKICAgICAgICAgZGlkT3BlbkRhdGFiYXNlSW1wbCgq
YWdlbnRzLCBkYXRhYmFzZSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0
b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRE9NU3RvcmFn
ZUV2ZW50KFBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgY29u
c3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogewogICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50SW1w
bChpbnN0cnVtZW50aW5nQWdlbnRzKHBhZ2UpLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc3Rv
cmFnZVR5cGUsIHNlY3VyaXR5T3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCA3
NTg3YzE3MmU1N2JmZmIwYTUyYmY4MWZkZTAzOWQ3OWEwNWExMGNmLi40MWQzZTE1ZTkxOTY3YmM3
N2QwMDFjMzU1Yjg5YzMxZDg1MzkwZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC0x
NjgsMTggKzE2OCwxOCBAQCBTdHJpbmcgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdl
SWQoU3RvcmFnZSYgc3RvcmFnZSkKICAgICBBU1NFUlQod2luZG93KTsKICAgICBSZWY8U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7CiAg
ICAgYm9vbCBpc0xvY2FsU3RvcmFnZSA9IHdpbmRvdy0+b3B0aW9uYWxMb2NhbFN0b3JhZ2UoKSA9
PSAmc3RvcmFnZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdl
SWQoc2VjdXJpdHlPcmlnaW4ucHRyKCksIGlzTG9jYWxTdG9yYWdlKS0+dG9KU09OU3RyaW5nKCk7
CisgICAgcmV0dXJuIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKHNlY3VyaXR5
T3JpZ2luLCBpc0xvY2FsU3RvcmFnZSktPnRvSlNPTlN0cmluZygpOwogfQogCi1SZWY8UHJvdG9j
b2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9y
YWdlSWQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBib29sIGlzTG9jYWxTdG9yYWdl
KQorUmVmPFByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6c3RvcmFnZUlkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwg
Ym9vbCBpc0xvY2FsU3RvcmFnZSkKIHsKICAgICByZXR1cm4gUHJvdG9jb2w6OkRPTVN0b3JhZ2U6
OlN0b3JhZ2VJZDo6Y3JlYXRlKCkKLSAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luLT50b1Jhd1N0cmluZygpKQorICAgICAgICAuc2V0U2VjdXJpdHlPcmlnaW4oc2VjdXJp
dHlPcmlnaW4udG9SYXdTdHJpbmcoKSkKICAgICAgICAgLnNldElzTG9jYWxTdG9yYWdlKGlzTG9j
YWxTdG9yYWdlKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VU
eXBlIHN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCit2b2lkIElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJp
dHlPcmlnaW4pCiB7CiAgICAgYXV0byBpZCA9IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3Rv
cmFnZUlkKHNlY3VyaXR5T3JpZ2luLCBzdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6TG9jYWwp
OwogCkBAIC0yMTQsNyArMjE0LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShQcm90b2NvbDo6RXJyb3JTdHIKICAgICB9CiAK
ICAgICBpZiAoISppc0xvY2FsU3RvcmFnZSkKLSAgICAgICAgcmV0dXJuIG1faW5zcGVjdGVkUGFn
ZS5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gbV9pbnNwZWN0ZWRQYWdl
LnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVhKHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpKTsKICAgICByZXR1cm4gbV9pbnNwZWN0ZWRQYWdlLnN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRhcmdldEZyYW1lLT5kb2N1bWVudCgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5kZXggMzM4NmNiODc5ZjExNzhjMWI5NjM1Nzc1
YzlhMGU4NjRmNWI5NGM1Mi4uZTBjZDJhZjE2NTg5Y2UxMzdjNzlmYTg5NmE1NWVlNDYxYjc3YTMx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC02NSwxMSArNjUsMTEgQEAgcHVibGljOgogICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gY2xlYXJET01TdG9yYWdl
SXRlbXMoUmVmPEpTT046Ok9iamVjdD4mJiBzdG9yYWdlSWQpOwogCiAgICAgLy8gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uCi0gICAgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKik7CisgICAgdm9pZCBkaWREaXNwYXRj
aERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJik7CiAKICAgICAvLyBDb21tYW5kTGluZUFQSQogICAgIHN0YXRpYyBTdHJpbmcgc3RvcmFn
ZUlkKFN0b3JhZ2UmKTsKLSAgICBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTVN0
b3JhZ2U6OlN0b3JhZ2VJZD4gc3RvcmFnZUlkKFNlY3VyaXR5T3JpZ2luKiwgYm9vbCBpc0xvY2Fs
U3RvcmFnZSk7CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET01TdG9yYWdl
OjpTdG9yYWdlSWQ+IHN0b3JhZ2VJZChjb25zdCBTZWN1cml0eU9yaWdpbiYsIGJvb2wgaXNMb2Nh
bFN0b3JhZ2UpOwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gZmluZFN0b3Jh
Z2VBcmVhKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgUmVmPEpTT046Ok9iamVj
dD4mJiBzdG9yYWdlSWQsIEZyYW1lKiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAppbmRleCA4MzU5ZGY3ODIwYzc2N2E1OWNiNDUxOTE1ZWQ1ZmExNGUxYWZiOTM2Li40NjIy
NTQ3MWZkZDBhNzk3ZGNjY2Q4MTVkNGFjMzE1ZjliMGE1NzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNDk4LDcgKzQ5OCw3IEBAIGNsYXNzIEVtcHR5U3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ciB7CiAgICAgICAgIHsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZjxTdG9y
YWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWwgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VBcmVhKTsgfQorICAgICAgICBSZWY8U3Rv
cmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgZmluYWwgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VBcmVhKTsgfQogICAgICAgICBSZWY8U3RvcmFn
ZU5hbWVzcGFjZT4gY29weShQYWdlJikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2UgeyBtX3Nlc3Npb25JRCB9KTsgfQogICAgICAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAg
ICAgICB2b2lkIHNldFNlc3Npb25JREZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSBmaW5hbCB7IG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCmluZGV4IDIyNGE3YjdiMjFmNTI1ZmUxODE2ZDQ0YWMxNTBhYWFhNjI3Njk3ODguLjk5
ZDQyYzFkNWI4MmE3MmVmNzdmMjAzYWE1MDJkODYwZDc1NzdmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKQEAgLTgzMCw3ICs4MzAsNyBAQCBFeGNlcHRpb25PcjxTdG9yYWdlKj4gRE9N
V2luZG93OjpzZXNzaW9uU3RvcmFnZSgpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBwYWdlLT5zZXNzaW9uU3RvcmFnZSgp
LT5zdG9yYWdlQXJlYShkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOworICAgIGF1
dG8gc3RvcmFnZUFyZWEgPSBwYWdlLT5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShkb2N1
bWVudC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgbV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6
OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVybiBtX3Nlc3Np
b25TdG9yYWdlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggZDVhMzBiZWFhODMzYzU3MzliYmFjOGE3Y2RkZTAx
ZTA3NDJhNDBlNC4uNzhhYTAxMTQ0M2YxYjgzNDNiYzE2NDYwZmJkYWE3NzRlZGEyYjU2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3Bw
CkBAIC00MCw0OSArNDAsNTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHMoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIEZyYW1lKiBzb3VyY2VG
cmFtZSkKK3ZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFn
ZUV2ZW50cyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBG
cmFtZSogc291cmNlRnJhbWUpCiB7CiAgICAgUGFnZSogcGFnZSA9IHNvdXJjZUZyYW1lLT5wYWdl
KCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8UmVmUHRy
PEZyYW1lPj4gZnJhbWVzOworICAgIFZlY3RvcjxSZWY8RnJhbWU+PiBmcmFtZXM7CiAKICAgICAv
LyBTZW5kIGV2ZW50cyBvbmx5IHRvIG91ciBwYWdlLgogICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
JnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKSB7Ci0gICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIGlmICgh
ZnJhbWUtPmRvY3VtZW50KCkgfHwgIWZyYW1lLT53aW5kb3coKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBpZiAoc291cmNlRnJhbWUgIT0gZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkuZXF1YWwoc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4o
KS5wdHIoKSkpCi0gICAgICAgICAgICBmcmFtZXMuYXBwZW5kKGZyYW1lKTsKKyAgICAgICAgaWYg
KCFmcmFtZS0+d2luZG93KCktPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5zdG9yYWdl
RXZlbnQpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChzb3VyY2VGcmFtZSAh
PSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5lcXVhbCgmc2Vj
dXJpdHlPcmlnaW4pKQorICAgICAgICAgICAgZnJhbWVzLmFwcGVuZCgqZnJhbWUpOwogICAgIH0K
IAogICAgIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcygqcGFnZSwgZnJhbWVz
LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgp
LnN0cmluZygpLCBzZWN1cml0eU9yaWdpbik7CiB9CiAKLXZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIEZyYW1lKiBzb3VyY2VGcmFtZSkKK3ZvaWQgU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHMoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgRnJhbWUqIHNvdXJjZUZyYW1l
KQogewogICAgIFBhZ2UqIHBhZ2UgPSBzb3VyY2VGcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lczsK
KyAgICBWZWN0b3I8UmVmPEZyYW1lPj4gZnJhbWVzOwogCiAgICAgLy8gU2VuZCBldmVudHMgdG8g
ZXZlcnkgcGFnZS4KICAgICBmb3IgKGF1dG8mIHBhZ2VJbkdyb3VwIDogcGFnZS0+Z3JvdXAoKS5w
YWdlcygpKSB7CiAgICAgICAgIGZvciAoYXV0byogZnJhbWUgPSAmcGFnZUluR3JvdXAubWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAg
ICAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBpZiAoIWZyYW1l
LT5kb2N1bWVudCgpIHx8IGZyYW1lLT53aW5kb3coKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIGlmICghZnJhbWUtPndpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS5lcXVhbChzZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpLnB0
cigpKSkKLSAgICAgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKGZyYW1lKTsKKyAgICAgICAgICAg
IGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKS5lcXVhbCgmc2VjdXJpdHlPcmlnaW4pKQorICAgICAgICAgICAgICAgIGZyYW1lcy5h
cHBlbmQoKmZyYW1lKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGRpc3BhdGNoTG9jYWxTdG9y
YWdlRXZlbnRzVG9GcmFtZXMocGFnZS0+Z3JvdXAoKSwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBu
ZXdWYWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCBzZWN1cml0
eU9yaWdpbik7CiB9CiAKLXZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNo
ZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlJiBwYWdlLCBjb25z
dCBWZWN0b3I8UmVmPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChwYWdlLCBrZXksIG9s
ZFZhbHVlLCBuZXdWYWx1ZSwgU3RvcmFnZVR5cGU6OlNlc3Npb24sIHNlY3VyaXR5T3JpZ2luLnNl
Y3VyaXR5T3JpZ2luKCkucHRyKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RGlzcGF0Y2hET01TdG9yYWdlRXZlbnQocGFnZSwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIFN0
b3JhZ2VUeXBlOjpTZXNzaW9uLCBzZWN1cml0eU9yaWdpbik7CiAKICAgICBmb3IgKGF1dG8mIGZy
YW1lIDogZnJhbWVzKSB7CiAgICAgICAgIFJlZlB0ciBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVu
dCgpOwpAQCAtOTIsMTAgKzk2LDEwIEBAIHZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2UmIHBhZ2UsIGNvCiAgICAgfQog
fQogCi12b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZl
bnRzVG9GcmFtZXMoUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGNvbnN0IFZlY3RvcjxSZWZQdHI8RnJh
bWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMoUGFnZUdyb3VwJiBwYWdlR3JvdXAs
IGNvbnN0IFZlY3RvcjxSZWY8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiBwYWdlR3JvdXAucGFnZXMoKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChwYWdlLCBrZXksIG9sZFZhbHVl
LCBuZXdWYWx1ZSwgU3RvcmFnZVR5cGU6OkxvY2FsLCBzZWN1cml0eU9yaWdpbi5zZWN1cml0eU9y
aWdpbigpLnB0cigpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNw
YXRjaERPTVN0b3JhZ2VFdmVudChwYWdlLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgU3RvcmFn
ZVR5cGU6OkxvY2FsLCBzZWN1cml0eU9yaWdpbik7CiAKICAgICBmb3IgKGF1dG8mIGZyYW1lIDog
ZnJhbWVzKSB7CiAgICAgICAgIFJlZlB0ciBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuaAppbmRl
eCA4Y2M0ZDBiMTUyNWZmNWE4MTg5MDg5YWI3NGU0NjgxZDFlZTI3YWY0Li41OTJkNjczNjBkOGNh
ZDUyZjMzZjgzZjg2ZGQ5MTg4NjkzNWY0OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuaApAQCAtMzYsMTUgKzM2LDE1IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBhZ2VHcm91cDsK
LXN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xh
c3MgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50cyhjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50cyhjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVl
LCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIEZyYW1lKiBzb3VyY2VGcmFtZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHMoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1l
cyhQYWdlJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxGcmFtZT4+JiBmcmFtZXMsIGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQ
YWdlR3JvdXAmLCBjb25zdCBWZWN0b3I8UmVmUHRyPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFt
ZXMoUGFnZSYsIGNvbnN0IFZlY3RvcjxSZWY8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlR3Jv
dXAmLCBjb25zdCBWZWN0b3I8UmVmPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogcHJpdmF0ZToKICAgICAvLyBEbyBu
b3QgaW5zdGFudGlhdGUuCiAgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA3MWM1ZGI1MmJhZjhhYmI4YzJh
N2U4Y2U1NzJhZGI4OGU0NGJkZWI2Li4zOTQ5NTBlNzIzZTM3NjM3ZGRhMzRiYzYyODcyMGFlMGE2
ODIzNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaApAQCAt
MzUsMTMgKzM1LDEzIEBAIGNsYXNzIFNlc3Npb25JRDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUGFnZTsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU3RvcmFnZUFyZWE7Ci1z
dHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZT4gewogcHVibGljOgogICAgIHZpcnR1YWwg
flN0b3JhZ2VOYW1lc3BhY2UoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCBSZWY8U3RvcmFnZUFy
ZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKKyAgICB2aXJ0
dWFsIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW4mKSA9
IDA7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IHZhbGlkIGZvciBzZXNzaW9uIHN0b3Jh
Z2UgYW5kIHNob3VsZCBwcm9iYWJseSBiZSBtb3ZlZCB0byBhIHN1YmNsYXNzLgogICAgIHZpcnR1
YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSYgbmV3UGFnZSkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmlu
ZGV4IDVjMGViNDM2Y2MzNTMyYzZkYTU3ZTFmMGM5ZDhlODRiNDQ0NTgyY2QuLjI2YmFmNGYwNGQ3
M2RiYTc5NWU0ZWY0MTM5MmY5OTUzZDdmZWIwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
UmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFy
ZWEoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGVsc2UKICAgICAgICAgc3RvcmFnZU5hbWVzcGFj
ZSA9ICZsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoZG9jdW1lbnQucGFnZSgpLT5zZXNzaW9uSUQoKSk7
CiAKLSAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZUFyZWEoZG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOworICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlLT5zdG9y
YWdlQXJlYShkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAogU3RvcmFnZU5hbWVzcGFj
ZSYgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDVhNDE3YzRmYzFlZTQ2ZmI2NWI4
NjE1MDJjZTZjYmFmZWJhZWY0OGIuLmQ2YmYwNmM1MzViY2Y5Y2ZhYmY2Y2U5MGZhNWEwNTNkZWVh
YWUzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUdyb3VwLmg+CkBAIC01MCw3ICs1MSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1TdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFN
YXAoU3RvcmFnZU5hbWVzcGFjZUltcGwmIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKK1N0b3JhZ2VBcmVhTWFwOjpTdG9yYWdl
QXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCYgc3RvcmFnZU5hbWVzcGFjZSwgUmVmPGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2luKQogICAgIDogbV9pZGVu
dGlmaWVyKFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fbmFt
ZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2UpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKFdURk1vdmUo
c2VjdXJpdHlPcmlnaW4pKQpAQCAtMjk1LDkgKzI5Niw5IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OmNsZWFyQ2FjaGUodWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpCiAgICAgcmVzZXRWYWx1ZXMo
KTsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFtZXNGb3JFdmVudERpc3Bh
dGNoaW5nKFBhZ2UmIHBhZ2UsIFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFN0b3JhZ2VUeXBlIHN0
b3JhZ2VUeXBlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+
JiBzdG9yYWdlQXJlYUltcGxJRCkKK3N0YXRpYyBWZWN0b3I8UmVmPEZyYW1lPj4gZnJhbWVzRm9y
RXZlbnREaXNwYXRjaGluZyhQYWdlJiBwYWdlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
LCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJl
YUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQpCiB7Ci0gICAgVmVjdG9yPFJlZlB0
cjxGcmFtZT4+IGZyYW1lczsKKyAgICBWZWN0b3I8UmVmPEZyYW1lPj4gZnJhbWVzOwogICAgIHBh
Z2UuZm9yRWFjaERvY3VtZW50KFsmXShhdXRvJiBkb2N1bWVudCkgewogICAgICAgICBpZiAoIWRv
Y3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZXF1YWwoJm9yaWdpbikpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0zMDUsNiArMzA2LDkgQEAgc3RhdGljIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFt
ZXNGb3JFdmVudERpc3BhdGNoaW5nKFBhZ2UmIHBhZ2UsIFNlY3VyaXR5T3JpZ2kKICAgICAgICAg
YXV0byogd2luZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCk7CiAgICAgICAgIGlmICghd2luZG93
KQogICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghd2luZG93LT5oYXNFdmVudExp
c3RlbmVycyhldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50KSkKKyAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCiAgICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBudWxscHRyOwogICAgICAgICBz
d2l0Y2ggKHN0b3JhZ2VUeXBlKSB7CkBAIC0zMjcsNyArMzMxLDcgQEAgc3RhdGljIFZlY3RvcjxS
ZWZQdHI8RnJhbWU+PiBmcmFtZXNGb3JFdmVudERpc3BhdGNoaW5nKFBhZ2UmIHBhZ2UsIFNlY3Vy
aXR5T3JpZ2kKICAgICAgICAgfQogICAgICAgIAogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBk
b2N1bWVudC5mcmFtZSgpKSAKLSAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoZnJhbWUpOworICAg
ICAgICAgICAgZnJhbWVzLmFwcGVuZCgqZnJhbWUpOwogICAgIH0pOwogICAgIHJldHVybiBmcmFt
ZXM7CiB9CkBAIC0zNDUsMjEgKzM0OSwyMSBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRj
aFNlc3Npb25TdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvIGZyYW1lcyA9IGZyYW1lc0ZvckV2ZW50RGlzcGF0Y2hp
bmcoKnBhZ2UsIG1fc2VjdXJpdHlPcmlnaW4sIFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBzdG9yYWdl
QXJlYUltcGxJRCk7Ci0gICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9u
U3RvcmFnZUV2ZW50c1RvRnJhbWVzKCpwYWdlLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1Zh
bHVlLCB1cmxTdHJpbmcsIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSk7CisgICAgU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKCpwYWdl
LCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIG1fc2VjdXJpdHlP
cmlnaW4pOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2
ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3Jh
Z2VBcmVhSW1wbElELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAg
QVNTRVJUKGlzTG9jYWxTdG9yYWdlKHR5cGUoKSkpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxGcmFt
ZT4+IGZyYW1lczsKKyAgICBWZWN0b3I8UmVmPEZyYW1lPj4gZnJhbWVzOwogCiAgICAgLy8gTmFt
ZXNwYWNlIElEcyBmb3IgbG9jYWwgc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBjdXJyZW50bHkgZXF1
aXZhbGVudCB0byB3ZWIgcGFnZSBncm91cCBJRHMuCiAgICAgYXV0byYgcGFnZUdyb3VwID0gKldl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2VHcm91cChtX25hbWVzcGFjZS5wYWdlR3JvdXBJ
RCgpKS0+Y29yZVBhZ2VHcm91cCgpOwogICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VHcm91cC5w
YWdlcygpKQogICAgICAgICBmcmFtZXMuYXBwZW5kVmVjdG9yKGZyYW1lc0ZvckV2ZW50RGlzcGF0
Y2hpbmcocGFnZSwgbV9zZWN1cml0eU9yaWdpbiwgU3RvcmFnZVR5cGU6OkxvY2FsLCBzdG9yYWdl
QXJlYUltcGxJRCkpOwogCi0gICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2Nh
bFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhwYWdlR3JvdXAsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwg
bmV3VmFsdWUsIHVybFN0cmluZywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKKyAgICBTdG9y
YWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzKHBh
Z2VHcm91cCwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBtX3Nl
Y3VyaXR5T3JpZ2luKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6c2VuZENvbm5lY3RNZXNz
YWdlKFNlbmRNb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAppbmRleCA5NjUzZjc2NmZkMzZhNWY2MjhmMjNmZDc5
MTFlZWVmNTkxNmM4ZDU3Li41MTNlNDBkOTAwOWJlNTdlMzI3ZWEwZGI1MGI1MmEzYmM4MWJiZDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGw7
CiBjbGFzcyBTdG9yYWdlQXJlYU1hcCBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU3RvcmFnZUFy
ZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
JiYpOworICAgIFN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiwgUmVmPGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKICAgICB+U3RvcmFnZUFyZWFNYXAoKTsKIAog
ICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
QEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiAgICAgdWludDY0X3QgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlm
aWVyIHsgMCB9OwogICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiBtX25hbWVzcGFjZTsKLSAgICBS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CisgICAgUmVmPGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTdG9yYWdlTWFwPiBtX21hcDsKICAgICBzdGQ6Om9wdGlvbmFs
PFN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gbV9yZW1vdGVBcmVhSWRlbnRpZmllcjsKICAgICBIYXNo
Q291bnRlZFNldDxTdHJpbmc+IG1fcGVuZGluZ1ZhbHVlQ2hhbmdlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmNwcAppbmRleCBkZWI2YTM0MzNjYWJhZmFmN2RjYWE1NjBjZGMzYTE1ZTNhY2E3ZTcyLi5l
MjEyN2ZlZTYyNTA5ZmU1NTY5ZDgzMTg0NjlmM2I4ZWM4ZDUwOGQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwCkBAIC0xMDAsMTAgKzEwMCwxMCBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpkZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKICAgICBtX3N0b3Jh
Z2VBcmVhTWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAotUmVm
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEpCitSZWY8U3RvcmFnZUFyZWE+IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbiYgc2Vj
dXJpdHlPcmlnaW4pCiB7Ci0gICAgYXV0byYgbWFwID0gbV9zdG9yYWdlQXJlYU1hcHMuZW5zdXJl
KHNlY3VyaXR5T3JpZ2luRGF0YSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U3Rv
cmFnZUFyZWFNYXA+KCp0aGlzLCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7
CisgICAgYXV0byYgbWFwID0gbV9zdG9yYWdlQXJlYU1hcHMuZW5zdXJlKHNlY3VyaXR5T3JpZ2lu
LmRhdGEoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U3RvcmFnZUFyZWFNYXA+
KCp0aGlzLCBzZWN1cml0eU9yaWdpbik7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJl
dHVybiBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZSgqbWFwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
CmluZGV4IDk1YTEyYzMwYmM5ZDBjNjQzNzI2ZTBiMTAwYmFlZjk3NmEwOWJlNjQuLjRhMTMxOTc5
ZWMyMDllZDc4NTViOWQ3YTRiY2JlYzM3YjI3OTljMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApA
QCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BM
ZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIFJlZjxXZWJDb3JlOjpT
dG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
Jikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGZpbmFsOwogICAgIHVpbnQ2NF90IHN0b3Jh
Z2VBcmVhTWFwQ291bnRGb3JUZXN0aW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zdG9yYWdl
QXJlYU1hcHMuc2l6ZSgpOyB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IHZhbGlkIGZv
ciBzZXNzaW9uIHN0b3JhZ2UgYW5kIHNob3VsZCBwcm9iYWJseSBiZSBtb3ZlZCB0byBhIHN1YmNs
YXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNw
cAppbmRleCAwYzE2MzVlZTYzMDdhZjQ0ZDM0NDY2YjQ0ZjFmN2ZhNzc3Mjk1YThlLi5iZmFjZDQ3
YTZmNDcxMzM2MDUzZTk3MDViZDNkYWMyMTk0OGY5YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtNDQsNyArNDQsNyBAQCBTdG9y
YWdlQXJlYUltcGw6On5TdG9yYWdlQXJlYUltcGwoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiB9CiAKLWlubGluZSBTdG9yYWdlQXJlYUltcGw6OlN0b3JhZ2VBcmVhSW1wbChTdG9yYWdl
VHlwZSBzdG9yYWdlVHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIFJlZlB0
cjxTdG9yYWdlU3luY01hbmFnZXI+JiYgc3luY01hbmFnZXIsIHVuc2lnbmVkIHF1b3RhKQoraW5s
aW5lIFN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VU
eXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBSZWZQdHI8U3RvcmFnZVN5bmNNYW5h
Z2VyPiYmIHN5bmNNYW5hZ2VyLCB1bnNpZ25lZCBxdW90YSkKICAgICA6IG1fc3RvcmFnZVR5cGUo
c3RvcmFnZVR5cGUpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKG9yaWdpbikKICAgICAsIG1fc3Rv
cmFnZU1hcChxdW90YSkKQEAgLTUzLDE5ICs1MywxOSBAQCBpbmxpbmUgU3RvcmFnZUFyZWFJbXBs
OjpTdG9yYWdlQXJlYUltcGwoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIGNvbnN0IFNlY3VyaXR5
TwogICAgICwgbV9jbG9zZURhdGFiYXNlVGltZXIoKnRoaXMsICZTdG9yYWdlQXJlYUltcGw6OmNs
b3NlRGF0YWJhc2VUaW1lckZpcmVkKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgCi0gICAgLy8gQWNjZXNzaW5nIHRoZSBzaGFyZWQgZ2xvYmFsIFN0b3JhZ2VUcmFja2VyIHdo
ZW4gYSBTdG9yYWdlQXJlYSBpcyBjcmVhdGVkIAorCisgICAgLy8gQWNjZXNzaW5nIHRoZSBzaGFy
ZWQgZ2xvYmFsIFN0b3JhZ2VUcmFja2VyIHdoZW4gYSBTdG9yYWdlQXJlYSBpcyBjcmVhdGVkCiAg
ICAgLy8gZW5zdXJlcyB0aGF0IHRoZSB0cmFja2VyIGlzIHByb3Blcmx5IGluaXRpYWxpemVkIGJl
Zm9yZSBhbnlvbmUgYWN0dWFsbHkgbmVlZHMgdG8gdXNlIGl0LgogICAgIFN0b3JhZ2VUcmFja2Vy
Ojp0cmFja2VyKCk7CiB9CiAKLVJlZjxTdG9yYWdlQXJlYUltcGw+IFN0b3JhZ2VBcmVhSW1wbDo6
Y3JlYXRlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4mJiBzeW5jTWFuYWdlciwgdW5zaWdu
ZWQgcXVvdGEpCitSZWY8U3RvcmFnZUFyZWFJbXBsPiBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShT
dG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgUmVm
UHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4mJiBzeW5jTWFuYWdlciwgdW5zaWduZWQgcXVvdGEpCiB7
CiAgICAgUmVmPFN0b3JhZ2VBcmVhSW1wbD4gYXJlYSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZUFy
ZWFJbXBsKHN0b3JhZ2VUeXBlLCBvcmlnaW4sIFdURk1vdmUoc3luY01hbmFnZXIpLCBxdW90YSkp
OwogICAgIC8vIEZJWE1FOiBJZiB0aGVyZSdzIG5vIGJhY2tpbmcgc3RvcmFnZSBmb3IgTG9jYWxT
dG9yYWdlLCB0aGUgZGVmYXVsdCBXZWJLaXQgYmVoYXZpb3Igc2hvdWxkIGJlIHRoYXQgb2YgcHJp
dmF0ZSBicm93c2luZywKICAgICAvLyBub3Qgc2lsZW50bHkgaWdub3JpbmcgaXQuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg5NAogICAgIGlmIChhcmVhLT5tX3N0
b3JhZ2VTeW5jTWFuYWdlcikgewotICAgICAgICBhcmVhLT5tX3N0b3JhZ2VBcmVhU3luYyA9IFN0
b3JhZ2VBcmVhU3luYzo6Y3JlYXRlKGFyZWEtPm1fc3RvcmFnZVN5bmNNYW5hZ2VyLmdldCgpLCBh
cmVhLmNvcHlSZWYoKSwgYXJlYS0+bV9zZWN1cml0eU9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CisgICAgICAgIGFyZWEtPm1fc3RvcmFnZUFyZWFTeW5jID0gU3RvcmFnZUFyZWFTeW5jOjpj
cmVhdGUoYXJlYS0+bV9zdG9yYWdlU3luY01hbmFnZXIuZ2V0KCksIGFyZWEuY29weVJlZigpLCBh
cmVhLT5tX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAg
ICAgICBBU1NFUlQoYXJlYS0+bV9zdG9yYWdlQXJlYVN5bmMpOwogICAgIH0KICAgICByZXR1cm4g
YXJlYTsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xlYXJGb3JP
cmlnaW5EZWxldGlvbigpCiB7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogICAgIGJsb2Nr
VW50aWxJbXBvcnRDb21wbGV0ZSgpOwotICAgIAorCiAgICAgbV9zdG9yYWdlTWFwLmNsZWFyKCk7
CiAKICAgICBpZiAobV9zdG9yYWdlQXJlYVN5bmMpIHsKQEAgLTIxMSwxMiArMjExLDEyIEBAIHZv
aWQgU3RvcmFnZUFyZWFJbXBsOjpjbGVhckZvck9yaWdpbkRlbGV0aW9uKCkKICAgICAgICAgbV9z
dG9yYWdlQXJlYVN5bmMtPnNjaGVkdWxlQ2xvc2VEYXRhYmFzZSgpOwogICAgIH0KIH0KLSAgICAK
Kwogdm9pZCBTdG9yYWdlQXJlYUltcGw6OnN5bmMoKQogewogICAgIEFTU0VSVCghbV9pc1NodXRk
b3duKTsKICAgICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKLSAgICAKKwogICAgIGlmICht
X3N0b3JhZ2VBcmVhU3luYykKICAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMtPnNjaGVkdWxlU3lu
YygpOwogfQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpzZXNzaW9u
Q2hhbmdlZChib29sIGlzTmV3U2Vzc2lvblBlcnNpc3RlbnQpCiAgICAgbV9zdG9yYWdlTWFwLmNs
ZWFyKCk7CiAKICAgICBpZiAoaXNOZXdTZXNzaW9uUGVyc2lzdGVudCAmJiAhbV9zdG9yYWdlQXJl
YVN5bmMgJiYgbV9zdG9yYWdlU3luY01hbmFnZXIpIHsKLSAgICAgICAgbV9zdG9yYWdlQXJlYVN5
bmMgPSBTdG9yYWdlQXJlYVN5bmM6OmNyZWF0ZShtX3N0b3JhZ2VTeW5jTWFuYWdlci5nZXQoKSwg
KnRoaXMsIG1fc2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICBt
X3N0b3JhZ2VBcmVhU3luYyA9IFN0b3JhZ2VBcmVhU3luYzo6Y3JlYXRlKG1fc3RvcmFnZVN5bmNN
YW5hZ2VyLmdldCgpLCAqdGhpcywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDNhYjNiYzU1NjU0NDdmMzYwY2Fl
MGVkNzk0OTg2ZjRjNDFmODU0ZGMuLjU1MjIwODRhNzgzOTdjMjQ2MTg5MGU0YzMxMDJhODY5YTgz
YTI4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBs
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgU3RvcmFnZUFyZWFTeW5jOwogCiBjbGFzcyBTdG9y
YWdlQXJlYUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZUFyZWEgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8U3RvcmFnZUFyZWFJbXBsPiBjcmVhdGUoV2ViQ29yZTo6U3RvcmFnZVR5cGUs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFJlZlB0cjxXZWJDb3JlOjpTdG9y
YWdlU3luY01hbmFnZXI+JiYsIHVuc2lnbmVkIHF1b3RhKTsKKyAgICBzdGF0aWMgUmVmPFN0b3Jh
Z2VBcmVhSW1wbD4gY3JlYXRlKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYsIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI+JiYsIHVu
c2lnbmVkIHF1b3RhKTsKICAgICB2aXJ0dWFsIH5TdG9yYWdlQXJlYUltcGwoKTsKIAogICAgIHVu
c2lnbmVkIGxlbmd0aCgpIG92ZXJyaWRlOwpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXNzaW9uQ2hhbmdlZChib29sIGlzTmV3U2Vzc2lvblBlcnNpc3RlbnQpOwogCiBwcml2
YXRlOgotICAgIFN0b3JhZ2VBcmVhSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFu
YWdlcj4mJiwgdW5zaWduZWQgcXVvdGEpOworICAgIFN0b3JhZ2VBcmVhSW1wbChXZWJDb3JlOjpT
dG9yYWdlVHlwZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBSZWZQdHI8V2ViQ29y
ZTo6U3RvcmFnZVN5bmNNYW5hZ2VyPiYmLCB1bnNpZ25lZCBxdW90YSk7CiAgICAgZXhwbGljaXQg
U3RvcmFnZUFyZWFJbXBsKGNvbnN0IFN0b3JhZ2VBcmVhSW1wbCYpOwogCiAgICAgdm9pZCBibG9j
a1VudGlsSW1wb3J0Q29tcGxldGUoKSBjb25zdDsKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBXZWJDb3JlOjpGcmFtZSog
c291cmNlRnJhbWUpOwogCiAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZTsK
LSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgbV9zZWN1cml0eU9yaWdpbjsKKyAgICBS
ZWY8Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAgICAg
V2ViQ29yZTo6U3RvcmFnZU1hcCBtX3N0b3JhZ2VNYXA7CiAKICAgICBSZWZQdHI8U3RvcmFnZUFy
ZWFTeW5jPiBtX3N0b3JhZ2VBcmVhU3luYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IGE3OGQxZmY1YjgyNDYzYjgy
N2FhNzYxZjVhZTJiOTQ3MzE4YzY5YzguLjRlNzEzMjNhOTcwMTcwZTg4YTA0MTU4ODhkYWQyZmJl
OWU2NjIwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VB
cmVhSW1wbC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VTeW5jTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVR5
cGUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMTAyLDE3ICsxMDMsMTQgQEAg
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UmKQog
ICAgIHJldHVybiBXVEZNb3ZlKG5ld05hbWVzcGFjZSk7CiB9CiAKLVJlZjxTdG9yYWdlQXJlYT4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgb3JpZ2luKQorUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFn
ZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKIAotICAgIGlmIChSZWZQdHI8
U3RvcmFnZUFyZWFJbXBsPiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFNYXAuZ2V0KG9yaWdp
bikpCi0gICAgICAgIHJldHVybiBzdG9yYWdlQXJlYS5yZWxlYXNlTm9uTnVsbCgpOwotCi0gICAg
YXV0byBzdG9yYWdlQXJlYSA9IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKG1fc3RvcmFnZVR5cGUs
IG9yaWdpbiwgbV9zeW5jTWFuYWdlci5nZXQoKSwgbV9xdW90YSk7Ci0gICAgbV9zdG9yYWdlQXJl
YU1hcC5zZXQob3JpZ2luLCBzdG9yYWdlQXJlYS5wdHIoKSk7Ci0gICAgcmV0dXJuIFdURk1vdmUo
c3RvcmFnZUFyZWEpOworICAgIHJldHVybiAqbV9zdG9yYWdlQXJlYU1hcC5lbnN1cmUob3JpZ2lu
LmRhdGEoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKG1f
c3RvcmFnZVR5cGUsIG9yaWdpbiwgbV9zeW5jTWFuYWdlci5nZXQoKSwgbV9xdW90YSk7CisgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9z
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5oCmluZGV4IDQ5NWM0NDI2Y2U0OTE0ZjNmOGZkZWQ5MDM1M2JkYjVlNjQ3YWI4ZmMuLjYx
M2VmMzk0OTM2MWUxMmJkYzY3ODdjYzAwMDcxNTQzNDMxNDZjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTdG9yYWdlQXJlYUltcGw7CiAKLWNs
YXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2UgeworY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNw
YWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBB
TDo6U2Vzc2lvbklEKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBnZXRP
ckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwg
dW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKTsKQEAgLTU0LDE0ICs1NCwxNCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzeW5jKCk7CiAgICAgdm9pZCBjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRh
YmFzZXMoKTsKIAotICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0gICAgdm9pZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEKSBvdmVycmlkZTsKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQorICAgIHZvaWQgc2V0U2Vzc2lv
bklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCkgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgU3Rv
cmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFN0cmluZyYgcGF0
aCwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKTsKIAotICAgIFJlZjxXZWJDb3JlOjpT
dG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
Jikgb3ZlcnJpZGU7Ci0gICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFn
ZSYgbmV3UGFnZSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9y
YWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGZpbmFsOworICAgIFJlZjxT
dG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UmIG5ld1BhZ2UpIGZpbmFsOwogCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVmUHRyPFN0
b3JhZ2VBcmVhSW1wbD4+IFN0b3JhZ2VBcmVhTWFwOwogICAgIFN0b3JhZ2VBcmVhTWFwIG1fc3Rv
cmFnZUFyZWFNYXA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452650</attachid>
            <date>2022-02-19 12:34:56 -0800</date>
            <delta_ts>2022-02-19 20:41:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236871-20220219123455.patch</filename>
            <type>text/plain</type>
            <size>37705</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiMmVkZDIwMTFjOGZm
YTgyNWRlOTUyYWQ4ZmZkZjUxOGM2NTVkZi4uYjJjMDE2YTQwNzQ5OGI1Mzc2MGYwMmQzZDcyZmZk
OWNiOGYxOTEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIyLTAyLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgRE9NIHN0b3Jh
Z2UgZXZlbnQgZGlzcGF0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNjg3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1hZGUgdGhlIGZvbGxvd2luZyBvcHRpbWl6YXRpb24gdG8gRE9NIHN0b3JhZ2Ug
ZXZlbnQgZGlzcGF0Y2g6CisgICAgICAgIDEuIFBhc3MgYSBTZWN1cml0eU9yaWdpbiBhcm91bmQg
aW5zdGVhZCBvZiBhIFNlY3VyaXR5T3JpZ2luRGF0YS4gT3RoZXJ3aXNlLAorICAgICAgICAgICBk
aXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50cygpIC8gZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50
cygpIGp1c3Qga2VlcAorICAgICAgICAgICByZWNvbnN0cnVjdGluZyB0aGUgU2VjdXJpdHlPcmln
aW4gZnJvbSB0aGUgU2VjdXJpdHlPcmlnaW5EYXRhIGZvciBldmVyeQorICAgICAgICAgICBmcmFt
ZS4KKyAgICAgICAgMi4gV2hlbiBnYXRoZXJpbmcgdGhlIGxpc3Qgb2YgZnJhbWVzIHdoZXJlIHdl
IG5lZWQgdG8gZGlzcGF0Y2ggdGhlIHN0b3JhZ2UKKyAgICAgICAgICAgZXZlbnQsIGRpc2NhcmQg
dGhlIG9uZXMgdGhhdCBkbyBub3QgaGF2ZSBhICJzdG9yYWdlIiBldmVudCBsaXN0ZW5lci4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3Jh
Z2VFdmVudEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlz
cGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZl
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
TG9jYWxTdG9yYWdlRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50
c1RvRnJhbWVzKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuaDoK
KyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorCiAyMDIyLTAyLTE5ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBw
b3J0IGZvciBpZGVvZ3JhcGhpYyBiYXNlbGluZSB3aXRoIGZvbnQgZmFsbGJhY2sKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMTVjMDFlYzg0MGFmYjZhNWQxNDMyYzliN2M2NTAzYTI3MDJiNWFkMS4uOTNhYmYzNDVkMGNk
M2Y3ZWU1ZDY4YzAyMzJkYWZiNWExYWUwZDI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAor
MjAyMi0wMi0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE9w
dGltaXplIERPTSBzdG9yYWdlIGV2ZW50IGRpc3BhdGNoCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWRlIHRoZSBmb2xsb3dpbmcgb3B0aW1pemF0aW9u
IHRvIERPTSBzdG9yYWdlIGV2ZW50IGRpc3BhdGNoOgorICAgICAgICAxLiBQYXNzIGEgU2VjdXJp
dHlPcmlnaW4gYXJvdW5kIGluc3RlYWQgb2YgYSBTZWN1cml0eU9yaWdpbkRhdGEuIE90aGVyd2lz
ZSwKKyAgICAgICAgICAgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHMoKSAvIGRpc3BhdGNoU2Vz
c2lvblN0b3JhZ2VFdmVudHMoKSBqdXN0IGtlZXAKKyAgICAgICAgICAgcmVjb25zdHJ1Y3Rpbmcg
dGhlIFNlY3VyaXR5T3JpZ2luIGZyb20gdGhlIFNlY3VyaXR5T3JpZ2luRGF0YSBmb3IgZXZlcnkK
KyAgICAgICAgICAgZnJhbWUuCisgICAgICAgIDIuIFdoZW4gZ2F0aGVyaW5nIHRoZSBsaXN0IG9m
IGZyYW1lcyB3aGVyZSB3ZSBuZWVkIHRvIGRpc3BhdGNoIHRoZSBzdG9yYWdlCisgICAgICAgICAg
IGV2ZW50LCBkaXNjYXJkIHRoZSBvbmVzIHRoYXQgZG8gbm90IGhhdmUgYSAic3RvcmFnZSIgZXZl
bnQgbGlzdGVuZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFN
YXApOgorICAgICAgICAoV2ViS2l0OjpmcmFtZXNGb3JFdmVudERpc3BhdGNoaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2
ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oOgor
CiAyMDIyLTAyLTE5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFttYWNPU10gSG92ZXJpbmcgb3ZlciAiQ29weSBDcm9wcGVkIEltYWdlIiBjb250ZXh0
IG1lbnUgaXRlbSBzaG91bGQgcmV2ZWFsIHRoZSBjcm9wcGVkIGltYWdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCmluZGV4IDM4MmNiYTk4MjQ5MjAxOTJjYmIxYTNiZjYzODY1YTg2YWE3OGY4NDkuLjgxZDY1
ZGJjZTJmOGRiZmI0NjBkMDRiMmZlNjI1ZGMzMTQxYWZjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMjItMDItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBET00gc3RvcmFnZSBldmVudCBkaXNwYXRjaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODcxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSB0aGUgZm9s
bG93aW5nIG9wdGltaXphdGlvbiB0byBET00gc3RvcmFnZSBldmVudCBkaXNwYXRjaDoKKyAgICAg
ICAgMS4gUGFzcyBhIFNlY3VyaXR5T3JpZ2luIGFyb3VuZCBpbnN0ZWFkIG9mIGEgU2VjdXJpdHlP
cmlnaW5EYXRhLiBPdGhlcndpc2UsCisgICAgICAgICAgIGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZl
bnRzKCkgLyBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzKCkganVzdCBrZWVwCisgICAgICAg
ICAgIHJlY29uc3RydWN0aW5nIHRoZSBTZWN1cml0eU9yaWdpbiBmcm9tIHRoZSBTZWN1cml0eU9y
aWdpbkRhdGEgZm9yIGV2ZXJ5CisgICAgICAgICAgIGZyYW1lLgorICAgICAgICAyLiBXaGVuIGdh
dGhlcmluZyB0aGUgbGlzdCBvZiBmcmFtZXMgd2hlcmUgd2UgbmVlZCB0byBkaXNwYXRjaCB0aGUg
c3RvcmFnZQorICAgICAgICAgICBldmVudCwgZGlzY2FyZCB0aGUgb25lcyB0aGF0IGRvIG5vdCBo
YXZlIGEgInN0b3JhZ2UiIGV2ZW50IGxpc3RlbmVyLgorCisgICAgICAgICogU3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OlN0b3Jh
Z2VBcmVhSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpjbGVhckZvck9yaWdpbkRlbGV0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpzeW5jKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsOjpzZXNzaW9uQ2hhbmdlZCk6CisgICAgICAgICogU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VB
cmVhKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisKIDIwMjIt
MDItMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFuYWdl
IEluZGV4ZWREQiBzdG9yYWdlIGJ5IG9yaWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBmOTZmNDBjZjM4Mzk1
MTUyZWMzM2M0OGM3YTBjNDcyM2RmYTBjNTczLi5mMTg2NzEyOThhMjcxNGZkZDkwYmFjNzQ4MmM4
ZWM2MzBkN2JjMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMTAwNyw3ICsxMDA3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWUKICAgICAgICAgZGF0YWJhc2VBZ2VudC0+ZGlkT3BlbkRhdGFiYXNlKGRh
dGFiYXNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNo
RE9NU3RvcmFnZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3Ry
aW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRj
aERPTVN0b3JhZ2VFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTZWN1cml0eU9y
aWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgaWYgKGF1dG8qIGRvbVN0b3JhZ2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZERPTVN0b3JhZ2VBZ2VudCgpKQogICAgICAgICBk
b21TdG9yYWdlQWdlbnQtPmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGtleSwgb2xkVmFsdWUs
IG5ld1ZhbHVlLCBzdG9yYWdlVHlwZSwgc2VjdXJpdHlPcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGI2MWY2
YTBkY2FiMjk2YmJhY2JjMTI1Y2FhYzAzNTg2ZTljMTk3ZjAuLjY1ZDUxNzAwMTJkZDMxZGM5Mzk2
OWEyODgwNDQ3MDZhNjIyNTNhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTI3NCw3ICsyNzQsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmKTsKIAotICAgIHN0
YXRpYyB2b2lkIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KFBhZ2UmLCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3Rv
cmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKik7CisgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hE
T01TdG9yYWdlRXZlbnQoUGFnZSYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgY29uc3QgU2VjdXJp
dHlPcmlnaW4mKTsKIAogICAgIHN0YXRpYyBib29sIHNob3VsZFdhaXRGb3JEZWJ1Z2dlck9uU3Rh
cnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIHdvcmtlclN0YXJ0
ZWQoV29ya2VySW5zcGVjdG9yUHJveHkmKTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBwcml2YXRlOgog
CiAgICAgc3RhdGljIHZvaWQgZGlkT3BlbkRhdGFiYXNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgRGF0YWJhc2UmKTsKIAotICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2
ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1
cml0eU9yaWdpbiopOworICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiYpOwogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkV2FpdEZvckRlYnVnZ2Vy
T25TdGFydEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwogICAgIHN0YXRpYyB2b2lkIHdvcmtl
clN0YXJ0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXb3JrZXJJbnNwZWN0b3JQcm94eSYp
OwpAQCAtMTMyNSw3ICsxMzI1LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogICAgICAgICBkaWRPcGVu
RGF0YWJhc2VJbXBsKCphZ2VudHMsIGRhdGFiYXNlKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChQYWdlJiBwYWdl
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5n
JiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiBzZWN1
cml0eU9yaWdpbikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlz
cGF0Y2hET01TdG9yYWdlRXZlbnQoUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlIHN0
b3JhZ2VUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgZGlkRGlzcGF0Y2hET01T
dG9yYWdlRXZlbnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMocGFnZSksIGtleSwgb2xkVmFsdWUs
IG5ld1ZhbHVlLCBzdG9yYWdlVHlwZSwgc2VjdXJpdHlPcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwCmluZGV4IDc1ODdjMTcyZTU3YmZmYjBhNTJiZjgxZmRlMDM5ZDc5YTA1YTEwY2YuLjQx
ZDNlMTVlOTE5NjdiYzc3ZDAwMWMzNTViODljMzFkODUzOTBkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKQEAgLTE2OCwxOCArMTY4LDE4IEBAIFN0cmluZyBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OnN0b3JhZ2VJZChTdG9yYWdlJiBzdG9yYWdlKQogICAgIEFTU0VSVCh3aW5kb3cpOwog
ICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBkb2N1bWVudC0+c2VjdXJp
dHlPcmlnaW4oKTsKICAgICBib29sIGlzTG9jYWxTdG9yYWdlID0gd2luZG93LT5vcHRpb25hbExv
Y2FsU3RvcmFnZSgpID09ICZzdG9yYWdlOwotICAgIHJldHVybiBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OnN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbi5wdHIoKSwgaXNMb2NhbFN0b3JhZ2UpLT50
b0pTT05TdHJpbmcoKTsKKyAgICByZXR1cm4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9y
YWdlSWQoc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlKS0+dG9KU09OU3RyaW5nKCk7CiB9
CiAKLVJlZjxQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6OnN0b3JhZ2VJZChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGJvb2wg
aXNMb2NhbFN0b3JhZ2UpCitSZWY8UHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNl
Y3VyaXR5T3JpZ2luLCBib29sIGlzTG9jYWxTdG9yYWdlKQogewogICAgIHJldHVybiBQcm90b2Nv
bDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpjcmVhdGUoKQotICAgICAgICAuc2V0U2VjdXJpdHlP
cmlnaW4oc2VjdXJpdHlPcmlnaW4tPnRvUmF3U3RyaW5nKCkpCisgICAgICAgIC5zZXRTZWN1cml0
eU9yaWdpbihzZWN1cml0eU9yaWdpbi50b1Jhd1N0cmluZygpKQogICAgICAgICAuc2V0SXNMb2Nh
bFN0b3JhZ2UoaXNMb2NhbFN0b3JhZ2UpCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0b3Jh
Z2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBhdXRvIGlkID0gSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpzdG9yYWdlSWQoc2VjdXJpdHlPcmlnaW4sIHN0b3JhZ2VUeXBlID09IFN0b3Jh
Z2VUeXBlOjpMb2NhbCk7CiAKQEAgLTIxNCw3ICsyMTQsNyBAQCBSZWZQdHI8U3RvcmFnZUFyZWE+
IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKFByb3RvY29sOjpFcnJv
clN0cgogICAgIH0KIAogICAgIGlmICghKmlzTG9jYWxTdG9yYWdlKQotICAgICAgICByZXR1cm4g
bV9pbnNwZWN0ZWRQYWdlLnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVhKHRhcmdldEZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBt
X2luc3BlY3RlZFBhZ2Uuc2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEodGFyZ2V0RnJhbWUt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIHJldHVybiBtX2luc3BlY3RlZFBh
Z2Uuc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkubG9jYWxTdG9yYWdlQXJlYSgqdGFyZ2V0RnJh
bWUtPmRvY3VtZW50KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCAzMzg2Y2I4Nzlm
MTE3OGMxYjk2MzU3NzVjOWEwZTg2NGY1Yjk0YzUyLi5lMGNkMmFmMTY1ODljZTEzN2M3OWZhODk2
YTU1ZWU0NjFiNzdhMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTY1LDExICs2NSwxMSBA
QCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBj
bGVhckRPTVN0b3JhZ2VJdGVtcyhSZWY8SlNPTjo6T2JqZWN0PiYmIHN0b3JhZ2VJZCk7CiAKICAg
ICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KLSAgICB2b2lkIGRpZERpc3BhdGNoRE9NU3Rv
cmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2
b2lkIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgY29u
c3QgU2VjdXJpdHlPcmlnaW4mKTsKIAogICAgIC8vIENvbW1hbmRMaW5lQVBJCiAgICAgc3RhdGlj
IFN0cmluZyBzdG9yYWdlSWQoU3RvcmFnZSYpOwotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBzdG9yYWdlSWQoU2VjdXJpdHlPcmlnaW4q
LCBib29sIGlzTG9jYWxTdG9yYWdlKTsKKyAgICBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gc3RvcmFnZUlkKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiwgYm9vbCBpc0xvY2FsU3RvcmFnZSk7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0b3JhZ2VB
cmVhPiBmaW5kU3RvcmFnZUFyZWEoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBS
ZWY8SlNPTjo6T2JqZWN0PiYmIHN0b3JhZ2VJZCwgRnJhbWUqJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDgzNTlkZjc4MjBjNzY3YTU5Y2I0NTE5MTVlZDVmYTE0
ZTFhZmI5MzYuLjQ2MjI1NDcxZmRkMGE3OTdkY2NjZDgxNWQ0YWMzMTVmOWIwYTU3OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC00OTgsNyArNDk4LDcgQEAgY2xh
c3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyIHsKICAgICAgICAgewogICAgICAgICB9CiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9Cisg
ICAgICAgIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW4m
KSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9CiAgICAg
ICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UmKSBmaW5hbCB7IHJldHVybiBhZG9w
dFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSB7IG1fc2Vzc2lvbklEIH0pOyB9CiAgICAg
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vz
c2lvbklEOyB9CiAgICAgICAgIHZvaWQgc2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIGZpbmFsIHsgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMjI0YTdiN2IyMWY1MjVmZTE4MTZkNDRhYzE1MGFh
YWE2Mjc2OTc4OC4uOTlkNDJjMWQ1YjgyYTcyZWY3N2YyMDNhYTUwMmQ4NjBkNzU3N2ZiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODMwLDcgKzgzMCw3IEBAIEV4Y2VwdGlvbk9y
PFN0b3JhZ2UqPiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKCkKICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNl
c3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVhKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRh
dGEoKSk7CisgICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdlKCktPnN0
b3JhZ2VBcmVhKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBtX3Nlc3Npb25TdG9y
YWdlID0gU3RvcmFnZTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHN0b3JhZ2VBcmVhKSk7CiAgICAg
cmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCBkNWEzMGJlYWE4MzNjNTcz
OWJiYWM4YTdjZGRlMDFlMDc0MmE0MGU0Li5hNTlhZTFiZDM3MTgyNmQ0ZjllOGQ5MjlhNDc1MjZj
ZTgwNmFjMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVu
dERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50
RGlzcGF0Y2hlci5jcHAKQEAgLTQwLDQ5ICs0MCw1MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2
ZW50cyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3Ry
aW5nJiBuZXdWYWx1ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwg
RnJhbWUqIHNvdXJjZUZyYW1lKQordm9pZCBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aFNlc3Npb25TdG9yYWdlRXZlbnRzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2Vj
dXJpdHlPcmlnaW4sIEZyYW1lKiBzb3VyY2VGcmFtZSkKIHsKICAgICBQYWdlKiBwYWdlID0gc291
cmNlRnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFtZXM7CisgICAgVmVjdG9yPFJlZjxGcmFtZT4+IGZy
YW1lczsKIAogICAgIC8vIFNlbmQgZXZlbnRzIG9ubHkgdG8gb3VyIHBhZ2UuCiAgICAgZm9yIChG
cmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSkK
KyAgICAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPndpbmRvdygpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBm
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5lcXVhbChzZWN1cml0eU9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpLnB0cigpKSkKLSAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoZnJhbWUp
OworICAgICAgICBpZiAoIWZyYW1lLT53aW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRO
YW1lcygpLnN0b3JhZ2VFdmVudCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYg
KHNvdXJjZUZyYW1lICE9IGZyYW1lICYmIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLmVxdWFsKCZzZWN1cml0eU9yaWdpbikpCisgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKCpm
cmFtZSk7CiAgICAgfQogCiAgICAgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVz
KCpwYWdlLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIHNlY3VyaXR5T3JpZ2luKTsKIH0KIAotdm9pZCBTdG9y
YWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50cyhjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgRnJhbWUqIHNvdXJjZUZy
YW1lKQordm9pZCBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2
ZW50cyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3Ry
aW5nJiBuZXdWYWx1ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBGcmFt
ZSogc291cmNlRnJhbWUpCiB7CiAgICAgUGFnZSogcGFnZSA9IHNvdXJjZUZyYW1lLT5wYWdlKCk7
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8UmVmUHRyPEZy
YW1lPj4gZnJhbWVzOworICAgIFZlY3RvcjxSZWY8RnJhbWU+PiBmcmFtZXM7CiAKICAgICAvLyBT
ZW5kIGV2ZW50cyB0byBldmVyeSBwYWdlLgogICAgIGZvciAoYXV0byYgcGFnZUluR3JvdXAgOiBw
YWdlLT5ncm91cCgpLnBhZ2VzKCkpIHsKICAgICAgICAgZm9yIChhdXRvKiBmcmFtZSA9ICZwYWdl
SW5Hcm91cC5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkgewotICAgICAgICAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAg
ICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkgfHwgIWZyYW1lLT53aW5kb3coKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICghZnJhbWUtPndpbmRvdygpLT5oYXNF
dmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50KSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBmcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5lcXVhbChzZWN1cml0eU9yaWdpbi5zZWN1
cml0eU9yaWdpbigpLnB0cigpKSkKLSAgICAgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKGZyYW1l
KTsKKyAgICAgICAgICAgIGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5lcXVhbCgmc2VjdXJpdHlPcmlnaW4pKQorICAgICAgICAg
ICAgICAgIGZyYW1lcy5hcHBlbmQoKmZyYW1lKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGRp
c3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMocGFnZS0+Z3JvdXAoKSwgZnJhbWVzLCBr
ZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0
cmluZygpLCBzZWN1cml0eU9yaWdpbik7CiB9CiAKLXZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2UmIHBhZ2UsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQ
YWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVu
dChwYWdlLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgU3RvcmFnZVR5cGU6OlNlc3Npb24sIHNl
Y3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkucHRyKCkpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQocGFnZSwga2V5LCBvbGRWYWx1
ZSwgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBzZWN1cml0eU9yaWdpbik7CiAKICAg
ICBmb3IgKGF1dG8mIGZyYW1lIDogZnJhbWVzKSB7CiAgICAgICAgIFJlZlB0ciBkb2N1bWVudCA9
IGZyYW1lLT5kb2N1bWVudCgpOwpAQCAtOTIsMTAgKzk2LDEwIEBAIHZvaWQgU3RvcmFnZUV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2UmIHBh
Z2UsIGNvCiAgICAgfQogfQogCi12b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
TG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMoUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIFN0b3JhZ2VF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMoUGFnZUdy
b3VwJiBwYWdlR3JvdXAsIGNvbnN0IFZlY3RvcjxSZWY8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1
ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdp
bikKIHsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlR3JvdXAucGFnZXMoKSkKLSAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChwYWdl
LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgU3RvcmFnZVR5cGU6OkxvY2FsLCBzZWN1cml0eU9y
aWdpbi5zZWN1cml0eU9yaWdpbigpLnB0cigpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChwYWdlLCBrZXksIG9sZFZhbHVlLCBu
ZXdWYWx1ZSwgU3RvcmFnZVR5cGU6OkxvY2FsLCBzZWN1cml0eU9yaWdpbik7CiAKICAgICBmb3Ig
KGF1dG8mIGZyYW1lIDogZnJhbWVzKSB7CiAgICAgICAgIFJlZlB0ciBkb2N1bWVudCA9IGZyYW1l
LT5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
RXZlbnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERp
c3BhdGNoZXIuaAppbmRleCA4Y2M0ZDBiMTUyNWZmNWE4MTg5MDg5YWI3NGU0NjgxZDFlZTI3YWY0
Li41OTJkNjczNjBkOGNhZDUyZjMzZjgzZjg2ZGQ5MTg4NjkzNWY0OGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuaApAQCAtMzYsMTUgKzM2
LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFnZTsKIGNs
YXNzIFBhZ2VHcm91cDsKLXN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CitjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIAogY2xhc3MgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50cyhj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBu
ZXdWYWx1ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgRnJhbWUqIHNvdXJjZUZyYW1lKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50
cyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5n
JiBuZXdWYWx1ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgRnJhbWUqIHNvdXJjZUZyYW1l
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdl
RXZlbnRzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBT
dHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIEZyYW1lKiBzb3VyY2VGcmFt
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VF
dmVudHMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgRnJhbWUqIHNvdXJjZUZyYW1l
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3Jh
Z2VFdmVudHNUb0ZyYW1lcyhQYWdlJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxGcmFtZT4+JiBmcmFt
ZXMsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJp
bmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VF
dmVudHNUb0ZyYW1lcyhQYWdlR3JvdXAmLCBjb25zdCBWZWN0b3I8UmVmUHRyPEZyYW1lPj4mIGZy
YW1lcywgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9y
YWdlRXZlbnRzVG9GcmFtZXMoUGFnZSYsIGNvbnN0IFZlY3RvcjxSZWY8RnJhbWU+PiYgZnJhbWVz
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5n
JiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNU
b0ZyYW1lcyhQYWdlR3JvdXAmLCBjb25zdCBWZWN0b3I8UmVmPEZyYW1lPj4mIGZyYW1lcywgY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3
VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogcHJpdmF0
ZToKICAgICAvLyBEbyBub3QgaW5zdGFudGlhdGUuCiAgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hl
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA3MWM1
ZGI1MmJhZjhhYmI4YzJhN2U4Y2U1NzJhZGI4OGU0NGJkZWI2Li4zOTQ5NTBlNzIzZTM3NjM3ZGRh
MzRiYzYyODcyMGFlMGE2ODIzNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2UuaApAQCAtMzUsMTMgKzM1LDEzIEBAIGNsYXNzIFNlc3Npb25JRDsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFnZTsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3Mg
U3RvcmFnZUFyZWE7Ci1zdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBjbGFzcyBTdG9yYWdl
TmFtZXNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZT4gewogcHVibGlj
OgogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVh
bCBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYp
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mKSA9IDA7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IHZhbGlkIGZv
ciBzZXNzaW9uIHN0b3JhZ2UgYW5kIHNob3VsZCBwcm9iYWJseSBiZSBtb3ZlZCB0byBhIHN1YmNs
YXNzLgogICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSYgbmV3UGFn
ZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwCmluZGV4IDVjMGViNDM2Y2MzNTMyYzZkYTU3ZTFmMGM5ZDhlODRiNDQ0NTgy
Y2QuLjI2YmFmNGYwNGQ3M2RiYTc5NWU0ZWY0MTM5MmY5OTUzZDdmZWIwYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGVsc2UKICAgICAgICAg
c3RvcmFnZU5hbWVzcGFjZSA9ICZsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoZG9jdW1lbnQucGFnZSgp
LT5zZXNzaW9uSUQoKSk7CiAKLSAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZUFy
ZWEoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOworICAgIHJldHVybiBzdG9yYWdl
TmFtZXNwYWNlLT5zdG9yYWdlQXJlYShkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAog
U3RvcmFnZU5hbWVzcGFjZSYgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDVhNDE3
YzRmYzFlZTQ2ZmI2NWI4NjE1MDJjZTZjYmFmZWJhZWY0OGIuLmQ2YmYwNmM1MzViY2Y5Y2ZhYmY2
Y2U5MGZhNWEwNTNkZWVhYWUzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CkBAIC01MCw3ICs1MSw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1TdG9yYWdlQXJlYU1h
cDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwmIHN0b3JhZ2VOYW1lc3BhY2Us
IFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKK1N0b3JhZ2VB
cmVhTWFwOjpTdG9yYWdlQXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCYgc3RvcmFnZU5hbWVz
cGFjZSwgUmVmPGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2lu
KQogICAgIDogbV9pZGVudGlmaWVyKFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSkKICAgICAsIG1fbmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2UpCiAgICAgLCBtX3NlY3VyaXR5
T3JpZ2luKFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKQpAQCAtMjk1LDkgKzI5Niw5IEBAIHZvaWQg
U3RvcmFnZUFyZWFNYXA6OmNsZWFyQ2FjaGUodWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpCiAg
ICAgcmVzZXRWYWx1ZXMoKTsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFt
ZXNGb3JFdmVudERpc3BhdGNoaW5nKFBhZ2UmIHBhZ2UsIFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4s
IFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXI+JiBzdG9yYWdlQXJlYUltcGxJRCkKK3N0YXRpYyBWZWN0b3I8UmVmPEZy
YW1lPj4gZnJhbWVzRm9yRXZlbnREaXNwYXRjaGluZyhQYWdlJiBwYWdlLCBjb25zdCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQpCiB7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lczsKKyAgICBWZWN0b3I8UmVmPEZyYW1lPj4g
ZnJhbWVzOwogICAgIHBhZ2UuZm9yRWFjaERvY3VtZW50KFsmXShhdXRvJiBkb2N1bWVudCkgewog
ICAgICAgICBpZiAoIWRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZXF1YWwoJm9yaWdpbikpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zMDUsNiArMzA2LDkgQEAgc3RhdGljIFZlY3RvcjxSZWZQ
dHI8RnJhbWU+PiBmcmFtZXNGb3JFdmVudERpc3BhdGNoaW5nKFBhZ2UmIHBhZ2UsIFNlY3VyaXR5
T3JpZ2kKICAgICAgICAgYXV0byogd2luZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCk7CiAgICAg
ICAgIGlmICghd2luZG93KQogICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghd2lu
ZG93LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50KSkKKyAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBudWxs
cHRyOwogICAgICAgICBzd2l0Y2ggKHN0b3JhZ2VUeXBlKSB7CkBAIC0zMjcsNyArMzMxLDcgQEAg
c3RhdGljIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFtZXNGb3JFdmVudERpc3BhdGNoaW5nKFBh
Z2UmIHBhZ2UsIFNlY3VyaXR5T3JpZ2kKICAgICAgICAgfQogICAgICAgIAogICAgICAgICBpZiAo
YXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSAKLSAgICAgICAgICAgIGZyYW1lcy5hcHBl
bmQoZnJhbWUpOworICAgICAgICAgICAgZnJhbWVzLmFwcGVuZCgqZnJhbWUpOwogICAgIH0pOwog
ICAgIHJldHVybiBmcmFtZXM7CiB9CkBAIC0zNDUsMjEgKzM0OSwyMSBAQCB2b2lkIFN0b3JhZ2VB
cmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxT
dG9yYWdlQXJlYQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGZyYW1lcyA9IGZyYW1lc0Zv
ckV2ZW50RGlzcGF0Y2hpbmcoKnBhZ2UsIG1fc2VjdXJpdHlPcmlnaW4sIFN0b3JhZ2VUeXBlOjpT
ZXNzaW9uLCBzdG9yYWdlQXJlYUltcGxJRCk7Ci0gICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKCpwYWdlLCBmcmFtZXMsIGtleSwg
b2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSk7
CisgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50
c1RvRnJhbWVzKCpwYWdlLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJp
bmcsIG1fc2VjdXJpdHlPcmlnaW4pOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRj
aExvY2FsU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpCiB7CiAgICAgQVNTRVJUKGlzTG9jYWxTdG9yYWdlKHR5cGUoKSkpOwogCi0gICAgVmVj
dG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lczsKKyAgICBWZWN0b3I8UmVmPEZyYW1lPj4gZnJhbWVz
OwogCiAgICAgLy8gTmFtZXNwYWNlIElEcyBmb3IgbG9jYWwgc3RvcmFnZSBuYW1lc3BhY2VzIGFy
ZSBjdXJyZW50bHkgZXF1aXZhbGVudCB0byB3ZWIgcGFnZSBncm91cCBJRHMuCiAgICAgYXV0byYg
cGFnZUdyb3VwID0gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2VHcm91cChtX25hbWVz
cGFjZS5wYWdlR3JvdXBJRCgpKS0+Y29yZVBhZ2VHcm91cCgpOwogICAgIGZvciAoYXV0byYgcGFn
ZSA6IHBhZ2VHcm91cC5wYWdlcygpKQogICAgICAgICBmcmFtZXMuYXBwZW5kVmVjdG9yKGZyYW1l
c0ZvckV2ZW50RGlzcGF0Y2hpbmcocGFnZSwgbV9zZWN1cml0eU9yaWdpbiwgU3RvcmFnZVR5cGU6
OkxvY2FsLCBzdG9yYWdlQXJlYUltcGxJRCkpOwogCi0gICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhwYWdlR3JvdXAsIGZyYW1lcywg
a2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0
YSgpKTsKKyAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2
ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwg
dXJsU3RyaW5nLCBtX3NlY3VyaXR5T3JpZ2luKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6
c2VuZENvbm5lY3RNZXNzYWdlKFNlbmRNb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAppbmRleCA5NjUzZjc2NmZk
MzZhNWY2MjhmMjNmZDc5MTFlZWVmNTkxNmM4ZDU3Li41MTNlNDBkOTAwOWJlNTdlMzI3ZWEwZGI1
MGI1MmEzYmM4MWJiZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZUltcGw7CiBjbGFzcyBTdG9yYWdlQXJlYU1hcCBmaW5hbCA6IHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgU3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwmLCBSZWY8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+JiYpOworICAgIFN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsJiwgUmVmPGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsKICAgICB+U3RvcmFn
ZUFyZWFNYXAoKTsKIAogICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VB
cmVhTWFwSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgdWludDY0X3QgbV9sYXN0SGFuZGxl
ZE1lc3NhZ2VJZGVudGlmaWVyIHsgMCB9OwogICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiBtX25h
bWVzcGFjZTsKLSAgICBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmln
aW47CisgICAgUmVmPGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3Jp
Z2luOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTdG9yYWdlTWFwPiBtX21hcDsKICAg
ICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gbV9yZW1vdGVBcmVhSWRlbnRp
ZmllcjsKICAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IG1fcGVuZGluZ1ZhbHVlQ2hhbmdlczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCBkZWI2YTM0MzNjYWJhZmFmN2RjYWE1NjBjZGMz
YTE1ZTNhY2E3ZTcyLi5lMjEyN2ZlZTYyNTA5ZmU1NTY5ZDgzMTg0NjlmM2I4ZWM4ZDUwOGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC0xMDAsMTAgKzEwMCwxMCBAQCB2b2lkIFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpkZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1h
cCkKICAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0
YSgpKTsKIH0KIAotUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFn
ZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEpCitSZWY8
U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1
cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgYXV0byYgbWFwID0gbV9zdG9yYWdl
QXJlYU1hcHMuZW5zdXJlKHNlY3VyaXR5T3JpZ2luRGF0YSwgWyZdIHsKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U3RvcmFnZUFyZWFNYXA+KCp0aGlzLCBzZWN1cml0eU9yaWdpbkRhdGEuc2Vj
dXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byYgbWFwID0gbV9zdG9yYWdlQXJlYU1hcHMuZW5zdXJl
KHNlY3VyaXR5T3JpZ2luLmRhdGEoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U3RvcmFnZUFyZWFNYXA+KCp0aGlzLCBzZWN1cml0eU9yaWdpbik7CiAgICAgfSkuaXRlcmF0b3It
PnZhbHVlOwogICAgIHJldHVybiBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZSgqbWFwKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5oCmluZGV4IDk1YTEyYzMwYmM5ZDBjNjQzNzI2ZTBiMTAwYmFlZjk3NmEw
OWJlNjQuLjRhMTMxOTc5ZWMyMDllZDc4NTViOWQ3YTRiY2JlYzM3YjI3OTljMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBJZGVudGlmaWVyLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAg
IFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVh
PiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGZpbmFsOwogICAg
IHVpbnQ2NF90IHN0b3JhZ2VBcmVhTWFwQ291bnRGb3JUZXN0aW5nKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9zdG9yYWdlQXJlYU1hcHMuc2l6ZSgpOyB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBp
cyBvbmx5IHZhbGlkIGZvciBzZXNzaW9uIHN0b3JhZ2UgYW5kIHNob3VsZCBwcm9iYWJseSBiZSBt
b3ZlZCB0byBhIHN1YmNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmNwcAppbmRleCAwYzE2MzVlZTYzMDdhZjQ0ZDM0NDY2YjQ0ZjFmN2ZhNzc3
Mjk1YThlLi5iZmFjZDQ3YTZmNDcxMzM2MDUzZTk3MDViZDNkYWMyMTk0OGY5YTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtNDQs
NyArNDQsNyBAQCBTdG9yYWdlQXJlYUltcGw6On5TdG9yYWdlQXJlYUltcGwoKQogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiB9CiAKLWlubGluZSBTdG9yYWdlQXJlYUltcGw6OlN0b3JhZ2VB
cmVhSW1wbChTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBvcmlnaW4sIFJlZlB0cjxTdG9yYWdlU3luY01hbmFnZXI+JiYgc3luY01hbmFnZXIsIHVuc2ln
bmVkIHF1b3RhKQoraW5saW5lIFN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKFN0b3Jh
Z2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBSZWZQdHI8
U3RvcmFnZVN5bmNNYW5hZ2VyPiYmIHN5bmNNYW5hZ2VyLCB1bnNpZ25lZCBxdW90YSkKICAgICA6
IG1fc3RvcmFnZVR5cGUoc3RvcmFnZVR5cGUpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKG9yaWdp
bikKICAgICAsIG1fc3RvcmFnZU1hcChxdW90YSkKQEAgLTUzLDE5ICs1MywxOSBAQCBpbmxpbmUg
U3RvcmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJlYUltcGwoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUs
IGNvbnN0IFNlY3VyaXR5TwogICAgICwgbV9jbG9zZURhdGFiYXNlVGltZXIoKnRoaXMsICZTdG9y
YWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VUaW1lckZpcmVkKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgCi0gICAgLy8gQWNjZXNzaW5nIHRoZSBzaGFyZWQgZ2xvYmFsIFN0
b3JhZ2VUcmFja2VyIHdoZW4gYSBTdG9yYWdlQXJlYSBpcyBjcmVhdGVkIAorCisgICAgLy8gQWNj
ZXNzaW5nIHRoZSBzaGFyZWQgZ2xvYmFsIFN0b3JhZ2VUcmFja2VyIHdoZW4gYSBTdG9yYWdlQXJl
YSBpcyBjcmVhdGVkCiAgICAgLy8gZW5zdXJlcyB0aGF0IHRoZSB0cmFja2VyIGlzIHByb3Blcmx5
IGluaXRpYWxpemVkIGJlZm9yZSBhbnlvbmUgYWN0dWFsbHkgbmVlZHMgdG8gdXNlIGl0LgogICAg
IFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCk7CiB9CiAKLVJlZjxTdG9yYWdlQXJlYUltcGw+IFN0
b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4mJiBzeW5j
TWFuYWdlciwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZUFyZWFJbXBsPiBTdG9yYWdlQXJl
YUltcGw6OmNyZWF0ZShTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgY29uc3QgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbiwgUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4mJiBzeW5jTWFuYWdlciwgdW5z
aWduZWQgcXVvdGEpCiB7CiAgICAgUmVmPFN0b3JhZ2VBcmVhSW1wbD4gYXJlYSA9IGFkb3B0UmVm
KCpuZXcgU3RvcmFnZUFyZWFJbXBsKHN0b3JhZ2VUeXBlLCBvcmlnaW4sIFdURk1vdmUoc3luY01h
bmFnZXIpLCBxdW90YSkpOwogICAgIC8vIEZJWE1FOiBJZiB0aGVyZSdzIG5vIGJhY2tpbmcgc3Rv
cmFnZSBmb3IgTG9jYWxTdG9yYWdlLCB0aGUgZGVmYXVsdCBXZWJLaXQgYmVoYXZpb3Igc2hvdWxk
IGJlIHRoYXQgb2YgcHJpdmF0ZSBicm93c2luZywKICAgICAvLyBub3Qgc2lsZW50bHkgaWdub3Jp
bmcgaXQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg5NAogICAg
IGlmIChhcmVhLT5tX3N0b3JhZ2VTeW5jTWFuYWdlcikgewotICAgICAgICBhcmVhLT5tX3N0b3Jh
Z2VBcmVhU3luYyA9IFN0b3JhZ2VBcmVhU3luYzo6Y3JlYXRlKGFyZWEtPm1fc3RvcmFnZVN5bmNN
YW5hZ2VyLmdldCgpLCBhcmVhLmNvcHlSZWYoKSwgYXJlYS0+bV9zZWN1cml0eU9yaWdpbi5kYXRh
YmFzZUlkZW50aWZpZXIoKSk7CisgICAgICAgIGFyZWEtPm1fc3RvcmFnZUFyZWFTeW5jID0gU3Rv
cmFnZUFyZWFTeW5jOjpjcmVhdGUoYXJlYS0+bV9zdG9yYWdlU3luY01hbmFnZXIuZ2V0KCksIGFy
ZWEuY29weVJlZigpLCBhcmVhLT5tX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVu
dGlmaWVyKCkpOwogICAgICAgICBBU1NFUlQoYXJlYS0+bV9zdG9yYWdlQXJlYVN5bmMpOwogICAg
IH0KICAgICByZXR1cm4gYXJlYTsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFN0b3JhZ2VBcmVh
SW1wbDo6Y2xlYXJGb3JPcmlnaW5EZWxldGlvbigpCiB7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRv
d24pOwogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwotICAgIAorCiAgICAgbV9zdG9y
YWdlTWFwLmNsZWFyKCk7CiAKICAgICBpZiAobV9zdG9yYWdlQXJlYVN5bmMpIHsKQEAgLTIxMSwx
MiArMjExLDEyIEBAIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpjbGVhckZvck9yaWdpbkRlbGV0aW9u
KCkKICAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMtPnNjaGVkdWxlQ2xvc2VEYXRhYmFzZSgpOwog
ICAgIH0KIH0KLSAgICAKKwogdm9pZCBTdG9yYWdlQXJlYUltcGw6OnN5bmMoKQogewogICAgIEFT
U0VSVCghbV9pc1NodXRkb3duKTsKICAgICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKLSAg
ICAKKwogICAgIGlmIChtX3N0b3JhZ2VBcmVhU3luYykKICAgICAgICAgbV9zdG9yYWdlQXJlYVN5
bmMtPnNjaGVkdWxlU3luYygpOwogfQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgU3RvcmFnZUFy
ZWFJbXBsOjpzZXNzaW9uQ2hhbmdlZChib29sIGlzTmV3U2Vzc2lvblBlcnNpc3RlbnQpCiAgICAg
bV9zdG9yYWdlTWFwLmNsZWFyKCk7CiAKICAgICBpZiAoaXNOZXdTZXNzaW9uUGVyc2lzdGVudCAm
JiAhbV9zdG9yYWdlQXJlYVN5bmMgJiYgbV9zdG9yYWdlU3luY01hbmFnZXIpIHsKLSAgICAgICAg
bV9zdG9yYWdlQXJlYVN5bmMgPSBTdG9yYWdlQXJlYVN5bmM6OmNyZWF0ZShtX3N0b3JhZ2VTeW5j
TWFuYWdlci5nZXQoKSwgKnRoaXMsIG1fc2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVy
KCkpOworICAgICAgICBtX3N0b3JhZ2VBcmVhU3luYyA9IFN0b3JhZ2VBcmVhU3luYzo6Y3JlYXRl
KG1fc3RvcmFnZVN5bmNNYW5hZ2VyLmdldCgpLCAqdGhpcywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0
YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDNhYjNi
YzU1NjU0NDdmMzYwY2FlMGVkNzk0OTg2ZjRjNDFmODU0ZGMuLjU1MjIwODRhNzgzOTdjMjQ2MTg5
MGU0YzMxMDJhODY5YTgzYTI4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgU3RvcmFnZUFyZWFTeW5j
OwogCiBjbGFzcyBTdG9yYWdlQXJlYUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZUFyZWEg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZUFyZWFJbXBsPiBjcmVhdGUoV2ViQ29y
ZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFJlZlB0
cjxXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI+JiYsIHVuc2lnbmVkIHF1b3RhKTsKKyAgICBz
dGF0aWMgUmVmPFN0b3JhZ2VBcmVhSW1wbD4gY3JlYXRlKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlU3lu
Y01hbmFnZXI+JiYsIHVuc2lnbmVkIHF1b3RhKTsKICAgICB2aXJ0dWFsIH5TdG9yYWdlQXJlYUlt
cGwoKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIG92ZXJyaWRlOwpAQCAtNzYsNyArNzYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXNzaW9uQ2hhbmdlZChib29sIGlzTmV3U2Vzc2lvblBlcnNp
c3RlbnQpOwogCiBwcml2YXRlOgotICAgIFN0b3JhZ2VBcmVhSW1wbChXZWJDb3JlOjpTdG9yYWdl
VHlwZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgUmVmUHRyPFdlYkNvcmU6
OlN0b3JhZ2VTeW5jTWFuYWdlcj4mJiwgdW5zaWduZWQgcXVvdGEpOworICAgIFN0b3JhZ2VBcmVh
SW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4m
LCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyPiYmLCB1bnNpZ25lZCBxdW90YSk7
CiAgICAgZXhwbGljaXQgU3RvcmFnZUFyZWFJbXBsKGNvbnN0IFN0b3JhZ2VBcmVhSW1wbCYpOwog
CiAgICAgdm9pZCBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKSBjb25zdDsKQEAgLTg1LDcgKzg1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBX
ZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUpOwogCiAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGUg
bV9zdG9yYWdlVHlwZTsKLSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgbV9zZWN1cml0
eU9yaWdpbjsKKyAgICBSZWY8Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJp
dHlPcmlnaW47CiAgICAgV2ViQ29yZTo6U3RvcmFnZU1hcCBtX3N0b3JhZ2VNYXA7CiAKICAgICBS
ZWZQdHI8U3RvcmFnZUFyZWFTeW5jPiBtX3N0b3JhZ2VBcmVhU3luYzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IGE3
OGQxZmY1YjgyNDYzYjgyN2FhNzYxZjVhZTJiOTQ3MzE4YzY5YzguLjRlNzEzMjNhOTcwMTcwZTg4
YTA0MTU4ODhkYWQyZmJlOWU2NjIwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VTeW5jTWFuYWdlci5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU3RvcmFnZVR5cGUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMTAy
LDE3ICsxMDMsMTQgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
Ojpjb3B5KFBhZ2UmKQogICAgIHJldHVybiBXVEZNb3ZlKG5ld05hbWVzcGFjZSk7CiB9CiAKLVJl
ZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQorUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKIAot
ICAgIGlmIChSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFy
ZWFNYXAuZ2V0KG9yaWdpbikpCi0gICAgICAgIHJldHVybiBzdG9yYWdlQXJlYS5yZWxlYXNlTm9u
TnVsbCgpOwotCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRl
KG1fc3RvcmFnZVR5cGUsIG9yaWdpbiwgbV9zeW5jTWFuYWdlci5nZXQoKSwgbV9xdW90YSk7Ci0g
ICAgbV9zdG9yYWdlQXJlYU1hcC5zZXQob3JpZ2luLCBzdG9yYWdlQXJlYS5wdHIoKSk7Ci0gICAg
cmV0dXJuIFdURk1vdmUoc3RvcmFnZUFyZWEpOworICAgIHJldHVybiAqbV9zdG9yYWdlQXJlYU1h
cC5lbnN1cmUob3JpZ2luLmRhdGEoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVh
SW1wbDo6Y3JlYXRlKG1fc3RvcmFnZVR5cGUsIG9yaWdpbiwgbV9zeW5jTWFuYWdlci5nZXQoKSwg
bV9xdW90YSk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IDQ5NWM0NDI2Y2U0OTE0ZjNmOGZkZWQ5MDM1M2Jk
YjVlNjQ3YWI4ZmMuLjYxM2VmMzk0OTM2MWUxMmJkYzY3ODdjYzAwMDcxNTQzNDMxNDZjOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTdG9yYWdl
QXJlYUltcGw7CiAKLWNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2UgeworY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5z
aWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1l
c3BhY2VJbXBsPiBnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBTdHJpbmcm
IGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKTsKQEAgLTU0LDE0
ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jKCk7CiAgICAgdm9pZCBjbG9zZUlkbGVM
b2NhbFN0b3JhZ2VEYXRhYmFzZXMoKTsKIAotICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0gICAgdm9pZCBzZXRTZXNz
aW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEKSBvdmVycmlkZTsKKyAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQorICAg
IHZvaWQgc2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCkgZmluYWw7CiAKIHBy
aXZhdGU6CiAgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNv
bnN0IFN0cmluZyYgcGF0aCwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKTsKIAotICAg
IFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7Ci0gICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNv
cHkoV2ViQ29yZTo6UGFnZSYgbmV3UGFnZSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0
b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGZp
bmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UmIG5ld1Bh
Z2UpIGZpbmFsOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSwgUmVmUHRyPFN0b3JhZ2VBcmVhSW1wbD4+IFN0b3JhZ2VBcmVhTWFwOwogICAgIFN0b3Jh
Z2VBcmVhTWFwIG1fc3RvcmFnZUFyZWFNYXA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452669</attachid>
            <date>2022-02-19 20:42:01 -0800</date>
            <delta_ts>2022-02-19 23:13:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236871-20220219204155.patch</filename>
            <type>text/plain</type>
            <size>37444</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNlZDJiMjYyZDEzY2Rm
ZmI4NGI2MmQ0YTVlOTcyZjI2NTdjNjEwMC4uN2Y2NjhlNjBmNTFjN2VlMmE2MDgxYTIyYzQzOGI3
MjYwZDBjODJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIyLTAyLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgRE9NIHN0b3Jh
Z2UgZXZlbnQgZGlzcGF0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNjg3MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpaHVpIExpdS4KKworICAg
ICAgICBNYWRlIHRoZSBmb2xsb3dpbmcgb3B0aW1pemF0aW9uIHRvIERPTSBzdG9yYWdlIGV2ZW50
IGRpc3BhdGNoOgorICAgICAgICAxLiBQYXNzIGEgU2VjdXJpdHlPcmlnaW4gYXJvdW5kIGluc3Rl
YWQgb2YgYSBTZWN1cml0eU9yaWdpbkRhdGEuIE90aGVyd2lzZSwKKyAgICAgICAgICAgZGlzcGF0
Y2hMb2NhbFN0b3JhZ2VFdmVudHMoKSAvIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHMoKSBq
dXN0IGtlZXAKKyAgICAgICAgICAgcmVjb25zdHJ1Y3RpbmcgdGhlIFNlY3VyaXR5T3JpZ2luIGZy
b20gdGhlIFNlY3VyaXR5T3JpZ2luRGF0YSBmb3IgZXZlcnkKKyAgICAgICAgICAgZnJhbWUuCisg
ICAgICAgIDIuIFdoZW4gZ2F0aGVyaW5nIHRoZSBsaXN0IG9mIGZyYW1lcyB3aGVyZSB3ZSBuZWVk
IHRvIGRpc3BhdGNoIHRoZSBzdG9yYWdlCisgICAgICAgICAgIGV2ZW50LCBkaXNjYXJkIHRoZSBv
bmVzIHRoYXQgZG8gbm90IGhhdmUgYSAic3RvcmFnZSIgZXZlbnQgbGlzdGVuZXIuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZl
bnRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNo
RE9NU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OnN0b3JhZ2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2Fs
U3RvcmFnZUV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVy
OjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0Zy
YW1lcyk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmg6CisgICAg
ICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VBcmVhKToKKwogMjAyMi0wMi0xOSAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1JlLWxhbmRpbmddIFByb3ZpZGUgYSBX
ZWJDb3JlIHN1YnNwYWNlSW1wbEZvciB0ZW1wbGF0ZSB0byBtYWtlIGNvZGUgbW9yZSByZWFkYWJs
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggY2M0YmZhNTRhYTczMTJkZmQ5YmQ3MGU0YzcyZWUxM2MyNTkyNTViYS4u
OTBhMjUwNDkyZDhkYWEwNTE3OGExYTgyMmUxZTEwZjkyMDRhOGEwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMi0wMi0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE9wdGltaXplIERPTSBzdG9yYWdlIGV2ZW50IGRpc3BhdGNoCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBTaWh1aSBMaXUuCisKKyAgICAgICAgTWFkZSB0aGUgZm9sbG93aW5nIG9wdGlt
aXphdGlvbiB0byBET00gc3RvcmFnZSBldmVudCBkaXNwYXRjaDoKKyAgICAgICAgMS4gUGFzcyBh
IFNlY3VyaXR5T3JpZ2luIGFyb3VuZCBpbnN0ZWFkIG9mIGEgU2VjdXJpdHlPcmlnaW5EYXRhLiBP
dGhlcndpc2UsCisgICAgICAgICAgIGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzKCkgLyBkaXNw
YXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzKCkganVzdCBrZWVwCisgICAgICAgICAgIHJlY29uc3Ry
dWN0aW5nIHRoZSBTZWN1cml0eU9yaWdpbiBmcm9tIHRoZSBTZWN1cml0eU9yaWdpbkRhdGEgZm9y
IGV2ZXJ5CisgICAgICAgICAgIGZyYW1lLgorICAgICAgICAyLiBXaGVuIGdhdGhlcmluZyB0aGUg
bGlzdCBvZiBmcmFtZXMgd2hlcmUgd2UgbmVlZCB0byBkaXNwYXRjaCB0aGUgc3RvcmFnZQorICAg
ICAgICAgICBldmVudCwgZGlzY2FyZCB0aGUgb25lcyB0aGF0IGRvIG5vdCBoYXZlIGEgInN0b3Jh
Z2UiIGV2ZW50IGxpc3RlbmVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OlN0b3Jh
Z2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6ZnJhbWVzRm9yRXZlbnREaXNwYXRjaGluZyk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdl
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0
b3JhZ2VFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VB
cmVhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaDoKKwogMjAyMi0wMi0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBtYWNDYXRhbHlzdDogV0tXZWJWaWV3IGNyYXNoZXMgd2hlbmV2ZXIgdGhl
IHZpZXcgZnJhbWUgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCAzODJjYmE5ODI0OTIw
MTkyY2JiMWEzYmY2Mzg2NWE4NmFhNzhmODQ5Li5kNmE3ZmRiN2Y5YzhhOWU0YmIyMDhhYWNiMTY5
YTU5YWI1ODg2ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIy
LTAyLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1p
emUgRE9NIHN0b3JhZ2UgZXZlbnQgZGlzcGF0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg3MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpaHVp
IExpdS4KKworICAgICAgICBNYWRlIHRoZSBmb2xsb3dpbmcgb3B0aW1pemF0aW9uIHRvIERPTSBz
dG9yYWdlIGV2ZW50IGRpc3BhdGNoOgorICAgICAgICAxLiBQYXNzIGEgU2VjdXJpdHlPcmlnaW4g
YXJvdW5kIGluc3RlYWQgb2YgYSBTZWN1cml0eU9yaWdpbkRhdGEuIE90aGVyd2lzZSwKKyAgICAg
ICAgICAgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHMoKSAvIGRpc3BhdGNoU2Vzc2lvblN0b3Jh
Z2VFdmVudHMoKSBqdXN0IGtlZXAKKyAgICAgICAgICAgcmVjb25zdHJ1Y3RpbmcgdGhlIFNlY3Vy
aXR5T3JpZ2luIGZyb20gdGhlIFNlY3VyaXR5T3JpZ2luRGF0YSBmb3IgZXZlcnkKKyAgICAgICAg
ICAgZnJhbWUuCisgICAgICAgIDIuIFdoZW4gZ2F0aGVyaW5nIHRoZSBsaXN0IG9mIGZyYW1lcyB3
aGVyZSB3ZSBuZWVkIHRvIGRpc3BhdGNoIHRoZSBzdG9yYWdlCisgICAgICAgICAgIGV2ZW50LCBk
aXNjYXJkIHRoZSBvbmVzIHRoYXQgZG8gbm90IGhhdmUgYSAic3RvcmFnZSIgZXZlbnQgbGlzdGVu
ZXIuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YUltcGw6OmNsZWFyRm9yT3JpZ2luRGVsZXRpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
QXJlYUltcGw6OnN5bmMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnNlc3Np
b25DaGFuZ2VkKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oOgorICAgICAg
ICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEpOgorICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuaDoKKwogMjAyMi0wMi0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYW5hZ2UgSW5kZXhlZERCIHN0b3JhZ2UgYnkgb3JpZ2lu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCmluZGV4IGY5NmY0MGNmMzgzOTUxNTJlYzMzYzQ4YzdhMGM0NzIzZGZhMGM1NzMu
LmYxODY3MTI5OGEyNzE0ZmRkOTBiYWM3NDgyYzhlYzYzMGQ3YmMwNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBA
IC0xMDA3LDcgKzEwMDcsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3Bl
bkRhdGFiYXNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZQogICAgICAgICBkYXRh
YmFzZUFnZW50LT5kaWRPcGVuRGF0YWJhc2UoZGF0YWJhc2UpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSBz
dG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQordm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUg
c3RvcmFnZVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKIHsKICAg
ICBpZiAoYXV0byogZG9tU3RvcmFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVk
RE9NU3RvcmFnZUFnZW50KCkpCiAgICAgICAgIGRvbVN0b3JhZ2VBZ2VudC0+ZGlkRGlzcGF0Y2hE
T01TdG9yYWdlRXZlbnQoa2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHN0b3JhZ2VUeXBlLCBzZWN1
cml0eU9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYjYxZjZhMGRjYWIyOTZiYmFjYmMxMjVjYWFjMDM1ODZl
OWMxOTdmMC4uNjVkNTE3MDAxMmRkMzFkYzkzOTY5YTI4ODA0NDcwNmE2MjI1M2FjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aApAQCAtMjc0LDcgKzI3NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGRpZE9wZW5E
YXRhYmFzZShEYXRhYmFzZSYpOwogCi0gICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hET01TdG9y
YWdlRXZlbnQoUGFnZSYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVl
LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChQYWdlJiwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUsIFN0b3JhZ2VUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogCiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkV2FpdEZvckRlYnVnZ2VyT25TdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7
CiAgICAgc3RhdGljIHZvaWQgd29ya2VyU3RhcnRlZChXb3JrZXJJbnNwZWN0b3JQcm94eSYpOwpA
QCAtNDc3LDcgKzQ3Nyw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRGF0
YWJhc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEYXRhYmFzZSYpOwogCi0gICAgc3RhdGlj
IHZvaWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5n
JiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKik7CisgICAgc3RhdGljIHZv
aWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBu
ZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7CiAKICAgICBzdGF0
aWMgYm9vbCBzaG91bGRXYWl0Rm9yRGVidWdnZXJPblN0YXJ0SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJik7CiAgICAgc3RhdGljIHZvaWQgd29ya2VyU3RhcnRlZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIFdvcmtlckluc3BlY3RvclByb3h5Jik7CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZShEYXRhYmFz
ZSYgZGF0YWJhc2UpCiAgICAgICAgIGRpZE9wZW5EYXRhYmFzZUltcGwoKmFnZW50cywgZGF0YWJh
c2UpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3Bh
dGNoRE9NU3RvcmFnZUV2ZW50KFBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSBzdG9y
YWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChQYWdlJiBw
YWdlLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3Ry
aW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
dm9pZCgpKTsKICAgICBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudEltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50cyhwYWdlKSwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHN0b3JhZ2VUeXBlLCBzZWN1
cml0eU9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggNzU4N2MxNzJlNTdiZmZi
MGE1MmJmODFmZGUwMzlkNzlhMDVhMTBjZi4uNDFkM2UxNWU5MTk2N2JjNzdkMDAxYzM1NWI4OWMz
MWQ4NTM5MGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtMTY4LDE4ICsxNjgsMTgg
QEAgU3RyaW5nIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFN0b3JhZ2UmIHN0
b3JhZ2UpCiAgICAgQVNTRVJUKHdpbmRvdyk7CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwogICAgIGJvb2wgaXNMb2Nh
bFN0b3JhZ2UgPSB3aW5kb3ctPm9wdGlvbmFsTG9jYWxTdG9yYWdlKCkgPT0gJnN0b3JhZ2U7Ci0g
ICAgcmV0dXJuIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKHNlY3VyaXR5T3Jp
Z2luLnB0cigpLCBpc0xvY2FsU3RvcmFnZSktPnRvSlNPTlN0cmluZygpOworICAgIHJldHVybiBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbiwgaXNMb2Nh
bFN0b3JhZ2UpLT50b0pTT05TdHJpbmcoKTsKIH0KIAotUmVmPFByb3RvY29sOjpET01TdG9yYWdl
OjpTdG9yYWdlSWQ+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgYm9vbCBpc0xvY2FsU3RvcmFnZSkKK1JlZjxQcm90b2Nv
bDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3Jh
Z2VJZChjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIGJvb2wgaXNMb2NhbFN0
b3JhZ2UpCiB7CiAgICAgcmV0dXJuIFByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OmNy
ZWF0ZSgpCi0gICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbi0+dG9SYXdT
dHJpbmcoKSkKKyAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luLnRvUmF3
U3RyaW5nKCkpCiAgICAgICAgIC5zZXRJc0xvY2FsU3RvcmFnZShpc0xvY2FsU3RvcmFnZSkKICAg
ICAgICAgLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRp
ZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlw
ZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQordm9pZCBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlw
ZSBzdG9yYWdlVHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogewog
ICAgIGF1dG8gaWQgPSBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChzZWN1cml0
eU9yaWdpbiwgc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkxvY2FsKTsKIApAQCAtMjE0LDcg
KzIxNCw3IEBAIFJlZlB0cjxTdG9yYWdlQXJlYT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpm
aW5kU3RvcmFnZUFyZWEoUHJvdG9jb2w6OkVycm9yU3RyCiAgICAgfQogCiAgICAgaWYgKCEqaXNM
b2NhbFN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBtX2luc3BlY3RlZFBhZ2Uuc2Vzc2lvblN0b3Jh
Z2UoKS0+c3RvcmFnZUFyZWEodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG1faW5zcGVjdGVkUGFnZS5zZXNzaW9uU3RvcmFn
ZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSk7CiAgICAgcmV0dXJuIG1faW5zcGVjdGVkUGFnZS5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIo
KS5sb2NhbFN0b3JhZ2VBcmVhKCp0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oCmluZGV4IDMzODZjYjg3OWYxMTc4YzFiOTYzNTc3NWM5YTBlODY0ZjViOTRj
NTIuLmUwY2QyYWYxNjU4OWNlMTM3Yzc5ZmE4OTZhNTVlZTQ2MWI3N2EzMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuaApAQCAtNjUsMTEgKzY1LDExIEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGNsZWFyRE9NU3RvcmFnZUl0ZW1zKFJlZjxKU09O
OjpPYmplY3Q+JiYgc3RvcmFnZUlkKTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bgotICAgIHZvaWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VU
eXBlLCBTZWN1cml0eU9yaWdpbiopOworICAgIHZvaWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZl
bnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmlu
ZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogCiAgICAg
Ly8gQ29tbWFuZExpbmVBUEkKICAgICBzdGF0aWMgU3RyaW5nIHN0b3JhZ2VJZChTdG9yYWdlJik7
Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdl
SWQ+IHN0b3JhZ2VJZChTZWN1cml0eU9yaWdpbiosIGJvb2wgaXNMb2NhbFN0b3JhZ2UpOworICAg
IHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBz
dG9yYWdlSWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBib29sIGlzTG9jYWxTdG9yYWdlKTsKIAog
cHJpdmF0ZToKICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdlQXJlYShJbnNwZWN0
b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIFJlZjxKU09OOjpPYmplY3Q+JiYgc3RvcmFnZUlk
LCBGcmFtZSomKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggODM1
OWRmNzgyMGM3NjdhNTljYjQ1MTkxNWVkNWZhMTRlMWFmYjkzNi4uNDYyMjU0NzFmZGQwYTc5N2Rj
Y2NkODE1ZDRhYzMxNWY5YjBhNTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTQ5OCw3ICs0OTgsNyBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlciBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgICAgICB7
CiAgICAgICAgIH0KICAgICBwcml2YXRlOgotICAgICAgICBSZWY8U3RvcmFnZUFyZWE+IHN0b3Jh
Z2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KKyAgICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBzdG9y
YWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbiYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KICAgICAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNv
cHkoUGFnZSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNw
YWNlIHsgbV9zZXNzaW9uSUQgfSk7IH0KICAgICAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICAgICAgdm9pZCBzZXRT
ZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgZmluYWwgeyBtX3Nl
c3Npb25JRCA9IHNlc3Npb25JRDsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAy
MjRhN2I3YjIxZjUyNWZlMTgxNmQ0NGFjMTUwYWFhYTYyNzY5Nzg4Li45OWQ0MmMxZDViODJhNzJl
Zjc3ZjIwM2FhNTAyZDg2MGQ3NTc3ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBA
IC04MzAsNyArODMwLDcgQEAgRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6c2Vzc2lv
blN0b3JhZ2UoKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBhdXRvIHN0b3JhZ2VBcmVhID0gcGFnZS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEo
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKKyAgICBhdXRvIHN0b3JhZ2VBcmVh
ID0gcGFnZS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEoZG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCkpOwogICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSBTdG9yYWdlOjpjcmVhdGUoKnRoaXMs
IFdURk1vdmUoc3RvcmFnZUFyZWEpKTsKICAgICByZXR1cm4gbV9zZXNzaW9uU3RvcmFnZS5nZXQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlz
cGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNo
ZXIuY3BwCmluZGV4IGQ1YTMwYmVhYTgzM2M1NzM5YmJhYzhhN2NkZGUwMWUwNzQyYTQwZTQuLjEz
NzVjMGQ5ZWE5OGFiNjljODM2NTU0ZTY4OTRhYmY2YmVkMGI1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtNDAsNDkgKzQw
LDQ5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTdG9yYWdlRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBGcmFtZSogc291cmNlRnJhbWUpCit2b2lkIFN0
b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHMoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgRnJhbWUqIHNvdXJjZUZy
YW1lKQogewogICAgIFBhZ2UqIHBhZ2UgPSBzb3VyY2VGcmFtZS0+cGFnZSgpOwogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1l
czsKKyAgICBWZWN0b3I8UmVmPEZyYW1lPj4gZnJhbWVzOwogCiAgICAgLy8gU2VuZCBldmVudHMg
b25seSB0byBvdXIgcGFnZS4KICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZwYWdlLT5tYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewotICAg
ICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBpZiAoYXV0byogd2luZG93ID0g
ZnJhbWUtPndpbmRvdygpOyAhd2luZG93IHx8ICF3aW5kb3ctPmhhc0V2ZW50TGlzdGVuZXJzKGV2
ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKS5lcXVhbChzZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpLnB0cigpKSkKLSAg
ICAgICAgICAgIGZyYW1lcy5hcHBlbmQoZnJhbWUpOworICAgICAgICBpZiAoc291cmNlRnJhbWUg
IT0gZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuZXF1YWwoJnNl
Y3VyaXR5T3JpZ2luKSkKKyAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoKmZyYW1lKTsKICAgICB9
CiAKICAgICBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMoKnBhZ2UsIGZyYW1l
cywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KS5zdHJpbmcoKSwgc2VjdXJpdHlPcmlnaW4pOwogfQogCi12b2lkIFN0b3JhZ2VFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBGcmFtZSogc291cmNlRnJhbWUpCit2b2lkIFN0
b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVl
LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIEZyYW1lKiBzb3VyY2VGcmFt
ZSkKIHsKICAgICBQYWdlKiBwYWdlID0gc291cmNlRnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFtZXM7
CisgICAgVmVjdG9yPFJlZjxGcmFtZT4+IGZyYW1lczsKIAogICAgIC8vIFNlbmQgZXZlbnRzIHRv
IGV2ZXJ5IHBhZ2UuCiAgICAgZm9yIChhdXRvJiBwYWdlSW5Hcm91cCA6IHBhZ2UtPmdyb3VwKCku
cGFnZXMoKSkgewogICAgICAgICBmb3IgKGF1dG8qIGZyYW1lID0gJnBhZ2VJbkdyb3VwLm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0g
ICAgICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgaWYgKGF1dG8q
IHdpbmRvdyA9IGZyYW1lLT53aW5kb3coKTsgIXdpbmRvdyB8fCAhd2luZG93LT5oYXNFdmVudExp
c3RlbmVycyhldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50KSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBmcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5lcXVhbChzZWN1cml0eU9yaWdpbi5zZWN1cml0eU9y
aWdpbigpLnB0cigpKSkKLSAgICAgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKGZyYW1lKTsKKyAg
ICAgICAgICAgIGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS5lcXVhbCgmc2VjdXJpdHlPcmlnaW4pKQorICAgICAgICAgICAgICAg
IGZyYW1lcy5hcHBlbmQoKmZyYW1lKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGRpc3BhdGNo
TG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMocGFnZS0+Z3JvdXAoKSwgZnJhbWVzLCBrZXksIG9s
ZFZhbHVlLCBuZXdWYWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygp
LCBzZWN1cml0eU9yaWdpbik7CiB9CiAKLXZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIFN0b3JhZ2VFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlJiBw
YWdlLCBjb25zdCBWZWN0b3I8UmVmPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChwYWdl
LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgU3RvcmFnZVR5cGU6OlNlc3Npb24sIHNlY3VyaXR5
T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkucHRyKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQocGFnZSwga2V5LCBvbGRWYWx1ZSwgbmV3
VmFsdWUsIFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBzZWN1cml0eU9yaWdpbik7CiAKICAgICBmb3Ig
KGF1dG8mIGZyYW1lIDogZnJhbWVzKSB7CiAgICAgICAgIFJlZlB0ciBkb2N1bWVudCA9IGZyYW1l
LT5kb2N1bWVudCgpOwpAQCAtOTIsMTAgKzkyLDEwIEBAIHZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2UmIHBhZ2UsIGNv
CiAgICAgfQogfQogCi12b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxT
dG9yYWdlRXZlbnRzVG9GcmFtZXMoUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBv
bGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIFN0b3JhZ2VFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMoUGFnZUdyb3VwJiBw
YWdlR3JvdXAsIGNvbnN0IFZlY3RvcjxSZWY8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKIHsK
ICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlR3JvdXAucGFnZXMoKSkKLSAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChwYWdlLCBrZXks
IG9sZFZhbHVlLCBuZXdWYWx1ZSwgU3RvcmFnZVR5cGU6OkxvY2FsLCBzZWN1cml0eU9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpLnB0cigpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChwYWdlLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1
ZSwgU3RvcmFnZVR5cGU6OkxvY2FsLCBzZWN1cml0eU9yaWdpbik7CiAKICAgICBmb3IgKGF1dG8m
IGZyYW1lIDogZnJhbWVzKSB7CiAgICAgICAgIFJlZlB0ciBkb2N1bWVudCA9IGZyYW1lLT5kb2N1
bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnRE
aXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNo
ZXIuaAppbmRleCA4Y2M0ZDBiMTUyNWZmNWE4MTg5MDg5YWI3NGU0NjgxZDFlZTI3YWY0Li41OTJk
NjczNjBkOGNhZDUyZjMzZjgzZjg2ZGQ5MTg4NjkzNWY0OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuaApAQCAtMzYsMTUgKzM2LDE1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBh
Z2VHcm91cDsKLXN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CitjbGFzcyBTZWN1cml0eU9yaWdp
bjsKIAogY2xhc3MgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50cyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1
ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50cyhjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRz
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIEZyYW1lKiBzb3VyY2VGcmFtZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHMo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYg
bmV3VmFsdWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVu
dHNUb0ZyYW1lcyhQYWdlJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxGcmFtZT4+JiBmcmFtZXMsIGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNU
b0ZyYW1lcyhQYWdlR3JvdXAmLCBjb25zdCBWZWN0b3I8UmVmUHRyPEZyYW1lPj4mIGZyYW1lcywg
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYg
bmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZl
bnRzVG9GcmFtZXMoUGFnZSYsIGNvbnN0IFZlY3RvcjxSZWY8RnJhbWU+PiYgZnJhbWVzLCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1l
cyhQYWdlR3JvdXAmLCBjb25zdCBWZWN0b3I8UmVmPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogcHJpdmF0ZToKICAg
ICAvLyBEbyBub3QgaW5zdGFudGlhdGUuCiAgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA3MWM1ZGI1MmJh
ZjhhYmI4YzJhN2U4Y2U1NzJhZGI4OGU0NGJkZWI2Li4zOTQ5NTBlNzIzZTM3NjM3ZGRhMzRiYzYy
ODcyMGFlMGE2ODIzNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2UuaApAQCAtMzUsMTMgKzM1LDEzIEBAIGNsYXNzIFNlc3Npb25JRDsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUGFnZTsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU3RvcmFn
ZUFyZWE7Ci1zdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBjbGFzcyBTdG9yYWdlTmFtZXNw
YWNlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZT4gewogcHVibGljOgogICAg
IHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCBSZWY8
U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsK
KyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlP
cmlnaW4mKSA9IDA7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IHZhbGlkIGZvciBzZXNz
aW9uIHN0b3JhZ2UgYW5kIHNob3VsZCBwcm9iYWJseSBiZSBtb3ZlZCB0byBhIHN1YmNsYXNzLgog
ICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSYgbmV3UGFnZSkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuY3BwCmluZGV4IDVjMGViNDM2Y2MzNTMyYzZkYTU3ZTFmMGM5ZDhlODRiNDQ0NTgyY2QuLjI2
YmFmNGYwNGQ3M2RiYTc5NWU0ZWY0MTM5MmY5OTUzZDdmZWIwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTYwLDcg
KzYwLDcgQEAgUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2Fs
U3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGVsc2UKICAgICAgICAgc3RvcmFn
ZU5hbWVzcGFjZSA9ICZsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoZG9jdW1lbnQucGFnZSgpLT5zZXNz
aW9uSUQoKSk7CiAKLSAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZUFyZWEoZG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOworICAgIHJldHVybiBzdG9yYWdlTmFtZXNw
YWNlLT5zdG9yYWdlQXJlYShkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAogU3RvcmFn
ZU5hbWVzcGFjZSYgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDVhNDE3YzRmYzFl
ZTQ2ZmI2NWI4NjE1MDJjZTZjYmFmZWJhZWY0OGIuLmU4OTJmMmU2MzIzMGI4ZmYyZWM3OWMyYTE4
ODkzYjRmNmI0YjdjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CkBAIC01MCw3ICs1MSw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1TdG9yYWdlQXJlYU1hcDo6U3Rv
cmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwmIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKK1N0b3JhZ2VBcmVhTWFw
OjpTdG9yYWdlQXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCYgc3RvcmFnZU5hbWVzcGFjZSwg
UmVmPGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2luKQogICAg
IDogbV9pZGVudGlmaWVyKFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAg
ICAsIG1fbmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2UpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2lu
KFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKQpAQCAtMjk1LDE1ICsyOTYsMTUgQEAgdm9pZCBTdG9y
YWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSh1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikKICAgICBy
ZXNldFZhbHVlcygpOwogfQogCi1zdGF0aWMgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lc0Zv
ckV2ZW50RGlzcGF0Y2hpbmcoUGFnZSYgcGFnZSwgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgU3Rv
cmFnZVR5cGUgc3RvcmFnZVR5cGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBs
SWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElEKQorc3RhdGljIFZlY3RvcjxSZWY8RnJhbWU+
PiBmcmFtZXNGb3JFdmVudERpc3BhdGNoaW5nKFBhZ2UmIHBhZ2UsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4sIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiBzdG9yYWdlQXJlYUltcGxJRCkKIHsKLSAgICBW
ZWN0b3I8UmVmUHRyPEZyYW1lPj4gZnJhbWVzOworICAgIFZlY3RvcjxSZWY8RnJhbWU+PiBmcmFt
ZXM7CiAgICAgcGFnZS5mb3JFYWNoRG9jdW1lbnQoWyZdKGF1dG8mIGRvY3VtZW50KSB7CiAgICAg
ICAgIGlmICghZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5lcXVhbCgmb3JpZ2luKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvKiB3aW5kb3cgPSBkb2N1bWVudC5kb21XaW5k
b3coKTsKLSAgICAgICAgaWYgKCF3aW5kb3cpCisgICAgICAgIGlmICghd2luZG93IHx8ICF3aW5k
b3ctPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAgU3RvcmFnZSogc3RvcmFnZSA9IG51bGxw
dHI7CkBAIC0zMjcsNyArMzI4LDcgQEAgc3RhdGljIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFt
ZXNGb3JFdmVudERpc3BhdGNoaW5nKFBhZ2UmIHBhZ2UsIFNlY3VyaXR5T3JpZ2kKICAgICAgICAg
fQogICAgICAgIAogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSAK
LSAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoZnJhbWUpOworICAgICAgICAgICAgZnJhbWVzLmFw
cGVuZCgqZnJhbWUpOwogICAgIH0pOwogICAgIHJldHVybiBmcmFtZXM7CiB9CkBAIC0zNDUsMjEg
KzM0NiwyMSBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZl
bnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYQogICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvIGZyYW1lcyA9IGZyYW1lc0ZvckV2ZW50RGlzcGF0Y2hpbmcoKnBhZ2UsIG1fc2VjdXJp
dHlPcmlnaW4sIFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBzdG9yYWdlQXJlYUltcGxJRCk7Ci0gICAg
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJh
bWVzKCpwYWdlLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIG1f
c2VjdXJpdHlPcmlnaW4tPmRhdGEoKSk7CisgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKCpwYWdlLCBmcmFtZXMsIGtleSwgb2xk
VmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIG1fc2VjdXJpdHlPcmlnaW4pOwogfQogCiB2b2lk
IFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgQVNTRVJUKGlzTG9jYWxTdG9y
YWdlKHR5cGUoKSkpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lczsKKyAgICBW
ZWN0b3I8UmVmPEZyYW1lPj4gZnJhbWVzOwogCiAgICAgLy8gTmFtZXNwYWNlIElEcyBmb3IgbG9j
YWwgc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBjdXJyZW50bHkgZXF1aXZhbGVudCB0byB3ZWIgcGFn
ZSBncm91cCBJRHMuCiAgICAgYXV0byYgcGFnZUdyb3VwID0gKldlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYlBhZ2VHcm91cChtX25hbWVzcGFjZS5wYWdlR3JvdXBJRCgpKS0+Y29yZVBhZ2VHcm91
cCgpOwogICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VHcm91cC5wYWdlcygpKQogICAgICAgICBm
cmFtZXMuYXBwZW5kVmVjdG9yKGZyYW1lc0ZvckV2ZW50RGlzcGF0Y2hpbmcocGFnZSwgbV9zZWN1
cml0eU9yaWdpbiwgU3RvcmFnZVR5cGU6OkxvY2FsLCBzdG9yYWdlQXJlYUltcGxJRCkpOwogCi0g
ICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0Zy
YW1lcyhwYWdlR3JvdXAsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmlu
ZywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKKyAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVy
OjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwgZnJhbWVzLCBr
ZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBtX3NlY3VyaXR5T3JpZ2luKTsKIH0K
IAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6c2VuZENvbm5lY3RNZXNzYWdlKFNlbmRNb2RlIG1vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAuaAppbmRleCA5NjUzZjc2NmZkMzZhNWY2MjhmMjNmZDc5MTFlZWVmNTkxNmM4ZDU3Li41
MTNlNDBkOTAwOWJlNTdlMzI3ZWEwZGI1MGI1MmEzYmM4MWJiZDdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKQEAgLTUw
LDcgKzUwLDcgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGw7CiBjbGFzcyBTdG9yYWdlQXJl
YU1hcCBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVz
cGFjZUltcGwmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYpOworICAgIFN0b3JhZ2VB
cmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiwgUmVmPGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiYmKTsKICAgICB+U3RvcmFnZUFyZWFNYXAoKTsKIAogICAgIFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTEwMCw3ICsxMDAsNyBA
QCBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAg
ICAgdWludDY0X3QgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyIHsgMCB9OwogICAgIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsJiBtX25hbWVzcGFjZTsKLSAgICBSZWY8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CisgICAgUmVmPGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTdG9yYWdlTWFwPiBtX21hcDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSWRlbnRp
Zmllcj4gbV9yZW1vdGVBcmVhSWRlbnRpZmllcjsKICAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+
IG1fcGVuZGluZ1ZhbHVlQ2hhbmdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCBkZWI2
YTM0MzNjYWJhZmFmN2RjYWE1NjBjZGMzYTE1ZTNhY2E3ZTcyLi5lMjEyN2ZlZTYyNTA5ZmU1NTY5
ZDgzMTg0NjlmM2I4ZWM4ZDUwOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC0xMDAs
MTAgKzEwMCwxMCBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpkZXN0cm95U3RvcmFnZUFy
ZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKICAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUo
bWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAotUmVmPFN0b3JhZ2VBcmVhPiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbkRhdGEpCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0g
ICAgYXV0byYgbWFwID0gbV9zdG9yYWdlQXJlYU1hcHMuZW5zdXJlKHNlY3VyaXR5T3JpZ2luRGF0
YSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U3RvcmFnZUFyZWFNYXA+KCp0aGlz
LCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byYgbWFwID0g
bV9zdG9yYWdlQXJlYU1hcHMuZW5zdXJlKHNlY3VyaXR5T3JpZ2luLmRhdGEoKSwgWyZdIHsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U3RvcmFnZUFyZWFNYXA+KCp0aGlzLCBzZWN1cml0eU9y
aWdpbik7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBTdG9yYWdlQXJlYUlt
cGw6OmNyZWF0ZSgqbWFwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IDk1YTEyYzMwYmM5
ZDBjNjQzNzI2ZTBiMTAwYmFlZjk3NmEwOWJlNjQuLjRhMTMxOTc5ZWMyMDllZDc4NTViOWQ3YTRi
Y2JlYzM3YjI3OTljMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtNjcsNyArNjcsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlLCBJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFn
ZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7CisgICAg
UmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYpIGZpbmFsOwogICAgIHVpbnQ2NF90IHN0b3JhZ2VBcmVhTWFwQ291bnRGb3JU
ZXN0aW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcHMuc2l6ZSgpOyB9
CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IHZhbGlkIGZvciBzZXNzaW9uIHN0b3JhZ2Ug
YW5kIHNob3VsZCBwcm9iYWJseSBiZSBtb3ZlZCB0byBhIHN1YmNsYXNzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAppbmRleCAwYzE2MzVlZTYz
MDdhZjQ0ZDM0NDY2YjQ0ZjFmN2ZhNzc3Mjk1YThlLi5iZmFjZDQ3YTZmNDcxMzM2MDUzZTk3MDVi
ZDNkYWMyMTk0OGY5YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmNwcApAQCAtNDQsNyArNDQsNyBAQCBTdG9yYWdlQXJlYUltcGw6On5TdG9y
YWdlQXJlYUltcGwoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CiAKLWlubGluZSBT
dG9yYWdlQXJlYUltcGw6OlN0b3JhZ2VBcmVhSW1wbChTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIFJlZlB0cjxTdG9yYWdlU3luY01hbmFn
ZXI+JiYgc3luY01hbmFnZXIsIHVuc2lnbmVkIHF1b3RhKQoraW5saW5lIFN0b3JhZ2VBcmVhSW1w
bDo6U3RvcmFnZUFyZWFJbXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luLCBSZWZQdHI8U3RvcmFnZVN5bmNNYW5hZ2VyPiYmIHN5bmNNYW5hZ2Vy
LCB1bnNpZ25lZCBxdW90YSkKICAgICA6IG1fc3RvcmFnZVR5cGUoc3RvcmFnZVR5cGUpCiAgICAg
LCBtX3NlY3VyaXR5T3JpZ2luKG9yaWdpbikKICAgICAsIG1fc3RvcmFnZU1hcChxdW90YSkKQEAg
LTUzLDE5ICs1MywxOSBAQCBpbmxpbmUgU3RvcmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJlYUltcGwo
U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIGNvbnN0IFNlY3VyaXR5TwogICAgICwgbV9jbG9zZURh
dGFiYXNlVGltZXIoKnRoaXMsICZTdG9yYWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VUaW1lckZp
cmVkKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgCi0gICAgLy8gQWNjZXNz
aW5nIHRoZSBzaGFyZWQgZ2xvYmFsIFN0b3JhZ2VUcmFja2VyIHdoZW4gYSBTdG9yYWdlQXJlYSBp
cyBjcmVhdGVkIAorCisgICAgLy8gQWNjZXNzaW5nIHRoZSBzaGFyZWQgZ2xvYmFsIFN0b3JhZ2VU
cmFja2VyIHdoZW4gYSBTdG9yYWdlQXJlYSBpcyBjcmVhdGVkCiAgICAgLy8gZW5zdXJlcyB0aGF0
IHRoZSB0cmFja2VyIGlzIHByb3Blcmx5IGluaXRpYWxpemVkIGJlZm9yZSBhbnlvbmUgYWN0dWFs
bHkgbmVlZHMgdG8gdXNlIGl0LgogICAgIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCk7CiB9CiAK
LVJlZjxTdG9yYWdlQXJlYUltcGw+IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKFN0b3JhZ2VUeXBl
IHN0b3JhZ2VUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgUmVmUHRyPFN0
b3JhZ2VTeW5jTWFuYWdlcj4mJiBzeW5jTWFuYWdlciwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3Rv
cmFnZUFyZWFJbXBsPiBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShTdG9yYWdlVHlwZSBzdG9yYWdl
VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgUmVmUHRyPFN0b3JhZ2VTeW5jTWFu
YWdlcj4mJiBzeW5jTWFuYWdlciwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgUmVmPFN0b3JhZ2VB
cmVhSW1wbD4gYXJlYSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZUFyZWFJbXBsKHN0b3JhZ2VUeXBl
LCBvcmlnaW4sIFdURk1vdmUoc3luY01hbmFnZXIpLCBxdW90YSkpOwogICAgIC8vIEZJWE1FOiBJ
ZiB0aGVyZSdzIG5vIGJhY2tpbmcgc3RvcmFnZSBmb3IgTG9jYWxTdG9yYWdlLCB0aGUgZGVmYXVs
dCBXZWJLaXQgYmVoYXZpb3Igc2hvdWxkIGJlIHRoYXQgb2YgcHJpdmF0ZSBicm93c2luZywKICAg
ICAvLyBub3Qgc2lsZW50bHkgaWdub3JpbmcgaXQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNTg5NAogICAgIGlmIChhcmVhLT5tX3N0b3JhZ2VTeW5jTWFuYWdlcikg
ewotICAgICAgICBhcmVhLT5tX3N0b3JhZ2VBcmVhU3luYyA9IFN0b3JhZ2VBcmVhU3luYzo6Y3Jl
YXRlKGFyZWEtPm1fc3RvcmFnZVN5bmNNYW5hZ2VyLmdldCgpLCBhcmVhLmNvcHlSZWYoKSwgYXJl
YS0+bV9zZWN1cml0eU9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgICAgIGFyZWEt
Pm1fc3RvcmFnZUFyZWFTeW5jID0gU3RvcmFnZUFyZWFTeW5jOjpjcmVhdGUoYXJlYS0+bV9zdG9y
YWdlU3luY01hbmFnZXIuZ2V0KCksIGFyZWEuY29weVJlZigpLCBhcmVhLT5tX3NlY3VyaXR5T3Jp
Z2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgICAgICBBU1NFUlQoYXJlYS0+
bV9zdG9yYWdlQXJlYVN5bmMpOwogICAgIH0KICAgICByZXR1cm4gYXJlYTsKQEAgLTIwMyw3ICsy
MDMsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xlYXJGb3JPcmlnaW5EZWxldGlvbigpCiB7
CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0
ZSgpOwotICAgIAorCiAgICAgbV9zdG9yYWdlTWFwLmNsZWFyKCk7CiAKICAgICBpZiAobV9zdG9y
YWdlQXJlYVN5bmMpIHsKQEAgLTIxMSwxMiArMjExLDEyIEBAIHZvaWQgU3RvcmFnZUFyZWFJbXBs
OjpjbGVhckZvck9yaWdpbkRlbGV0aW9uKCkKICAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMtPnNj
aGVkdWxlQ2xvc2VEYXRhYmFzZSgpOwogICAgIH0KIH0KLSAgICAKKwogdm9pZCBTdG9yYWdlQXJl
YUltcGw6OnN5bmMoKQogewogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKICAgICBibG9ja1Vu
dGlsSW1wb3J0Q29tcGxldGUoKTsKLSAgICAKKwogICAgIGlmIChtX3N0b3JhZ2VBcmVhU3luYykK
ICAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMtPnNjaGVkdWxlU3luYygpOwogfQpAQCAtMjg3LDcg
KzI4Nyw3IEBAIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpzZXNzaW9uQ2hhbmdlZChib29sIGlzTmV3
U2Vzc2lvblBlcnNpc3RlbnQpCiAgICAgbV9zdG9yYWdlTWFwLmNsZWFyKCk7CiAKICAgICBpZiAo
aXNOZXdTZXNzaW9uUGVyc2lzdGVudCAmJiAhbV9zdG9yYWdlQXJlYVN5bmMgJiYgbV9zdG9yYWdl
U3luY01hbmFnZXIpIHsKLSAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMgPSBTdG9yYWdlQXJlYVN5
bmM6OmNyZWF0ZShtX3N0b3JhZ2VTeW5jTWFuYWdlci5nZXQoKSwgKnRoaXMsIG1fc2VjdXJpdHlP
cmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICBtX3N0b3JhZ2VBcmVhU3luYyA9
IFN0b3JhZ2VBcmVhU3luYzo6Y3JlYXRlKG1fc3RvcmFnZVN5bmNNYW5hZ2VyLmdldCgpLCAqdGhp
cywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5oCmluZGV4IDNhYjNiYzU1NjU0NDdmMzYwY2FlMGVkNzk0OTg2ZjRjNDFmODU0
ZGMuLjU1MjIwODRhNzgzOTdjMjQ2MTg5MGU0YzMxMDJhODY5YTgzYTI4NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTQzLDcgKzQzLDcg
QEAgY2xhc3MgU3RvcmFnZUFyZWFTeW5jOwogCiBjbGFzcyBTdG9yYWdlQXJlYUltcGwgOiBwdWJs
aWMgV2ViQ29yZTo6U3RvcmFnZUFyZWEgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFn
ZUFyZWFJbXBsPiBjcmVhdGUoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI+JiYs
IHVuc2lnbmVkIHF1b3RhKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VBcmVhSW1wbD4gY3JlYXRl
KFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIFJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI+JiYsIHVuc2lnbmVkIHF1b3RhKTsKICAg
ICB2aXJ0dWFsIH5TdG9yYWdlQXJlYUltcGwoKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIG92
ZXJyaWRlOwpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXNzaW9uQ2hhbmdl
ZChib29sIGlzTmV3U2Vzc2lvblBlcnNpc3RlbnQpOwogCiBwcml2YXRlOgotICAgIFN0b3JhZ2VB
cmVhSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdlcj4mJiwgdW5zaWduZWQg
cXVvdGEpOworICAgIFN0b3JhZ2VBcmVhSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5h
Z2VyPiYmLCB1bnNpZ25lZCBxdW90YSk7CiAgICAgZXhwbGljaXQgU3RvcmFnZUFyZWFJbXBsKGNv
bnN0IFN0b3JhZ2VBcmVhSW1wbCYpOwogCiAgICAgdm9pZCBibG9ja1VudGlsSW1wb3J0Q29tcGxl
dGUoKSBjb25zdDsKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNo
U3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUpOwogCiAg
ICAgV2ViQ29yZTo6U3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZTsKLSAgICBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgbV9zZWN1cml0eU9yaWdpbjsKKyAgICBSZWY8Y29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAgICAgV2ViQ29yZTo6U3RvcmFnZU1h
cCBtX3N0b3JhZ2VNYXA7CiAKICAgICBSZWZQdHI8U3RvcmFnZUFyZWFTeW5jPiBtX3N0b3JhZ2VB
cmVhU3luYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuY3BwCmluZGV4IGE3OGQxZmY1YjgyNDYzYjgyN2FhNzYxZjVhZTJiOTQ3MzE4
YzY5YzguLjRlNzEzMjNhOTcwMTcwZTg4YTA0MTU4ODhkYWQyZmJlOWU2NjIwMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbC5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VTeW5jTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUcmFja2VyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3Rv
cmFnZU1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVR5cGUuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgpAQCAtMTAyLDE3ICsxMDMsMTQgQEAgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UmKQogICAgIHJldHVybiBXVEZNb3Zl
KG5ld05hbWVzcGFjZSk7CiB9CiAKLVJlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQorUmVmPFN0
b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFT
U0VSVCghbV9pc1NodXRkb3duKTsKIAotICAgIGlmIChSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPiBz
dG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFNYXAuZ2V0KG9yaWdpbikpCi0gICAgICAgIHJldHVy
biBzdG9yYWdlQXJlYS5yZWxlYXNlTm9uTnVsbCgpOwotCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9
IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKG1fc3RvcmFnZVR5cGUsIG9yaWdpbiwgbV9zeW5jTWFu
YWdlci5nZXQoKSwgbV9xdW90YSk7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcC5zZXQob3JpZ2luLCBz
dG9yYWdlQXJlYS5wdHIoKSk7Ci0gICAgcmV0dXJuIFdURk1vdmUoc3RvcmFnZUFyZWEpOworICAg
IHJldHVybiAqbV9zdG9yYWdlQXJlYU1hcC5lbnN1cmUob3JpZ2luLmRhdGEoKSwgWyZdIHsKKyAg
ICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKG1fc3RvcmFnZVR5cGUsIG9yaWdp
biwgbV9zeW5jTWFuYWdlci5nZXQoKSwgbV9xdW90YSk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OwogfQogCiB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9zZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IDQ5NWM0
NDI2Y2U0OTE0ZjNmOGZkZWQ5MDM1M2JkYjVlNjQ3YWI4ZmMuLjYxM2VmMzk0OTM2MWUxMmJkYzY3
ODdjYzAwMDcxNTQzNDMxNDZjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBTdG9yYWdlQXJlYUltcGw7CiAKLWNsYXNzIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgeworY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZUltcGwgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEKTsKICAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBnZXRPckNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGEsIFBB
TDo6U2Vzc2lvbklEKTsKQEAgLTU0LDE0ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5j
KCk7CiAgICAgdm9pZCBjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMoKTsKIAotICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lv
bklEOyB9Ci0gICAgdm9pZCBzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEKSBv
dmVycmlkZTsKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQorICAgIHZvaWQgc2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCkgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwo
V2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgdW5zaWduZWQgcXVvdGEs
IFBBTDo6U2Vzc2lvbklEKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFn
ZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7Ci0gICAg
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSYgbmV3UGFnZSkgb3ZlcnJp
ZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiYpIGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBj
b3B5KFdlYkNvcmU6OlBhZ2UmIG5ld1BhZ2UpIGZpbmFsOwogCiAgICAgdHlwZWRlZiBIYXNoTWFw
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVmUHRyPFN0b3JhZ2VBcmVhSW1wbD4+IFN0
b3JhZ2VBcmVhTWFwOwogICAgIFN0b3JhZ2VBcmVhTWFwIG1fc3RvcmFnZUFyZWFNYXA7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>