<?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>230194</bug_id>
          
          <creation_ts>2021-09-11 14:54:12 -0700</creation_ts>
          <short_desc>window.open() uses incorrect global object to determine if navigation is allowed</short_desc>
          <delta_ts>2022-10-25 13:52:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>231702</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1792734</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-09-11 14:54:12 -0700</bug_when>
    <thetext>window.open() uses incorrect global object to determine if navigation is allowed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792735</commentid>
    <comment_count>1</comment_count>
      <attachid>437965</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-09-11 14:57:39 -0700</bug_when>
    <thetext>Created attachment 437965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794808</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-18 14:55:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/83274097&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795592</commentid>
    <comment_count>3</comment_count>
      <attachid>438829</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-09-21 09:29:56 -0700</bug_when>
    <thetext>Created attachment 438829
Patch

Add &lt;iframe sandbox&gt; tests and ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804002</commentid>
    <comment_count>4</comment_count>
      <attachid>441144</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-10-13 15:18:47 -0700</bug_when>
    <thetext>Created attachment 441144
Cross-browser research

The spec seems to be way off the implementations, yet WebKit is way off other engines by using _current_ instead of _relevant_.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832184</commentid>
    <comment_count>5</comment_count>
      <attachid>438829</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-01-19 12:49:25 -0800</bug_when>
    <thetext>Comment on attachment 438829
Patch

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

r=me

&gt; Source/WebCore/ChangeLog:21
&gt; +        and &quot;allow-same-origin&quot; flags are present. If that&apos;s the acse, an &lt;iframe&gt; can simply

case

&gt; Source/WebCore/ChangeLog:24
&gt; +        Although per current spec [4], window.open() uses _entry_ global object pretty much

Entry global object would be an obvious security / pop-up blocking bug. Seems worth filing a spec issue to correct this.

&gt; Source/WebCore/page/DOMWindow.cpp:2549
&gt; -ExceptionOr&lt;RefPtr&lt;WindowProxy&gt;&gt; DOMWindow::open(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; urlStringToOpen, const AtomString&amp; frameName, const String&amp; windowFeaturesString)
&gt; +ExceptionOr&lt;RefPtr&lt;WindowProxy&gt;&gt; DOMWindow::open(DOMWindow&amp; firstWindow, const String&amp; urlStringToOpen, const AtomString&amp; frameName, const String&amp; windowFeaturesString)

What is &apos;firstWindow&apos;? Is it the entry global object, the incumbent global object, the top of stack global object, or something else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908222</commentid>
    <comment_count>6</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-10-25 13:52:34 -0700</bug_when>
    <thetext>Checking via BugID on Webkit GitHub, it seems that this bug has not landed. Do we need it? Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437965</attachid>
            <date>2021-09-11 14:57:39 -0700</date>
            <delta_ts>2021-09-21 09:29:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230194-20210912005737.patch</filename>
            <type>text/plain</type>
            <size>39005</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDIxLTA5LTExICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICB3aW5kb3cub3Blbigp
IHVzZXMgaW5jb3JyZWN0IGdsb2JhbCBvYmplY3QgdG8gZGV0ZXJtaW5lIGlmIG5hdmlnYXRpb24g
aXMgYWxsb3dlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMwMTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQrSFRNTC5pZGw6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpvcGVuRm9yQmluZGluZ3MpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6c3VibWl0SWZQb3NzaWJsZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlblVSTEV4dGVybmFs
bHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZEZyYW1lUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAg
ICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjcmVh
dGVXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcGVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKToKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmZpbmQgY29uc3Qp
OgorICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlLmg6CisgICAgICAgICogcGFnZS9RdWlya3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNz
UXVpcmsgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnRhcmdldEZyYW1lIGNvbnN0KToKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKToKKwogMjAyMS0wOS0wOSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBvdGVudGlhbCBjcmFzaCB1bmRlciBDYWNo
ZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudCtIVE1MLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQrSFRNTC5pZGwJKHJldmlzaW9uIDI4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudCtIVE1MLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBwYXJ0aWFsIGlu
dGVyZmFjZSBEb2N1bWVudCB7CiAgICAgLy8gdGhhdCB0aGUgY2FsbGVyIGRvY3VtZW50IG1hdGNo
ZXMgdGhvc2Ugc2VtYW50aWNzLiBJdCBpcyBwb3NzaWJsZSB3ZSBzaG91bGQgcmVwbGFjZSBpdCB3
aXRoCiAgICAgLy8gdGhlIGV4aXN0aW5nICdpbmN1bWJlbnQgZG9jdW1lbnQnIGNvbmNlcHQuCiAg
ICAgW0NFUmVhY3Rpb25zLCBDYWxsV2l0aD1SZXNwb25zaWJsZURvY3VtZW50LCBJbXBsZW1lbnRl
ZEFzPW9wZW5Gb3JCaW5kaW5nc10gRG9jdW1lbnQgb3BlbihvcHRpb25hbCBET01TdHJpbmcgdW51
c2VkMSwgb3B0aW9uYWwgRE9NU3RyaW5nIHVudXNlZDIpOyAvLyBib3RoIGFyZ3VtZW50cyBhcmUg
aWdub3JlZC4KLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBJbXBsZW1l
bnRlZEFzPW9wZW5Gb3JCaW5kaW5nc10gV2luZG93UHJveHkgb3BlbihVU1ZTdHJpbmcgdXJsLCBE
T01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIGZlYXR1cmVzKTsKKyAgICBbQ2FsbFdpdGg9Rmlyc3RX
aW5kb3csIEltcGxlbWVudGVkQXM9b3BlbkZvckJpbmRpbmdzXSBXaW5kb3dQcm94eSBvcGVuKFVT
VlN0cmluZyB1cmwsIERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgZmVhdHVyZXMpOwogICAgIFtD
RVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1jbG9zZUZvckJpbmRpbmdzXSB1bmRlZmluZWQgY2xv
c2UoKTsKICAgICBbQ0VSZWFjdGlvbnMsIENhbGxXaXRoPVJlc3BvbnNpYmxlRG9jdW1lbnRdIHVu
ZGVmaW5lZCB3cml0ZShET01TdHJpbmcuLi4gdGV4dCk7CiAgICAgW0NFUmVhY3Rpb25zLCBDYWxs
V2l0aD1SZXNwb25zaWJsZURvY3VtZW50XSB1bmRlZmluZWQgd3JpdGVsbihET01TdHJpbmcuLi4g
dGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI4MjI0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MDks
MTIgKzI5MDksMTIgQEAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBEb2N1bWVudDo6c2NyaQog
ICAgIHJldHVybiBwYXJzZXIoKSA/IHBhcnNlcigpLT5hc1NjcmlwdGFibGVEb2N1bWVudFBhcnNl
cigpIDogbnVsbHB0cjsKIH0KIAotRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5Pj4gRG9j
dW1lbnQ6Om9wZW5Gb3JCaW5kaW5ncyhET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93
JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgZmVhdHVyZXMpCitFeGNlcHRpb25PcjxSZWZQdHI8V2luZG93UHJveHk+
PiBEb2N1bWVudDo6b3BlbkZvckJpbmRpbmdzKERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGZlYXR1
cmVzKQogewogICAgIGlmICghbV9kb21XaW5kb3cpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIAotICAgIHJldHVybiBtX2RvbVdpbmRvdy0+b3Blbihh
Y3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwsIG5hbWUsIGZlYXR1cmVzKTsKKyAgICByZXR1
cm4gbV9kb21XaW5kb3ctPm9wZW4oZmlyc3RXaW5kb3csIHVybCwgbmFtZSwgZmVhdHVyZXMpOwog
fQogCiBFeGNlcHRpb25PcjxEb2N1bWVudCY+IERvY3VtZW50OjpvcGVuRm9yQmluZGluZ3MoRG9j
dW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjgyMjQxKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcigp
IGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1By
b3h5Pj4gb3BlbkZvckJpbmRpbmdzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cm
IGZpcnN0RE9NV2luZG93LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQXRvbVN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBmZWF0dXJlcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9u
T3I8UmVmUHRyPFdpbmRvd1Byb3h5Pj4gb3BlbkZvckJpbmRpbmdzKERPTVdpbmRvdyYgZmlyc3RX
aW5kb3csIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGZlYXR1cmVzKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxEb2N1bWVu
dCY+IG9wZW5Gb3JCaW5kaW5ncyhEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlbmFt
ZSB0aGlzIGF0IHNvbWUgcG9pbnQgYW5kIGdpdmUgYmFjayB0aGUgbmFtZSAnb3BlbicgdG8gdGhl
IEhUTUwgc3BlY2lmaWVkIG9uZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEhU
TUxGb3JtRWxlbWVudDo6c3VibWl0SWZQb3NzaWJsZShFCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIHRhcmdldEZyYW1lID0gZnJhbWUtPmxvYWRlcigpLmZpbmRGcmFtZUZvck5h
dmlnYXRpb24oZWZmZWN0aXZlVGFyZ2V0KGV2ZW50LCBzdWJtaXR0ZXIpLCAmZG9jdW1lbnQoKSk7
CisgICAgYXV0byB0YXJnZXRGcmFtZSA9IGZyYW1lLT5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZp
Z2F0aW9uKGVmZmVjdGl2ZVRhcmdldChldmVudCwgc3VibWl0dGVyKSk7CiAgICAgaWYgKCF0YXJn
ZXRGcmFtZSkKICAgICAgICAgdGFyZ2V0RnJhbWUgPSBmcmFtZS5nZXQoKTsKICAgICBhdXRvIGZv
cm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKCp0aGlzLCB0ZXh0RmllbGRWYWx1ZXMoKSwgZG9j
dW1lbnQoKSwgTm90U3VibWl0dGVkQnlKYXZhU2NyaXB0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAJKHJldmlzaW9uIDI4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlblUKIAogICAgIGJvb2wg
Y3JlYXRlZDsKICAgICBXaW5kb3dGZWF0dXJlcyBmZWF0dXJlczsKLSAgICBhdXRvIGZyYW1lID0g
V2ViQ29yZTo6Y3JlYXRlV2luZG93KG1haW5GcmFtZSwgbWFpbkZyYW1lLCBXVEZNb3ZlKGZyYW1l
TG9hZFJlcXVlc3QpLCBmZWF0dXJlcywgY3JlYXRlZCk7CisgICAgYXV0byBmcmFtZSA9IFdlYkNv
cmU6OmNyZWF0ZVdpbmRvdyhtYWluRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIGZl
YXR1cmVzLCBjcmVhdGVkKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjgyMjQxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0oUmVmPEZvcm1T
dWIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZp
bmRGcmFtZUZvck5hdmlnYXRpb24oc3VibWlzc2lvbi0+dGFyZ2V0KCksICZzdWJtaXNzaW9uLT5z
dGF0ZSgpLnNvdXJjZURvY3VtZW50KCkpOworICAgIGF1dG8gdGFyZ2V0RnJhbWUgPSBmaW5kRnJh
bWVGb3JOYXZpZ2F0aW9uKHN1Ym1pc3Npb24tPnRhcmdldCgpKTsKICAgICBpZiAoIXRhcmdldEZy
YW1lKSB7CiAgICAgICAgIGlmICghRE9NV2luZG93OjphbGxvd1BvcFVwKG1fZnJhbWUpICYmICFV
c2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC01MDksNyArNTA5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9y
bShSZWY8Rm9ybVN1YgogICAgIGlmICghdGFyZ2V0RnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKG1fZnJhbWUudHJlZSgpLmlzRGVzY2VuZGFudE9mKHRhcmdldEZyYW1l
KSkKKyAgICBpZiAobV9mcmFtZS50cmVlKCkuaXNEZXNjZW5kYW50T2YodGFyZ2V0RnJhbWUuZ2V0
KCkpKQogICAgICAgICBtX3N1Ym1pdHRlZEZvcm1VUkwgPSBzdWJtaXNzaW9uLT5yZXF1ZXN0VVJM
KCk7CiAKICAgICBzdWJtaXNzaW9uLT5zZXRSZWZlcnJlcihvdXRnb2luZ1JlZmVycmVyKCkpOwpA
QCAtMTI3Niw3ICsxMjc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChG
cmFtZQogICAgICAgICBGcmFtZSogc291cmNlRnJhbWUgPSBmb3JtU3RhdGUgPyBmb3JtU3RhdGUt
PnNvdXJjZURvY3VtZW50KCkuZnJhbWUoKSA6ICZtX2ZyYW1lOwogICAgICAgICBpZiAoIXNvdXJj
ZUZyYW1lKQogICAgICAgICAgICAgc291cmNlRnJhbWUgPSAmbV9mcmFtZTsKLSAgICAgICAgRnJh
bWUqIHRhcmdldEZyYW1lID0gc291cmNlRnJhbWUtPmxvYWRlcigpLmZpbmRGcmFtZUZvck5hdmln
YXRpb24oZnJhbWVOYW1lKTsKKyAgICAgICAgYXV0byB0YXJnZXRGcmFtZSA9IHNvdXJjZUZyYW1l
LT5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSk7CiAgICAgICAgIGlm
ICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZSAhPSBzb3VyY2VGcmFtZSkgewogICAgICAgICAg
ICAgaWYgKFBhZ2UqIHBhZ2UgPSB0YXJnZXRGcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAg
IHBhZ2UtPmNocm9tZSgpLmZvY3VzKCk7CkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlCiAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9u
ID0gZm9ybVN0YXRlOwogCiAgICAgLy8gVGhlIHNlYXJjaCBmb3IgYSB0YXJnZXQgZnJhbWUgaXMg
ZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3VibWlzc2lvbi4KLSAgICBhdXRvIHRh
cmdldEZyYW1lID0gaXNGb3JtU3VibWlzc2lvbiA/IG51bGxwdHIgOiBtYWtlUmVmUHRyKGZpbmRG
cmFtZUZvck5hdmlnYXRpb24oZWZmZWN0aXZlRnJhbWVOYW1lKSk7CisgICAgYXV0byB0YXJnZXRG
cmFtZSA9IGlzRm9ybVN1Ym1pc3Npb24gPyBSZWZQdHI8RnJhbWU+IHsgbnVsbHB0ciB9IDogZmlu
ZEZyYW1lRm9yTmF2aWdhdGlvbihlZmZlY3RpdmVGcmFtZU5hbWUpOwogICAgIGlmICh0YXJnZXRG
cmFtZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkgewogICAgICAgICBmcmFtZUxvYWRSZXF1
ZXN0LnNldEZyYW1lTmFtZSgiX3NlbGYiKTsKICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigp
LmxvYWRVUkwoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgcmVmZXJyZXIsIG5ld0xvYWRUeXBl
LCBldmVudCwgV1RGTW92ZShmb3JtU3RhdGUpLCBXVEZNb3ZlKHByaXZhdGVDbGlja01lYXN1cmVt
ZW50KSwgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpKTsKQEAgLTE0NTEsOCArMTQ1
MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSkgewotICAg
ICAgICBGcmFtZSogZnJhbWUgPSBmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKHJlcXVlc3QuZnJhbWVO
YW1lKCkpOwotICAgICAgICBpZiAoZnJhbWUpIHsKKyAgICAgICAgaWYgKGF1dG8gZnJhbWUgPSBm
aW5kRnJhbWVGb3JOYXZpZ2F0aW9uKHJlcXVlc3QuZnJhbWVOYW1lKCkpKSB7CiAgICAgICAgICAg
ICByZXF1ZXN0LnNldFNob3VsZENoZWNrTmV3V2luZG93UG9saWN5KGZhbHNlKTsKICAgICAgICAg
ICAgIGlmICgmZnJhbWUtPmxvYWRlcigpICE9IHRoaXMpIHsKICAgICAgICAgICAgICAgICBmcmFt
ZS0+bG9hZGVyKCkubG9hZChXVEZNb3ZlKHJlcXVlc3QpKTsKQEAgLTMwNzQsNyArMzA3Myw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUwKIAogICAgIGlmICghZnJh
bWVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBUaGUgc2VhcmNoIGZvciBhIHRhcmdldCBm
cmFtZSBpcyBkb25lIGVhcmxpZXIgaW4gdGhlIGNhc2Ugb2YgZm9ybSBzdWJtaXNzaW9uLgotICAg
ICAgICBpZiAoYXV0byogdGFyZ2V0RnJhbWUgPSBmb3JtU3RhdGUgPyBudWxscHRyIDogZmluZEZy
YW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIHRhcmdldEZy
YW1lID0gZm9ybVN0YXRlID8gUmVmUHRyPEZyYW1lPiB7IG51bGxwdHIgfSA6IGZpbmRGcmFtZUZv
ck5hdmlnYXRpb24oZnJhbWVOYW1lKSkgewogICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRl
cigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBXVEZN
b3ZlKGFjdGlvbiksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0zNzI0LDE1ICszNzIzLDExIEBAIGJvb2wgRnJhbWVMb2Fk
ZXI6OnNob3VsZFRyZWF0VVJMQXNTcmNkb2MKICAgICByZXR1cm4gb3duZXJFbGVtZW50LT5oYXNB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY2RvY0F0dHIpOwogfQogCi1GcmFtZSog
RnJhbWVMb2FkZXI6OmZpbmRGcmFtZUZvck5hdmlnYXRpb24oY29uc3QgQXRvbVN0cmluZyYgbmFt
ZSwgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50KQorUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlcjo6
ZmluZEZyYW1lRm9yTmF2aWdhdGlvbihjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewotICAgIC8v
IEZJWE1FOiBFdmVudHVhbGx5IGFsbCBjYWxsZXJzIHNob3VsZCBzdXBwbHkgdGhlIGFjdHVhbCBh
Y3RpdmVEb2N1bWVudCBzbyB3ZSBjYW4gY2FsbCBjYW5OYXZpZ2F0ZSB3aXRoIHRoZSByaWdodCBk
b2N1bWVudC4KLSAgICBpZiAoIWFjdGl2ZURvY3VtZW50KQotICAgICAgICBhY3RpdmVEb2N1bWVu
dCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBhdXRvKiBmcmFtZSA9IG1fZnJhbWUudHJlZSgp
LmZpbmQobmFtZSk7CiAKLSAgICBhdXRvKiBmcmFtZSA9IG1fZnJhbWUudHJlZSgpLmZpbmQobmFt
ZSwgYWN0aXZlRG9jdW1lbnQtPmZyYW1lKCkgPyAqYWN0aXZlRG9jdW1lbnQtPmZyYW1lKCkgOiBt
X2ZyYW1lKTsKLQotICAgIGlmICghYWN0aXZlRG9jdW1lbnQtPmNhbk5hdmlnYXRlKGZyYW1lKSkK
KyAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FuTmF2aWdhdGUoZnJhbWUpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBmcmFtZTsKQEAgLTQwOTYsNyArNDA5MSw3
IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6Omhhc0hUTUxWaWV3KCkgY28KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotUmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5kb3coRnJhbWUmIG9wZW5lckZyYW1l
LCBGcmFtZSYgbG9va3VwRnJhbWUsIEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dG
ZWF0dXJlcyYgZmVhdHVyZXMsIGJvb2wmIGNyZWF0ZWQpCitSZWZQdHI8RnJhbWU+IGNyZWF0ZVdp
bmRvdyhGcmFtZSYgb3BlbmVyRnJhbWUsIEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBXaW5k
b3dGZWF0dXJlcyYgZmVhdHVyZXMsIGJvb2wmIGNyZWF0ZWQpCiB7CiAgICAgQVNTRVJUKCFmZWF0
dXJlcy5kaWFsb2cgfHwgcmVxdWVzdC5mcmFtZU5hbWUoKS5pc0VtcHR5KCkpOwogICAgIEFTU0VS
VChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBNZXRob2QoKSA9PSAiR0VUIik7CkBAIC00
MTA4LDcgKzQxMDMsNyBAQCBSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVy
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFtZSgp
LmlzRW1wdHkoKSAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0LmZyYW1lTmFtZSgp
LCAiX2JsYW5rIikpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBsb29rdXBG
cmFtZS5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKHJlcXVlc3QuZnJhbWVOYW1lKCks
IG9wZW5lckZyYW1lLmRvY3VtZW50KCkpKSB7CisgICAgICAgIGlmIChhdXRvIGZyYW1lID0gb3Bl
bmVyRnJhbWUubG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlvbihyZXF1ZXN0LmZyYW1lTmFt
ZSgpKSkgewogICAgICAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlcXVlc3Qu
ZnJhbWVOYW1lKCksICJfc2VsZiIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBmcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5mb2N1
cygpOwpAQCAtNDEzMCwxMiArNDEyNSw2IEBAIFJlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KEZy
YW1lJiBvcGVuZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgLy8gRklY
TUU6IFNldHRpbmcgdGhlIHJlZmVycmVyIHNob3VsZCBiZSB0aGUgY2FsbGVyJ3MgcmVzcG9uc2li
aWxpdHkuCi0gICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVm
ZXJyZXJIZWFkZXIob3BlbmVyRnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgb3BlbmVyRnJhbWUubG9hZGVyKCkub3V0Z29p
bmdSZWZlcnJlcigpKTsKLSAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkKLSAgICAgICAgcmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwotICAgIEZy
YW1lTG9hZGVyOjphZGRTYW1lU2l0ZUluZm9Ub1JlcXVlc3RJZk5lZWRlZChyZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLCBvcGVuZXJGcmFtZS5kb2N1bWVudCgpKTsKLQogICAgIFBhZ2UqIG9sZFBh
Z2UgPSBvcGVuZXJGcmFtZS5wYWdlKCk7CiAgICAgaWYgKCFvbGRQYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lv
biAyODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcwLDggKzI3MCw3IEBAIHB1YmxpYzoKIAogICAgIEZyYW1lTG9hZGVyU3Rh
dGVNYWNoaW5lJiBzdGF0ZU1hY2hpbmUoKSB7IHJldHVybiBtX3N0YXRlTWFjaGluZTsgfQogCi0g
ICAgLy8gRklYTUU6IHNob3VsZCByZXR1cm4gUmVmUHRyLgotICAgIFdFQkNPUkVfRVhQT1JUIEZy
YW1lKiBmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIERvY3Vt
ZW50KiBhY3RpdmVEb2N1bWVudCA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxGcmFtZT4gZmluZEZyYW1lRm9yTmF2aWdhdGlvbihjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsK
IAogICAgIHZvaWQgYXBwbHlVc2VyQWdlbnRJZk5lZWRlZChSZXNvdXJjZVJlcXVlc3QmKTsKIApA
QCAtNTExLDYgKzUxMCw2IEBAIHByaXZhdGU6CiAvLwogLy8gRklYTUU6IENvbnNpZGVyIG1ha2lu
ZyB0aGlzIGZ1bmN0aW9uIHBhcnQgb2YgYW4gYXBwcm9wcmlhdGUgY2xhc3MgKG5vdCBGcmFtZUxv
YWRlcikKIC8vIGFuZCBtb3ZpbmcgaXQgdG8gYSBtb3JlIGFwcHJvcHJpYXRlIGxvY2F0aW9uLgot
UmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5kb3coRnJhbWUmIG9wZW5lckZyYW1lLCBGcmFtZSYgbG9v
a3VwRnJhbWUsIEZyYW1lTG9hZFJlcXVlc3QmJiwgV2luZG93RmVhdHVyZXMmLCBib29sJiBjcmVh
dGVkKTsKK1JlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KEZyYW1lJiBvcGVuZXJGcmFtZSwgRnJh
bWVMb2FkUmVxdWVzdCYmLCBXaW5kb3dGZWF0dXJlcyYsIGJvb2wmIGNyZWF0ZWQpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZp
c2lvbiAyODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0ODYsMTQgKzI0ODYsMTAgQEAgYm9vbCBET01XaW5kb3c6OmlzSW5zZWN1
cmVTY3JpcHRBY2Nlc3MoRAogICAgIHJldHVybiB0cnVlOwogfQogCi1FeGNlcHRpb25PcjxSZWZQ
dHI8RnJhbWU+PiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29uc3QgQXRvbVN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgaW5p
dGlhbFdpbmRvd0ZlYXR1cmVzLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRnJhbWUmIGZpcnN0
RnJhbWUsIEZyYW1lJiBvcGVuZXJGcmFtZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERPTVdp
bmRvdyYpPiYgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmUHRyPEZyYW1l
Pj4gRE9NV2luZG93OjpjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgV2luZG93RmVhdHVyZXMmIGluaXRpYWxXaW5k
b3dGZWF0dXJlcywgRnJhbWUmIGZpcnN0RnJhbWUsIEZyYW1lJiBvcGVuZXJGcmFtZSwgY29uc3Qg
V1RGOjpGdW5jdGlvbjx2b2lkKERPTVdpbmRvdyYpPiYgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uKQog
ewotICAgIFJlZlB0ciBhY3RpdmVGcmFtZSA9IGFjdGl2ZVdpbmRvdy5mcmFtZSgpOwotICAgIGlm
ICghYWN0aXZlRnJhbWUpCi0gICAgICAgIHJldHVybiBSZWZQdHI8RnJhbWU+IHsgbnVsbHB0ciB9
OwotCi0gICAgUmVmUHRyIGFjdGl2ZURvY3VtZW50ID0gYWN0aXZlV2luZG93LmRvY3VtZW50KCk7
Ci0gICAgaWYgKCFhY3RpdmVEb2N1bWVudCkKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBvcGVuZXJG
cmFtZS5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBSZWZQ
dHI8RnJhbWU+IHsgbnVsbHB0ciB9OwogCiAgICAgVVJMIGNvbXBsZXRlZFVSTCA9IHVybFN0cmlu
Zy5pc0VtcHR5KCkgPyBVUkwoeyB9LCBlbXB0eVN0cmluZygpKSA6IGZpcnN0RnJhbWUuZG9jdW1l
bnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKQEAgLTI1MDIsMTggKzI0OTgsMTYgQEAgRXhj
ZXB0aW9uT3I8UmVmUHRyPEZyYW1lPj4gRE9NV2luZG93OjpjcgogCiAgICAgV2luZG93RmVhdHVy
ZXMgd2luZG93RmVhdHVyZXMgPSBpbml0aWFsV2luZG93RmVhdHVyZXM7CiAKLSAgICAvLyBGb3Ig
d2hhdGV2ZXIgcmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGZpcnN0IGZyYW1lIHRvIGRldGVybWlu
ZSB0aGUgb3V0Z29pbmdSZWZlcnJlci4gV2UgcmVwbGljYXRlIHRoYXQgYmVoYXZpb3IgaGVyZS4K
KyAgICAvLyBGaXJlZm94IHVzZXMgdGhlIGVudHJ5IHdpbmRvdyB0byBkZXRlcm1pbmUgdGhlIG91
dGdvaW5nIHJlZmVycmVyIGFzIHBlciBjdXJyZW50IHNwZWMuCiAgICAgU3RyaW5nIHJlZmVycmVy
ID0gd2luZG93RmVhdHVyZXMubm9yZWZlcnJlciA/IFN0cmluZygpIDogU2VjdXJpdHlQb2xpY3k6
OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoZmlyc3RGcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBv
bGljeSgpLCBjb21wbGV0ZWRVUkwsIGZpcnN0RnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJl
cigpKTsKLSAgICBhdXRvIGluaXRpYXRlZEJ5TWFpbkZyYW1lID0gYWN0aXZlRnJhbWUtPmlzTWFp
bkZyYW1lKCkgPyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlNYWluRnJh
bWU6OlVua25vd247CisgICAgYXV0byBpbml0aWF0ZWRCeU1haW5GcmFtZSA9IG9wZW5lckZyYW1l
LmlzTWFpbkZyYW1lKCkgPyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlN
YWluRnJhbWU6OlVua25vd247CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0
IHsgY29tcGxldGVkVVJMLCByZWZlcnJlciB9OwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVM
b2FkUmVxdWVzdCB7ICphY3RpdmVEb2N1bWVudCwgYWN0aXZlRG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgZnJhbWVOYW1lLCBpbml0aWF0ZWRCeU1h
aW5GcmFtZSB9OwotICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeShhY3RpdmVEb2N1bWVudC0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJv
cGFnYXRlKCkpOworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpkb2N1
bWVudCwgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0
KSwgZnJhbWVOYW1lLCBpbml0aWF0ZWRCeU1haW5GcmFtZSB9OworICAgIGZyYW1lTG9hZFJlcXVl
c3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShkb2N1bWVudC0+c2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOwogCi0gICAgLy8gV2UgcGFzcyB0aGUgb3Bl
bmVyIGZyYW1lIGZvciB0aGUgbG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlz
IGRpZmZlcmVudCBmcm9tCi0gICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJl
ZmVyZW5jZXMgYSBmcmFtZSByZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgogICAgIGJvb2wg
Y3JlYXRlZDsKLSAgICBhdXRvIG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KCphY3Rp
dmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHdpbmRvd0Zl
YXR1cmVzLCBjcmVhdGVkKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2lu
ZG93KG9wZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJl
cywgY3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJuIFJlZlB0cjxG
cmFtZT4geyBudWxscHRyIH07CiAKQEAgLTI1MjQsNyArMjUxOCw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3IKICAgICBpZiAoY3JlYXRlZCkKICAgICAgICAgbmV3
RnJhbWUtPnBhZ2UoKS0+c2V0T3BlbmVkQnlET00oKTsKIAotICAgIGlmIChuZXdGcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPmlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoYWN0aXZlV2luZG93
LCBjb21wbGV0ZWRVUkwuc3RyaW5nKCkpKQorICAgIGlmIChuZXdGcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9tV2luZG93KCktPmlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoKm9wZW5lckZyYW1lLndpbmRvdygp
LCBjb21wbGV0ZWRVUkwuc3RyaW5nKCkpKQogICAgICAgICByZXR1cm4gbm9vcGVuZXIgPyBSZWZQ
dHI8RnJhbWU+IHsgbnVsbHB0ciB9IDogbmV3RnJhbWU7CiAKICAgICBpZiAocHJlcGFyZURpYWxv
Z0Z1bmN0aW9uKQpAQCAtMjUzMywxMiArMjUyNywxMiBAQCBFeGNlcHRpb25PcjxSZWZQdHI8RnJh
bWU+PiBET01XaW5kb3c6OmNyCiAgICAgaWYgKGNyZWF0ZWQpIHsKICAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIsIFJlc291cmNl
UmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hlUG9saWN5IH07CiAgICAgICAgIEZy
YW1lTG9hZGVyOjphZGRTYW1lU2l0ZUluZm9Ub1JlcXVlc3RJZk5lZWRlZChyZXNvdXJjZVJlcXVl
c3QsIG9wZW5lckZyYW1lLmRvY3VtZW50KCkpOwotICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZy
YW1lTG9hZFJlcXVlc3QgeyAqYWN0aXZlV2luZG93LmRvY3VtZW50KCksIGFjdGl2ZVdpbmRvdy5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksICJf
c2VsZiJfcywgaW5pdGlhdGVkQnlNYWluRnJhbWUgfTsKLSAgICAgICAgZnJhbWVMb2FkUmVxdWVz
dC5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KGFjdGl2ZURvY3VtZW50LT5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CisgICAgICAgIEZyYW1lTG9hZFJl
cXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpkb2N1bWVudCwgZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgIl9zZWxmIl9zLCBpbml0aWF0ZWRCeU1h
aW5GcmFtZSB9OworICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koZG9jdW1lbnQtPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3Bh
Z2F0ZSgpKTsKICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFdURk1v
dmUoZnJhbWVMb2FkUmVxdWVzdCkpOwogICAgIH0gZWxzZSBpZiAoIXVybFN0cmluZy5pc0VtcHR5
KCkpIHsKICAgICAgICAgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgPSBVc2VyR2VzdHVyZUluZGlj
YXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgPyBMb2NrSGlzdG9yeTo6Tm8gOiBMb2NrSGlz
dG9yeTo6WWVzOwotICAgICAgICBuZXdGcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVk
dWxlTG9jYXRpb25DaGFuZ2UoKmFjdGl2ZURvY3VtZW50LCBhY3RpdmVEb2N1bWVudC0+c2VjdXJp
dHlPcmlnaW4oKSwgY29tcGxldGVkVVJMLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIExvY2tCYWNr
Rm9yd2FyZExpc3Q6Ok5vKTsKKyAgICAgICAgbmV3RnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIo
KS5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKCpkb2N1bWVudCwgZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCksIGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBMb2NrQmFja0Zvcndh
cmRMaXN0OjpObyk7CiAgICAgfQogCiAgICAgLy8gTmF2aWdhdGluZyB0aGUgbmV3IGZyYW1lIGNv
dWxkIHJlc3VsdCBpbiBpdCBiZWluZyBkZXRhY2hlZCBmcm9tIGl0cyBwYWdlIGJ5IGEgbmF2aWdh
dGlvbiBwb2xpY3kgZGVsZWdhdGUuCkBAIC0yNTQ4LDcgKzI1NDIsNyBAQCBFeGNlcHRpb25PcjxS
ZWZQdHI8RnJhbWU+PiBET01XaW5kb3c6OmNyCiAgICAgcmV0dXJuIG5vb3BlbmVyID8gUmVmUHRy
PEZyYW1lPiB7IG51bGxwdHIgfSA6IG5ld0ZyYW1lOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8
V2luZG93UHJveHk+PiBET01XaW5kb3c6Om9wZW4oRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERP
TVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nVG9PcGVuLCBjb25z
dCBBdG9tU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0cmluZyYgd2luZG93RmVhdHVyZXNTdHJp
bmcpCitFeGNlcHRpb25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBET01XaW5kb3c6Om9wZW4oRE9N
V2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmdUb09wZW4sIGNvbnN0
IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgU3RyaW5nJiB3aW5kb3dGZWF0dXJlc1N0cmlu
ZykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChSZWZQ
dHIgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7CkBAIC0yNTY0LDggKzI1NTgsOCBAQCBF
eGNlcHRpb25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBET01XaW5kCiAgICAgaWYgKCFpc0N1cnJl
bnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIFJlZlB0cjxXaW5kb3dQcm94
eT4geyBudWxscHRyIH07CiAKLSAgICBSZWZQdHIgYWN0aXZlRG9jdW1lbnQgPSBhY3RpdmVXaW5k
b3cuZG9jdW1lbnQoKTsKLSAgICBpZiAoIWFjdGl2ZURvY3VtZW50KQorICAgIFJlZlB0ciBkb2N1
bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0
dXJuIFJlZlB0cjxXaW5kb3dQcm94eT4geyBudWxscHRyIH07CiAKICAgICBSZWZQdHIgZmlyc3RG
cmFtZSA9IGZpcnN0V2luZG93LmZyYW1lKCk7CkBAIC0yNTczLDcgKzI1NjcsNyBAQCBFeGNlcHRp
b25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBET01XaW5kCiAgICAgICAgIHJldHVybiBSZWZQdHI8
V2luZG93UHJveHk+IHsgbnVsbHB0ciB9OwogCiAgICAgYXV0byB1cmxTdHJpbmcgPSB1cmxTdHJp
bmdUb09wZW47Ci0gICAgaWYgKGFjdGl2ZURvY3VtZW50LT5xdWlya3MoKS5zaG91bGRPcGVuQXNB
Ym91dEJsYW5rKHVybFN0cmluZ1RvT3BlbikpCisgICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5z
aG91bGRPcGVuQXNBYm91dEJsYW5rKHVybFN0cmluZ1RvT3BlbikpCiAgICAgICAgIHVybFN0cmlu
ZyA9ICJhYm91dDpibGFuayJfczsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBA
IC0yNTk1LDcgKzI1ODksNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBET01X
aW5kCiAgICAgaWYgKCFmaXJzdFdpbmRvdy5hbGxvd1BvcFVwKCkpIHsKICAgICAgICAgLy8gQmVj
YXVzZSBGcmFtZVRyZWU6OmZpbmRGcmFtZUZvck5hdmlnYXRpb24oKSByZXR1cm5zIHRydWUgZm9y
IGVtcHR5IHN0cmluZ3MsIHdlIG11c3QgY2hlY2sgZm9yIGVtcHR5IGZyYW1lIG5hbWVzLgogICAg
ICAgICAvLyBPdGhlcndpc2UsIGlsbGVnaXRpbWF0ZSB3aW5kb3cub3BlbigpIGNhbGxzIHdpdGgg
bm8gbmFtZSB3aWxsIHBhc3MgcmlnaHQgdGhyb3VnaCB0aGUgcG9wdXAgYmxvY2tlci4KLSAgICAg
ICAgaWYgKGZyYW1lTmFtZS5pc0VtcHR5KCkgfHwgIWZyYW1lLT5sb2FkZXIoKS5maW5kRnJhbWVG
b3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSwgYWN0aXZlRG9jdW1lbnQuZ2V0KCkpKQorICAgICAgICBp
ZiAoZnJhbWVOYW1lLmlzRW1wdHkoKSB8fCAhZnJhbWUtPmxvYWRlcigpLmZpbmRGcmFtZUZvck5h
dmlnYXRpb24oZnJhbWVOYW1lKSkKICAgICAgICAgICAgIHJldHVybiBSZWZQdHI8V2luZG93UHJv
eHk+IHsgbnVsbHB0ciB9OwogICAgIH0KIApAQCAtMjYxMSwyNiArMjYwNSwyNSBAQCBFeGNlcHRp
b25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBET01XaW5kCiAgICAgICAgICAgICB0YXJnZXRGcmFt
ZSA9IGZyYW1lOwogICAgIH0KICAgICBpZiAodGFyZ2V0RnJhbWUpIHsKLSAgICAgICAgaWYgKCFh
Y3RpdmVEb2N1bWVudC0+Y2FuTmF2aWdhdGUodGFyZ2V0RnJhbWUuZ2V0KCkpKQorICAgICAgICBp
ZiAoIWRvY3VtZW50LT5jYW5OYXZpZ2F0ZSh0YXJnZXRGcmFtZS5nZXQoKSkpCiAgICAgICAgICAg
ICByZXR1cm4gUmVmUHRyPFdpbmRvd1Byb3h5PiB7IG51bGxwdHIgfTsKIAogICAgICAgICBVUkwg
Y29tcGxldGVkVVJMID0gZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3Ry
aW5nKTsKIAotICAgICAgICBpZiAodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LT5pc0luc2VjdXJlU2NyaXB0QWNjZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMLnN0cmlu
ZygpKSkKKyAgICAgICAgaWYgKHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+
aXNJbnNlY3VyZVNjcmlwdEFjY2VzcygqdGhpcywgY29tcGxldGVkVVJMLnN0cmluZygpKSkKICAg
ICAgICAgICAgIHJldHVybiAmdGFyZ2V0RnJhbWUtPndpbmRvd1Byb3h5KCk7CiAKICAgICAgICAg
aWYgKHVybFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gJnRhcmdldEZyYW1l
LT53aW5kb3dQcm94eSgpOwogCi0gICAgICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZpcmVm
b3ggdXNlcyB0aGUgZmlyc3Qgd2luZG93IHJhdGhlciB0aGFuIHRoZSBhY3RpdmUgd2luZG93IHRv
Ci0gICAgICAgIC8vIGRldGVybWluZSB0aGUgb3V0Z29pbmcgcmVmZXJyZXIuIFdlIHJlcGxpY2F0
ZSB0aGF0IGJlaGF2aW9yIGhlcmUuCisgICAgICAgIC8vIEZpcmVmb3ggdXNlcyB0aGUgZW50cnkg
d2luZG93IHRvIGRldGVybWluZSB0aGUgb3V0Z29pbmcgcmVmZXJyZXIgYXMgcGVyIGN1cnJlbnQg
c3BlYy4KICAgICAgICAgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgPSBVc2VyR2VzdHVyZUluZGlj
YXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgPyBMb2NrSGlzdG9yeTo6Tm8gOiBMb2NrSGlz
dG9yeTo6WWVzOwotICAgICAgICB0YXJnZXRGcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2UoKmFjdGl2ZURvY3VtZW50LCBhY3RpdmVEb2N1bWVudC0+c2Vj
dXJpdHlPcmlnaW4oKSwgY29tcGxldGVkVVJMLCBmaXJzdEZyYW1lLT5sb2FkZXIoKS5vdXRnb2lu
Z1JlZmVycmVyKCksCisgICAgICAgIHRhcmdldEZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCku
c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSgqZG9jdW1lbnQsIGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLCBjb21wbGV0ZWRVUkwsIGZpcnN0RnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIo
KSwKICAgICAgICAgICAgIGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObyk7CiAg
ICAgICAgIHJldHVybiAmdGFyZ2V0RnJhbWUtPndpbmRvd1Byb3h5KCk7CiAgICAgfQogCi0gICAg
YXV0byBuZXdGcmFtZU9yRXhjZXB0aW9uID0gY3JlYXRlV2luZG93KHVybFN0cmluZywgZnJhbWVO
YW1lLCBwYXJzZVdpbmRvd0ZlYXR1cmVzKHdpbmRvd0ZlYXR1cmVzU3RyaW5nKSwgYWN0aXZlV2lu
ZG93LCAqZmlyc3RGcmFtZSwgKmZyYW1lKTsKKyAgICBhdXRvIG5ld0ZyYW1lT3JFeGNlcHRpb24g
PSBjcmVhdGVXaW5kb3codXJsU3RyaW5nLCBmcmFtZU5hbWUsIHBhcnNlV2luZG93RmVhdHVyZXMo
d2luZG93RmVhdHVyZXNTdHJpbmcpLCAqZmlyc3RGcmFtZSwgKmZyYW1lKTsKICAgICBpZiAobmV3
RnJhbWVPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG5ld0ZyYW1l
T3JFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwogCkBAIC0yNjYxLDcgKzI2NTQsNyBAQCB2
b2lkIERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0CiAgICAgaWYgKCFjYW5TaG93
TW9kYWxEaWFsb2coKmZyYW1lKSB8fCAhZmlyc3RXaW5kb3cuYWxsb3dQb3BVcCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGRpYWxvZ0ZyYW1lT3JFeGNlcHRpb24gPSBjcmVhdGVXaW5k
b3codXJsU3RyaW5nLCBlbXB0eUF0b20oKSwgcGFyc2VEaWFsb2dGZWF0dXJlcyhkaWFsb2dGZWF0
dXJlc1N0cmluZywgc2NyZWVuQXZhaWxhYmxlUmVjdChmcmFtZS0+dmlldygpKSksIGFjdGl2ZVdp
bmRvdywgKmZpcnN0RnJhbWUsICpmcmFtZSwgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uKTsKKyAgICBh
dXRvIGRpYWxvZ0ZyYW1lT3JFeGNlcHRpb24gPSBjcmVhdGVXaW5kb3codXJsU3RyaW5nLCBlbXB0
eUF0b20oKSwgcGFyc2VEaWFsb2dGZWF0dXJlcyhkaWFsb2dGZWF0dXJlc1N0cmluZywgc2NyZWVu
QXZhaWxhYmxlUmVjdChmcmFtZS0+dmlldygpKSksICpmaXJzdEZyYW1lLCAqZnJhbWUsIHByZXBh
cmVEaWFsb2dGdW5jdGlvbik7CiAgICAgaWYgKGRpYWxvZ0ZyYW1lT3JFeGNlcHRpb24uaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKICAgICBSZWZQdHI8RnJhbWU+IGRpYWxvZ0ZyYW1l
ID0gZGlhbG9nRnJhbWVPckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMjgyMjQxKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHByaW50KCk7CiAgICAgdm9pZCBzdG9wKCk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBFeGNlcHRpb25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBvcGVuKERPTVdpbmRvdyYgYWN0
aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29uc3QgQXRvbVN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBTdHJpbmcmIHdpbmRvd0ZlYXR1
cmVzU3RyaW5nKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWZQdHI8V2luZG93
UHJveHk+PiBvcGVuKERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBBdG9tU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0cmluZyYgd2luZG93RmVh
dHVyZXNTdHJpbmcpOwogCiAgICAgdm9pZCBzaG93TW9kYWxEaWFsb2coY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIERPTVdpbmRvdyYg
YWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBXVEY6OkZ1bmN0aW9u
PHZvaWQoRE9NV2luZG93Jik+JiBwcmVwYXJlRGlhbG9nRnVuY3Rpb24pOwogCkBAIC00MjAsNyAr
NDIwLDcgQEAgcHJpdmF0ZToKICAgICBQYWdlKiBwYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBhbGxv
d2VkVG9DaGFuZ2VXaW5kb3dHZW9tZXRyeSgpIGNvbnN0OwogCi0gICAgc3RhdGljIEV4Y2VwdGlv
bk9yPFJlZlB0cjxGcmFtZT4+IGNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgQXRvbVN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIERPTVdp
bmRvdyYgYWN0aXZlV2luZG93LCBGcmFtZSYgZmlyc3RGcmFtZSwgRnJhbWUmIG9wZW5lckZyYW1l
LCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoRE9NV2luZG93Jik+JiBwcmVwYXJlRGlhbG9nRnVu
Y3Rpb24gPSBudWxscHRyKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmUHRyPEZyYW1lPj4g
Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9tU3RyaW5nJiBm
cmFtZU5hbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgRnJhbWUmIGZpcnN0RnJhbWUsIEZyYW1l
JiBvcGVuZXJGcmFtZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERPTVdpbmRvdyYpPiYgcHJl
cGFyZURpYWxvZ0Z1bmN0aW9uID0gbnVsbHB0cik7CiAgICAgYm9vbCBpc0luc2VjdXJlU2NyaXB0
QWNjZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7
CiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbAkocmV2aXNpb24gMjgyMjQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBACiAgICAgW0RvTm90Q2hl
Y2tTZWN1cml0eU9uR2V0dGVyLCBDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8g
b3BlbmVyOwogICAgIFtSZXBsYWNlYWJsZSwgRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXJdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eT8gcGFyZW50OwogICAgIFtDaGVja1NlY3VyaXR5
Rm9yTm9kZV0gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IGZyYW1lRWxlbWVudDsKLSAgICBb
Q2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSBXaW5kb3dQcm94eT8gb3BlbihvcHRp
b25hbCBVU1ZTdHJpbmcgdXJsID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyB0YXJnZXQgPSAiX2Js
YW5rIiwgb3B0aW9uYWwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgZmVhdHVy
ZXMgPSAiIik7CisgICAgW0NhbGxXaXRoPUZpcnN0V2luZG93XSBXaW5kb3dQcm94eT8gb3Blbihv
cHRpb25hbCBVU1ZTdHJpbmcgdXJsID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyB0YXJnZXQgPSAi
X2JsYW5rIiwgb3B0aW9uYWwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgZmVh
dHVyZXMgPSAiIik7CiAKICAgICAvLyB0aGUgdXNlciBhZ2VudAogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBOYXZpZ2F0b3IgbmF2aWdhdG9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNw
cAkocmV2aXNpb24gMjgyMjQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIGJvb2wgaXNGcmFtZUZh
bWlsaWFyV2l0aChGcmFtZSYgZgogICAgIHJldHVybiAoZnJhbWVBT3BlbmVyICYmIGZyYW1lQU9w
ZW5lci0+cGFnZSgpID09IGZyYW1lQi5wYWdlKCkpIHx8IChmcmFtZUJPcGVuZXIgJiYgZnJhbWVC
T3BlbmVyLT5wYWdlKCkgPT0gZnJhbWVBLnBhZ2UoKSkgfHwgKGZyYW1lQU9wZW5lciAmJiBmcmFt
ZUJPcGVuZXIgJiYgZnJhbWVBT3BlbmVyLT5wYWdlKCkgPT0gZnJhbWVCT3BlbmVyLT5wYWdlKCkp
OwogfQogCi1GcmFtZSogRnJhbWVUcmVlOjpmaW5kKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEZy
YW1lJiBhY3RpdmVGcmFtZSkgY29uc3QKK0ZyYW1lKiBGcmFtZVRyZWU6OmZpbmQoY29uc3QgQXRv
bVN0cmluZyYgbmFtZSkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogX2N1cnJlbnQgaXMgbm90IHBh
cnQgb2YgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbi4KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCAiX3NlbGYiKSB8fCBuYW1lID09ICJfY3VycmVudCIgfHwgbmFtZS5pc0VtcHR5
KCkpCkBAIC0yNzMsNyArMjczLDcgQEAgRnJhbWUqIEZyYW1lVHJlZTo6ZmluZChjb25zdCBBdG9t
U3RyaW5nJgogICAgICAgICBpZiAoJm90aGVyUGFnZSA9PSBwYWdlKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGZvciAoYXV0byogZnJhbWUgPSAmb3RoZXJQYWdlLm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAg
ICAgICBpZiAoZnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkgPT0gbmFtZSAmJiBpc0ZyYW1lRmFt
aWxpYXJXaXRoKGFjdGl2ZUZyYW1lLCAqZnJhbWUpKQorICAgICAgICAgICAgaWYgKGZyYW1lLT50
cmVlKCkudW5pcXVlTmFtZSgpID09IG5hbWUgJiYgaXNGcmFtZUZhbWlsaWFyV2l0aChtX3RoaXNG
cmFtZSwgKmZyYW1lKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CiAgICAgICAgIH0K
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgJKHJldmlzaW9uIDI4MjI0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcg
KzcwLDcgQEAgcHVibGljOgogCiAgICAgRnJhbWUqIGNoaWxkKHVuc2lnbmVkIGluZGV4KSBjb25z
dDsKICAgICBGcmFtZSogY2hpbGQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgRnJhbWUqIGZpbmQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgRnJhbWUm
IGFjdGl2ZUZyYW1lKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSogZmluZChjb25z
dCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBj
aGlsZENvdW50KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgZGVzY2VuZGFudENvdW50KCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWUmIHRvcCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9RdWlya3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UXVpcmtzLmNwcAkocmV2aXNpb24gMjgyMjQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9RdWly
a3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjA4LDcgKzEyMDgsNyBAQCBRdWlya3M6OlN0b3Jh
Z2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnCiAgICAgICAgICAgICBpZiAoIWRvbVdpbmRvdykK
ICAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91
bGROb3RDYW5jZWxFdmVudDsKIAotICAgICAgICAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRv
d1Byb3h5Pj4gcHJveHlPckV4Y2VwdGlvbiA9ICBkb21XaW5kb3ctPm9wZW4oKmRvbVdpbmRvdywg
KmRvbVdpbmRvdywga2luamFVUkwtPnN0cmluZygpLCBlbXB0eVN0cmluZygpLCBsb2dpblBvcHVw
V2luZG93RmVhdHVyZVN0cmluZyk7CisgICAgICAgICAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2lu
ZG93UHJveHk+PiBwcm94eU9yRXhjZXB0aW9uID0gZG9tV2luZG93LT5vcGVuKCpkb21XaW5kb3cs
IGtpbmphVVJMLT5zdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgbG9naW5Qb3B1cFdpbmRvd0ZlYXR1
cmVTdHJpbmcpOwogICAgICAgICAgICAgaWYgKHByb3h5T3JFeGNlcHRpb24uaGFzRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6
U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CiAgICAgICAgICAgICBhdXRvIHByb3h5ID0gcHJveHlPckV4
Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKQEAgLTEyNDUsNyArMTI0NSw3IEBAIFF1aXJr
czo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWcKIAogICAgICAgICAgICAgICAgIGF1
dG8gZG9tV2luZG93ID0gZG9jdW1lbnQtPmRvbVdpbmRvdygpOwogICAgICAgICAgICAgICAgIGlm
IChkb21XaW5kb3cpIHsKLSAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdp
bmRvd1Byb3h5Pj4gcHJveHlPckV4Y2VwdGlvbiA9IGRvbVdpbmRvdy0+b3BlbigqZG9tV2luZG93
LCAqZG9tV2luZG93LCBzdGF0aWNSYWRpb1BsYXllclVSTFN0cmluZygpLCBlbXB0eVN0cmluZygp
LCBCQkNSYWRpb1BsYXllclBvcFVwV2luZG93RmVhdHVyZVN0cmluZyk7CisgICAgICAgICAgICAg
ICAgICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IHByb3h5T3JFeGNlcHRpb24g
PSBkb21XaW5kb3ctPm9wZW4oKmRvbVdpbmRvdywgc3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmco
KSwgZW1wdHlTdHJpbmcoKSwgQkJDUmFkaW9QbGF5ZXJQb3BVcFdpbmRvd0ZlYXR1cmVTdHJpbmcp
OwogICAgICAgICAgICAgICAgICAgICBpZiAocHJveHlPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAg
YXV0byBwcm94eSA9IHByb3h5T3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCShyZXZpc2lvbiAy
ODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNyBAQCBGcmFtZSogSGl0VGVzdFJlc3VsdDo6dGFy
Z2V0RnJhbWUoKSBjb25zCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gZnJhbWUtPnRyZWUoKS5maW5kKG1faW5uZXJVUkxFbGVtZW50LT50YXJn
ZXQoKSwgKmZyYW1lKTsKKyAgICByZXR1cm4gZnJhbWUtPnRyZWUoKS5maW5kKG1faW5uZXJVUkxF
bGVtZW50LT50YXJnZXQoKSk7CiB9CiAKIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNTZWxlY3RlZCgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAy
ODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3NzAsNyArMjc3MCw3IEBAIFJlZlB0cjxXaW5kb3dQcm94eT4gSW50ZXJuYWxz
OjpvcGVuRHVtbXkKIHsKICAgICBhdXRvKiBpbnNwZWN0ZWRQYWdlID0gY29udGV4dERvY3VtZW50
KCktPmZyYW1lKCktPnBhZ2UoKTsKICAgICBhdXRvKiB3aW5kb3cgPSBpbnNwZWN0ZWRQYWdlLT5t
YWluRnJhbWUoKS5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKLSAgICBhdXRvIGZyb250ZW5kV2lu
ZG93UHJveHkgPSB3aW5kb3ctPm9wZW4oKndpbmRvdywgKndpbmRvdywgdXJsLCAiIiwgIiIpLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGF1dG8gZnJvbnRlbmRXaW5kb3dQcm94eSA9IHdpbmRv
dy0+b3Blbigqd2luZG93LCB1cmwsICIiLCAiIikucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAg
bV9pbnNwZWN0b3JGcm9udGVuZCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU3R1YkZyb250ZW5kPigq
aW5zcGVjdGVkUGFnZSwgZG93bmNhc3Q8RE9NV2luZG93Pihmcm9udGVuZFdpbmRvd1Byb3h5LT53
aW5kb3coKSkpOwogICAgIHJldHVybiBmcm9udGVuZFdpbmRvd1Byb3h5OwogfQpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI4MjMxMykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDktMTEgIEFsZXhleSBTaHZheWthICA8c2h2
YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIHdpbmRvdy5vcGVuKCkgdXNlcyBpbmNvcnJl
Y3QgZ2xvYmFsIG9iamVjdCB0byBkZXRlcm1pbmUgaWYgbmF2aWdhdGlvbiBpcyBhbGxvd2VkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAxOTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
cGVyZm9ybUZyYW1lTG9hZFVSTFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QpOgorCiAyMDIxLTA5LTExICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJB
ZGRPYnNlcnZlcigpIHNob3VsZCB1c2Ugd2VhayBvYnNlcnZlcnMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyODIy
NDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJm
b3JtRnJhbWVMb2FkVVJMUmVxdQogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IocmVxdWVzdC0+YWxsb3dQb3B1cHMoKSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwog
CiAgICAgLy8gRmlyc3QsIHRyeSB0byBmaW5kIGEgdGFyZ2V0IGZyYW1lLgotICAgIEZyYW1lKiB0
YXJnZXRGcmFtZSA9IGZyYW1lLT5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKHJlcXVl
c3QtPnRhcmdldCgpKTsKKyAgICBhdXRvIHRhcmdldEZyYW1lID0gZnJhbWUtPmxvYWRlcigpLmZp
bmRGcmFtZUZvck5hdmlnYXRpb24ocmVxdWVzdC0+dGFyZ2V0KCkpOwogICAgIGlmICghdGFyZ2V0
RnJhbWUpIHsKICAgICAgICAgLy8gV2UgZGlkIG5vdCBmaW5kIGEgdGFyZ2V0IGZyYW1lLiBBc2sg
b3VyIGZyYW1lIHRvIGxvYWQgdGhlIHBhZ2UuIFRoaXMgbWF5IG9yIG1heSBub3QgY3JlYXRlIGEg
cG9wdXAgd2luZG93LgogICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3Qg
eyAqZnJhbWUsIHJlcXVlc3QtPnJlcXVlc3QoKSB9OwpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcQogCiAgICAgaWYgKCFyZXF1ZXN0
LT50YXJnZXQoKS5pc051bGwoKSkgewogICAgICAgICAvLyBGb3Igc2VjdXJpdHkgcmVhc29ucywg
b25seSBhbGxvdyBKUyByZXF1ZXN0cyB0byBiZSBtYWRlIG9uIHRoZSBmcmFtZSB0aGF0IGNvbnRh
aW5zIHRoZSBwbHVnLWluLgotICAgICAgICBpZiAoZnJhbWUtPnRyZWUoKS5maW5kKHJlcXVlc3Qt
PnRhcmdldCgpLCAqZnJhbWUpICE9IGZyYW1lKSB7CisgICAgICAgIGlmIChmcmFtZS0+dHJlZSgp
LmZpbmQocmVxdWVzdC0+dGFyZ2V0KCkpICE9IGZyYW1lKSB7CiAgICAgICAgICAgICAvLyBMZXQg
dGhlIHBsdWctaW4ga25vdyB0aGF0IGl0cyBmcmFtZSBsb2FkIGZhaWxlZC4KICAgICAgICAgICAg
IG1fcGx1Z2luLT5mcmFtZURpZEZhaWwocmVxdWVzdC0+cmVxdWVzdElEKCksIGZhbHNlKTsKICAg
ICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA5LTExICBBbGV4ZXkgU2h2YXlrYSAgPHNo
dmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICB3aW5kb3cub3BlbigpIHVzZXMgaW5jb3Jy
ZWN0IGdsb2JhbCBvYmplY3QgdG8gZGV0ZXJtaW5lIGlmIG5hdmlnYXRpb24gaXMgYWxsb3dlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMTk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgbG9hZFBsdWdpblJlcXVlc3Q6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJG
cmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgZmluZEZyYW1lTmFtZWQ6XSk6CisKIDIwMjEt
MDktMDggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBTYWZh
cmkgVFAgMTMxIGF1ZGlvIGNhblBsYXlUeXBlKCkgcmVwb3J0cyBmYWxzZSBuZWdhdGl2ZXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tCShyZXZpc2lvbiAyODIyNDEpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTE3Myw3ICsxMTczLDcgQEAgLSAodm9pZClsb2FkUGx1Z2luUmVxdWVzdDooV2ViUGx1Z2lu
UmVxdQogICAgIGlmIChmcmFtZU5hbWUpIHsKICAgICAgICAgLy8gRklYTUUgLSBuZWVkIHRvIGdl
dCByaWQgb2YgdGhpcyB3aW5kb3cgY3JlYXRpb24gd2hpY2gKICAgICAgICAgLy8gYnlwYXNzZXMg
bm9ybWFsIHRhcmdldGVkIGxpbmsgaGFuZGxpbmcKLSAgICAgICAgZnJhbWUgPSBraXQoY29yZShb
c2VsZiB3ZWJGcmFtZV0pLT5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFt
ZSkpOworICAgICAgICBmcmFtZSA9IGtpdChjb3JlKFtzZWxmIHdlYkZyYW1lXSktPmxvYWRlcigp
LmZpbmRGcmFtZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lKS5nZXQoKSk7CiAgICAgICAgIGlmIChm
cmFtZSA9PSBuaWwpIHsKICAgICAgICAgICAgIFdlYlZpZXcgKmN1cnJlbnRXZWJWaWV3ID0gW3Nl
bGYgd2ViVmlld107CiAgICAgICAgICAgICBhdXRvIGZlYXR1cmVzID0gYWRvcHROUyhbW05TRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF0pOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eS5tbQkocmV2aXNpb24gMjgyMjQxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OnBlcmZvcgogICAgIGlmIChmcmFtZU5hbWUpIHsKICAgICAgICAgLy8gRklYTUUgLSBuZWVk
IHRvIGdldCByaWQgb2YgdGhpcyB3aW5kb3cgY3JlYXRpb24gd2hpY2gKICAgICAgICAgLy8gYnlw
YXNzZXMgbm9ybWFsIHRhcmdldGVkIGxpbmsgaGFuZGxpbmcKLSAgICAgICAgZnJhbWUgPSBraXQo
Y29yZShbbV9wbHVnaW5WaWV3IHdlYkZyYW1lXSktPmxvYWRlcigpLmZpbmRGcmFtZUZvck5hdmln
YXRpb24oZnJhbWVOYW1lKSk7CisgICAgICAgIGZyYW1lID0ga2l0KGNvcmUoW21fcGx1Z2luVmll
dyB3ZWJGcmFtZV0pLT5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSku
Z2V0KCkpOwogICAgICAgICBpZiAoIWZyYW1lKSB7CiAgICAgICAgICAgICBXZWJWaWV3ICpjdXJy
ZW50V2ViVmlldyA9IFttX3BsdWdpblZpZXcgd2ViVmlld107CiAgICAgICAgICAgICBXZWJWaWV3
ICpuZXdXZWJWaWV3ID0gW1tjdXJyZW50V2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2Vi
VmlldzpjdXJyZW50V2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6bmlsIHdpbmRvd0Zl
YXR1cmVzOkB7IH1dOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCShyZXZpc2lvbiAyODIyNDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUxLDcgKzI1NTEsNyBAQCAt
IChXZWJGcmFtZSAqKWZpbmRGcmFtZU5hbWVkOihOU1N0cmluZyAqCiAgICAgYXV0byBjb3JlRnJh
bWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIHJldHVybiBraXQoY29yZUZyYW1lLT50cmVlKCkuZmluZChuYW1lLCAq
Y29yZUZyYW1lKSk7CisgICAgcmV0dXJuIGtpdChjb3JlRnJhbWUtPnRyZWUoKS5maW5kKG5hbWUp
KTsKIH0KIAogLSAoV2ViRnJhbWUgKilwYXJlbnRGcmFtZQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwkocmV2aXNpb24gMjgyMjQxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDktMTEgIEFs
ZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIHdpbmRvdy5v
cGVuKCkgdXNlcyBpbmNvcnJlY3QgZ2xvYmFsIG9iamVjdCB0byBkZXRlcm1pbmUgaWYgbmF2aWdh
dGlvbiBpcyBhbGxvd2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzAxOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpmaW5kRnJhbWVOYW1l
ZCk6CisKIDIwMjEtMDktMDcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIFN0b3JhZ2UgQVBJCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAyODIyNDEpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNyw3ICs3MjcsNyBA
QCBIUkVTVUxUIFdlYkZyYW1lOjpmaW5kRnJhbWVOYW1lZChfSW5fIEJTCiAgICAgaWYgKCFjb3Jl
RnJhbWUpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICBGcmFtZSogZm91bmRG
cmFtZSA9IGNvcmVGcmFtZS0+dHJlZSgpLmZpbmQoQXRvbVN0cmluZyhuYW1lLCBTeXNTdHJpbmdM
ZW4obmFtZSkpLCAqY29yZUZyYW1lKTsKKyAgICBGcmFtZSogZm91bmRGcmFtZSA9IGNvcmVGcmFt
ZS0+dHJlZSgpLmZpbmQoQXRvbVN0cmluZyhuYW1lLCBTeXNTdHJpbmdMZW4obmFtZSkpKTsKICAg
ICBpZiAoIWZvdW5kRnJhbWUpCiAgICAgICAgIHJldHVybiBTX09LOwogCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODIyNDEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAyMS0wOS0xMSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBn
bWFpbC5jb20+CisKKyAgICAgICAgd2luZG93Lm9wZW4oKSB1c2VzIGluY29ycmVjdCBnbG9iYWwg
b2JqZWN0IHRvIGRldGVybWluZSBpZiBuYXZpZ2F0aW9uIGlzIGFsbG93ZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDE5NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvcG9wdXAt
YmxvY2tlZC1mcm9tLXNhbmRib3hlZC1mcmFtZS12aWEtd2luZG93LW9wZW4tbmFtZWQtc2libGlu
Zy1mcmFtZTItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL3BvcHVwLWJsb2Nr
ZWQtZnJvbS1zYW5kYm94ZWQtZnJhbWUtdmlhLXdpbmRvdy1vcGVuLW5hbWVkLXNpYmxpbmctZnJh
bWUyLmh0bWw6CisgICAgICAgIEFsaWducyB3aXRoIEJsaW5rIGFuZCBHZWNrby4KKwogMjAyMS0w
OS0wOSAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFwcGxlLmNvbT4KIAogICAgICAgICBb
IGlPUyBdIFJlYmFzZWxpbmluZyAyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzc29tLXZpZXcvKiB0ZXN0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVw
LWJsb2NrZWQtZnJvbS1zYW5kYm94ZWQtZnJhbWUtdmlhLXdpbmRvdy1vcGVuLW5hbWVkLXNpYmxp
bmctZnJhbWUyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tc2FuZGJveGVkLWZyYW1lLXZpYS13aW5kb3ctb3Blbi1u
YW1lZC1zaWJsaW5nLWZyYW1lMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI4MjI0MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1zYW5kYm94ZWQtZnJhbWUt
dmlhLXdpbmRvdy1vcGVuLW5hbWVkLXNpYmxpbmctZnJhbWUyLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDIgQEAKLUNPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3Jp
cHQgYXR0ZW1wdCB0byBpbml0aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFtZSB3aXRoIFVSTCAnYWJv
dXQ6YmxhbmsnIGZyb20gZnJhbWUgd2l0aCBVUkwgJ2Fib3V0OmJsYW5rJy4gVGhlIGZyYW1lIGF0
dGVtcHRpbmcgbmF2aWdhdGlvbiBpcyBzYW5kYm94ZWQsIGFuZCBpcyB0aGVyZWZvcmUgZGlzYWxs
b3dlZCBmcm9tIG5hdmlnYXRpbmcgaXRzIGFuY2VzdG9ycy4KLQogQUxFUlQ6IFBBU1MKIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLXNhbmRib3hlZC1m
cmFtZS12aWEtd2luZG93LW9wZW4tbmFtZWQtc2libGluZy1mcmFtZTIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tc2FuZGJveGVk
LWZyYW1lLXZpYS13aW5kb3ctb3Blbi1uYW1lZC1zaWJsaW5nLWZyYW1lMi5odG1sCShyZXZpc2lv
biAyODIyNDEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20t
c2FuZGJveGVkLWZyYW1lLXZpYS13aW5kb3ctb3Blbi1uYW1lZC1zaWJsaW5nLWZyYW1lMi5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
IDxpZnJhbWUgbmFtZT0iQSI+PC9pZnJhbWU+CiA8aWZyYW1lIGlkPSJCIiBzYW5kYm94PSJhbGxv
dy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXBvcHVwcyBhbGxvdy1tb2RhbHMiPjwv
aWZyYW1lPgogPHNjcmlwdD4KLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCIikuY29udGVudFdp
bmRvdy5ldmFsKCdhbGVydCh3aW5kb3cub3Blbi5jYWxsKHdpbmRvdy50b3AsICJhYm91dDpibGFu
ayIsICJBIikgPyAiRkFJTCIgOiAiUEFTUyIpOycpOworYWxlcnQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIkIiKS5jb250ZW50V2luZG93LmV2YWwoJ3dpbmRvdy5vcGVuLmNhbGwod2luZG93LnRv
cCwgImFib3V0OmJsYW5rIiwgIkEiKScpID8gIlBBU1MiIDogIkZBSUwiKTsKIDwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438829</attachid>
            <date>2021-09-21 09:29:56 -0700</date>
            <delta_ts>2022-01-19 12:49:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230194-20210921192954.patch</filename>
            <type>text/plain</type>
            <size>49482</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBACisyMDIxLTA5LTIxICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICB3aW5kb3cub3Blbigp
IHVzZXMgaW5jb3JyZWN0IGdsb2JhbCBvYmplY3QgdG8gZGV0ZXJtaW5lIGlmIG5hdmlnYXRpb24g
aXMgYWxsb3dlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMwMTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2l0aCB0aGlzIGNoYW5nZSwgd2luZG93Lm9wZW4oKSBub3cgdXNlcyBfcmVsZXZhbnRfIGds
b2JhbCBvYmplY3QgKG9mIHx0aGlzfCB2YWx1ZSkKKyAgICAgICAgaW5zdGVhZCBvZiBfY3VycmVu
dF8gb25lIChvZiB0aGUgbWV0aG9kKSB3aGVuIGRldGVybWluaW5nOgorICAgICAgICAgIDEpIGlm
IHRoZSBvcGVuZXIgaXMgZmFtaWxpYXIgd2l0aCBbMV0gdGhlIHRhcmdldDsKKyAgICAgICAgICAy
KSBpZiB0aGUgb3BlbmVyIGlzIGFsbG93ZWQgdG8gbmF2aWdhdGUgWzJdIHRoZSB0YXJnZXQ7Cisg
ICAgICAgICAgMykgaWYgYSBuZXcgKHBvcHVwKSB3aW5kb3cgY2FuIGJlIG9wZW5lZCBbM107Cisg
ICAgICAgICAgNCkgaWYgImFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveCIgZmxhZyBzaG91
bGQgYmUgZm9yd2FyZGVkOworICAgICAgICAgIDUpIGlmIGEgY3Jvc3Mtb3JpZ2luIGphdmFzY3Jp
cHQ6IFVSTCBjYW4gYmUgZXhlY3V0ZWQ7CisgICAgICAgICAgNikgaWYgYW4gZXh0ZXJuYWwgVVJM
IHNob3VsZCBiZSBvcGVuZWQ7CisgICAgICAgICAgNykgY3Jvc3Mtb3JpZ2luIG9wZW5lciBwb2xp
Y3kuCisKKyAgICAgICAgSW4gYSBudXRzaGVsbCwgdGhpcyBwYXRjaCBwcmV2ZW50cyBhbiA8aWZy
YW1lPiBmcm9tIGVzY2FwaW5nIGl0cyAic2FuZGJveCIgYnkgdXNpbmcKKyAgICAgICAgd2luZG93
Lm9wZW4oKSBtZXRob2QgZnJvbSBhbm90aGVyIHJlYWxtLiBUaGlzIGRvZXNuJ3Qgc2VlbSBsaWtl
IGEgc2VjdXJpdHkgaXNzdWUgdGhvdWdoOgorICAgICAgICBhIHNhbmRib3hlZCA8aWZyYW1lPiBj
YW4gb2J0YWluIGNyb3NzLXJlYWxtIHdpbmRvdy5vcGVuKCkgb25seSBpZiBib3RoICJhbGxvdy1z
Y3JpcHRzIgorICAgICAgICBhbmQgImFsbG93LXNhbWUtb3JpZ2luIiBmbGFncyBhcmUgcHJlc2Vu
dC4gSWYgdGhhdCdzIHRoZSBhY3NlLCBhbiA8aWZyYW1lPiBjYW4gc2ltcGx5CisgICAgICAgIHJl
bW92ZSBpdHMgInNhbmRib3giIGF0dHJpYnV0ZS4KKworICAgICAgICBBbHRob3VnaCBwZXIgY3Vy
cmVudCBzcGVjIFs0XSwgd2luZG93Lm9wZW4oKSB1c2VzIF9lbnRyeV8gZ2xvYmFsIG9iamVjdCBw
cmV0dHkgbXVjaAorICAgICAgICBmb3IgZXZlcnl0aGluZywgdGhhdCBkb2Vzbid0IG1hdGNoIHdl
YiByZWFsaXR5LiBUaGlzIGNoYW5nZSBhbGlnbnMgV2ViS2l0IHdpdGggQmxpbmsKKyAgICAgICAg
YW5kIEdlY2tvLCBmb2xsb3dpbmcgdGhlIHJlY29tbWVuZGF0aW9uIGZvciBzcGVjIGF1dGhvcnMg
WzVdIHRvIHByZWZlciBfcmVsZXZhbnRfLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9XaW5k
b3cvb3Blbi1jcm9zcy1yZWFsbS9zYW5kYm94LXBvcHVwcy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9zYW5kYm94LXRvcC1uYXZpZ2F0aW9uLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1zYW5kYm94
ZWQtZnJhbWUtdmlhLXdpbmRvdy1vcGVuLW5hbWVkLXNpYmxpbmctZnJhbWUyLmh0bWwKKworICAg
ICAgICBbMV0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NlcnMu
aHRtbCNicm93c2luZy1jb250ZXh0LW5hbWVzOmZhbWlsaWFyLXdpdGgtNAorICAgICAgICBbMl0g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NpbmctdGhlLXdlYi5o
dG1sI25hdmlnYXRpbmctYWNyb3NzLWRvY3VtZW50czphbGxvd2VkLXRvLW5hdmlnYXRlCisgICAg
ICAgIFszXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2Vycy5o
dG1sI2Jyb3dzaW5nLWNvbnRleHQtbmFtZXM6c2FuZGJveGVkLWF1eGlsaWFyeS1uYXZpZ2F0aW9u
LWJyb3dzaW5nLWNvbnRleHQtZmxhZworICAgICAgICBbNF0gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvd2luZG93LW9iamVjdC5odG1sI3dpbmRvdy1vcGVuLXN0ZXBzCisg
ICAgICAgIFs1XSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBh
cGlzLmh0bWwjY29uY2VwdC1jdXJyZW50LWV2ZXJ5dGhpbmcKKworICAgICAgICAqIGRvbS9Eb2N1
bWVudCtIVE1MLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6Om9wZW5Gb3JCaW5kaW5ncyk6CisgICAgICAgICogZG9tL0RvY3VtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1FbGVtZW50OjpzdWJtaXRJZlBvc3NpYmxlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuVVJMRXh0ZXJuYWxseSk6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpzdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRnJhbWVS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmZpbmRGcmFtZUZvck5hdmlnYXRpb24pOgorICAgICAgICBSZW1vdmVzIHRoZSBEb2N1bWVudCBw
YXJhbWV0ZXIsIHdoaWNoIGlzIG5vIGxvbmdlciBuZWVkZWQgYmVjYXVzZSAiYWxsb3dlZCB0byBu
YXZpZ2F0ZSIgWzJdCisgICAgICAgIGlzIG5vdyBwZXJmb3JtZWQgb24gdGhlIHNhbWUgd2luZG93
IHRoZSB0YXJnZXQgaXMgcmVzb2x2ZWQgYWdhaW5zdC4KKyAgICAgICAgQWxzbywgcmVzb2x2ZXMg
dGhlIEZJWE1FIGJ5IHJldHVybmluZyBSZWZQdHI8RnJhbWU+LgorCisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICBEb24ndCBvdmVycmlkZSByZWZlcnJlciB0byBfcmVs
ZXZhbnRfIGRvY3VtZW50J3MgVVJMIGJlY2F1c2UgdGhhdCBkb2Vzbid0IG1hdGNoIEZpcmVmb3gK
KyAgICAgICAgb3IgdGhlIHNwZWMgWzRdLiBBbHNvLCBJJ20gcHJldHR5IHN1cmUgQ2hyb21lOjpj
cmVhdGVXaW5kb3coKSBpZ25vcmVzIGl0LCBqdXN0IGxpa2UgdGhlCisgICAgICAgIFNhbWVTaXRl
IGNvb2tpZSBhdHRyaWJ1dGUuIFRoZSBjYWxsZXIgbWV0aG9kIGFscmVhZHkgc2V0cyB0aGVzZSBI
VFRQIGhlYWRlcnMgY29ycmVjdGx5LgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcGVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmZp
bmQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlLmg6CisgICAgICAgICogcGFnZS9R
dWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9y
YWdlQWNjZXNzUXVpcmsgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnRhcmdldEZyYW1lIGNvbnN0
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKToKKwogMjAyMS0wOS0yMSAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51
c2VkIENHV2luZG93Q2FwdHVyZVNvdXJjZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50K0hUTUwuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudCtI
VE1MLmlkbAkocmV2aXNpb24gMjgyODIxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
K0hUTUwuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHBhcnRpYWwgaW50ZXJm
YWNlIERvY3VtZW50IHsKICAgICAvLyB0aGF0IHRoZSBjYWxsZXIgZG9jdW1lbnQgbWF0Y2hlcyB0
aG9zZSBzZW1hbnRpY3MuIEl0IGlzIHBvc3NpYmxlIHdlIHNob3VsZCByZXBsYWNlIGl0IHdpdGgK
ICAgICAvLyB0aGUgZXhpc3RpbmcgJ2luY3VtYmVudCBkb2N1bWVudCcgY29uY2VwdC4KICAgICBb
Q0VSZWFjdGlvbnMsIENhbGxXaXRoPVJlc3BvbnNpYmxlRG9jdW1lbnQsIEltcGxlbWVudGVkQXM9
b3BlbkZvckJpbmRpbmdzXSBEb2N1bWVudCBvcGVuKG9wdGlvbmFsIERPTVN0cmluZyB1bnVzZWQx
LCBvcHRpb25hbCBET01TdHJpbmcgdW51c2VkMik7IC8vIGJvdGggYXJndW1lbnRzIGFyZSBpZ25v
cmVkLgotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3csIEltcGxlbWVudGVk
QXM9b3BlbkZvckJpbmRpbmdzXSBXaW5kb3dQcm94eSBvcGVuKFVTVlN0cmluZyB1cmwsIERPTVN0
cmluZyBuYW1lLCBET01TdHJpbmcgZmVhdHVyZXMpOworICAgIFtDYWxsV2l0aD1GaXJzdFdpbmRv
dywgSW1wbGVtZW50ZWRBcz1vcGVuRm9yQmluZGluZ3NdIFdpbmRvd1Byb3h5IG9wZW4oVVNWU3Ry
aW5nIHVybCwgRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyBmZWF0dXJlcyk7CiAgICAgW0NFUmVh
Y3Rpb25zLCBJbXBsZW1lbnRlZEFzPWNsb3NlRm9yQmluZGluZ3NdIHVuZGVmaW5lZCBjbG9zZSgp
OwogICAgIFtDRVJlYWN0aW9ucywgQ2FsbFdpdGg9UmVzcG9uc2libGVEb2N1bWVudF0gdW5kZWZp
bmVkIHdyaXRlKERPTVN0cmluZy4uLiB0ZXh0KTsKICAgICBbQ0VSZWFjdGlvbnMsIENhbGxXaXRo
PVJlc3BvbnNpYmxlRG9jdW1lbnRdIHVuZGVmaW5lZCB3cml0ZWxuKERPTVN0cmluZy4uLiB0ZXh0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjgyODIxKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwOCwxMiAr
MjkwOCwxMiBAQCBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIERvY3VtZW50OjpzY3JpCiAgICAg
cmV0dXJuIHBhcnNlcigpID8gcGFyc2VyKCktPmFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkg
OiBudWxscHRyOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBEb2N1bWVu
dDo6b3BlbkZvckJpbmRpbmdzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZp
cnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBmZWF0dXJlcykKK0V4Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IERv
Y3VtZW50OjpvcGVuRm9yQmluZGluZ3MoRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZmVhdHVyZXMp
CiB7CiAgICAgaWYgKCFtX2RvbVdpbmRvdykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRBY2Nlc3NFcnJvciB9OwogCi0gICAgcmV0dXJuIG1fZG9tV2luZG93LT5vcGVuKGFjdGl2
ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCwgbmFtZSwgZmVhdHVyZXMpOworICAgIHJldHVybiBt
X2RvbVdpbmRvdy0+b3BlbihmaXJzdFdpbmRvdywgdXJsLCBuYW1lLCBmZWF0dXJlcyk7CiB9CiAK
IEV4Y2VwdGlvbk9yPERvY3VtZW50Jj4gRG9jdW1lbnQ6Om9wZW5Gb3JCaW5kaW5ncyhEb2N1bWVu
dCogcmVzcG9uc2libGVEb2N1bWVudCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyODI4MjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjU3LDcgKzY1Nyw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudExvYWRlciogbG9hZGVyKCkgY29u
c3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWZQdHI8V2luZG93UHJveHk+
PiBvcGVuRm9yQmluZGluZ3MoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmly
c3RET01XaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGZlYXR1cmVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxS
ZWZQdHI8V2luZG93UHJveHk+PiBvcGVuRm9yQmluZGluZ3MoRE9NV2luZG93JiBmaXJzdFdpbmRv
dywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgZmVhdHVyZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPERvY3VtZW50Jj4g
b3BlbkZvckJpbmRpbmdzKERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50LCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVuYW1lIHRo
aXMgYXQgc29tZSBwb2ludCBhbmQgZ2l2ZSBiYWNrIHRoZSBuYW1lICdvcGVuJyB0byB0aGUgSFRN
TCBzcGVjaWZpZWQgb25lcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI4MjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgSFRNTEZv
cm1FbGVtZW50OjpzdWJtaXRJZlBvc3NpYmxlKEUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gdGFyZ2V0RnJhbWUgPSBmcmFtZS0+bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdh
dGlvbihlZmZlY3RpdmVUYXJnZXQoZXZlbnQsIHN1Ym1pdHRlciksICZkb2N1bWVudCgpKTsKKyAg
ICBhdXRvIHRhcmdldEZyYW1lID0gZnJhbWUtPmxvYWRlcigpLmZpbmRGcmFtZUZvck5hdmlnYXRp
b24oZWZmZWN0aXZlVGFyZ2V0KGV2ZW50LCBzdWJtaXR0ZXIpKTsKICAgICBpZiAoIXRhcmdldEZy
YW1lKQogICAgICAgICB0YXJnZXRGcmFtZSA9IGZyYW1lLmdldCgpOwogICAgIGF1dG8gZm9ybVN0
YXRlID0gRm9ybVN0YXRlOjpjcmVhdGUoKnRoaXMsIHRleHRGaWVsZFZhbHVlcygpLCBkb2N1bWVu
dCgpLCBOb3RTdWJtaXR0ZWRCeUphdmFTY3JpcHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAko
cmV2aXNpb24gMjgyODIxKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNyArMjcxLDcgQEAg
dm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuVQogCiAgICAgYm9vbCBjcmVh
dGVkOwogICAgIFdpbmRvd0ZlYXR1cmVzIGZlYXR1cmVzOwotICAgIGF1dG8gZnJhbWUgPSBXZWJD
b3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdURk1vdmUoZnJhbWVMb2Fk
UmVxdWVzdCksIGZlYXR1cmVzLCBjcmVhdGVkKTsKKyAgICBhdXRvIGZyYW1lID0gV2ViQ29yZTo6
Y3JlYXRlV2luZG93KG1haW5GcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgZmVhdHVy
ZXMsIGNyZWF0ZWQpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyODI4MjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTEsNyArNDkxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShSZWY8Rm9ybVN1Ygog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRnJhbWUqIHRhcmdldEZyYW1lID0gZmluZEZy
YW1lRm9yTmF2aWdhdGlvbihzdWJtaXNzaW9uLT50YXJnZXQoKSwgJnN1Ym1pc3Npb24tPnN0YXRl
KCkuc291cmNlRG9jdW1lbnQoKSk7CisgICAgYXV0byB0YXJnZXRGcmFtZSA9IGZpbmRGcmFtZUZv
ck5hdmlnYXRpb24oc3VibWlzc2lvbi0+dGFyZ2V0KCkpOwogICAgIGlmICghdGFyZ2V0RnJhbWUp
IHsKICAgICAgICAgaWYgKCFET01XaW5kb3c6OmFsbG93UG9wVXAobV9mcmFtZSkgJiYgIVVzZXJH
ZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKFJl
ZjxGb3JtU3ViCiAgICAgaWYgKCF0YXJnZXRGcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9mcmFtZS50cmVlKCkuaXNEZXNjZW5kYW50T2YodGFyZ2V0RnJhbWUpKQor
ICAgIGlmIChtX2ZyYW1lLnRyZWUoKS5pc0Rlc2NlbmRhbnRPZih0YXJnZXRGcmFtZS5nZXQoKSkp
CiAgICAgICAgIG1fc3VibWl0dGVkRm9ybVVSTCA9IHN1Ym1pc3Npb24tPnJlcXVlc3RVUkwoKTsK
IAogICAgIHN1Ym1pc3Npb24tPnNldFJlZmVycmVyKG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0x
Mjc2LDcgKzEyNzYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KEZyYW1l
CiAgICAgICAgIEZyYW1lKiBzb3VyY2VGcmFtZSA9IGZvcm1TdGF0ZSA/IGZvcm1TdGF0ZS0+c291
cmNlRG9jdW1lbnQoKS5mcmFtZSgpIDogJm1fZnJhbWU7CiAgICAgICAgIGlmICghc291cmNlRnJh
bWUpCiAgICAgICAgICAgICBzb3VyY2VGcmFtZSA9ICZtX2ZyYW1lOwotICAgICAgICBGcmFtZSog
dGFyZ2V0RnJhbWUgPSBzb3VyY2VGcmFtZS0+bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlv
bihmcmFtZU5hbWUpOworICAgICAgICBhdXRvIHRhcmdldEZyYW1lID0gc291cmNlRnJhbWUtPmxv
YWRlcigpLmZpbmRGcmFtZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lKTsKICAgICAgICAgaWYgKHRh
cmdldEZyYW1lICYmIHRhcmdldEZyYW1lICE9IHNvdXJjZUZyYW1lKSB7CiAgICAgICAgICAgICBp
ZiAoUGFnZSogcGFnZSA9IHRhcmdldEZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFn
ZS0+Y2hyb21lKCkuZm9jdXMoKTsKQEAgLTEzNDQsNyArMTM0NCw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWUKICAgICBib29sIGlzRm9ybVN1Ym1pc3Npb24gPSBm
b3JtU3RhdGU7CiAKICAgICAvLyBUaGUgc2VhcmNoIGZvciBhIHRhcmdldCBmcmFtZSBpcyBkb25l
IGVhcmxpZXIgaW4gdGhlIGNhc2Ugb2YgZm9ybSBzdWJtaXNzaW9uLgotICAgIGF1dG8gdGFyZ2V0
RnJhbWUgPSBpc0Zvcm1TdWJtaXNzaW9uID8gbnVsbHB0ciA6IFJlZlB0ciB7IGZpbmRGcmFtZUZv
ck5hdmlnYXRpb24oZWZmZWN0aXZlRnJhbWVOYW1lKSB9OworICAgIGF1dG8gdGFyZ2V0RnJhbWUg
PSBpc0Zvcm1TdWJtaXNzaW9uID8gbnVsbHB0ciA6IGZpbmRGcmFtZUZvck5hdmlnYXRpb24oZWZm
ZWN0aXZlRnJhbWVOYW1lKTsKICAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUgIT0g
Jm1fZnJhbWUpIHsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRGcmFtZU5hbWUoIl9zZWxm
Iik7CiAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5sb2FkVVJMKFdURk1vdmUoZnJhbWVM
b2FkUmVxdWVzdCksIHJlZmVycmVyLCBuZXdMb2FkVHlwZSwgZXZlbnQsIFdURk1vdmUoZm9ybVN0
YXRlKSwgV1RGTW92ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCksIGNvbXBsZXRpb25IYW5kbGVy
Q2FsbGVyLnJlbGVhc2UoKSk7CkBAIC0xNDUxLDggKzE0NTEsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkKEZyYW1lTG9hZFJlcXVlc3QmCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghcmVx
dWVzdC5mcmFtZU5hbWUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gZmlu
ZEZyYW1lRm9yTmF2aWdhdGlvbihyZXF1ZXN0LmZyYW1lTmFtZSgpKTsKLSAgICAgICAgaWYgKGZy
YW1lKSB7CisgICAgICAgIGlmIChhdXRvIGZyYW1lID0gZmluZEZyYW1lRm9yTmF2aWdhdGlvbihy
ZXF1ZXN0LmZyYW1lTmFtZSgpKSkgewogICAgICAgICAgICAgcmVxdWVzdC5zZXRTaG91bGRDaGVj
a05ld1dpbmRvd1BvbGljeShmYWxzZSk7CiAgICAgICAgICAgICBpZiAoJmZyYW1lLT5sb2FkZXIo
KSAhPSB0aGlzKSB7CiAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmxvYWQoV1RGTW92
ZShyZXF1ZXN0KSk7CkBAIC0zMDc0LDcgKzMwNzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
UG9zdFJlcXVlc3QoRnJhbWVMCiAKICAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgLy8gVGhlIHNlYXJjaCBmb3IgYSB0YXJnZXQgZnJhbWUgaXMgZG9uZSBlYXJsaWVyIGlu
IHRoZSBjYXNlIG9mIGZvcm0gc3VibWlzc2lvbi4KLSAgICAgICAgaWYgKGF1dG8qIHRhcmdldEZy
YW1lID0gZm9ybVN0YXRlID8gbnVsbHB0ciA6IGZpbmRGcmFtZUZvck5hdmlnYXRpb24oZnJhbWVO
YW1lKSkgeworICAgICAgICBpZiAoYXV0byB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IG51bGxw
dHIgOiBmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSkpIHsKICAgICAgICAgICAgIHRh
cmdldEZyYW1lLT5sb2FkZXIoKS5sb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291
cmNlUmVxdWVzdCwgV1RGTW92ZShhY3Rpb24pLCBsb2FkVHlwZSwgV1RGTW92ZShmb3JtU3RhdGUp
LCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzcyMSwxNSArMzcyMCwxMSBA
QCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzU3JjZG9jCiAgICAgcmV0dXJuIG93
bmVyRWxlbWVudC0+aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNkb2NBdHRy
KTsKIH0KIAotRnJhbWUqIEZyYW1lTG9hZGVyOjpmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWUsIERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCkKK1JlZlB0cjxGcmFt
ZT4gRnJhbWVMb2FkZXI6OmZpbmRGcmFtZUZvck5hdmlnYXRpb24oY29uc3QgQXRvbVN0cmluZyYg
bmFtZSkKIHsKLSAgICAvLyBGSVhNRTogRXZlbnR1YWxseSBhbGwgY2FsbGVycyBzaG91bGQgc3Vw
cGx5IHRoZSBhY3R1YWwgYWN0aXZlRG9jdW1lbnQgc28gd2UgY2FuIGNhbGwgY2FuTmF2aWdhdGUg
d2l0aCB0aGUgcmlnaHQgZG9jdW1lbnQuCi0gICAgaWYgKCFhY3RpdmVEb2N1bWVudCkKLSAgICAg
ICAgYWN0aXZlRG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CisgICAgYXV0byogZnJhbWUg
PSBtX2ZyYW1lLnRyZWUoKS5maW5kKG5hbWUpOwogCi0gICAgYXV0byogZnJhbWUgPSBtX2ZyYW1l
LnRyZWUoKS5maW5kKG5hbWUsIGFjdGl2ZURvY3VtZW50LT5mcmFtZSgpID8gKmFjdGl2ZURvY3Vt
ZW50LT5mcmFtZSgpIDogbV9mcmFtZSk7Ci0KLSAgICBpZiAoIWFjdGl2ZURvY3VtZW50LT5jYW5O
YXZpZ2F0ZShmcmFtZSkpCisgICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCktPmNhbk5hdmlnYXRl
KGZyYW1lKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gZnJhbWU7CkBA
IC00MDkzLDcgKzQwODgsNyBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpoYXNIVE1MVmlldygp
IGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KEZy
YW1lJiBvcGVuZXJGcmFtZSwgRnJhbWUmIGxvb2t1cEZyYW1lLCBGcmFtZUxvYWRSZXF1ZXN0JiYg
cmVxdWVzdCwgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBib29sJiBjcmVhdGVkKQorUmVmUHRy
PEZyYW1lPiBjcmVhdGVXaW5kb3coRnJhbWUmIG9wZW5lckZyYW1lLCBGcmFtZUxvYWRSZXF1ZXN0
JiYgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBib29sJiBjcmVhdGVkKQogewog
ICAgIEFTU0VSVCghZmVhdHVyZXMuZGlhbG9nIHx8IHJlcXVlc3QuZnJhbWVOYW1lKCkuaXNFbXB0
eSgpKTsKICAgICBBU1NFUlQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkg
PT0gIkdFVCIpOwpAQCAtNDEwNSw3ICs0MTAwLDcgQEAgUmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5k
b3coRnJhbWUmIG9wZW5lcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghcmVx
dWVzdC5mcmFtZU5hbWUoKS5pc0VtcHR5KCkgJiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVx
dWVzdC5mcmFtZU5hbWUoKSwgIl9ibGFuayIpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8RnJhbWU+
IGZyYW1lID0gbG9va3VwRnJhbWUubG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlvbihyZXF1
ZXN0LmZyYW1lTmFtZSgpLCBvcGVuZXJGcmFtZS5kb2N1bWVudCgpKSkgeworICAgICAgICBpZiAo
YXV0byBmcmFtZSA9IG9wZW5lckZyYW1lLmxvYWRlcigpLmZpbmRGcmFtZUZvck5hdmlnYXRpb24o
cmVxdWVzdC5mcmFtZU5hbWUoKSkpIHsKICAgICAgICAgICAgIGlmICghZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShyZXF1ZXN0LmZyYW1lTmFtZSgpLCAiX3NlbGYiKSkgewogICAgICAgICAgICAgICAg
IGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICAgICAgcGFn
ZS0+Y2hyb21lKCkuZm9jdXMoKTsKQEAgLTQxMjcsMTIgKzQxMjIsNiBAQCBSZWZQdHI8RnJhbWU+
IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIC8vIEZJWE1FOiBTZXR0aW5nIHRoZSByZWZlcnJlciBzaG91bGQgYmUgdGhlIGNh
bGxlcidzIHJlc3BvbnNpYmlsaXR5LgotICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9s
aWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG9wZW5lckZyYW1lLmRvY3VtZW50KCktPnJlZmVy
cmVyUG9saWN5KCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIG9wZW5lckZyYW1l
LmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7Ci0gICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5
KCkpCi0gICAgICAgIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKHJl
ZmVycmVyKTsKLSAgICBGcmFtZUxvYWRlcjo6YWRkU2FtZVNpdGVJbmZvVG9SZXF1ZXN0SWZOZWVk
ZWQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgb3BlbmVyRnJhbWUuZG9jdW1lbnQoKSk7Ci0K
ICAgICBQYWdlKiBvbGRQYWdlID0gb3BlbmVyRnJhbWUucGFnZSgpOwogICAgIGlmICghb2xkUGFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAkocmV2aXNpb24gMjgyODIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3MCw4ICsyNzAsNyBAQCBwdWJsaWM6CiAKICAg
ICBGcmFtZUxvYWRlclN0YXRlTWFjaGluZSYgc3RhdGVNYWNoaW5lKCkgeyByZXR1cm4gbV9zdGF0
ZU1hY2hpbmU7IH0KIAotICAgIC8vIEZJWE1FOiBzaG91bGQgcmV0dXJuIFJlZlB0ci4KLSAgICBX
RUJDT1JFX0VYUE9SVCBGcmFtZSogZmluZEZyYW1lRm9yTmF2aWdhdGlvbihjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lLCBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQgPSBudWxscHRyKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8RnJhbWU+IGZpbmRGcmFtZUZvck5hdmlnYXRpb24oY29uc3QgQXRv
bVN0cmluZyYgbmFtZSk7CiAKICAgICB2b2lkIGFwcGx5VXNlckFnZW50SWZOZWVkZWQoUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAKQEAgLTUxMSw2ICs1MTAsNiBAQCBwcml2YXRlOgogLy8KIC8vIEZJWE1F
OiBDb25zaWRlciBtYWtpbmcgdGhpcyBmdW5jdGlvbiBwYXJ0IG9mIGFuIGFwcHJvcHJpYXRlIGNs
YXNzIChub3QgRnJhbWVMb2FkZXIpCiAvLyBhbmQgbW92aW5nIGl0IHRvIGEgbW9yZSBhcHByb3By
aWF0ZSBsb2NhdGlvbi4KLVJlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KEZyYW1lJiBvcGVuZXJG
cmFtZSwgRnJhbWUmIGxvb2t1cEZyYW1lLCBGcmFtZUxvYWRSZXF1ZXN0JiYsIFdpbmRvd0ZlYXR1
cmVzJiwgYm9vbCYgY3JlYXRlZCk7CitSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYg
b3BlbmVyRnJhbWUsIEZyYW1lTG9hZFJlcXVlc3QmJiwgV2luZG93RmVhdHVyZXMmLCBib29sJiBj
cmVhdGVkKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAkocmV2aXNpb24gMjgyODIxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDkwLDE0ICsyNDkwLDEwIEBAIGJvb2wgRE9N
V2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNzKEQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
RXhjZXB0aW9uT3I8UmVmUHRyPEZyYW1lPj4gRE9NV2luZG93OjpjcmVhdGVXaW5kb3coY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgV2lu
ZG93RmVhdHVyZXMmIGluaXRpYWxXaW5kb3dGZWF0dXJlcywgRE9NV2luZG93JiBhY3RpdmVXaW5k
b3csIEZyYW1lJiBmaXJzdEZyYW1lLCBGcmFtZSYgb3BlbmVyRnJhbWUsIGNvbnN0IFdURjo6RnVu
Y3Rpb248dm9pZChET01XaW5kb3cmKT4mIHByZXBhcmVEaWFsb2dGdW5jdGlvbikKK0V4Y2VwdGlv
bk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBBdG9tU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFdpbmRvd0ZlYXR1
cmVzJiBpbml0aWFsV2luZG93RmVhdHVyZXMsIEZyYW1lJiBmaXJzdEZyYW1lLCBGcmFtZSYgb3Bl
bmVyRnJhbWUsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChET01XaW5kb3cmKT4mIHByZXBhcmVE
aWFsb2dGdW5jdGlvbikKIHsKLSAgICBSZWZQdHIgYWN0aXZlRnJhbWUgPSBhY3RpdmVXaW5kb3cu
ZnJhbWUoKTsKLSAgICBpZiAoIWFjdGl2ZUZyYW1lKQotICAgICAgICByZXR1cm4gUmVmUHRyPEZy
YW1lPiB7IG51bGxwdHIgfTsKLQotICAgIFJlZlB0ciBhY3RpdmVEb2N1bWVudCA9IGFjdGl2ZVdp
bmRvdy5kb2N1bWVudCgpOwotICAgIGlmICghYWN0aXZlRG9jdW1lbnQpCisgICAgUmVmUHRyIGRv
Y3VtZW50ID0gb3BlbmVyRnJhbWUuZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQogICAg
ICAgICByZXR1cm4gUmVmUHRyPEZyYW1lPiB7IG51bGxwdHIgfTsKIAogICAgIFVSTCBjb21wbGV0
ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKHsgfSwgZW1wdHlTdHJpbmcoKSkgOiBm
aXJzdEZyYW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CkBAIC0yNTA2LDE4
ICsyNTAyLDE2IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3IKIAog
ICAgIFdpbmRvd0ZlYXR1cmVzIHdpbmRvd0ZlYXR1cmVzID0gaW5pdGlhbFdpbmRvd0ZlYXR1cmVz
OwogCi0gICAgLy8gRm9yIHdoYXRldmVyIHJlYXNvbiwgRmlyZWZveCB1c2VzIHRoZSBmaXJzdCBm
cmFtZSB0byBkZXRlcm1pbmUgdGhlIG91dGdvaW5nUmVmZXJyZXIuIFdlIHJlcGxpY2F0ZSB0aGF0
IGJlaGF2aW9yIGhlcmUuCisgICAgLy8gRmlyZWZveCB1c2VzIHRoZSBlbnRyeSB3aW5kb3cgdG8g
ZGV0ZXJtaW5lIHRoZSBvdXRnb2luZyByZWZlcnJlciBhcyBwZXIgY3VycmVudCBzcGVjLgogICAg
IFN0cmluZyByZWZlcnJlciA9IHdpbmRvd0ZlYXR1cmVzLm5vcmVmZXJyZXIgPyBTdHJpbmcoKSA6
IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZpcnN0RnJhbWUuZG9jdW1l
bnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgY29tcGxldGVkVVJMLCBmaXJzdEZyYW1lLmxvYWRlcigp
Lm91dGdvaW5nUmVmZXJyZXIoKSk7Ci0gICAgYXV0byBpbml0aWF0ZWRCeU1haW5GcmFtZSA9IGFj
dGl2ZUZyYW1lLT5pc01haW5GcmFtZSgpID8gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllcyA6IElu
aXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duOworICAgIGF1dG8gaW5pdGlhdGVkQnlNYWluRnJh
bWUgPSBvcGVuZXJGcmFtZS5pc01haW5GcmFtZSgpID8gSW5pdGlhdGVkQnlNYWluRnJhbWU6Olll
cyA6IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlc291cmNlUmVxdWVzdCB7IGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIgfTsKLSAgICBGcmFtZUxv
YWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqYWN0aXZlRG9jdW1lbnQsIGFjdGl2ZURvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIGZyYW1lTmFt
ZSwgaW5pdGlhdGVkQnlNYWluRnJhbWUgfTsKLSAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koYWN0aXZlRG9jdW1lbnQtPnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9h
ZFJlcXVlc3QgeyAqZG9jdW1lbnQsIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3Zl
KHJlc291cmNlUmVxdWVzdCksIGZyYW1lTmFtZSwgaW5pdGlhdGVkQnlNYWluRnJhbWUgfTsKKyAg
ICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koZG9jdW1l
bnQtPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKIAotICAgIC8v
IFdlIHBhc3MgdGhlIG9wZW5lciBmcmFtZSBmb3IgdGhlIGxvb2t1cEZyYW1lIGluIGNhc2UgdGhl
IGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJvbQotICAgIC8vIHRoZSBvcGVuZXIgZnJhbWUs
IGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9wZW5lciBm
cmFtZS4KICAgICBib29sIGNyZWF0ZWQ7Ci0gICAgYXV0byBuZXdGcmFtZSA9IFdlYkNvcmU6OmNy
ZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUsIG9wZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJl
cXVlc3QpLCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7CisgICAgYXV0byBuZXdGcmFtZSA9IFdl
YkNvcmU6OmNyZWF0ZVdpbmRvdyhvcGVuZXJGcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0
KSwgd2luZG93RmVhdHVyZXMsIGNyZWF0ZWQpOwogICAgIGlmICghbmV3RnJhbWUpCiAgICAgICAg
IHJldHVybiBSZWZQdHI8RnJhbWU+IHsgbnVsbHB0ciB9OwogCkBAIC0yNTI4LDcgKzI1MjIsNyBA
QCBFeGNlcHRpb25PcjxSZWZQdHI8RnJhbWU+PiBET01XaW5kb3c6OmNyCiAgICAgaWYgKGNyZWF0
ZWQpCiAgICAgICAgIG5ld0ZyYW1lLT5wYWdlKCktPnNldE9wZW5lZEJ5RE9NKCk7CiAKLSAgICBp
ZiAobmV3RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5pc0luc2VjdXJlU2NyaXB0QWNj
ZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMLnN0cmluZygpKSkKKyAgICBpZiAobmV3RnJh
bWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5pc0luc2VjdXJlU2NyaXB0QWNjZXNzKCpvcGVu
ZXJGcmFtZS53aW5kb3coKSwgY29tcGxldGVkVVJMLnN0cmluZygpKSkKICAgICAgICAgcmV0dXJu
IG5vb3BlbmVyID8gUmVmUHRyPEZyYW1lPiB7IG51bGxwdHIgfSA6IG5ld0ZyYW1lOwogCiAgICAg
aWYgKHByZXBhcmVEaWFsb2dGdW5jdGlvbikKQEAgLTI1MzcsMTIgKzI1MzEsMTIgQEAgRXhjZXB0
aW9uT3I8UmVmUHRyPEZyYW1lPj4gRE9NV2luZG93OjpjcgogICAgIGlmIChjcmVhdGVkKSB7CiAg
ICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyBjb21wbGV0ZWRVUkwsIHJl
ZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSB9OwogICAgICAgICBGcmFtZUxvYWRlcjo6YWRkU2FtZVNpdGVJbmZvVG9SZXF1ZXN0SWZOZWVk
ZWQocmVzb3VyY2VSZXF1ZXN0LCBvcGVuZXJGcmFtZS5kb2N1bWVudCgpKTsKLSAgICAgICAgRnJh
bWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmFjdGl2ZVdpbmRvdy5kb2N1bWVudCgp
LCBhY3RpdmVXaW5kb3cuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgV1RGTW92ZShyZXNv
dXJjZVJlcXVlc3QpLCAiX3NlbGYiX3MsIGluaXRpYXRlZEJ5TWFpbkZyYW1lIH07Ci0gICAgICAg
IGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShhY3RpdmVE
b2N1bWVudC0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOworICAg
ICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqZG9jdW1lbnQsIGRvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksICJfc2VsZiJf
cywgaW5pdGlhdGVkQnlNYWluRnJhbWUgfTsKKyAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KGRvY3VtZW50LT5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CiAgICAgICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS5jaGFu
Z2VMb2NhdGlvbihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpKTsKICAgICB9IGVsc2UgaWYgKCF1
cmxTdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5ID0g
VXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpID8gTG9ja0hpc3Rv
cnk6Ok5vIDogTG9ja0hpc3Rvcnk6OlllczsKLSAgICAgICAgbmV3RnJhbWUtPm5hdmlnYXRpb25T
Y2hlZHVsZXIoKS5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKCphY3RpdmVEb2N1bWVudCwgYWN0aXZl
RG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIsIGxvY2tI
aXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObyk7CisgICAgICAgIG5ld0ZyYW1lLT5uYXZp
Z2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNoYW5nZSgqZG9jdW1lbnQsIGRvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLCBjb21wbGV0ZWRVUkwsIHJlZmVycmVyLCBsb2NrSGlzdG9y
eSwgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8pOwogICAgIH0KIAogICAgIC8vIE5hdmlnYXRpbmcg
dGhlIG5ldyBmcmFtZSBjb3VsZCByZXN1bHQgaW4gaXQgYmVpbmcgZGV0YWNoZWQgZnJvbSBpdHMg
cGFnZSBieSBhIG5hdmlnYXRpb24gcG9saWN5IGRlbGVnYXRlLgpAQCAtMjU1Miw3ICsyNTQ2LDcg
QEAgRXhjZXB0aW9uT3I8UmVmUHRyPEZyYW1lPj4gRE9NV2luZG93OjpjcgogICAgIHJldHVybiBu
b29wZW5lciA/IFJlZlB0cjxGcmFtZT4geyBudWxscHRyIH0gOiBuZXdGcmFtZTsKIH0KIAotRXhj
ZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5Pj4gRE9NV2luZG93OjpvcGVuKERPTVdpbmRvdyYg
YWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZ1RvT3BlbiwgY29uc3QgQXRvbVN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBTdHJpbmcmIHdp
bmRvd0ZlYXR1cmVzU3RyaW5nKQorRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5Pj4gRE9N
V2luZG93OjpvcGVuKERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nVG9PcGVuLCBjb25zdCBBdG9tU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0cmluZyYgd2lu
ZG93RmVhdHVyZXNTdHJpbmcpCiB7CiAjaWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BS
RVZFTlRJT04pCiAgICAgaWYgKFJlZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsK
QEAgLTI1NjgsOCArMjU2Miw4IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IERP
TVdpbmQKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICBy
ZXR1cm4gUmVmUHRyPFdpbmRvd1Byb3h5PiB7IG51bGxwdHIgfTsKIAotICAgIFJlZlB0ciBhY3Rp
dmVEb2N1bWVudCA9IGFjdGl2ZVdpbmRvdy5kb2N1bWVudCgpOwotICAgIGlmICghYWN0aXZlRG9j
dW1lbnQpCisgICAgUmVmUHRyIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAo
IWRvY3VtZW50KQogICAgICAgICByZXR1cm4gUmVmUHRyPFdpbmRvd1Byb3h5PiB7IG51bGxwdHIg
fTsKIAogICAgIFJlZlB0ciBmaXJzdEZyYW1lID0gZmlyc3RXaW5kb3cuZnJhbWUoKTsKQEAgLTI1
NzcsNyArMjU3MSw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IERPTVdpbmQK
ICAgICAgICAgcmV0dXJuIFJlZlB0cjxXaW5kb3dQcm94eT4geyBudWxscHRyIH07CiAKICAgICBh
dXRvIHVybFN0cmluZyA9IHVybFN0cmluZ1RvT3BlbjsKLSAgICBpZiAoYWN0aXZlRG9jdW1lbnQt
PnF1aXJrcygpLnNob3VsZE9wZW5Bc0Fib3V0QmxhbmsodXJsU3RyaW5nVG9PcGVuKSkKKyAgICBp
ZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZE9wZW5Bc0Fib3V0QmxhbmsodXJsU3RyaW5nVG9P
cGVuKSkKICAgICAgICAgdXJsU3RyaW5nID0gImFib3V0OmJsYW5rIl9zOwogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTI1OTksNyArMjU5Myw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxXaW5kb3dQcm94eT4+IERPTVdpbmQKICAgICBpZiAoIWZpcnN0V2luZG93LmFsbG93UG9w
VXAoKSkgewogICAgICAgICAvLyBCZWNhdXNlIEZyYW1lVHJlZTo6ZmluZEZyYW1lRm9yTmF2aWdh
dGlvbigpIHJldHVybnMgdHJ1ZSBmb3IgZW1wdHkgc3RyaW5ncywgd2UgbXVzdCBjaGVjayBmb3Ig
ZW1wdHkgZnJhbWUgbmFtZXMuCiAgICAgICAgIC8vIE90aGVyd2lzZSwgaWxsZWdpdGltYXRlIHdp
bmRvdy5vcGVuKCkgY2FsbHMgd2l0aCBubyBuYW1lIHdpbGwgcGFzcyByaWdodCB0aHJvdWdoIHRo
ZSBwb3B1cCBibG9ja2VyLgotICAgICAgICBpZiAoZnJhbWVOYW1lLmlzRW1wdHkoKSB8fCAhZnJh
bWUtPmxvYWRlcigpLmZpbmRGcmFtZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lLCBhY3RpdmVEb2N1
bWVudC5nZXQoKSkpCisgICAgICAgIGlmIChmcmFtZU5hbWUuaXNFbXB0eSgpIHx8ICFmcmFtZS0+
bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUpKQogICAgICAgICAgICAg
cmV0dXJuIFJlZlB0cjxXaW5kb3dQcm94eT4geyBudWxscHRyIH07CiAgICAgfQogCkBAIC0yNjE1
LDI2ICsyNjA5LDI1IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IERPTVdpbmQK
ICAgICAgICAgICAgIHRhcmdldEZyYW1lID0gZnJhbWU7CiAgICAgfQogICAgIGlmICh0YXJnZXRG
cmFtZSkgewotICAgICAgICBpZiAoIWFjdGl2ZURvY3VtZW50LT5jYW5OYXZpZ2F0ZSh0YXJnZXRG
cmFtZS5nZXQoKSkpCisgICAgICAgIGlmICghZG9jdW1lbnQtPmNhbk5hdmlnYXRlKHRhcmdldEZy
YW1lLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBSZWZQdHI8V2luZG93UHJveHk+IHsgbnVs
bHB0ciB9OwogCiAgICAgICAgIFVSTCBjb21wbGV0ZWRVUkwgPSBmaXJzdEZyYW1lLT5kb2N1bWVu
dCgpLT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogCi0gICAgICAgIGlmICh0YXJnZXRGcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoYWN0aXZlV2lu
ZG93LCBjb21wbGV0ZWRVUkwuc3RyaW5nKCkpKQorICAgICAgICBpZiAodGFyZ2V0RnJhbWUtPmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpLT5pc0luc2VjdXJlU2NyaXB0QWNjZXNzKCp0aGlzLCBjb21w
bGV0ZWRVUkwuc3RyaW5nKCkpKQogICAgICAgICAgICAgcmV0dXJuICZ0YXJnZXRGcmFtZS0+d2lu
ZG93UHJveHkoKTsKIAogICAgICAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybiAmdGFyZ2V0RnJhbWUtPndpbmRvd1Byb3h5KCk7CiAKLSAgICAgICAgLy8gRm9y
IHdoYXRldmVyIHJlYXNvbiwgRmlyZWZveCB1c2VzIHRoZSBmaXJzdCB3aW5kb3cgcmF0aGVyIHRo
YW4gdGhlIGFjdGl2ZSB3aW5kb3cgdG8KLSAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBvdXRnb2lu
ZyByZWZlcnJlci4gV2UgcmVwbGljYXRlIHRoYXQgYmVoYXZpb3IgaGVyZS4KKyAgICAgICAgLy8g
RmlyZWZveCB1c2VzIHRoZSBlbnRyeSB3aW5kb3cgdG8gZGV0ZXJtaW5lIHRoZSBvdXRnb2luZyBy
ZWZlcnJlciBhcyBwZXIgY3VycmVudCBzcGVjLgogICAgICAgICBMb2NrSGlzdG9yeSBsb2NrSGlz
dG9yeSA9IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSA/IExv
Y2tIaXN0b3J5OjpObyA6IExvY2tIaXN0b3J5OjpZZXM7Ci0gICAgICAgIHRhcmdldEZyYW1lLT5u
YXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNoYW5nZSgqYWN0aXZlRG9jdW1l
bnQsIGFjdGl2ZURvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBjb21wbGV0ZWRVUkwsIGZpcnN0
RnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSwKKyAgICAgICAgdGFyZ2V0RnJhbWUt
Pm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKCpkb2N1bWVudCwg
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVSTCwgZmlyc3RGcmFtZS0+bG9h
ZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpLAogICAgICAgICAgICAgbG9ja0hpc3RvcnksIExvY2tC
YWNrRm9yd2FyZExpc3Q6Ok5vKTsKICAgICAgICAgcmV0dXJuICZ0YXJnZXRGcmFtZS0+d2luZG93
UHJveHkoKTsKICAgICB9CiAKLSAgICBhdXRvIG5ld0ZyYW1lT3JFeGNlcHRpb24gPSBjcmVhdGVX
aW5kb3codXJsU3RyaW5nLCBmcmFtZU5hbWUsIHBhcnNlV2luZG93RmVhdHVyZXMod2luZG93RmVh
dHVyZXNTdHJpbmcpLCBhY3RpdmVXaW5kb3csICpmaXJzdEZyYW1lLCAqZnJhbWUpOworICAgIGF1
dG8gbmV3RnJhbWVPckV4Y2VwdGlvbiA9IGNyZWF0ZVdpbmRvdyh1cmxTdHJpbmcsIGZyYW1lTmFt
ZSwgcGFyc2VXaW5kb3dGZWF0dXJlcyh3aW5kb3dGZWF0dXJlc1N0cmluZyksICpmaXJzdEZyYW1l
LCAqZnJhbWUpOwogICAgIGlmIChuZXdGcmFtZU9yRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gbmV3RnJhbWVPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CiAK
QEAgLTI2NjUsNyArMjY1OCw3IEBAIHZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29u
c3QgU3QKICAgICBpZiAoIWNhblNob3dNb2RhbERpYWxvZygqZnJhbWUpIHx8ICFmaXJzdFdpbmRv
dy5hbGxvd1BvcFVwKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZGlhbG9nRnJhbWVP
ckV4Y2VwdGlvbiA9IGNyZWF0ZVdpbmRvdyh1cmxTdHJpbmcsIGVtcHR5QXRvbSgpLCBwYXJzZURp
YWxvZ0ZlYXR1cmVzKGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBzY3JlZW5BdmFpbGFibGVSZWN0KGZy
YW1lLT52aWV3KCkpKSwgYWN0aXZlV2luZG93LCAqZmlyc3RGcmFtZSwgKmZyYW1lLCBwcmVwYXJl
RGlhbG9nRnVuY3Rpb24pOworICAgIGF1dG8gZGlhbG9nRnJhbWVPckV4Y2VwdGlvbiA9IGNyZWF0
ZVdpbmRvdyh1cmxTdHJpbmcsIGVtcHR5QXRvbSgpLCBwYXJzZURpYWxvZ0ZlYXR1cmVzKGRpYWxv
Z0ZlYXR1cmVzU3RyaW5nLCBzY3JlZW5BdmFpbGFibGVSZWN0KGZyYW1lLT52aWV3KCkpKSwgKmZp
cnN0RnJhbWUsICpmcmFtZSwgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uKTsKICAgICBpZiAoZGlhbG9n
RnJhbWVPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogICAgIFJl
ZlB0cjxGcmFtZT4gZGlhbG9nRnJhbWUgPSBkaWFsb2dGcmFtZU9yRXhjZXB0aW9uLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyODI4
MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDAsNyArMjAwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJpbnQoKTsKICAgICB2b2lkIHN0
b3AoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94
eT4+IG9wZW4oRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3cs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9tU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFN0cmluZyYgd2luZG93RmVhdHVyZXNTdHJpbmcpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4
Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IG9wZW4oRE9NV2luZG93JiBmaXJzdFdpbmRv
dywgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwg
Y29uc3QgU3RyaW5nJiB3aW5kb3dGZWF0dXJlc1N0cmluZyk7CiAKICAgICB2b2lkIHNob3dNb2Rh
bERpYWxvZyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0
dXJlc1N0cmluZywgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5k
b3csIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChET01XaW5kb3cmKT4mIHByZXBhcmVEaWFsb2dG
dW5jdGlvbik7CiAKQEAgLTQyMCw3ICs0MjAsNyBAQCBwcml2YXRlOgogICAgIFBhZ2UqIHBhZ2Uo
KSBjb25zdDsKICAgICBib29sIGFsbG93ZWRUb0NoYW5nZVdpbmRvd0dlb21ldHJ5KCkgY29uc3Q7
CiAKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmUHRyPEZyYW1lPj4gY3JlYXRlV2luZG93KGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9tU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFdpbmRvd0ZlYXR1cmVzJiwgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIEZyYW1lJiBmaXJzdEZy
YW1lLCBGcmFtZSYgb3BlbmVyRnJhbWUsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChET01XaW5k
b3cmKT4mIHByZXBhcmVEaWFsb2dGdW5jdGlvbiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWZQdHI8RnJhbWU+PiBjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBG
cmFtZSYgZmlyc3RGcmFtZSwgRnJhbWUmIG9wZW5lckZyYW1lLCBjb25zdCBXVEY6OkZ1bmN0aW9u
PHZvaWQoRE9NV2luZG93Jik+JiBwcmVwYXJlRGlhbG9nRnVuY3Rpb24gPSBudWxscHRyKTsKICAg
ICBib29sIGlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyODI4MjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTczLDcg
KzczLDcgQEAKICAgICBbRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIsIEN1c3RvbVNldHRlcl0g
YXR0cmlidXRlIFdpbmRvd1Byb3h5PyBvcGVuZXI7CiAgICAgW1JlcGxhY2VhYmxlLCBEb05vdENo
ZWNrU2VjdXJpdHlPbkdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5PyBwYXJl
bnQ7CiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVu
dD8gZnJhbWVFbGVtZW50OwotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3dd
IFdpbmRvd1Byb3h5PyBvcGVuKG9wdGlvbmFsIFVTVlN0cmluZyB1cmwgPSAiIiwgb3B0aW9uYWwg
RE9NU3RyaW5nIHRhcmdldCA9ICJfYmxhbmsiLCBvcHRpb25hbCBbTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmddIERPTVN0cmluZyBmZWF0dXJlcyA9ICIiKTsKKyAgICBbQ2FsbFdpdGg9Rmlyc3RXaW5k
b3ddIFdpbmRvd1Byb3h5PyBvcGVuKG9wdGlvbmFsIFVTVlN0cmluZyB1cmwgPSAiIiwgb3B0aW9u
YWwgRE9NU3RyaW5nIHRhcmdldCA9ICJfYmxhbmsiLCBvcHRpb25hbCBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIERPTVN0cmluZyBmZWF0dXJlcyA9ICIiKTsKIAogICAgIC8vIHRoZSB1c2VyIGFn
ZW50CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5hdmlnYXRvciBuYXZpZ2F0b3I7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCShyZXZpc2lvbiAyODI4MjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw3ICsyMzUsNyBA
QCBzdGF0aWMgYm9vbCBpc0ZyYW1lRmFtaWxpYXJXaXRoKEZyYW1lJiBmCiAgICAgcmV0dXJuIChm
cmFtZUFPcGVuZXIgJiYgZnJhbWVBT3BlbmVyLT5wYWdlKCkgPT0gZnJhbWVCLnBhZ2UoKSkgfHwg
KGZyYW1lQk9wZW5lciAmJiBmcmFtZUJPcGVuZXItPnBhZ2UoKSA9PSBmcmFtZUEucGFnZSgpKSB8
fCAoZnJhbWVBT3BlbmVyICYmIGZyYW1lQk9wZW5lciAmJiBmcmFtZUFPcGVuZXItPnBhZ2UoKSA9
PSBmcmFtZUJPcGVuZXItPnBhZ2UoKSk7CiB9CiAKLUZyYW1lKiBGcmFtZVRyZWU6OmZpbmQoY29u
c3QgQXRvbVN0cmluZyYgbmFtZSwgRnJhbWUmIGFjdGl2ZUZyYW1lKSBjb25zdAorRnJhbWUqIEZy
YW1lVHJlZTo6ZmluZChjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBfY3VycmVudCBpcyBub3QgcGFydCBvZiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uLgogICAg
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJfc2VsZiIpIHx8IG5hbWUgPT0gIl9j
dXJyZW50IiB8fCBuYW1lLmlzRW1wdHkoKSkKQEAgLTI3Myw3ICsyNzMsNyBAQCBGcmFtZSogRnJh
bWVUcmVlOjpmaW5kKGNvbnN0IEF0b21TdHJpbmcmCiAgICAgICAgIGlmICgmb3RoZXJQYWdlID09
IHBhZ2UgfHwgb3RoZXJQYWdlLmlzQ2xvc2luZygpKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIGZvciAoYXV0byogZnJhbWUgPSAmb3RoZXJQYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAo
ZnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkgPT0gbmFtZSAmJiBpc0ZyYW1lRmFtaWxpYXJXaXRo
KGFjdGl2ZUZyYW1lLCAqZnJhbWUpKQorICAgICAgICAgICAgaWYgKGZyYW1lLT50cmVlKCkudW5p
cXVlTmFtZSgpID09IG5hbWUgJiYgaXNGcmFtZUZhbWlsaWFyV2l0aChtX3RoaXNGcmFtZSwgKmZy
YW1lKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CiAgICAgICAgIH0KICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgJKHJldmlzaW9uIDI4MjgyMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
cHVibGljOgogCiAgICAgRnJhbWUqIGNoaWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBG
cmFtZSogY2hpbGQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgRnJhbWUqIGZpbmQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgRnJhbWUmIGFjdGl2ZUZy
YW1lKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSogZmluZChjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjaGlsZENvdW50
KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgZGVzY2VuZGFudENvdW50KCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgRnJhbWUmIHRvcCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9RdWlya3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNw
cAkocmV2aXNpb24gMjgyODIxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjA4LDcgKzEyMDgsNyBAQCBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NS
ZXN1bHQgUXVpcmtzOjp0cmlnCiAgICAgICAgICAgICBpZiAoIWRvbVdpbmRvdykKICAgICAgICAg
ICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5j
ZWxFdmVudDsKIAotICAgICAgICAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5Pj4g
cHJveHlPckV4Y2VwdGlvbiA9ICBkb21XaW5kb3ctPm9wZW4oKmRvbVdpbmRvdywgKmRvbVdpbmRv
dywga2luamFVUkwtPnN0cmluZygpLCBlbXB0eVN0cmluZygpLCBsb2dpblBvcHVwV2luZG93RmVh
dHVyZVN0cmluZyk7CisgICAgICAgICAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2luZG93UHJveHk+
PiBwcm94eU9yRXhjZXB0aW9uID0gZG9tV2luZG93LT5vcGVuKCpkb21XaW5kb3csIGtpbmphVVJM
LT5zdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgbG9naW5Qb3B1cFdpbmRvd0ZlYXR1cmVTdHJpbmcp
OwogICAgICAgICAgICAgaWYgKHByb3h5T3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90
Q2FuY2VsRXZlbnQ7CiAgICAgICAgICAgICBhdXRvIHByb3h5ID0gcHJveHlPckV4Y2VwdGlvbi5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKQEAgLTEyNDUsNyArMTI0NSw3IEBAIFF1aXJrczo6U3RvcmFn
ZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWcKIAogICAgICAgICAgICAgICAgIGF1dG8gZG9tV2lu
ZG93ID0gZG9jdW1lbnQtPmRvbVdpbmRvdygpOwogICAgICAgICAgICAgICAgIGlmIChkb21XaW5k
b3cpIHsKLSAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5
Pj4gcHJveHlPckV4Y2VwdGlvbiA9IGRvbVdpbmRvdy0+b3BlbigqZG9tV2luZG93LCAqZG9tV2lu
ZG93LCBzdGF0aWNSYWRpb1BsYXllclVSTFN0cmluZygpLCBlbXB0eVN0cmluZygpLCBCQkNSYWRp
b1BsYXllclBvcFVwV2luZG93RmVhdHVyZVN0cmluZyk7CisgICAgICAgICAgICAgICAgICAgIEV4
Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IHByb3h5T3JFeGNlcHRpb24gPSBkb21XaW5k
b3ctPm9wZW4oKmRvbVdpbmRvdywgc3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSwgZW1wdHlT
dHJpbmcoKSwgQkJDUmFkaW9QbGF5ZXJQb3BVcFdpbmRvd0ZlYXR1cmVTdHJpbmcpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAocHJveHlPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgYXV0byBwcm94
eSA9IHByb3h5T3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCShyZXZpc2lvbiAyODI4MjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4NSw3ICsxODUsNyBAQCBGcmFtZSogSGl0VGVzdFJlc3VsdDo6dGFyZ2V0RnJhbWUo
KSBjb25zCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gZnJhbWUtPnRyZWUoKS5maW5kKG1faW5uZXJVUkxFbGVtZW50LT50YXJnZXQoKSwgKmZy
YW1lKTsKKyAgICByZXR1cm4gZnJhbWUtPnRyZWUoKS5maW5kKG1faW5uZXJVUkxFbGVtZW50LT50
YXJnZXQoKSk7CiB9CiAKIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNTZWxlY3RlZCgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyODI4MjEpCisr
KyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3NjUsNyArMjc2NSw3IEBAIFJlZlB0cjxXaW5kb3dQcm94eT4gSW50ZXJuYWxzOjpvcGVuRHVt
bXkKIHsKICAgICBhdXRvKiBpbnNwZWN0ZWRQYWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1l
KCktPnBhZ2UoKTsKICAgICBhdXRvKiB3aW5kb3cgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUo
KS5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKLSAgICBhdXRvIGZyb250ZW5kV2luZG93UHJveHkg
PSB3aW5kb3ctPm9wZW4oKndpbmRvdywgKndpbmRvdywgdXJsLCAiIiwgIiIpLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOworICAgIGF1dG8gZnJvbnRlbmRXaW5kb3dQcm94eSA9IHdpbmRvdy0+b3Blbigq
d2luZG93LCB1cmwsICIiLCAiIikucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgbV9pbnNwZWN0
b3JGcm9udGVuZCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU3R1YkZyb250ZW5kPigqaW5zcGVjdGVk
UGFnZSwgZG93bmNhc3Q8RE9NV2luZG93Pihmcm9udGVuZFdpbmRvd1Byb3h5LT53aW5kb3coKSkp
OwogICAgIHJldHVybiBmcm9udGVuZFdpbmRvd1Byb3h5OwogfQpJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI4MjgyMSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjEtMDktMjEgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hA
Z21haWwuY29tPgorCisgICAgICAgIHdpbmRvdy5vcGVuKCkgdXNlcyBpbmNvcnJlY3QgZ2xvYmFs
IG9iamVjdCB0byBkZXRlcm1pbmUgaWYgbmF2aWdhdGlvbiBpcyBhbGxvd2VkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAxOTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybUZy
YW1lTG9hZFVSTFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwZXJmb3Jt
SmF2YVNjcmlwdFVSTFJlcXVlc3QpOgorCiAyMDIxLTA5LTIxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIHR5cGVkIGlkZW50aWZpZXIg
Zm9yIFdlYlNvY2tldENoYW5uZWwgaWRlbnRpZmllcnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyODI4MjEpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtRnJh
bWVMb2FkVVJMUmVxdQogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Io
cmVxdWVzdC0+YWxsb3dQb3B1cHMoKSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0
dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwogCiAgICAg
Ly8gRmlyc3QsIHRyeSB0byBmaW5kIGEgdGFyZ2V0IGZyYW1lLgotICAgIEZyYW1lKiB0YXJnZXRG
cmFtZSA9IGZyYW1lLT5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKHJlcXVlc3QtPnRh
cmdldCgpKTsKKyAgICBhdXRvIHRhcmdldEZyYW1lID0gZnJhbWUtPmxvYWRlcigpLmZpbmRGcmFt
ZUZvck5hdmlnYXRpb24ocmVxdWVzdC0+dGFyZ2V0KCkpOwogICAgIGlmICghdGFyZ2V0RnJhbWUp
IHsKICAgICAgICAgLy8gV2UgZGlkIG5vdCBmaW5kIGEgdGFyZ2V0IGZyYW1lLiBBc2sgb3VyIGZy
YW1lIHRvIGxvYWQgdGhlIHBhZ2UuIFRoaXMgbWF5IG9yIG1heSBub3QgY3JlYXRlIGEgcG9wdXAg
d2luZG93LgogICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqZnJh
bWUsIHJlcXVlc3QtPnJlcXVlc3QoKSB9OwpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgdm9pZCBQbHVn
aW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcQogCiAgICAgaWYgKCFyZXF1ZXN0LT50YXJn
ZXQoKS5pc051bGwoKSkgewogICAgICAgICAvLyBGb3Igc2VjdXJpdHkgcmVhc29ucywgb25seSBh
bGxvdyBKUyByZXF1ZXN0cyB0byBiZSBtYWRlIG9uIHRoZSBmcmFtZSB0aGF0IGNvbnRhaW5zIHRo
ZSBwbHVnLWluLgotICAgICAgICBpZiAoZnJhbWUtPnRyZWUoKS5maW5kKHJlcXVlc3QtPnRhcmdl
dCgpLCAqZnJhbWUpICE9IGZyYW1lKSB7CisgICAgICAgIGlmIChmcmFtZS0+dHJlZSgpLmZpbmQo
cmVxdWVzdC0+dGFyZ2V0KCkpICE9IGZyYW1lKSB7CiAgICAgICAgICAgICAvLyBMZXQgdGhlIHBs
dWctaW4ga25vdyB0aGF0IGl0cyBmcmFtZSBsb2FkIGZhaWxlZC4KICAgICAgICAgICAgIG1fcGx1
Z2luLT5mcmFtZURpZEZhaWwocmVxdWVzdC0+cmVxdWVzdElEKCksIGZhbHNlKTsKICAgICAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4
MjgyMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA5LTIxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2Fs
ZXNoQGdtYWlsLmNvbT4KKworICAgICAgICB3aW5kb3cub3BlbigpIHVzZXMgaW5jb3JyZWN0IGds
b2JhbCBvYmplY3QgdG8gZGV0ZXJtaW5lIGlmIG5hdmlnYXRpb24gaXMgYWxsb3dlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMTk0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAqIFBsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdp
blZpZXcgbG9hZFBsdWdpblJlcXVlc3Q6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5t
bToKKyAgICAgICAgKC1bV2ViRnJhbWUgZmluZEZyYW1lTmFtZWQ6XSk6CisKIDIwMjEtMDktMjAg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIG1h
a2VSZWYoKnRoaXMpIC8gbWFrZVJlZlB0cih0aGlzKQpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0JKHJl
dmlzaW9uIDI4MjgyMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTczLDcgKzExNzMsNyBAQCAt
ICh2b2lkKWxvYWRQbHVnaW5SZXF1ZXN0OihXZWJQbHVnaW5SZXF1CiAgICAgaWYgKGZyYW1lTmFt
ZSkgewogICAgICAgICAvLyBGSVhNRSAtIG5lZWQgdG8gZ2V0IHJpZCBvZiB0aGlzIHdpbmRvdyBj
cmVhdGlvbiB3aGljaAogICAgICAgICAvLyBieXBhc3NlcyBub3JtYWwgdGFyZ2V0ZWQgbGluayBo
YW5kbGluZwotICAgICAgICBmcmFtZSA9IGtpdChjb3JlKFtzZWxmIHdlYkZyYW1lXSktPmxvYWRl
cigpLmZpbmRGcmFtZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lKSk7CisgICAgICAgIGZyYW1lID0g
a2l0KGNvcmUoW3NlbGYgd2ViRnJhbWVdKS0+bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlv
bihmcmFtZU5hbWUpLmdldCgpKTsKICAgICAgICAgaWYgKGZyYW1lID09IG5pbCkgewogICAgICAg
ICAgICAgV2ViVmlldyAqY3VycmVudFdlYlZpZXcgPSBbc2VsZiB3ZWJWaWV3XTsKICAgICAgICAg
ICAgIGF1dG8gZmVhdHVyZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCShyZXZpc2lv
biAyODI4MjEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0OCw3ICs2NDgs
NyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cGVyZm9yCiAgICAgaWYgKGZy
YW1lTmFtZSkgewogICAgICAgICAvLyBGSVhNRSAtIG5lZWQgdG8gZ2V0IHJpZCBvZiB0aGlzIHdp
bmRvdyBjcmVhdGlvbiB3aGljaAogICAgICAgICAvLyBieXBhc3NlcyBub3JtYWwgdGFyZ2V0ZWQg
bGluayBoYW5kbGluZwotICAgICAgICBmcmFtZSA9IGtpdChjb3JlKFttX3BsdWdpblZpZXcgd2Vi
RnJhbWVdKS0+bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUpKTsKKyAg
ICAgICAgZnJhbWUgPSBraXQoY29yZShbbV9wbHVnaW5WaWV3IHdlYkZyYW1lXSktPmxvYWRlcigp
LmZpbmRGcmFtZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lKS5nZXQoKSk7CiAgICAgICAgIGlmICgh
ZnJhbWUpIHsKICAgICAgICAgICAgIFdlYlZpZXcgKmN1cnJlbnRXZWJWaWV3ID0gW21fcGx1Z2lu
VmlldyB3ZWJWaWV3XTsKICAgICAgICAgICAgIFdlYlZpZXcgKm5ld1dlYlZpZXcgPSBbW2N1cnJl
bnRXZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OmN1cnJlbnRXZWJWaWV3IGNy
ZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDpuaWwgd2luZG93RmVhdHVyZXM6QHsgfV07CkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDI4
MjgyMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI1NTEsNyArMjU1MSw3IEBAIC0gKFdlYkZyYW1lICopZmluZEZyYW1l
TmFtZWQ6KE5TU3RyaW5nICoKICAgICBhdXRvIGNvcmVGcmFtZSA9IF9wcml2YXRlLT5jb3JlRnJh
bWU7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJu
IGtpdChjb3JlRnJhbWUtPnRyZWUoKS5maW5kKG5hbWUsICpjb3JlRnJhbWUpKTsKKyAgICByZXR1
cm4ga2l0KGNvcmVGcmFtZS0+dHJlZSgpLmZpbmQobmFtZSkpOwogfQogCiAtIChXZWJGcmFtZSAq
KXBhcmVudEZyYW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAy
ODI4MjEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wOS0yMSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWth
bGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgd2luZG93Lm9wZW4oKSB1c2VzIGluY29ycmVjdCBn
bG9iYWwgb2JqZWN0IHRvIGRldGVybWluZSBpZiBuYXZpZ2F0aW9uIGlzIGFsbG93ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDE5NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViRnJhbWU6OmZpbmRGcmFtZU5hbWVkKToKKwogMjAyMS0wOS0xNyAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBP
YmplY3RJZGVudGlmaWVyIGZvciBSZXNvdXJjZUxvYWRlcgpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMjgyODIxKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjcsNyArNzI3LDcgQEAgSFJF
U1VMVCBXZWJGcmFtZTo6ZmluZEZyYW1lTmFtZWQoX0luXyBCUwogICAgIGlmICghY29yZUZyYW1l
KQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgRnJhbWUqIGZvdW5kRnJhbWUg
PSBjb3JlRnJhbWUtPnRyZWUoKS5maW5kKEF0b21TdHJpbmcobmFtZSwgU3lzU3RyaW5nTGVuKG5h
bWUpKSwgKmNvcmVGcmFtZSk7CisgICAgRnJhbWUqIGZvdW5kRnJhbWUgPSBjb3JlRnJhbWUtPnRy
ZWUoKS5maW5kKEF0b21TdHJpbmcobmFtZSwgU3lzU3RyaW5nTGVuKG5hbWUpKSk7CiAgICAgaWYg
KCFmb3VuZEZyYW1lKQogICAgICAgICByZXR1cm4gU19PSzsKIApJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjgyODIxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMjEtMDktMjEgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgorCisgICAgICAgIHdpbmRvdy5vcGVuKCkgdXNlcyBpbmNvcnJlY3QgZ2xvYmFsIG9iamVj
dCB0byBkZXRlcm1pbmUgaWYgbmF2aWdhdGlvbiBpcyBhbGxvd2VkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAxOTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9vcGVuLWNy
b3NzLXJlYWxtOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1y
ZWFsbS9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9vcGVuLWNy
b3NzLXJlYWxtL3Jlc291cmNlcy9jdXJyZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL1dpbmRvdy9vcGVuLWNyb3NzLXJlYWxtL3Jlc291cmNlcy9lbnRyeS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9yZXNvdXJjZXMvaW5j
dW1iZW50LXNhbmRib3gtcG9wdXBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1dp
bmRvdy9vcGVuLWNyb3NzLXJlYWxtL3Jlc291cmNlcy9pbmN1bWJlbnQtc2FuZGJveC10b3AtbmF2
aWdhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvb3Blbi1jcm9z
cy1yZWFsbS9yZXNvdXJjZXMvcmVsZXZhbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vV2luZG93L29wZW4tY3Jvc3MtcmVhbG0vcmVzb3VyY2VzL3Rlc3QtcGFzc2VkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9vcGVuLWNyb3NzLXJlYWxtL3NhbmRib3gt
cG9wdXBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vV2luZG93L29w
ZW4tY3Jvc3MtcmVhbG0vc2FuZGJveC1wb3B1cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vV2luZG93L29wZW4tY3Jvc3MtcmVhbG0vc2FuZGJveC10b3AtbmF2aWdhdGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9vcGVuLWNyb3NzLXJl
YWxtL3NhbmRib3gtdG9wLW5hdmlnYXRpb24uaHRtbDogQWRkZWQuCisKKyAgICAgICAgKiBmYXN0
L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tc2FuZGJveGVkLWZyYW1lLXZpYS13aW5kb3ctb3Bl
bi1uYW1lZC1zaWJsaW5nLWZyYW1lMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVu
dHMvcG9wdXAtYmxvY2tlZC1mcm9tLXNhbmRib3hlZC1mcmFtZS12aWEtd2luZG93LW9wZW4tbmFt
ZWQtc2libGluZy1mcmFtZTIuaHRtbDoKKyAgICAgICAgQWxpZ25zIHdpdGggQmxpbmsgYW5kIEdl
Y2tvLgorCiAyMDIxLTA5LTIxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQmlnU3VyIEUgV2syIFJlbGVhc2VdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjL1JUQ1J0cFNlbmRlci1lbmNvZGUtc2FtZS10cmFjay10d2ljZS5odHRwcy5o
dG1sIGluIGZsYWt5IGZhaWx1cmUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9v
cGVuLWNyb3NzLXJlYWxtL3NhbmRib3gtcG9wdXBzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9zYW5kYm94LXBv
cHVwcy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L29wZW4tY3Jvc3MtcmVhbG0vc2FuZGJveC1wb3B1cHMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorQUxFUlQ6IFRFU1QgUEFTU0VEIQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9zYW5kYm94LXBvcHVw
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9vcGVuLWNy
b3NzLXJlYWxtL3NhbmRib3gtcG9wdXBzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L29wZW4tY3Jvc3MtcmVhbG0vc2FuZGJveC1wb3B1cHMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQ+
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KK3dpbmRvdy5vbmxvYWQgPSAoKSA9
PiB7CisgICAgZW50cnkuc3JjID0gInJlc291cmNlcy9lbnRyeS5odG1sIjsKK307Cis8L3Njcmlw
dD4KKworPGlmcmFtZSBpZD0iZW50cnkiIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93
LXNjcmlwdHMiPjwvaWZyYW1lPgorPGlmcmFtZSBpZD0iaW5jdW1iZW50IiBzcmM9InJlc291cmNl
cy9pbmN1bWJlbnQtc2FuZGJveC1wb3B1cHMuaHRtbCIgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmln
aW4gYWxsb3ctc2NyaXB0cyI+PC9pZnJhbWU+Cis8aWZyYW1lIGlkPSJjdXJyZW50IiBzcmM9InJl
c291cmNlcy9jdXJyZW50Lmh0bWwiIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNj
cmlwdHMiPjwvaWZyYW1lPgorPGlmcmFtZSBpZD0icmVsZXZhbnQiIHNyYz0icmVzb3VyY2VzL3Jl
bGV2YW50Lmh0bWwiIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMgYWxs
b3ctcG9wdXBzIGFsbG93LW1vZGFscyI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9zYW5kYm94LXRvcC1uYXZpZ2F0aW9uLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvb3Blbi1j
cm9zcy1yZWFsbS9zYW5kYm94LXRvcC1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9zYW5k
Ym94LXRvcC1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIgQEAKK0FMRVJUOiBURVNUIFBBU1NFRCEKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L29wZW4tY3Jvc3MtcmVhbG0vc2FuZGJveC10b3AtbmF2aWdhdGlvbi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9vcGVuLWNyb3NzLXJlYWxtL3Nh
bmRib3gtdG9wLW5hdmlnYXRpb24uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9zYW5kYm94LXRvcC1uYXZpZ2F0aW9uLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9Cit3aW5kb3cub25sb2FkID0g
KCkgPT4geworICAgIGVudHJ5LnNyYyA9ICJyZXNvdXJjZXMvZW50cnkuaHRtbCI7Cit9OworPC9z
Y3JpcHQ+CisKKzxpZnJhbWUgaWQ9ImVudHJ5IiBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiBh
bGxvdy1zY3JpcHRzIj48L2lmcmFtZT4KKzxpZnJhbWUgaWQ9ImluY3VtYmVudCIgc3JjPSJyZXNv
dXJjZXMvaW5jdW1iZW50LXNhbmRib3gtdG9wLW5hdmlnYXRpb24uaHRtbCIgc2FuZGJveD0iYWxs
b3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyI+PC9pZnJhbWU+Cis8aWZyYW1lIGlkPSJjdXJy
ZW50IiBzcmM9InJlc291cmNlcy9jdXJyZW50Lmh0bWwiIHNhbmRib3g9ImFsbG93LXNhbWUtb3Jp
Z2luIGFsbG93LXNjcmlwdHMiPjwvaWZyYW1lPgorPGlmcmFtZSBpZD0icmVsZXZhbnQiIHNyYz0i
cmVzb3VyY2VzL3JlbGV2YW50Lmh0bWwiIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93
LXNjcmlwdHMgYWxsb3ctdG9wLW5hdmlnYXRpb24iPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L29wZW4tY3Jvc3MtcmVhbG0vcmVzb3VyY2VzL2N1cnJlbnQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1y
ZWFsbS9yZXNvdXJjZXMvY3VycmVudC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9vcGVuLWNyb3NzLXJlYWxtL3Jlc291cmNlcy9jdXJyZW50Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxoMT5jdXJy
ZW50PC9oMT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9vcGVuLWNyb3NzLXJl
YWxtL3Jlc291cmNlcy9lbnRyeS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy9vcGVuLWNyb3NzLXJlYWxtL3Jlc291cmNlcy9lbnRyeS5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9vcGVuLWNyb3NzLXJlYWxtL3Jl
c291cmNlcy9lbnRyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aDE+ZW50cnk8L2gxPgorCis8c2NyaXB0PgorcGFyZW50LmluY3VtYmVudC5j
b250ZW50V2luZG93LnRlc3RJbmN1bWJlbnQoKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L29wZW4tY3Jvc3MtcmVhbG0vcmVzb3VyY2VzL2luY3VtYmVudC1z
YW5kYm94LXBvcHVwcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy9vcGVuLWNyb3NzLXJlYWxtL3Jlc291cmNlcy9pbmN1bWJlbnQtc2FuZGJveC1wb3B1cHMu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvb3Blbi1j
cm9zcy1yZWFsbS9yZXNvdXJjZXMvaW5jdW1iZW50LXNhbmRib3gtcG9wdXBzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxoMT5pbmN1bWJlbnQ8
L2gxPgorCis8c2NyaXB0Pgord2luZG93LnRlc3RJbmN1bWJlbnQgPSAoKSA9PiB7CisgICAgY29u
c3QgY3VycmVudE9wZW4gPSBwYXJlbnQuY3VycmVudC5jb250ZW50V2luZG93Lm9wZW47CisgICAg
Y3VycmVudE9wZW4uY2FsbChwYXJlbnQucmVsZXZhbnQuY29udGVudFdpbmRvdywgInRlc3QtcGFz
c2VkLmh0bWwiLCAiX2JsYW5rIik7Cit9OworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9yZXNvdXJjZXMvaW5jdW1iZW50LXNhbmRi
b3gtcG9wdXBzLmh0bWwub3JpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9yZXNvdXJjZXMvaW5jdW1iZW50LXNhbmRib3gtcG9wdXBz
Lmh0bWwub3JpZwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
b3Blbi1jcm9zcy1yZWFsbS9yZXNvdXJjZXMvaW5jdW1iZW50LXNhbmRib3gtcG9wdXBzLmh0bWwu
b3JpZwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGgx
PmluY3VtYmVudDwvaDE+CisKKzxzY3JpcHQ+Cit3aW5kb3cudGVzdEluY3VtYmVudCA9ICgpID0+
IHsKKyAgY29uc3QgY3VycmVudE9wZW4gPSBwYXJlbnQuY3VycmVudC5jb250ZW50V2luZG93Lm9w
ZW47CisgIGN1cnJlbnRPcGVuLmNhbGwocGFyZW50LnJlbGV2YW50LmNvbnRlbnRXaW5kb3csICJ0
ZXN0LXBhc3NlZC5odG1sIiwgIl9ibGFuayIpOworfTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L29wZW4tY3Jvc3MtcmVhbG0vcmVzb3VyY2VzL2luY3VtYmVu
dC1zYW5kYm94LXRvcC1uYXZpZ2F0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L29wZW4tY3Jvc3MtcmVhbG0vcmVzb3VyY2VzL2luY3VtYmVudC1zYW5k
Ym94LXRvcC1uYXZpZ2F0aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L29wZW4tY3Jvc3MtcmVhbG0vcmVzb3VyY2VzL2luY3VtYmVudC1zYW5kYm94
LXRvcC1uYXZpZ2F0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxoMT5pbmN1bWJlbnQ8L2gxPgorCis8c2NyaXB0Pgord2luZG93LnRlc3RJ
bmN1bWJlbnQgPSAoKSA9PiB7CisgICAgY29uc3QgY3VycmVudE9wZW4gPSBwYXJlbnQuY3VycmVu
dC5jb250ZW50V2luZG93Lm9wZW47CisgICAgY3VycmVudE9wZW4uY2FsbChwYXJlbnQucmVsZXZh
bnQuY29udGVudFdpbmRvdywgInRlc3QtcGFzc2VkLmh0bWwiLCAiX3RvcCIpOworfTsKKzwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L29wZW4tY3Jvc3MtcmVhbG0v
cmVzb3VyY2VzL2luY3VtYmVudC1zYW5kYm94LXRvcC1uYXZpZ2F0aW9uLmh0bWwub3JpZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9y
ZXNvdXJjZXMvaW5jdW1iZW50LXNhbmRib3gtdG9wLW5hdmlnYXRpb24uaHRtbC5vcmlnCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9vcGVuLWNyb3NzLXJlYWxt
L3Jlc291cmNlcy9pbmN1bWJlbnQtc2FuZGJveC10b3AtbmF2aWdhdGlvbi5odG1sLm9yaWcJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxoMT5pbmN1bWJl
bnQ8L2gxPgorCis8c2NyaXB0Pgord2luZG93LnRlc3RJbmN1bWJlbnQgPSAoKSA9PiB7CisgIGNv
bnN0IGN1cnJlbnRPcGVuID0gcGFyZW50LmN1cnJlbnQuY29udGVudFdpbmRvdy5vcGVuOworICBj
dXJyZW50T3Blbi5jYWxsKHBhcmVudC5yZWxldmFudC5jb250ZW50V2luZG93LCAidGVzdC1wYXNz
ZWQuaHRtbCIsICJfdG9wIik7Cit9OworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9yZXNvdXJjZXMvcmVsZXZhbnQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9y
ZXNvdXJjZXMvcmVsZXZhbnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvb3Blbi1jcm9zcy1yZWFsbS9yZXNvdXJjZXMvcmVsZXZhbnQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGgxPnJlbGV2YW50
PC9oMT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9vcGVuLWNyb3NzLXJlYWxt
L3Jlc291cmNlcy90ZXN0LXBhc3NlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy9vcGVuLWNyb3NzLXJlYWxtL3Jlc291cmNlcy90ZXN0LXBhc3NlZC5odG1s
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9vcGVuLWNyb3Nz
LXJlYWxtL3Jlc291cmNlcy90ZXN0LXBhc3NlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0PgorYWxlcnQoIlRFU1QgUEFTU0VEISIp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZy
b20tc2FuZGJveGVkLWZyYW1lLXZpYS13aW5kb3ctb3Blbi1uYW1lZC1zaWJsaW5nLWZyYW1lMi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAt
YmxvY2tlZC1mcm9tLXNhbmRib3hlZC1mcmFtZS12aWEtd2luZG93LW9wZW4tbmFtZWQtc2libGlu
Zy1mcmFtZTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyODI4MjEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9wb3B1cC1ibG9ja2VkLWZyb20tc2FuZGJveGVkLWZyYW1lLXZpYS13aW5kb3ct
b3Blbi1uYW1lZC1zaWJsaW5nLWZyYW1lMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSwyIEBACi1DT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQg
dG8gaW5pdGlhdGUgbmF2aWdhdGlvbiBmb3IgZnJhbWUgd2l0aCBVUkwgJ2Fib3V0OmJsYW5rJyBm
cm9tIGZyYW1lIHdpdGggVVJMICdhYm91dDpibGFuaycuIFRoZSBmcmFtZSBhdHRlbXB0aW5nIG5h
dmlnYXRpb24gaXMgc2FuZGJveGVkLCBhbmQgaXMgdGhlcmVmb3JlIGRpc2FsbG93ZWQgZnJvbSBu
YXZpZ2F0aW5nIGl0cyBhbmNlc3RvcnMuCi0KIEFMRVJUOiBQQVNTCiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3BvcHVwLWJsb2NrZWQtZnJvbS1zYW5kYm94ZWQtZnJhbWUtdmlhLXdp
bmRvdy1vcGVuLW5hbWVkLXNpYmxpbmctZnJhbWUyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLXNhbmRib3hlZC1mcmFtZS12aWEt
d2luZG93LW9wZW4tbmFtZWQtc2libGluZy1mcmFtZTIuaHRtbAkocmV2aXNpb24gMjgyODIxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcG9wdXAtYmxvY2tlZC1mcm9tLXNhbmRib3hlZC1m
cmFtZS12aWEtd2luZG93LW9wZW4tbmFtZWQtc2libGluZy1mcmFtZTIuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTAsNyArMTAsNyBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpCiA8aWZyYW1lIG5h
bWU9IkEiPjwvaWZyYW1lPgogPGlmcmFtZSBpZD0iQiIgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBh
bGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1wb3B1cHMgYWxsb3ctbW9kYWxzIj48L2lmcmFtZT4KIDxz
Y3JpcHQ+Ci1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQiIpLmNvbnRlbnRXaW5kb3cuZXZhbCgn
YWxlcnQod2luZG93Lm9wZW4uY2FsbCh3aW5kb3cudG9wLCAiYWJvdXQ6YmxhbmsiLCAiQSIpID8g
IkZBSUwiIDogIlBBU1MiKTsnKTsKK2FsZXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCIiku
Y29udGVudFdpbmRvdy5ldmFsKCd3aW5kb3cub3Blbi5jYWxsKHdpbmRvdy50b3AsICJhYm91dDpi
bGFuayIsICJBIiknKSA/ICJQQVNTIiA6ICJGQUlMIik7CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4K
</data>
<flag name="review"
          id="465291"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>441144</attachid>
            <date>2021-10-13 15:18:47 -0700</date>
            <delta_ts>2021-10-13 15:18:47 -0700</delta_ts>
            <desc>Cross-browser research</desc>
            <filename>cross-browser-research.md</filename>
            <type>text/markdown</type>
            <size>5400</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">fCBGZWF0dXJlICAgICAgICAgICAgICAgICAgICB8IFdlYktpdCAgICAgICAgICAgICAgIHwgQ2hy
b21pdW0gICAgICAgICAgIHwgRmlyZWZveCAgICAgICAgICB8IFNwZWMgICAgICAgICAgICB8IFRl
c3QgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fC0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0t
LXwtLS0tLS18Cnwgb3BlbmVyICAgICAgICAgICAgICAgICAgICAgfCAqcmVsZXZhbnQqIFvigoFd
ICAgICAgIHwgKnJlbGV2YW50KiBb4oKCXSBb4oKDXSB8ICpyZWxldmFudCogW+KChF0gICB8ICpl
bnRyeSogW+KChV0gW+KChl0gfCAgKyAgIHwKfCBVUkwgY29tcGxldGlvbiAgICAgICAgICAgICB8
ICplbnRyeSogW+KCh10gICAgICAgICAgfCAqZW50cnkqIFvigohdICAgICAgICB8ICplbnRyeSog
W+KCiV0gICAgICB8ICplbnRyeSogW+KCgeKCgF0gICAgfCAgKyAgIHwKfCByZWZlcnJlciAgICAg
ICAgICAgICAgICAgICB8ICplbnRyeSogW+KCgeKCgV0gICAgICAgICB8ICppbmN1bWJlbnQqIFvi
goHigoJdICAgfCAqZW50cnkqIFvigoHigoNdICAgICB8ICplbnRyeSogW+KCgeKChF0gICAgfCAg
KyAgIHwKfCB0YXJnZXQ6IHJlc29sdmVkIGFnYWluc3QgICB8ICpyZWxldmFudCogW+KCgeKChV0g
W+KCgeKChl0gfCAqcmVsZXZhbnQqIFvigoHigoddICAgIHwgKnJlbGV2YW50KiBb4oKB4oKIXSAg
fCAqZW50cnkqIFvigoHigoldICAgIHwgICsgICB8CnwgdGFyZ2V0OiBmYW1pbGlhciB3aXRoICAg
ICAgfCAqY3VycmVudCogW+KCguKCgF0gW+KCguKCgV0gIHwgKnJlbGV2YW50KiBb4oKC4oKCXSAg
ICB8ICplbnRyeSogW+KCguKCg10gICAgIHwgKmVudHJ5KiBb4oKC4oKEXSAgICB8ICAtICAgfAp8
IHNhbmRib3g6IG5hdmlnYXRpb24gICAgICAgIHwgKmN1cnJlbnQqIFvigoLigoBdIFvigoLigoFd
ICB8ICpyZWxldmFudCogW+KCguKCgl0gICAgfCAqcmVsZXZhbnQqIFvigoLigoVdICB8ICplbnRy
eSogW+KCguKChl0gICAgfCAgKyAgIHwKfCBzYW5kYm94OiBwb3B1cCAgICAgICAgICAgICB8ICpj
dXJyZW50KiBb4oKC4oKHXSAgICAgICB8ICpyZWxldmFudCogW+KCguKCiF0gICAgfCAqcmVsZXZh
bnQqIFvigoLigoldICB8ICplbnRyeSogW+KCg+KCgF0gICAgfCAgKyAgIHwKCgpb4oKBXTogaHR0
cHM6Ly9naXRodWIuY29tL1dlYktpdC9XZWJLaXQvYmxvYi9tYWluL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCNMMjUzNwpb4oKCXTogaHR0cHM6Ly9zb3VyY2UuY2hyb21pdW0ub3Jn
L2Nocm9taXVtL2Nocm9taXVtL3NyYy8rL21haW46dGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv
Y29yZS9mcmFtZS9sb2NhbF9kb21fd2luZG93LmNjO2w9MjA5MztkcmM9YzgzZjUwM2NiMWQzN2Rk
NTc2OTgwZTcyMmQ0ZGRhY2M5MDE2MWIxZgpb4oKDXTogaHR0cHM6Ly9zb3VyY2UuY2hyb21pdW0u
b3JnL2Nocm9taXVtL2Nocm9taXVtL3NyYy8rL21haW46dGhpcmRfcGFydHkvYmxpbmsvcmVuZGVy
ZXIvY29yZS9wYWdlL2NyZWF0ZV93aW5kb3cuY2M7bD0zNTk7ZHJjPWM4M2Y1MDNjYjFkMzdkZDU3
Njk4MGU3MjJkNGRkYWNjOTAxNjFiMWYKW+KChF06IGh0dHBzOi8vc2VhcmNoZm94Lm9yZy9tb3pp
bGxhLWNlbnRyYWwvcmV2L2NjM2M5NmNjNWZiMDAxNzAxMGZmYTVmYzY2YjQ1YTkyYzQ1MTA1OGQv
dG9vbGtpdC9jb21wb25lbnRzL3dpbmRvd3dhdGNoZXIvbnNXaW5kb3dXYXRjaGVyLmNwcCMxMDAz
ClvigoVdOiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2Vycy5o
dG1sI2NyZWF0aW5nLWJyb3dzaW5nLWNvbnRleHRzOm9wZW5lci1icm93c2luZy1jb250ZXh0Clvi
goZdOiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93aW5kb3ctb2JqZWN0
Lmh0bWwjYXBpcy1mb3ItY3JlYXRpbmctYW5kLW5hdmlnYXRpbmctYnJvd3NpbmctY29udGV4dHMt
YnktbmFtZTpvcGVuZXItYnJvd3NpbmctY29udGV4dAoKW+KCh106IGh0dHBzOi8vZ2l0aHViLmNv
bS9XZWJLaXQvV2ViS2l0L2Jsb2IvZGM4N2VkY2UzOWFkN2JhNjJlZDY3N2EyOWFiM2U2ZmUxOTYw
Y2QzMC9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAjTDI1MTQKW+KCiF06IGh0dHBz
Oi8vc291cmNlLmNocm9taXVtLm9yZy9jaHJvbWl1bS9jaHJvbWl1bS9zcmMvKy9tYWluOnRoaXJk
X3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvZnJhbWUvbG9jYWxfZG9tX3dpbmRvdy5jYztsPTIw
MTM7ZHJjPWM4M2Y1MDNjYjFkMzdkZDU3Njk4MGU3MjJkNGRkYWNjOTAxNjFiMWYKW+KCiV06IGh0
dHBzOi8vc2VhcmNoZm94Lm9yZy9tb3ppbGxhLWNlbnRyYWwvcmV2L2NjM2M5NmNjNWZiMDAxNzAx
MGZmYTVmYzY2YjQ1YTkyYzQ1MTA1OGQvZG9tL2Jhc2UvbnNHbG9iYWxXaW5kb3dPdXRlci5jcHAj
NzI4Mwpb4oKB4oKAXTogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2lu
ZG93LW9iamVjdC5odG1sI2FwaXMtZm9yLWNyZWF0aW5nLWFuZC1uYXZpZ2F0aW5nLWJyb3dzaW5n
LWNvbnRleHRzLWJ5LW5hbWU6ZW50cnktc2V0dGluZ3Mtb2JqZWN0Cgpb4oKB4oKBXTogaHR0cHM6
Ly9naXRodWIuY29tL1dlYktpdC9XZWJLaXQvYmxvYi9kYzg3ZWRjZTM5YWQ3YmE2MmVkNjc3YTI5
YWIzZTZmZTE5NjBjZDMwL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCNMMjUyMQpb
4oKB4oKCXTogaHR0cHM6Ly9zb3VyY2UuY2hyb21pdW0ub3JnL2Nocm9taXVtL2Nocm9taXVtL3Ny
Yy8rL21haW46dGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9mcmFtZS9sb2NhbF9kb21f
d2luZG93LmNjO2w9MjAzOTtkcmM9YzgzZjUwM2NiMWQzN2RkNTc2OTgwZTcyMmQ0ZGRhY2M5MDE2
MWIxZgpb4oKB4oKDXTogaHR0cHM6Ly9zZWFyY2hmb3gub3JnL21vemlsbGEtY2VudHJhbC9yZXYv
Y2MzYzk2Y2M1ZmIwMDE3MDEwZmZhNWZjNjZiNDVhOTJjNDUxMDU4ZC90b29sa2l0L2NvbXBvbmVu
dHMvd2luZG93d2F0Y2hlci9uc1dpbmRvd1dhdGNoZXIuY3BwIzExOTcKW+KCgeKChF06IGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dpbmRvdy1vYmplY3QuaHRtbCNhcGlz
LWZvci1jcmVhdGluZy1hbmQtbmF2aWdhdGluZy1icm93c2luZy1jb250ZXh0cy1ieS1uYW1lOm5h
dmlnYXRlCgpb4oKB4oKFXTogaHR0cHM6Ly9naXRodWIuY29tL1dlYktpdC9XZWJLaXQvYmxvYi9k
Yzg3ZWRjZTM5YWQ3YmE2MmVkNjc3YTI5YWIzZTZmZTE5NjBjZDMwL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCNMMjYyMgpb4oKB4oKGXTogaHR0cHM6Ly9naXRodWIuY29tL1dlYktp
dC9XZWJLaXQvYmxvYi8zMDcwNzVjYjZjZWY3NGEyOTJlNzlkMDE0MWNjZmI0YjM5ZDRjYWU4L1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcCNMMjQ3ClvigoHigoddOiBodHRwczovL3Nv
dXJjZS5jaHJvbWl1bS5vcmcvY2hyb21pdW0vY2hyb21pdW0vc3JjLysvbWFpbjp0aGlyZF9wYXJ0
eS9ibGluay9yZW5kZXJlci9jb3JlL3BhZ2UvZnJhbWVfdHJlZS5jYztsPTI1MjtkcmM9Y2JlNDVm
OTFhYTFkZTRlMjA2Yjk3OWRlNjhlNDgzY2VhYjM4ZjE0Ywpb4oKB4oKIXTogaHR0cHM6Ly9zZWFy
Y2hmb3gub3JnL21vemlsbGEtY2VudHJhbC9yZXYvYWUwMjkwNWIxYzRlN2MyZTZmOTc0YTNjZmFk
MjQ1MDMwMDYxMTBhYy9kb2NzaGVsbC9iYXNlL0Jyb3dzaW5nQ29udGV4dC5jcHAjMTE4Ngpb4oKB
4oKJXTogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NlcnMuaHRt
bCNicm93c2luZy1jb250ZXh0LW5hbWVzOnBhcmVudC1icm93c2luZy1jb250ZXh0LTIKClvigoLi
goBdOiBodHRwczovL2dpdGh1Yi5jb20vV2ViS2l0L1dlYktpdC9ibG9iL2RjODdlZGNlMzlhZDdi
YTYyZWQ2NzdhMjlhYjNlNmZlMTk2MGNkMzAvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwI0wyNjI5ClvigoLigoFdOiBodHRwczovL2dpdGh1Yi5jb20vV2ViS2l0L1dlYktpdC9ibG9i
L2RjODdlZGNlMzlhZDdiYTYyZWQ2NzdhMjlhYjNlNmZlMTk2MGNkMzAvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCNMMzcyOQpb4oKC4oKCXTogaHR0cHM6Ly9zb3VyY2UuY2hy
b21pdW0ub3JnL2Nocm9taXVtL2Nocm9taXVtL3NyYy8rL21haW46dGhpcmRfcGFydHkvYmxpbmsv
cmVuZGVyZXIvY29yZS9wYWdlL2ZyYW1lX3RyZWUuY2M7bD0yNjQ7ZHJjPWM4M2Y1MDNjYjFkMzdk
ZDU3Njk4MGU3MjJkNGRkYWNjOTAxNjFiMWYKW+KCguKCg106IGh0dHBzOi8vc2VhcmNoZm94Lm9y
Zy9tb3ppbGxhLWNlbnRyYWwvcmV2LzQ5YjZlNjA1NTAyNDNiNGI0ZDcxZDZhYjM1YTNmZjJiOWE5
ZjdjNjkvZG9jc2hlbGwvYmFzZS9Ccm93c2luZ0NvbnRleHQuY3BwIzExNjgKW+KCguKChF06IGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzZXJzLmh0bWwjYnJvd3Np
bmctY29udGV4dC1uYW1lczpmYW1pbGlhci13aXRoLTQKW+KCguKChV06IGh0dHBzOi8vc2VhcmNo
Zm94Lm9yZy9tb3ppbGxhLWNlbnRyYWwvcmV2LzQ5YjZlNjA1NTAyNDNiNGI0ZDcxZDZhYjM1YTNm
ZjJiOWE5ZjdjNjkvdG9vbGtpdC9jb21wb25lbnRzL3dpbmRvd3dhdGNoZXIvbnNXaW5kb3dXYXRj
aGVyLmNwcCM2NzUKW+KCguKChl06IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2Jyb3dzaW5nLXRoZS13ZWIuaHRtbCNuYXZpZ2F0aW5nLWFjcm9zcy1kb2N1bWVudHM6YWxs
b3dlZC10by1uYXZpZ2F0ZQoKW+KCguKCh106IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJLaXQvV2Vi
S2l0L2Jsb2IvZGM4N2VkY2UzOWFkN2JhNjJlZDY3N2EyOWFiM2U2ZmUxOTYwY2QzMC9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwI0w0MTE4ClvigoLigohdOiBodHRwczovL3Nv
dXJjZS5jaHJvbWl1bS5vcmcvY2hyb21pdW0vY2hyb21pdW0vc3JjLysvbWFpbjp0aGlyZF9wYXJ0
eS9ibGluay9yZW5kZXJlci9jb3JlL3BhZ2UvY3JlYXRlX3dpbmRvdy5jYztsPTMxOTtkcmM9Yzgz
ZjUwM2NiMWQzN2RkNTc2OTgwZTcyMmQ0ZGRhY2M5MDE2MWIxZgpb4oKC4oKJXTogaHR0cHM6Ly9z
ZWFyY2hmb3gub3JnL21vemlsbGEtY2VudHJhbC9yZXYvNDliNmU2MDU1MDI0M2I0YjRkNzFkNmFi
MzVhM2ZmMmI5YTlmN2M2OS90b29sa2l0L2NvbXBvbmVudHMvd2luZG93d2F0Y2hlci9uc1dpbmRv
d1dhdGNoZXIuY3BwIzgyMQpb4oKD4oKAXTogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9t
dWx0aXBhZ2UvYnJvd3NlcnMuaHRtbCNicm93c2luZy1jb250ZXh0LW5hbWVzOnNhbmRib3hlZC1h
dXhpbGlhcnktbmF2aWdhdGlvbi1icm93c2luZy1jb250ZXh0LWZsYWcK
</data>

          </attachment>
      

    </bug>

</bugzilla>