<?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>248594</bug_id>
          
          <creation_ts>2022-12-01 03:23:52 -0800</creation_ts>
          <short_desc>[MQ4] Replace the last uses of legacy media query code</short_desc>
          <delta_ts>2022-12-01 12:54:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>180234</blocked>
    
    <blocked>248619</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youssefdevelops</cc>
    
    <cc>y_soliman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1915884</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-12-01 03:23:52 -0800</bug_when>
    <thetext>In preloader etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1915886</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-12-01 03:25:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/102853711&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1915945</commentid>
    <comment_count>2</comment_count>
      <attachid>463831</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-12-01 08:28:00 -0800</bug_when>
    <thetext>Created attachment 463831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1915949</commentid>
    <comment_count>3</comment_count>
      <attachid>463832</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-12-01 08:48:37 -0800</bug_when>
    <thetext>Created attachment 463832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1915951</commentid>
    <comment_count>4</comment_count>
      <attachid>463832</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-12-01 08:54:39 -0800</bug_when>
    <thetext>Comment on attachment 463832
Patch

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

What a great moment!

&gt; Source/WebCore/style/StyleScope.cpp:702
&gt;  
&gt; +

Extra blank line here.

&gt; Source/WebKitLegacy/mac/DOM/DOM.mm:710
&gt;      HTMLLinkElement&amp; link = *static_cast&lt;HTMLLinkElement*&gt;(core(self));
&gt; -
&gt; -    auto&amp; media = link.attributeWithoutSynchronization(HTMLNames::mediaAttr);
&gt; -    if (media.isEmpty())
&gt; -        return true;
&gt; -
&gt; -    Document&amp; document = link.document();
&gt; -    auto mediaQuerySet = MediaQuerySet::create(media, MediaQueryParserContext(document));
&gt; -    return LegacyMediaQueryEvaluator { &quot;screen&quot;_s, document, document.renderView() ? &amp;document.renderView()-&gt;style() : nullptr }.evaluate(mediaQuerySet.get());
&gt; +    return link.mediaAttributeMatches();

I think we should just one-line this:

    return static_cast&lt;HTMLLinkElement*&gt;(core(self))-&gt;mediaAttributeMatches();

Also wondering why we need static_cast here, maybe it should be downcast, or maybe we need to overload core so we don’t need a typecast. But since this is legacy WebKit, I guess we can just leave it as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1915965</commentid>
    <comment_count>5</comment_count>
      <attachid>463833</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-12-01 09:20:54 -0800</bug_when>
    <thetext>Created attachment 463833
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1915967</commentid>
    <comment_count>6</comment_count>
      <attachid>463834</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-12-01 09:30:20 -0800</bug_when>
    <thetext>Created attachment 463834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1915977</commentid>
    <comment_count>7</comment_count>
      <attachid>463836</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-12-01 09:49:46 -0800</bug_when>
    <thetext>Created attachment 463836
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1916041</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-12-01 12:54:23 -0800</bug_when>
    <thetext>Committed 257252@main (be64fdb44bd3): &lt;https://commits.webkit.org/257252@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 463836.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463831</attachid>
            <date>2022-12-01 08:28:00 -0800</date>
            <delta_ts>2022-12-01 08:52:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-248594-20221201182758.patch</filename>
            <type>text/plain</type>
            <size>13548</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSBiZjhhZDM2N2M4NWUyNGMwMzJkY2M4YjVmY2M3YTYwMDdjMjBlN2ZhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEgRGVjIDIwMjIgMTM6MjU6MjIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBbTVE0XSBS
ZXBsYWNlIHRoZSBsYXN0IHVzZXMgb2YgbGVnYWN5IG1lZGlhIHF1ZXJ5IGNvZGUKIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDg1OTQgcmRhcjovLzEwMjg1MzcxMQoK
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpVc2UgdGhlIG1vZGVybiBwYXJzZXIgYW5kIGV2
YWx1YXRvci4KCiogU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3Iu
Y3BwOgooV2ViQ29yZTo6bWVkaWFRdWVyeVZpZXdwb3J0U3RhdGVGb3JEb2N1bWVudCk6IERlbGV0
ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaDoKKiBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcDoKKFdlYkNv
cmU6OlNpemVzQXR0cmlidXRlUGFyc2VyOjptZWRpYUNvbmRpdGlvbk1hdGNoZXMpOgooV2ViQ29y
ZTo6U2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OnBhcnNlKToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CihXZWJDb3JlOjpNUTo6dmlld3BvcnRTdGF0ZUZv
ckRvY3VtZW50KToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRv
ci5oOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6
CihXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXI6OnByb2Nlc3NB
dHRyaWJ1dGUpOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxv
YWRlci5jcHA6CihXZWJDb3JlOjpIVE1MUmVzb3VyY2VQcmVsb2FkZXI6OnByZWxvYWQpOgoqIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcDoKKFdlYkNvcmU6OkxpbmtMb2FkZXI6
OnByZWxvYWRJZk5lZWRlZCk6CiogU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHA6CihX
ZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6ZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKToK
KiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcDoKKiBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlLmNwcDoKKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6ZXZhbHVhdGVN
ZWRpYVF1ZXJpZXNGb3JWaWV3cG9ydENoYW5nZSk6CiogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZS5oOgoqIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW06CigtW0RPTUhU
TUxMaW5rRWxlbWVudCBfbWVkaWFRdWVyeU1hdGNoZXNdKToKLS0tCiBTb3VyY2UvV2ViQ29yZS9j
c3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgICAgIHwgIDYgLS0tLS0tCiBTb3VyY2Uv
V2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oICAgICAgIHwgIDQgLS0tLQog
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAgICB8ICAy
ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oICAgICAgICAgICAgICAg
IHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAgICAgfCAgOCArKysrLS0tLQogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291
cmNlUHJlbG9hZGVyLmNwcCB8ICA3ICsrKysrLS0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmNwcCAgICAgICAgICAgICAgICAgfCAgNyArKysrLS0tCiBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9SdWxlU2V0LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwICAgICAgICAgICAgICAgfCAgMSAtCiBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCAgICAgICAgICAgICAgICAgIHwgIDcgKysrKysr
KwogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oICAgICAgICAgICAgICAgICAgICB8
ICA0ICsrKy0KIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gICAgICAgICAgICAg
ICAgICAgfCAxMSArLS0tLS0tLS0tLQogMTIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygr
KSwgMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2Fj
eU1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlh
UXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IDk4NGIyZTFjOWNiZC4uNTQ5MWMxNGYyOGRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBA
IC05OCwxMiArOTgsNiBAQCBzdGF0aWMgYm9vbCBpc0FwcGVhcmFuY2VEZXBlbmRlbnQoY29uc3Qg
QXRvbVN0cmluZyYgbWVkaWFGZWF0dXJlKQogICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVk
aWFGZWF0dXJlTmFtZXM6OnByZWZlcnNEYXJrSW50ZXJmYWNlOwogfQogCi1NZWRpYVF1ZXJ5Vmll
d3BvcnRTdGF0ZSBtZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZUZvckRvY3VtZW50KGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCkKLXsKLSAgICAvLyBUaGVzZSB0aGluZ3MgYWZmZWN0IGV2YWx1YXRpb24g
b2Ygdmlld3BvcnQgZGVwZW5kZW50IG1lZGlhIHF1ZXJpZXMuCi0gICAgcmV0dXJuIHsgZG9jdW1l
bnQudmlldygpLT5sYXlvdXRTaXplKCksIGRvY3VtZW50LmZyYW1lKCktPnBhZ2Vab29tRmFjdG9y
KCksIGRvY3VtZW50LnByaW50aW5nKCkgfTsKLX0KLQogTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRv
cjo6TGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvcihib29sIG1lZGlhRmVhdHVyZVJlc3VsdCkKICAg
ICA6IG1fZmFsbGJhY2tSZXN1bHQobWVkaWFGZWF0dXJlUmVzdWx0KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKaW5kZXggN2UwNzdmNDc1YzAx
Li40OTI3NDk2NjRjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRp
YVF1ZXJ5RXZhbHVhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVl
cnlFdmFsdWF0b3IuaApAQCAtNDQsMTAgKzQ0LDYgQEAgc3RydWN0IE1lZGlhUXVlcnlSZXN1bHQg
ewogICAgIGJvb2wgcmVzdWx0OwogfTsKIAotdXNpbmcgTWVkaWFRdWVyeVZpZXdwb3J0U3RhdGUg
PSBzdGQ6OnR1cGxlPEludFNpemUsIGZsb2F0LCBib29sPjsKLQotTWVkaWFRdWVyeVZpZXdwb3J0
U3RhdGUgbWVkaWFRdWVyeVZpZXdwb3J0U3RhdGVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYp
OwotCiAvLyBTb21lIG9mIHRoZSBjb25zdHJ1Y3RvcnMgYXJlIHVzZWQgZm9yIGNhc2VzIHdoZXJl
IHRoZSBkZXZpY2UgY2hhcmFjdGVyaXN0aWNzIGFyZSBub3Qga25vd24uCiAvLyBUaGVzZSAgY2Fu
IGJlIHVzZWQgdG8gcHJ1bmUgdGhlIGxvYWRpbmcgb2Ygc3R5bGVzaGVldHMgdG8gb25seSB0aG9z
ZSB3aGljaCBhcmUgbm90IGFscmVhZHkga25vd24gdG8gbm90IG1hdGNoLgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwCmluZGV4IDVh
NjUwMzg5MjY5NC4uZDk5NGNhNWIzZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wg
U2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OnBhcnNlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UpCiAg
ICAgICAgIGlmICghbWVkaWFDb25kaXRpb24pCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgYm9vbCBtYXRjaGVzID0gbWVkaWFDb25kaXRpb25NYXRjaGVzKCptZWRpYUNvbmRpdGlvbik7
Ci0gICAgICAgIE1ROjpNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2YWx1YXRvciB7IHNjcmVlbkF0b20o
KSwgbV9kb2N1bWVudCwgbnVsbHB0ciB9OworICAgICAgICBNUTo6TWVkaWFRdWVyeUV2YWx1YXRv
ciBldmFsdWF0b3IgeyBzY3JlZW5BdG9tKCkgfTsKICAgICAgICAgaWYgKCFldmFsdWF0b3IuY29s
bGVjdER5bmFtaWNEZXBlbmRlbmNpZXMoKm1lZGlhQ29uZGl0aW9uKS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBtX2R5bmFtaWNNZWRpYVF1ZXJ5UmVzdWx0cy5hcHBlbmQoeyBNUTo6TWVkaWFRdWVy
eUxpc3QgeyAqbWVkaWFDb25kaXRpb24gfSwgbWF0Y2hlcyB9KTsKICAgICAgICAgaWYgKCFtYXRj
aGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggZmMzNGQ4MGQ2Mzli
Li42YTJiOGUyZTdlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAt
NjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3JpcHQoKSBjb25z
dCB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlwdDsgfQogICAgIERP
TVRva2VuTGlzdCYgc2l6ZXMoKTsKIAotICAgIGJvb2wgbWVkaWFBdHRyaWJ1dGVNYXRjaGVzKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKSBj
b25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Jvc3NPcmlnaW4oY29uc3QgQXRv
bVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcm9zc09yaWdpbigpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2Fu
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAKaW5kZXggMDA3M2M4YmNmZWJkLi4xYzc2Nzg1MmIxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMzQsMTMgKzM0LDEz
IEBACiAjaW5jbHVkZSAiSFRNTFNyY3NldFBhcnNlci5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbml6
ZXIuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgotI2luY2x1ZGUgIkxlZ2FjeU1lZGlh
UXVlcnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJMaW5rTG9hZGVyLmgiCiAjaW5jbHVkZSAiTGlu
a1JlbEF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVy
eVBhcnNlckNvbnRleHQuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5j
bHVkZSAiTWVkaWFRdWVyeVBhcnNlci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0yMjcsMTAg
KzIyNywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1hdGNo
KGF0dHJpYnV0ZU5hbWUsIG1lZGlhQXR0cikgJiYgbV9tZWRpYUF0dHJpYnV0ZS5pc051bGwoKSkg
ewogICAgICAgICAgICAgICAgIG1fbWVkaWFBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVWYWx1ZS50b1N0
cmluZygpOwotICAgICAgICAgICAgICAgIGF1dG8gbWVkaWFTZXQgPSBNZWRpYVF1ZXJ5U2V0Ojpj
cmVhdGUobV9tZWRpYUF0dHJpYnV0ZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9kb2N1bWVu
dCkpOworICAgICAgICAgICAgICAgIGF1dG8gbWVkaWFRdWVyaWVzID0gTVE6Ok1lZGlhUXVlcnlQ
YXJzZXI6OnBhcnNlKG1fbWVkaWFBdHRyaWJ1dGUsIHsgbV9kb2N1bWVudCB9KTsKICAgICAgICAg
ICAgICAgICBSZWZQdHIgZG9jdW1lbnRFbGVtZW50ID0gbV9kb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQoKTsKICAgICAgICAgICAgICAgICBMT0coTWVkaWFRdWVyaWVzLCAiSFRNTFByZWxvYWRTY2Fu
bmVyICVwIHByb2Nlc3NBdHRyaWJ1dGUgZXZhbHVhdGluZyBtZWRpYSBxdWVyaWVzIiwgdGhpcyk7
Ci0gICAgICAgICAgICAgICAgbV9tZWRpYU1hdGNoZWQgPSBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVh
dG9yIHsgbV9kb2N1bWVudC5wcmludGluZygpID8gInByaW50Il9zIDogInNjcmVlbiJfcywgbV9k
b2N1bWVudCwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxl
KCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFTZXQuZ2V0KCkpOworICAgICAgICAgICAgICAg
IG1fbWVkaWFNYXRjaGVkID0gTVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3IgeyBtX2RvY3VtZW50LnBy
aW50aW5nKCkgPyBwcmludEF0b20oKSA6IHNjcmVlbkF0b20oKSwgbV9kb2N1bWVudCwgZG9jdW1l
bnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkgOiBudWxscHRyIH0u
ZXZhbHVhdGUobWVkaWFRdWVyaWVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICht
YXRjaChhdHRyaWJ1dGVOYW1lLCB0eXBlQXR0cikgJiYgbV90eXBlQXR0cmlidXRlLmlzTnVsbCgp
KSB7CiAgICAgICAgICAgICAgICAgLy8gd2hlbiBtdWx0aXBsZSB0eXBlIGF0dHJpYnV0ZXMgcHJl
c2VudDogZmlyc3QgdmFsdWUgd2lucywgaWdub3JlIHN1YnNlcXVlbnQgKHRvIG1hdGNoIEltYWdl
RWxlbWVudCBwYXJzZXIgYW5kIEJsaW5rIGJlaGF2aW91cnMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAppbmRleCA4ZDNlMWJi
ODhhNDcuLmNhYmU1YmQzNTNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCkBAIC0zMCw3ICszMCw4IEBACiAjaW5jbHVk
ZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiRGVmYXVsdFJlc291cmNl
TG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJMZWdhY3lN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgor
I2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAj
aW5jbHVkZSAiU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIuaCIKIApAQCAtODEsNyAr
ODIsOSBAQCB2b2lkIEhUTUxSZXNvdXJjZVByZWxvYWRlcjo6cHJlbG9hZChzdGQ6OnVuaXF1ZV9w
dHI8UHJlbG9hZFJlcXVlc3Q+IHByZWxvYWQpCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQuZnJh
bWUoKSk7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQucmVuZGVyVmlldygpKTsKLSAgICBpZiAoIXBy
ZWxvYWQtPm1lZGlhKCkuaXNFbXB0eSgpICYmICFMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpt
ZWRpYUF0dHJpYnV0ZU1hdGNoZXMobV9kb2N1bWVudCwgcHJlbG9hZC0+bWVkaWEoKSkpCisKKyAg
ICBhdXRvIHF1ZXJpZXMgPSBNUTo6TWVkaWFRdWVyeVBhcnNlcjo6cGFyc2UocHJlbG9hZC0+bWVk
aWEoKSwgeyBtX2RvY3VtZW50IH0pOworICAgIGlmICghTVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3Ig
eyBzY3JlZW5BdG9tKCksIG1fZG9jdW1lbnQsIG1fZG9jdW1lbnQucmVuZGVyU3R5bGUoKSB9LmV2
YWx1YXRlKHF1ZXJpZXMpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RvY3VtZW50LmNhY2hl
ZFJlc291cmNlTG9hZGVyKCkucHJlbG9hZChwcmVsb2FkLT5yZXNvdXJjZVR5cGUoKSwgcHJlbG9h
ZC0+cmVzb3VyY2VSZXF1ZXN0KG1fZG9jdW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmNwcAppbmRleCAxNmVmYWM4OTU1N2YuLjhlYjcyZGE1ZTNjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9MaW5rTG9hZGVyLmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBACiAjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCiAjaW5jbHVkZSAiSFRNTFNyY3NldFBhcnNlci5oIgogI2luY2x1ZGUgIkpTRmV0Y2hS
ZXF1ZXN0RGVzdGluYXRpb24uaCIKLSNpbmNsdWRlICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmgiCiAjaW5jbHVkZSAiTGlua0hlYWRlci5oIgogI2luY2x1ZGUgIkxpbmtQcmVsb2FkUmVzb3Vy
Y2VDbGllbnRzLmgiCiAjaW5jbHVkZSAiTGlua1JlbEF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkxv
YWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2luY2x1ZGUg
Ik1lZGlhTGlzdC5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKKyNpbmNsdWRl
ICJNZWRpYVF1ZXJ5UGFyc2VyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0zMDUs
NyArMzA1LDggQEAgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IExp
bmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZChjb25zdCBMaW4KICAgICAgICAgICAgIGRvY3VtZW50
LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCAiPGxpbmsgcmVsPXByZWxvYWQ+IGhhcyBhbiBpbnZhbGlkIGBpbWFnZXNyY3NldGAgdmFs
dWUiX3MpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKCFMZWdhY3lN
ZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMoZG9jdW1lbnQsIHBhcmFt
cy5tZWRpYSkpCisgICAgYXV0byBxdWVyaWVzID0gTVE6Ok1lZGlhUXVlcnlQYXJzZXI6OnBhcnNl
KHBhcmFtcy5tZWRpYSwgeyBkb2N1bWVudCB9KTsKKyAgICBpZiAoIU1ROjpNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHsgc2NyZWVuQXRvbSgpLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyU3R5bGUoKSB9
LmV2YWx1YXRlKHF1ZXJpZXMpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWlz
U3VwcG9ydGVkVHlwZSh0eXBlLnZhbHVlKCksIHBhcmFtcy5taW1lVHlwZSwgZG9jdW1lbnQpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKaW5kZXggZjZm
ZjYyYzgzMWI1Li4yN2EzOGNkNDVkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwCkBAIC0z
NTAsNyArMzUwLDcgQEAgc3RkOjpvcHRpb25hbDxEeW5hbWljTWVkaWFRdWVyeUV2YWx1YXRpb25D
aGFuZ2VzPiBSdWxlU2V0OjpldmFsdWF0ZUR5bmFtaWNNZWRpYVEKIAogICAgIGF1dG8mIHJ1bGVT
ZXQgPSBtX21lZGlhUXVlcnlJbnZhbGlkYXRpb25SdWxlU2V0Q2FjaGUuZW5zdXJlKGNvbGxlY3Rl
ZENoYW5nZXMuY2hhbmdlZFF1ZXJ5SW5kZXhlcywgWyZdIHsKICAgICAgICAgYXV0byBydWxlU2V0
ID0gUnVsZVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgIFJ1bGVTZXRCdWlsZGVyIGJ1aWxkZXIocnVs
ZVNldCwgTVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3IoInNjcmVlbiJfcywgTVE6OkV2YWx1YXRpb25S
ZXN1bHQ6OlRydWUpKTsKKyAgICAgICAgUnVsZVNldEJ1aWxkZXIgYnVpbGRlcihydWxlU2V0LCBN
UTo6TWVkaWFRdWVyeUV2YWx1YXRvciB7IHNjcmVlbkF0b20oKSwgTVE6OkV2YWx1YXRpb25SZXN1
bHQ6OlRydWUgfSk7CiAgICAgICAgIGZvciAoYXV0byogcnVsZXMgOiBjb2xsZWN0ZWRDaGFuZ2Vz
LmFmZmVjdGVkUnVsZXMpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgcnVsZSA6ICpydWxlcykK
ICAgICAgICAgICAgICAgICBidWlsZGVyLmFkZFN0eWxlUnVsZShydWxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNDk3YjA4ZWZiOWU1Li41YTIwMDZmOWE1OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC00Nyw3ICs0Nyw2IEBA
CiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVMaXN0LmgiCi0jaW5jbHVkZSAiTGVnYWN5TWVkaWFR
dWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUxp
c3QuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZS5jcHAKaW5kZXggNTA1YWRhNGQ5MGMxLi42ZmU3YTUyMGIyNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuY3BwCkBAIC02OTksNiArNjk5LDEzIEBAIHZvaWQgU2NvcGU6OnNjaGVk
dWxlVXBkYXRlKFVwZGF0ZVR5cGUgdXBkYXRlKQogICAgIG1fcGVuZGluZ1VwZGF0ZVRpbWVyLnN0
YXJ0T25lU2hvdCgwX3MpOwogfQogCisKK2F1dG8gU2NvcGU6Om1lZGlhUXVlcnlWaWV3cG9ydFN0
YXRlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSAtPiBNZWRpYVF1ZXJ5Vmll
d3BvcnRTdGF0ZQoreworICAgIC8vIFRoZXNlIHRoaW5ncyBhZmZlY3QgZXZhbHVhdGlvbiBvZiB2
aWV3cG9ydCBkZXBlbmRlbnQgbWVkaWEgcXVlcmllcy4KKyAgICByZXR1cm4geyBkb2N1bWVudC52
aWV3KCktPmxheW91dFNpemUoKSwgZG9jdW1lbnQuZnJhbWUoKS0+cGFnZVpvb21GYWN0b3IoKSwg
ZG9jdW1lbnQucHJpbnRpbmcoKSB9OworfQorCiB2b2lkIFNjb3BlOjpldmFsdWF0ZU1lZGlhUXVl
cmllc0ZvclZpZXdwb3J0Q2hhbmdlKCkKIHsKICAgICBhdXRvIHZpZXdwb3J0U3RhdGUgPSBtZWRp
YVF1ZXJ5Vmlld3BvcnRTdGF0ZUZvckRvY3VtZW50KG1fZG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVTY29wZS5oCmluZGV4IGQzNjE1YzU3ZjBmNS4uYWY4MGFkMWE1OGU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVTY29wZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkxheW91dFNpemUuaCIKLSNpbmNsdWRlICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZU9yZGluYWwuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPG1lbW9yeT4KQEAgLTE4OCw2ICsxODcsOSBAQCBwcml2YXRlOgogCiAgICAgVHJl
ZVNjb3BlJiB0cmVlU2NvcGUoKTsKIAorICAgIHVzaW5nIE1lZGlhUXVlcnlWaWV3cG9ydFN0YXRl
ID0gc3RkOjp0dXBsZTxJbnRTaXplLCBmbG9hdCwgYm9vbD47CisgICAgc3RhdGljIE1lZGlhUXVl
cnlWaWV3cG9ydFN0YXRlIG1lZGlhUXVlcnlWaWV3cG9ydFN0YXRlRm9yRG9jdW1lbnQoY29uc3Qg
RG9jdW1lbnQmKTsKKwogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwogICAgIFNoYWRvd1Jvb3Qq
IG1fc2hhZG93Um9vdCB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
aW5kZXggZTUxMzkzMDQ0NWE5Li5kMDM5ODM1NzNlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTS5tbQpAQCAtNTAsOCArNTAsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbWFnZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5o
PgotI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL01lZGlhTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlRmlsdGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL05vZGVSZW5kZXJTdHlsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdl
Lmg+CkBAIC03MDksMTQgKzcwNyw3IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzRm9yT3Jp
ZW50YXRpb246KGludClvcmllbnRhdGlvbgogLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIHsK
ICAgICBIVE1MTGlua0VsZW1lbnQmIGxpbmsgPSAqc3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50
Kj4oY29yZShzZWxmKSk7Ci0KLSAgICBhdXRvJiBtZWRpYSA9IGxpbmsuYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Om1lZGlhQXR0cik7Ci0gICAgaWYgKG1lZGlhLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBEb2N1bWVudCYgZG9jdW1lbnQg
PSBsaW5rLmRvY3VtZW50KCk7Ci0gICAgYXV0byBtZWRpYVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNl
dDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwotICAg
IHJldHVybiBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQs
IGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkg
OiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIGxp
bmsubWVkaWFBdHRyaWJ1dGVNYXRjaGVzKCk7CiB9CiAKIEBlbmQK
</data>
<flag name="commit-queue"
          id="492253"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463832</attachid>
            <date>2022-12-01 08:48:37 -0800</date>
            <delta_ts>2022-12-01 09:20:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-248594-20221201184836.patch</filename>
            <type>text/plain</type>
            <size>13623</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAzM2NkYzQ5ZDE1Zjg0ZDc2OTUyMDA1ZTUyNzBiYzZhODkwMWIyMmZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEgRGVjIDIwMjIgMTM6MjU6MjIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBbTVE0XSBS
ZXBsYWNlIHRoZSBsYXN0IHVzZXMgb2YgbGVnYWN5IG1lZGlhIHF1ZXJ5IGNvZGUKIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDg1OTQgcmRhcjovLzEwMjg1MzcxMQoK
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpVc2UgdGhlIG1vZGVybiBwYXJzZXIgYW5kIGV2
YWx1YXRvci4KCiogU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3Iu
Y3BwOgooV2ViQ29yZTo6bWVkaWFRdWVyeVZpZXdwb3J0U3RhdGVGb3JEb2N1bWVudCk6IERlbGV0
ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaDoKKiBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcDoKKFdlYkNv
cmU6OlNpemVzQXR0cmlidXRlUGFyc2VyOjptZWRpYUNvbmRpdGlvbk1hdGNoZXMpOgooV2ViQ29y
ZTo6U2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OnBhcnNlKToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CihXZWJDb3JlOjpNUTo6dmlld3BvcnRTdGF0ZUZv
ckRvY3VtZW50KToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRv
ci5oOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6
CihXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXI6OnByb2Nlc3NB
dHRyaWJ1dGUpOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxv
YWRlci5jcHA6CihXZWJDb3JlOjpIVE1MUmVzb3VyY2VQcmVsb2FkZXI6OnByZWxvYWQpOgoqIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcDoKKFdlYkNvcmU6OkxpbmtMb2FkZXI6
OnByZWxvYWRJZk5lZWRlZCk6CiogU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHA6CihX
ZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6ZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVyeVJ1bGVzKToK
KiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcDoKKiBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlLmNwcDoKKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6ZXZhbHVhdGVN
ZWRpYVF1ZXJpZXNGb3JWaWV3cG9ydENoYW5nZSk6CiogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZS5oOgoqIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW06CigtW0RPTUhU
TUxMaW5rRWxlbWVudCBfbWVkaWFRdWVyeU1hdGNoZXNdKToKLS0tCiBTb3VyY2UvV2ViQ29yZS9j
c3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgICAgIHwgIDYgLS0tLS0tCiBTb3VyY2Uv
V2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oICAgICAgIHwgIDQgLS0tLQog
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAgICB8ICAy
ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oICAgICAgICAgICAgICAg
IHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAgICAgfCAgOCArKysrLS0tLQogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291
cmNlUHJlbG9hZGVyLmNwcCB8ICA5ICsrKysrKy0tLQogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xp
bmtMb2FkZXIuY3BwICAgICAgICAgICAgICAgICB8ICA4ICsrKysrLS0tCiBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SdWxlU2V0LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwICAgICAgICAgICAgICAgfCAgMSAtCiBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCAgICAgICAgICAgICAgICAgIHwgIDcgKysr
KysrKwogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oICAgICAgICAgICAgICAgICAg
ICB8ICA0ICsrKy0KIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gICAgICAgICAg
ICAgICAgICAgfCAxMSArLS0tLS0tLS0tLQogMTIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9u
cygrKSwgMzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xl
Z2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1l
ZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IDk4NGIyZTFjOWNiZC4uNTQ5MWMxNGYyOGRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
CkBAIC05OCwxMiArOTgsNiBAQCBzdGF0aWMgYm9vbCBpc0FwcGVhcmFuY2VEZXBlbmRlbnQoY29u
c3QgQXRvbVN0cmluZyYgbWVkaWFGZWF0dXJlKQogICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0g
TWVkaWFGZWF0dXJlTmFtZXM6OnByZWZlcnNEYXJrSW50ZXJmYWNlOwogfQogCi1NZWRpYVF1ZXJ5
Vmlld3BvcnRTdGF0ZSBtZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZUZvckRvY3VtZW50KGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCkKLXsKLSAgICAvLyBUaGVzZSB0aGluZ3MgYWZmZWN0IGV2YWx1YXRp
b24gb2Ygdmlld3BvcnQgZGVwZW5kZW50IG1lZGlhIHF1ZXJpZXMuCi0gICAgcmV0dXJuIHsgZG9j
dW1lbnQudmlldygpLT5sYXlvdXRTaXplKCksIGRvY3VtZW50LmZyYW1lKCktPnBhZ2Vab29tRmFj
dG9yKCksIGRvY3VtZW50LnByaW50aW5nKCkgfTsKLX0KLQogTGVnYWN5TWVkaWFRdWVyeUV2YWx1
YXRvcjo6TGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvcihib29sIG1lZGlhRmVhdHVyZVJlc3VsdCkK
ICAgICA6IG1fZmFsbGJhY2tSZXN1bHQobWVkaWFGZWF0dXJlUmVzdWx0KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKaW5kZXggN2UwNzdmNDc1
YzAxLi40OTI3NDk2NjRjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlh
UXVlcnlFdmFsdWF0b3IuaApAQCAtNDQsMTAgKzQ0LDYgQEAgc3RydWN0IE1lZGlhUXVlcnlSZXN1
bHQgewogICAgIGJvb2wgcmVzdWx0OwogfTsKIAotdXNpbmcgTWVkaWFRdWVyeVZpZXdwb3J0U3Rh
dGUgPSBzdGQ6OnR1cGxlPEludFNpemUsIGZsb2F0LCBib29sPjsKLQotTWVkaWFRdWVyeVZpZXdw
b3J0U3RhdGUgbWVkaWFRdWVyeVZpZXdwb3J0U3RhdGVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVu
dCYpOwotCiAvLyBTb21lIG9mIHRoZSBjb25zdHJ1Y3RvcnMgYXJlIHVzZWQgZm9yIGNhc2VzIHdo
ZXJlIHRoZSBkZXZpY2UgY2hhcmFjdGVyaXN0aWNzIGFyZSBub3Qga25vd24uCiAvLyBUaGVzZSAg
Y2FuIGJlIHVzZWQgdG8gcHJ1bmUgdGhlIGxvYWRpbmcgb2Ygc3R5bGVzaGVldHMgdG8gb25seSB0
aG9zZSB3aGljaCBhcmUgbm90IGFscmVhZHkga25vd24gdG8gbm90IG1hdGNoLgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwCmluZGV4
IDVhNjUwMzg5MjY5NC4uZDk5NGNhNWIzZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIGJv
b2wgU2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OnBhcnNlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2Up
CiAgICAgICAgIGlmICghbWVkaWFDb25kaXRpb24pCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgYm9vbCBtYXRjaGVzID0gbWVkaWFDb25kaXRpb25NYXRjaGVzKCptZWRpYUNvbmRpdGlv
bik7Ci0gICAgICAgIE1ROjpNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2YWx1YXRvciB7IHNjcmVlbkF0
b20oKSwgbV9kb2N1bWVudCwgbnVsbHB0ciB9OworICAgICAgICBNUTo6TWVkaWFRdWVyeUV2YWx1
YXRvciBldmFsdWF0b3IgeyBzY3JlZW5BdG9tKCkgfTsKICAgICAgICAgaWYgKCFldmFsdWF0b3Iu
Y29sbGVjdER5bmFtaWNEZXBlbmRlbmNpZXMoKm1lZGlhQ29uZGl0aW9uKS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICBtX2R5bmFtaWNNZWRpYVF1ZXJ5UmVzdWx0cy5hcHBlbmQoeyBNUTo6TWVkaWFR
dWVyeUxpc3QgeyAqbWVkaWFDb25kaXRpb24gfSwgbWF0Y2hlcyB9KTsKICAgICAgICAgaWYgKCFt
YXRjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggZmMzNGQ4MGQ2
MzliLi42YTJiOGUyZTdlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApA
QCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3JpcHQoKSBj
b25zdCB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlwdDsgfQogICAg
IERPTVRva2VuTGlzdCYgc2l6ZXMoKTsKIAotICAgIGJvb2wgbWVkaWFBdHRyaWJ1dGVNYXRjaGVz
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMo
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Jvc3NPcmlnaW4oY29uc3Qg
QXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcm9zc09yaWdpbigpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5l
ci5jcHAKaW5kZXggMDA3M2M4YmNmZWJkLi4xYzc2Nzg1MmIxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMzQsMTMgKzM0
LDEzIEBACiAjaW5jbHVkZSAiSFRNTFNyY3NldFBhcnNlci5oIgogI2luY2x1ZGUgIkhUTUxUb2tl
bml6ZXIuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgotI2luY2x1ZGUgIkxlZ2FjeU1l
ZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJMaW5rTG9hZGVyLmgiCiAjaW5jbHVkZSAi
TGlua1JlbEF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1F
VHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCi0jaW5jbHVkZSAiTWVkaWFR
dWVyeVBhcnNlckNvbnRleHQuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisj
aW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNp
bmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0yMjcs
MTAgKzIyNywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1h
dGNoKGF0dHJpYnV0ZU5hbWUsIG1lZGlhQXR0cikgJiYgbV9tZWRpYUF0dHJpYnV0ZS5pc051bGwo
KSkgewogICAgICAgICAgICAgICAgIG1fbWVkaWFBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVWYWx1ZS50
b1N0cmluZygpOwotICAgICAgICAgICAgICAgIGF1dG8gbWVkaWFTZXQgPSBNZWRpYVF1ZXJ5U2V0
OjpjcmVhdGUobV9tZWRpYUF0dHJpYnV0ZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9kb2N1
bWVudCkpOworICAgICAgICAgICAgICAgIGF1dG8gbWVkaWFRdWVyaWVzID0gTVE6Ok1lZGlhUXVl
cnlQYXJzZXI6OnBhcnNlKG1fbWVkaWFBdHRyaWJ1dGUsIHsgbV9kb2N1bWVudCB9KTsKICAgICAg
ICAgICAgICAgICBSZWZQdHIgZG9jdW1lbnRFbGVtZW50ID0gbV9kb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQoKTsKICAgICAgICAgICAgICAgICBMT0coTWVkaWFRdWVyaWVzLCAiSFRNTFByZWxvYWRT
Y2FubmVyICVwIHByb2Nlc3NBdHRyaWJ1dGUgZXZhbHVhdGluZyBtZWRpYSBxdWVyaWVzIiwgdGhp
cyk7Ci0gICAgICAgICAgICAgICAgbV9tZWRpYU1hdGNoZWQgPSBMZWdhY3lNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHsgbV9kb2N1bWVudC5wcmludGluZygpID8gInByaW50Il9zIDogInNjcmVlbiJfcywg
bV9kb2N1bWVudCwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0
eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFTZXQuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIG1fbWVkaWFNYXRjaGVkID0gTVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3IgeyBtX2RvY3VtZW50
LnByaW50aW5nKCkgPyBwcmludEF0b20oKSA6IHNjcmVlbkF0b20oKSwgbV9kb2N1bWVudCwgZG9j
dW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkgOiBudWxscHRy
IH0uZXZhbHVhdGUobWVkaWFRdWVyaWVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChtYXRjaChhdHRyaWJ1dGVOYW1lLCB0eXBlQXR0cikgJiYgbV90eXBlQXR0cmlidXRlLmlzTnVs
bCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gd2hlbiBtdWx0aXBsZSB0eXBlIGF0dHJpYnV0ZXMg
cHJlc2VudDogZmlyc3QgdmFsdWUgd2lucywgaWdub3JlIHN1YnNlcXVlbnQgKHRvIG1hdGNoIElt
YWdlRWxlbWVudCBwYXJzZXIgYW5kIEJsaW5rIGJlaGF2aW91cnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAppbmRleCA4ZDNl
MWJiODhhNDcuLjBjYTI4NDAwNDM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCkBAIC0zMCw3ICszMCw5IEBACiAjaW5j
bHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiRGVmYXVsdFJlc291
cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJMZWdh
Y3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5o
IgorI2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXIuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudENh
Y2hlZFNjcmlwdEZldGNoZXIuaCIKIApAQCAtODEsMTEgKzgzLDEyIEBAIHZvaWQgSFRNTFJlc291
cmNlUHJlbG9hZGVyOjpwcmVsb2FkKHN0ZDo6dW5pcXVlX3B0cjxQcmVsb2FkUmVxdWVzdD4gcHJl
bG9hZCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBBU1NFUlQobV9k
b2N1bWVudC5yZW5kZXJWaWV3KCkpOwotICAgIGlmICghcHJlbG9hZC0+bWVkaWEoKS5pc0VtcHR5
KCkgJiYgIUxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyht
X2RvY3VtZW50LCBwcmVsb2FkLT5tZWRpYSgpKSkKKworICAgIGF1dG8gcXVlcmllcyA9IE1ROjpN
ZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZShwcmVsb2FkLT5tZWRpYSgpLCB7IG1fZG9jdW1lbnQgfSk7
CisgICAgaWYgKCFNUTo6TWVkaWFRdWVyeUV2YWx1YXRvciB7IHNjcmVlbkF0b20oKSwgbV9kb2N1
bWVudCwgbV9kb2N1bWVudC5yZW5kZXJTdHlsZSgpIH0uZXZhbHVhdGUocXVlcmllcykpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5wcmVs
b2FkKHByZWxvYWQtPnJlc291cmNlVHlwZSgpLCBwcmVsb2FkLT5yZXNvdXJjZVJlcXVlc3QobV9k
b2N1bWVudCkpOwogfQogCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
aW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRl
eCAxNmVmYWM4OTU1N2YuLmViOTM4NDQ3OTJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmNwcApAQCAtNDgsMTMgKzQ4LDE0IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiSFRNTFNyY3NldFBhcnNlci5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXF1ZXN0RGVzdGlu
YXRpb24uaCIKLSNpbmNsdWRlICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVk
ZSAiTGlua0hlYWRlci5oIgogI2luY2x1ZGUgIkxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnRzLmgi
CiAjaW5jbHVkZSAiTGlua1JlbEF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5
LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2luY2x1ZGUgIk1lZGlhTGlzdC5o
IgorI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5
UGFyc2VyLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCkBAIC0zMDUsNyArMzA2LDggQEAgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2Fk
UmVzb3VyY2VDbGllbnQ+IExpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZChjb25zdCBMaW4KICAg
ICAgICAgICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVy
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiPGxpbmsgcmVsPXByZWxvYWQ+IGhhcyBhbiBpbnZhbGlk
IGBpbWFnZXNyY3NldGAgdmFsdWUiX3MpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0gICAgaWYgKCFMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0dHJpYnV0ZU1hdGNo
ZXMoZG9jdW1lbnQsIHBhcmFtcy5tZWRpYSkpCisgICAgYXV0byBxdWVyaWVzID0gTVE6Ok1lZGlh
UXVlcnlQYXJzZXI6OnBhcnNlKHBhcmFtcy5tZWRpYSwgeyBkb2N1bWVudCB9KTsKKyAgICBpZiAo
IU1ROjpNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgc2NyZWVuQXRvbSgpLCBkb2N1bWVudCwgZG9jdW1l
bnQucmVuZGVyU3R5bGUoKSB9LmV2YWx1YXRlKHF1ZXJpZXMpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBpZiAoIWlzU3VwcG9ydGVkVHlwZSh0eXBlLnZhbHVlKCksIHBhcmFtcy5taW1l
VHlwZSwgZG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVs
ZVNldC5jcHAKaW5kZXggZjZmZjYyYzgzMWI1Li4yN2EzOGNkNDVkMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1J1bGVTZXQuY3BwCkBAIC0zNTAsNyArMzUwLDcgQEAgc3RkOjpvcHRpb25hbDxEeW5hbWljTWVk
aWFRdWVyeUV2YWx1YXRpb25DaGFuZ2VzPiBSdWxlU2V0OjpldmFsdWF0ZUR5bmFtaWNNZWRpYVEK
IAogICAgIGF1dG8mIHJ1bGVTZXQgPSBtX21lZGlhUXVlcnlJbnZhbGlkYXRpb25SdWxlU2V0Q2Fj
aGUuZW5zdXJlKGNvbGxlY3RlZENoYW5nZXMuY2hhbmdlZFF1ZXJ5SW5kZXhlcywgWyZdIHsKICAg
ICAgICAgYXV0byBydWxlU2V0ID0gUnVsZVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgIFJ1bGVTZXRC
dWlsZGVyIGJ1aWxkZXIocnVsZVNldCwgTVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3IoInNjcmVlbiJf
cywgTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlRydWUpKTsKKyAgICAgICAgUnVsZVNldEJ1aWxkZXIg
YnVpbGRlcihydWxlU2V0LCBNUTo6TWVkaWFRdWVyeUV2YWx1YXRvciB7IHNjcmVlbkF0b20oKSwg
TVE6OkV2YWx1YXRpb25SZXN1bHQ6OlRydWUgfSk7CiAgICAgICAgIGZvciAoYXV0byogcnVsZXMg
OiBjb2xsZWN0ZWRDaGFuZ2VzLmFmZmVjdGVkUnVsZXMpIHsKICAgICAgICAgICAgIGZvciAoYXV0
byYgcnVsZSA6ICpydWxlcykKICAgICAgICAgICAgICAgICBidWlsZGVyLmFkZFN0eWxlUnVsZShy
dWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNDk3YjA4ZWZi
OWU1Li41YTIwMDZmOWE1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3Bw
CkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVMaXN0LmgiCi0jaW5j
bHVkZSAiTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggNTA1YWRhNGQ5MGMxLi42ZmU3YTUyMGIy
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCkBAIC02OTksNiArNjk5LDEzIEBA
IHZvaWQgU2NvcGU6OnNjaGVkdWxlVXBkYXRlKFVwZGF0ZVR5cGUgdXBkYXRlKQogICAgIG1fcGVu
ZGluZ1VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCisKK2F1dG8gU2NvcGU6Om1l
ZGlhUXVlcnlWaWV3cG9ydFN0YXRlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KSAtPiBNZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZQoreworICAgIC8vIFRoZXNlIHRoaW5ncyBhZmZl
Y3QgZXZhbHVhdGlvbiBvZiB2aWV3cG9ydCBkZXBlbmRlbnQgbWVkaWEgcXVlcmllcy4KKyAgICBy
ZXR1cm4geyBkb2N1bWVudC52aWV3KCktPmxheW91dFNpemUoKSwgZG9jdW1lbnQuZnJhbWUoKS0+
cGFnZVpvb21GYWN0b3IoKSwgZG9jdW1lbnQucHJpbnRpbmcoKSB9OworfQorCiB2b2lkIFNjb3Bl
OjpldmFsdWF0ZU1lZGlhUXVlcmllc0ZvclZpZXdwb3J0Q2hhbmdlKCkKIHsKICAgICBhdXRvIHZp
ZXdwb3J0U3RhdGUgPSBtZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZUZvckRvY3VtZW50KG1fZG9jdW1l
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCmluZGV4IGQzNjE1YzU3ZjBmNS4uYWY4MGFk
MWE1OGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxheW91dFNpemUuaCIKLSNpbmNsdWRlICJMZWdhY3lN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZU9yZGluYWwuaCIKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTE4OCw2ICsxODcsOSBAQCBw
cml2YXRlOgogCiAgICAgVHJlZVNjb3BlJiB0cmVlU2NvcGUoKTsKIAorICAgIHVzaW5nIE1lZGlh
UXVlcnlWaWV3cG9ydFN0YXRlID0gc3RkOjp0dXBsZTxJbnRTaXplLCBmbG9hdCwgYm9vbD47Cisg
ICAgc3RhdGljIE1lZGlhUXVlcnlWaWV3cG9ydFN0YXRlIG1lZGlhUXVlcnlWaWV3cG9ydFN0YXRl
Rm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKKwogICAgIERvY3VtZW50JiBtX2RvY3VtZW50
OwogICAgIFNoYWRvd1Jvb3QqIG1fc2hhZG93Um9vdCB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET00ubW0KaW5kZXggZTUxMzkzMDQ0NWE5Li5kMDM5ODM1NzNlMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTAsOCArNTAsNiBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9JbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU05vZGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvS2V5Ym9hcmRFdmVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lNZWRpYVF1ZXJ5RXZh
bHVhdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01lZGlhTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Ob2RlRmlsdGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVSZW5kZXJTdHlsZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9QYWdlLmg+CkBAIC03MDksMTQgKzcwNyw3IEBAIC0gKEJPT0wpX21lZGlh
UXVlcnlNYXRjaGVzRm9yT3JpZW50YXRpb246KGludClvcmllbnRhdGlvbgogLSAoQk9PTClfbWVk
aWFRdWVyeU1hdGNoZXMKIHsKICAgICBIVE1MTGlua0VsZW1lbnQmIGxpbmsgPSAqc3RhdGljX2Nh
c3Q8SFRNTExpbmtFbGVtZW50Kj4oY29yZShzZWxmKSk7Ci0KLSAgICBhdXRvJiBtZWRpYSA9IGxp
bmsuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Om1lZGlhQXR0cik7
Ci0gICAgaWYgKG1lZGlhLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBE
b2N1bWVudCYgZG9jdW1lbnQgPSBsaW5rLmRvY3VtZW50KCk7Ci0gICAgYXV0byBtZWRpYVF1ZXJ5
U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4
dChkb2N1bWVudCkpOwotICAgIHJldHVybiBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNj
cmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5k
ZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQo
KSk7CisgICAgcmV0dXJuIGxpbmsubWVkaWFBdHRyaWJ1dGVNYXRjaGVzKCk7CiB9CiAKIEBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463833</attachid>
            <date>2022-12-01 09:20:54 -0800</date>
            <delta_ts>2022-12-01 09:30:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-248594-20221201192052.patch</filename>
            <type>text/plain</type>
            <size>13653</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAzZGM1YmJkZDAxMTU5YzI2MjgzZDM4MDI0MzYwNjFiMzMzZjdmZDRiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEgRGVjIDIwMjIgMTM6MjU6MjIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBbTVE0XSBS
ZXBsYWNlIHRoZSBsYXN0IHVzZXMgb2YgbGVnYWN5IG1lZGlhIHF1ZXJ5IGNvZGUKIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDg1OTQgcmRhcjovLzEwMjg1MzcxMQoK
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIKClVzZSB0aGUgbW9kZXJuIHBhcnNlciBhbmQgZXZhbHVh
dG9yLgoKKiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6
CihXZWJDb3JlOjptZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZUZvckRvY3VtZW50KTogRGVsZXRlZC4K
KiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oOgoqIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwOgooV2ViQ29yZTo6
U2l6ZXNBdHRyaWJ1dGVQYXJzZXI6Om1lZGlhQ29uZGl0aW9uTWF0Y2hlcyk6CihXZWJDb3JlOjpT
aXplc0F0dHJpYnV0ZVBhcnNlcjo6cGFyc2UpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKFdlYkNvcmU6Ok1ROjp2aWV3cG9ydFN0YXRlRm9yRG9j
dW1lbnQpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6
CiogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKFdl
YkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJp
YnV0ZSk6CiogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVy
LmNwcDoKKFdlYkNvcmU6OkhUTUxSZXNvdXJjZVByZWxvYWRlcjo6cHJlbG9hZCk6CiogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgooV2ViQ29yZTo6TGlua0xvYWRlcjo6cHJl
bG9hZElmTmVlZGVkKToKKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcDoKKFdlYkNv
cmU6OlN0eWxlOjpSdWxlU2V0OjpldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMpOgoqIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgoqIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuY3BwOgooV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpldmFsdWF0ZU1lZGlh
UXVlcmllc0ZvclZpZXdwb3J0Q2hhbmdlKToKKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNj
b3BlLmg6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbToKKC1bRE9NSFRNTExp
bmtFbGVtZW50IF9tZWRpYVF1ZXJ5TWF0Y2hlc10pOgotLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9M
ZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAgICAgfCAgNiAtLS0tLS0KIFNvdXJjZS9XZWJD
b3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggICAgICAgfCAgNCAtLS0tCiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcCAgIHwgIDIgKy0K
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmggICAgICAgICAgICAgICAgfCAg
MiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCAg
ICB8ICA4ICsrKystLS0tCiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQ
cmVsb2FkZXIuY3BwIHwgIDkgKysrKysrLS0tCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xv
YWRlci5jcHAgICAgICAgICAgICAgICAgIHwgIDggKysrKystLS0KIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVTZXQuY3BwICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAgICAgICAgICAgICAgICB8ICAxIC0KIFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwICAgICAgICAgICAgICAgICAgfCAgNiArKysrKysK
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaCAgICAgICAgICAgICAgICAgICAgfCAg
NCArKystCiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tICAgICAgICAgICAgICAg
ICAgIHwgMTIgKy0tLS0tLS0tLS0tCiAxMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCsp
LCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFR
dWVyeUV2YWx1YXRvci5jcHAKaW5kZXggOTg0YjJlMWM5Y2JkLi41NDkxYzE0ZjI4ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAg
LTk4LDEyICs5OCw2IEBAIHN0YXRpYyBib29sIGlzQXBwZWFyYW5jZURlcGVuZGVudChjb25zdCBB
dG9tU3RyaW5nJiBtZWRpYUZlYXR1cmUpCiAgICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRp
YUZlYXR1cmVOYW1lczo6cHJlZmVyc0RhcmtJbnRlcmZhY2U7CiB9CiAKLU1lZGlhUXVlcnlWaWV3
cG9ydFN0YXRlIG1lZGlhUXVlcnlWaWV3cG9ydFN0YXRlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50KQotewotICAgIC8vIFRoZXNlIHRoaW5ncyBhZmZlY3QgZXZhbHVhdGlvbiBv
ZiB2aWV3cG9ydCBkZXBlbmRlbnQgbWVkaWEgcXVlcmllcy4KLSAgICByZXR1cm4geyBkb2N1bWVu
dC52aWV3KCktPmxheW91dFNpemUoKSwgZG9jdW1lbnQuZnJhbWUoKS0+cGFnZVpvb21GYWN0b3Io
KSwgZG9jdW1lbnQucHJpbnRpbmcoKSB9OwotfQotCiBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9y
OjpMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yKGJvb2wgbWVkaWFGZWF0dXJlUmVzdWx0KQogICAg
IDogbV9mYWxsYmFja1Jlc3VsdChtZWRpYUZlYXR1cmVSZXN1bHQpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaAppbmRleCA3ZTA3N2Y0NzVjMDEu
LjQ5Mjc0OTY2NGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlh
UXVlcnlFdmFsdWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVy
eUV2YWx1YXRvci5oCkBAIC00NCwxMCArNDQsNiBAQCBzdHJ1Y3QgTWVkaWFRdWVyeVJlc3VsdCB7
CiAgICAgYm9vbCByZXN1bHQ7CiB9OwogCi11c2luZyBNZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZSA9
IHN0ZDo6dHVwbGU8SW50U2l6ZSwgZmxvYXQsIGJvb2w+OwotCi1NZWRpYVF1ZXJ5Vmlld3BvcnRT
dGF0ZSBtZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50Jik7
Ci0KIC8vIFNvbWUgb2YgdGhlIGNvbnN0cnVjdG9ycyBhcmUgdXNlZCBmb3IgY2FzZXMgd2hlcmUg
dGhlIGRldmljZSBjaGFyYWN0ZXJpc3RpY3MgYXJlIG5vdCBrbm93bi4KIC8vIFRoZXNlICBjYW4g
YmUgdXNlZCB0byBwcnVuZSB0aGUgbG9hZGluZyBvZiBzdHlsZXNoZWV0cyB0byBvbmx5IHRob3Nl
IHdoaWNoIGFyZSBub3QgYWxyZWFkeSBrbm93biB0byBub3QgbWF0Y2guCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAKaW5kZXggNWE2
NTAzODkyNjk0Li5kOTk0Y2E1YjNlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBT
aXplc0F0dHJpYnV0ZVBhcnNlcjo6cGFyc2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSkKICAg
ICAgICAgaWYgKCFtZWRpYUNvbmRpdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBib29sIG1hdGNoZXMgPSBtZWRpYUNvbmRpdGlvbk1hdGNoZXMoKm1lZGlhQ29uZGl0aW9uKTsK
LSAgICAgICAgTVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3IgZXZhbHVhdG9yIHsgc2NyZWVuQXRvbSgp
LCBtX2RvY3VtZW50LCBudWxscHRyIH07CisgICAgICAgIE1ROjpNZWRpYVF1ZXJ5RXZhbHVhdG9y
IGV2YWx1YXRvciB7IHNjcmVlbkF0b20oKSB9OwogICAgICAgICBpZiAoIWV2YWx1YXRvci5jb2xs
ZWN0RHluYW1pY0RlcGVuZGVuY2llcygqbWVkaWFDb25kaXRpb24pLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG1fZHluYW1pY01lZGlhUXVlcnlSZXN1bHRzLmFwcGVuZCh7IE1ROjpNZWRpYVF1ZXJ5
TGlzdCB7ICptZWRpYUNvbmRpdGlvbiB9LCBtYXRjaGVzIH0pOwogICAgICAgICBpZiAoIW1hdGNo
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCBmYzM0ZDgwZDYzOWIu
LjZhMmI4ZTJlN2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC02
OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW5hYmxlZFZpYVNjcmlwdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBFbmFibGVkVmlhU2NyaXB0OyB9CiAgICAgRE9N
VG9rZW5MaXN0JiBzaXplcygpOwogCi0gICAgYm9vbCBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1lZGlhQXR0cmlidXRlTWF0Y2hlcygpIGNv
bnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDcm9zc09yaWdpbihjb25zdCBBdG9t
U3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyb3NzT3JpZ2luKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cAppbmRleCAwMDczYzhiY2ZlYmQuLjFjNzY3ODUyYjEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0zNCwxMyArMzQsMTMg
QEAKICNpbmNsdWRlICJIVE1MU3Jjc2V0UGFyc2VyLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXpl
ci5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCi0jaW5jbHVkZSAiTGVnYWN5TWVkaWFR
dWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIkxpbmtMb2FkZXIuaCIKICNpbmNsdWRlICJMaW5r
UmVsQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBl
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKLSNpbmNsdWRlICJNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKKyNpbmNs
dWRlICJNZWRpYVF1ZXJ5UGFyc2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTIyNywxMCAr
MjI3LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobWF0Y2go
YXR0cmlidXRlTmFtZSwgbWVkaWFBdHRyKSAmJiBtX21lZGlhQXR0cmlidXRlLmlzTnVsbCgpKSB7
CiAgICAgICAgICAgICAgICAgbV9tZWRpYUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZVZhbHVlLnRvU3Ry
aW5nKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBtZWRpYVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNy
ZWF0ZShtX21lZGlhQXR0cmlidXRlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChtX2RvY3VtZW50
KSk7CisgICAgICAgICAgICAgICAgYXV0byBtZWRpYVF1ZXJpZXMgPSBNUTo6TWVkaWFRdWVyeVBh
cnNlcjo6cGFyc2UobV9tZWRpYUF0dHJpYnV0ZSwgeyBtX2RvY3VtZW50IH0pOwogICAgICAgICAg
ICAgICAgIFJlZlB0ciBkb2N1bWVudEVsZW1lbnQgPSBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVu
dCgpOwogICAgICAgICAgICAgICAgIExPRyhNZWRpYVF1ZXJpZXMsICJIVE1MUHJlbG9hZFNjYW5u
ZXIgJXAgcHJvY2Vzc0F0dHJpYnV0ZSBldmFsdWF0aW5nIG1lZGlhIHF1ZXJpZXMiLCB0aGlzKTsK
LSAgICAgICAgICAgICAgICBtX21lZGlhTWF0Y2hlZCA9IExlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0
b3IgeyBtX2RvY3VtZW50LnByaW50aW5nKCkgPyAicHJpbnQiX3MgOiAic2NyZWVuIl9zLCBtX2Rv
Y3VtZW50LCBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPmNvbXB1dGVkU3R5bGUo
KSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVNldC5nZXQoKSk7CisgICAgICAgICAgICAgICAg
bV9tZWRpYU1hdGNoZWQgPSBNUTo6TWVkaWFRdWVyeUV2YWx1YXRvciB7IG1fZG9jdW1lbnQucHJp
bnRpbmcoKSA/IHByaW50QXRvbSgpIDogc2NyZWVuQXRvbSgpLCBtX2RvY3VtZW50LCBkb2N1bWVu
dEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKSA6IG51bGxwdHIgfS5l
dmFsdWF0ZShtZWRpYVF1ZXJpZXMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1h
dGNoKGF0dHJpYnV0ZU5hbWUsIHR5cGVBdHRyKSAmJiBtX3R5cGVBdHRyaWJ1dGUuaXNOdWxsKCkp
IHsKICAgICAgICAgICAgICAgICAvLyB3aGVuIG11bHRpcGxlIHR5cGUgYXR0cmlidXRlcyBwcmVz
ZW50OiBmaXJzdCB2YWx1ZSB3aW5zLCBpZ25vcmUgc3Vic2VxdWVudCAodG8gbWF0Y2ggSW1hZ2VF
bGVtZW50IHBhcnNlciBhbmQgQmxpbmsgYmVoYXZpb3VycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCmluZGV4IDhkM2UxYmI4
OGE0Ny4uMGNhMjg0MDA0MzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKQEAgLTMwLDcgKzMwLDkgQEAKICNpbmNsdWRl
ICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJEZWZhdWx0UmVzb3VyY2VM
b2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkxlZ2FjeU1l
ZGlhUXVlcnlFdmFsdWF0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisj
aW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlci5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50Q2FjaGVk
U2NyaXB0RmV0Y2hlci5oIgogCkBAIC04MSwxMSArODMsMTIgQEAgdm9pZCBIVE1MUmVzb3VyY2VQ
cmVsb2FkZXI6OnByZWxvYWQoc3RkOjp1bmlxdWVfcHRyPFByZWxvYWRSZXF1ZXN0PiBwcmVsb2Fk
KQogewogICAgIEFTU0VSVChtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIEFTU0VSVChtX2RvY3Vt
ZW50LnJlbmRlclZpZXcoKSk7Ci0gICAgaWYgKCFwcmVsb2FkLT5tZWRpYSgpLmlzRW1wdHkoKSAm
JiAhTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvcjo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKG1fZG9j
dW1lbnQsIHByZWxvYWQtPm1lZGlhKCkpKQorCisgICAgYXV0byBxdWVyaWVzID0gTVE6Ok1lZGlh
UXVlcnlQYXJzZXI6OnBhcnNlKHByZWxvYWQtPm1lZGlhKCksIHsgbV9kb2N1bWVudCB9KTsKKyAg
ICBpZiAoIU1ROjpNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgc2NyZWVuQXRvbSgpLCBtX2RvY3VtZW50
LCBtX2RvY3VtZW50LnJlbmRlclN0eWxlKCkgfS5ldmFsdWF0ZShxdWVyaWVzKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9kb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnByZWxvYWQo
cHJlbG9hZC0+cmVzb3VyY2VUeXBlKCksIHByZWxvYWQtPnJlc291cmNlUmVxdWVzdChtX2RvY3Vt
ZW50KSk7CiB9CiAKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IDE2
ZWZhYzg5NTU3Zi4uZWI5Mzg0NDc5MmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwCkBAIC00OCwxMyArNDgsMTQgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJIVE1MU3Jjc2V0UGFyc2VyLmgiCiAjaW5jbHVkZSAiSlNGZXRjaFJlcXVlc3REZXN0aW5hdGlv
bi5oIgotI2luY2x1ZGUgIkxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJM
aW5rSGVhZGVyLmgiCiAjaW5jbHVkZSAiTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaCIKICNp
bmNsdWRlICJMaW5rUmVsQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIK
ICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiTWVkaWFMaXN0LmgiCisj
aW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJz
ZXIuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKQEAgLTMwNSw3ICszMDYsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNv
dXJjZUNsaWVudD4gTGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbgogICAgICAg
ICAgICAgZG9jdW1lbnQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsICI8bGluayByZWw9cHJlbG9hZD4gaGFzIGFuIGludmFsaWQgYGlt
YWdlc3Jjc2V0YCB2YWx1ZSJfcyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAg
ICBpZiAoIUxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyhk
b2N1bWVudCwgcGFyYW1zLm1lZGlhKSkKKyAgICBhdXRvIHF1ZXJpZXMgPSBNUTo6TWVkaWFRdWVy
eVBhcnNlcjo6cGFyc2UocGFyYW1zLm1lZGlhLCB7IGRvY3VtZW50IH0pOworICAgIGlmICghTVE6
Ok1lZGlhUXVlcnlFdmFsdWF0b3IgeyBzY3JlZW5BdG9tKCksIGRvY3VtZW50LCBkb2N1bWVudC5y
ZW5kZXJTdHlsZSgpIH0uZXZhbHVhdGUocXVlcmllcykpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGlmICghaXNTdXBwb3J0ZWRUeXBlKHR5cGUudmFsdWUoKSwgcGFyYW1zLm1pbWVUeXBl
LCBkb2N1bWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0
LmNwcAppbmRleCBmNmZmNjJjODMxYjUuLjI3YTM4Y2Q0NWQyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVs
ZVNldC5jcHAKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGQ6Om9wdGlvbmFsPER5bmFtaWNNZWRpYVF1
ZXJ5RXZhbHVhdGlvbkNoYW5nZXM+IFJ1bGVTZXQ6OmV2YWx1YXRlRHluYW1pY01lZGlhUQogCiAg
ICAgYXV0byYgcnVsZVNldCA9IG1fbWVkaWFRdWVyeUludmFsaWRhdGlvblJ1bGVTZXRDYWNoZS5l
bnN1cmUoY29sbGVjdGVkQ2hhbmdlcy5jaGFuZ2VkUXVlcnlJbmRleGVzLCBbJl0gewogICAgICAg
ICBhdXRvIHJ1bGVTZXQgPSBSdWxlU2V0OjpjcmVhdGUoKTsKLSAgICAgICAgUnVsZVNldEJ1aWxk
ZXIgYnVpbGRlcihydWxlU2V0LCBNUTo6TWVkaWFRdWVyeUV2YWx1YXRvcigic2NyZWVuIl9zLCBN
UTo6RXZhbHVhdGlvblJlc3VsdDo6VHJ1ZSkpOworICAgICAgICBSdWxlU2V0QnVpbGRlciBidWls
ZGVyKHJ1bGVTZXQsIE1ROjpNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgc2NyZWVuQXRvbSgpLCBNUTo6
RXZhbHVhdGlvblJlc3VsdDo6VHJ1ZSB9KTsKICAgICAgICAgZm9yIChhdXRvKiBydWxlcyA6IGNv
bGxlY3RlZENoYW5nZXMuYWZmZWN0ZWRSdWxlcykgewogICAgICAgICAgICAgZm9yIChhdXRvJiBy
dWxlIDogKnJ1bGVzKQogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYWRkU3R5bGVSdWxlKHJ1bGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA0OTdiMDhlZmI5ZTUu
LjVhMjAwNmY5YTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKQEAg
LTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLZXlmcmFtZUxpc3QuaCIKLSNpbmNsdWRl
ICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAppbmRleCA1MDVhZGE0ZDkwYzEuLjZiNDcyZDk5NzdjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTY5OSw2ICs2OTksMTIgQEAgdm9p
ZCBTY29wZTo6c2NoZWR1bGVVcGRhdGUoVXBkYXRlVHlwZSB1cGRhdGUpCiAgICAgbV9wZW5kaW5n
VXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKK2F1dG8gU2NvcGU6Om1lZGlhUXVl
cnlWaWV3cG9ydFN0YXRlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSAtPiBN
ZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZQoreworICAgIC8vIFRoZXNlIHRoaW5ncyBhZmZlY3QgZXZh
bHVhdGlvbiBvZiB2aWV3cG9ydCBkZXBlbmRlbnQgbWVkaWEgcXVlcmllcy4KKyAgICByZXR1cm4g
eyBkb2N1bWVudC52aWV3KCktPmxheW91dFNpemUoKSwgZG9jdW1lbnQuZnJhbWUoKS0+cGFnZVpv
b21GYWN0b3IoKSwgZG9jdW1lbnQucHJpbnRpbmcoKSB9OworfQorCiB2b2lkIFNjb3BlOjpldmFs
dWF0ZU1lZGlhUXVlcmllc0ZvclZpZXdwb3J0Q2hhbmdlKCkKIHsKICAgICBhdXRvIHZpZXdwb3J0
U3RhdGUgPSBtZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZUZvckRvY3VtZW50KG1fZG9jdW1lbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCmluZGV4IGQzNjE1YzU3ZjBmNS4uYWY4MGFkMWE1OGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkxheW91dFNpemUuaCIKLSNpbmNsdWRlICJMZWdhY3lNZWRpYVF1
ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZU9yZGluYWwuaCIKICNpbmNsdWRl
ICJUaW1lci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTE4OCw2ICsxODcsOSBAQCBwcml2YXRl
OgogCiAgICAgVHJlZVNjb3BlJiB0cmVlU2NvcGUoKTsKIAorICAgIHVzaW5nIE1lZGlhUXVlcnlW
aWV3cG9ydFN0YXRlID0gc3RkOjp0dXBsZTxJbnRTaXplLCBmbG9hdCwgYm9vbD47CisgICAgc3Rh
dGljIE1lZGlhUXVlcnlWaWV3cG9ydFN0YXRlIG1lZGlhUXVlcnlWaWV3cG9ydFN0YXRlRm9yRG9j
dW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKKwogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwogICAg
IFNoYWRvd1Jvb3QqIG1fc2hhZG93Um9vdCB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET00ubW0KaW5kZXggZTUxMzkzMDQ0NWE5Li5lMmYxZjkyN2Y3MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTAsOCArNTAsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9J
bWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5
Ym9hcmRFdmVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9y
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01lZGlhTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2Rl
RmlsdGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVSZW5kZXJTdHlsZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QYWdlLmg+CkBAIC03MDgsMTUgKzcwNiw3IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlN
YXRjaGVzRm9yT3JpZW50YXRpb246KGludClvcmllbnRhdGlvbgogCiAtIChCT09MKV9tZWRpYVF1
ZXJ5TWF0Y2hlcwogewotICAgIEhUTUxMaW5rRWxlbWVudCYgbGluayA9ICpzdGF0aWNfY2FzdDxI
VE1MTGlua0VsZW1lbnQqPihjb3JlKHNlbGYpKTsKLQotICAgIGF1dG8mIG1lZGlhID0gbGluay5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6bWVkaWFBdHRyKTsKLSAg
ICBpZiAobWVkaWEuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIERvY3Vt
ZW50JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKLSAgICBhdXRvIG1lZGlhUXVlcnlTZXQg
PSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRv
Y3VtZW50KSk7Ci0gICAgcmV0dXJuIExlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVu
Il9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZp
ZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsK
KyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTExpbmtFbGVtZW50Kj4oY29yZShzZWxmKSkubWVkaWFB
dHRyaWJ1dGVNYXRjaGVzKCk7CiB9CiAKIEBlbmQK
</data>
<flag name="commit-queue"
          id="492256"
          type_id="3"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463834</attachid>
            <date>2022-12-01 09:30:20 -0800</date>
            <delta_ts>2022-12-01 09:49:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-248594-20221201193018.patch</filename>
            <type>text/plain</type>
            <size>135594</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSBjZDFiNGYyOTdjM2U5N2FkZDFhZjFhNWZmMDVhMTM3MmExZDYxMDAxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEgRGVjIDIwMjIgMTM6MjU6MjIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBbTVE0XSBS
ZXBsYWNlIHRoZSBsYXN0IHVzZXMgb2YgbGVnYWN5IG1lZGlhIHF1ZXJ5IGNvZGUKIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDg1OTQgcmRhcjovLzEwMjg1MzcxMQoK
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIKClVzZSB0aGUgbW9kZXJuIHBhcnNlciBhbmQgZXZhbHVh
dG9yLgoKKiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6
CihXZWJDb3JlOjptZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZUZvckRvY3VtZW50KTogRGVsZXRlZC4K
KiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oOgoqIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwOgooV2ViQ29yZTo6
U2l6ZXNBdHRyaWJ1dGVQYXJzZXI6Om1lZGlhQ29uZGl0aW9uTWF0Y2hlcyk6CihXZWJDb3JlOjpT
aXplc0F0dHJpYnV0ZVBhcnNlcjo6cGFyc2UpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKFdlYkNvcmU6Ok1ROjp2aWV3cG9ydFN0YXRlRm9yRG9j
dW1lbnQpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6
CiogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKFdl
YkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJp
YnV0ZSk6CiogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVy
LmNwcDoKKFdlYkNvcmU6OkhUTUxSZXNvdXJjZVByZWxvYWRlcjo6cHJlbG9hZCk6CiogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgooV2ViQ29yZTo6TGlua0xvYWRlcjo6cHJl
bG9hZElmTmVlZGVkKToKKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcDoKKFdlYkNv
cmU6OlN0eWxlOjpSdWxlU2V0OjpldmFsdWF0ZUR5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMpOgoqIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwOgoqIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuY3BwOgooV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpldmFsdWF0ZU1lZGlh
UXVlcmllc0ZvclZpZXdwb3J0Q2hhbmdlKToKKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNj
b3BlLmg6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbToKKC1bRE9NSFRNTExp
bmtFbGVtZW50IF9tZWRpYVF1ZXJ5TWF0Y2hlc10pOgotLS0KIFNvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0ICAgICAgICAgICAgICAgICAgICB8ICAgNSAtCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgMzQgKy0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NN
ZWRpYVJ1bGUuaCAgICAgICAgICAgICB8ICAgMSAtCiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5
TWVkaWFRdWVyeS5jcHAgICAgICAgfCAgOTkgLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lN
ZWRpYVF1ZXJ5LmggICAgICAgICB8ICA2NiAtLQogLi4uL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlh
UXVlcnlFdmFsdWF0b3IuY3BwIHwgOTYzIC0tLS0tLS0tLS0tLS0tLS0tLQogLi4uL1dlYkNvcmUv
Y3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaCAgIHwgIDg2IC0tCiBTb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwICAgICAgfCAgNDYgLQogU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhRmVhdHVyZU5hbWVzLmggICAgICAgIHwgMTA2IC0tCiBTb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFMaXN0LmNwcCAgICAgICAgICAgICAgfCAxMzkgLS0tCiBTb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFMaXN0LmggICAgICAgICAgICAgICAgfCAgMzYgLQogU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlFeHByZXNzaW9uLmNwcCAgIHwgMzEwIC0tLS0tLQogU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmggICAgIHwgIDg3IC0tCiAuLi4vY3NzL3BhcnNlci9M
ZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmNwcCAgICAgfCAzMjkgLS0tLS0tCiAuLi4vY3NzL3BhcnNl
ci9MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmggICAgICAgfCAxMzkgLS0tCiAuLi4vY3NzL3BhcnNl
ci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmggICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5oICAgICAgICAgfCAgIDIgKy0KIC4uLi9odG1sL3BhcnNlci9I
VE1MUHJlbG9hZFNjYW5uZXIuY3BwICAgICAgICB8ICAgOCArLQogLi4uL2h0bWwvcGFyc2VyL0hU
TUxSZXNvdXJjZVByZWxvYWRlci5jcHAgICAgIHwgICA5ICstCiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5jcHAgICAgICAgICAgfCAgIDggKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJvY2Vzc1dhcm1pbmcuY3BwICAgICAgICB8ICAgNCArLQogLi4uL1dlYkNvcmUvc3R5bGUvQ29u
dGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwIHwgICAxIC0KIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1J1
bGVTZXQuY3BwICAgICAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVSZXNvbHZlci5jcHAgICAgICAgIHwgICAxIC0KIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2NvcGUuY3BwICAgICAgICAgICB8ICAgNiArCiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNj
b3BlLmggICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T00ubW0gICAgICAgICAgICB8ICAxMiArLQogMjggZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9u
cygrKSwgMjQ3MyBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29y
ZS9jc3MvTGVnYWN5TWVkaWFRdWVyeS5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
Q29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCiBkZWxldGUgbW9kZSAxMDA2
NDQgU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaAogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKIGRl
bGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuaAog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lv
bi5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4
cHJlc3Npb24uaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
TGVnYWN5TWVkaWFRdWVyeVBhcnNlci5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0xlZ2FjeU1lZGlhUXVlcnlQYXJzZXIuaAoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggOGI5MjZiMDMwYzYyLi5hM2Y5ZWVlMmM4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04MjMsMTEg
KzgyMyw3IEBAIGNzcy9EZXByZWNhdGVkQ1NTT01WYWx1ZUxpc3QuY3BwCiBjc3MvRm9udEZhY2Uu
Y3BwCiBjc3MvRm9udEZhY2VTZXQuY3BwCiBjc3MvRm9udFZhcmlhbnRCdWlsZGVyLmNwcAotY3Nz
L0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCi1jc3MvTGVnYWN5TWVkaWFRdWVyeS5jcHAK
LWNzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKIGNzcy9NZWRpYUxpc3QuY3BwCi1jc3MvTWVkaWFR
dWVyeUV4cHJlc3Npb24uY3BwCiBjc3MvTWVkaWFRdWVyeUxpc3QuY3BwCiBjc3MvTWVkaWFRdWVy
eUxpc3RFdmVudC5jcHAKIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKQEAgLTg3Myw3ICs4Njks
NiBAQCBjc3MvcGFyc2VyL0NTU1N1cHBvcnRzUGFyc2VyLmNwcAogY3NzL3BhcnNlci9DU1NUb2tl
bml6ZXIuY3BwCiBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAogY3NzL3Bh
cnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAKLWNzcy9wYXJzZXIvTGVnYWN5TWVkaWFRdWVyeVBh
cnNlci5jcHAKIGNzcy9wYXJzZXIvTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5jcHAKIGNzcy9wYXJz
ZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwCiBjc3MvcGFyc2VyL1NpemVzQ2FsY1BhcnNlci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA1YmRlZTdiOTVjYmYuLjZkMDc3N2IzMjRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU5OCw5ICsxNTk4LDYg
QEAKIAkJNEQ3M0Y5NDYyMThCQzVGQTAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEQ3
M0Y5NDQyMThCQzVGQTAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oICov
OyB9OwogCQk0RDczRjk0RTIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEQ3M0Y5NEMyMThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0REI3MTMwRDIxNkVDQjREMDA5NkE0REQgLyogTWVkaWFSZWNvcmRlckVycm9yRXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDREQjcxMzBDMjE2
RUMyQkQwMDk2QTRERCAvKiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oICovOyB9OwotCQk0RTE5
NTkyMjBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTIwMEEzOURBQkEwMDIyMEZF
NSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTRFMTk1OTJBMEEzOURBQ0MwMDIyMEZFNSAvKiBMZWdhY3lNZWRp
YVF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RTE5NTkyNDBBMzlEQUNDMDAyMjBGRTUgLyogTGVnYWN5TWVkaWFRdWVyeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTRFMTk1OTJDMEEzOURBQ0Mw
MDIyMEZFNSAvKiBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RTE5NTkyNjBBMzlEQUNDMDAyMjBGRTUgLyog
TGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTRGMTUzNERFMTFCNTMyRUMwMDIxRkQ4NiAvKiBFZGl0aW5n
QmVoYXZpb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGMTUzNEREMTFCNTMyRUMwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjE1MzRFMDExQjUzMzAy
MDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRp
bmdCZWhhdmlvclR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0RkE2NUE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkE2NUE2
QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmggKi87IH07CkBAIC0yNjE1
LDcgKzI2MTIsNiBAQAogCQk3QzQ1QzlENjFFM0ZDQkY4MDBBQUI1NTggLyogSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M0NUM5QzcxRTNFOEFGRjAwQUFCNTU4IC8qIEpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzQ4QTZE
MDE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDhBNkNFMTkxQzlENjUwMDAyNjY3NCAv
KiBXZWJLaXROYW1lc3BhY2UuY3BwICovOyB9OwogCQk3QzQ4QTZEMTE5MUM5RDY1MDAwMjY2NzQg
LyogV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzQ4QTZDRjE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmgg
Ki87IH07Ci0JCThDNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ludGVybmFsUmVhZGFibGVT
dHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhD
NEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ludGVybmFsUmVhZGFibGVTdHJlYW0uaCAqLzsg
fTsKIAkJN0M0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEM5NkQ5MUFENDQ4
MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmggKi87IH07CiAJCTdDNEM5NkREMUFENDQ4
MzUwMDM2NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0
YWJsZVN0cmVhbS5oICovOyB9OwogCQk3QzRDOTZERjFBRDQ0ODM1MDAzNjM1NzIgLyogSlNSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDNEM5NkRCMUFENDQ4MzUwMDM2MzU3MiAvKiBKU1JlYWRhYmxlU3RyZWFt
QllPQlJlYWRlci5oICovOyB9OwpAQCAtMjY5OCw3ICsyNjk0LDYgQEAKIAkJN0M5REJGRUUxQTlD
NDlCMTAwMEQ2QjI1IC8qIEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlEQkZFQzFBOUM0OUIxMDAwRDZCMjUg
LyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuaCAqLzsgfTsKIAkJN0NBQzZBRTkyNDdGMDgyRjAw
RTYxRDU5IC8qIENvbG9yTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0FDNkFFODI0N0YwODIwMDBFNjFENTkgLyogQ29sb3JNYXRyaXguaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0FDNkFG
MDI0N0Y0MTEwMDBFNjFENTkgLyogQ29sb3JDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0FDNkFFQzI0N0YxQzUxMDBFNjFENTkgLyog
Q29sb3JDb21wb25lbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJN0NCNUNBNDAxRTUyNUM3MzAwRkFFRjEzIC8qIE1lZGlhUXVlcnlFeHByZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0I1
Q0EzRTFFNTI1QzZDMDBGQUVGMTMgLyogTWVkaWFRdWVyeUV4cHJlc3Npb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0JCQkNDNzFGNTYwNTgx
MDA1RUZBQUMgLyogRE9NTWF0cml4MkRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0JCQkNDNjFGNTYwNTY4MDA1RUZBQUMgLyogRE9NTWF0cml4
MkRJbml0LmggKi87IH07CiAJCTdDQkJCQ0NBMUY1NjE3QzUwMDVFRkFBQyAvKiBKU0RPTU1hdHJp
eDJESW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NCQkJDQzkxRjU2MTdDMDAwNUVGQUFDIC8qIEpTRE9NTWF0cml4MkRJbml0LmggKi87IH07CiAJ
CTdDQkQxMjlFMUY5OEI5MEUwMDEyN0QyOSAvKiBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQkQxMjlBMUY5
OEI1RkUwMDEyN0QyOSAvKiBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjk5MCw2ICsyOTg1LDcgQEAK
IAkJOEFDRTg4RDcyODVDOEZCODAwODJDMEZDIC8qIFdlYkdMRHJhd0luc3RhbmNlZEJhc2VWZXJ0
ZXhCYXNlSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDhBQ0U4OEQ1Mjg1QzhGNjYwMDgyQzBGQyAvKiBXZWJHTERyYXdJbnN0YW5jZWRCYXNl
VmVydGV4QmFzZUluc3RhbmNlLmggKi87IH07CiAJCThBRjRFNTU2MTFEQzVBMzYwMDBFRDNERSAv
KiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDhBRjRFNTUzMTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5h
dmlnYXRpb24uaCAqLzsgfTsKIAkJOEFGNEU1NUMxMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1h
bmNlVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4QUY0RTU1OTExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaCAqLzsgfTsK
KwkJOEM0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTSW50ZXJuYWxSZWFkYWJsZVN0cmVhbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEM0Qzk2RDkx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTSW50ZXJuYWxSZWFkYWJsZVN0cmVhbS5oICovOyB9OwogCQk4
RTRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RTRDOTZEOTFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaFJlc3BvbnNlLmggKi87IH07CiAJCThFQzZDOTYzMjAxQTI1MTYwMEZCRkE1
MyAvKiBHYXBMZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDhFQzZDOTYxMjAxQTI1MDEwMEZCRkE1MyAvKiBHYXBMZW5ndGguaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MDAxNzc0MTEyRTAzNDc4
MDA2NDg0NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTAwMTc3M0UxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCAqLzsgfTsKQEAgLTMyMzksNyArMzIzNSw2IEBACiAJCTk0
Nzk0OTQwMUUwNDYzQ0UwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ3OTQ5MjYx
RTAzMTMyMDAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTQ3OTQ5NDExRTA0
NjNENDAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTUNvdW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0Nzk0OTJBMUUwMzJFREIwMDAxOEQ4NSAv
KiBEZXByZWNhdGVkQ1NTT01Db3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTQ5M0I2QkYxRDc0QjQxMjAwODhFNzgwIC8qIE1lZGlhUXVl
cnlCbG9ja1dhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk0OTNCNkI3MUQ3NEIzOTUwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVy
LmggKi87IH07Ci0JCTk0OTNCNkMxMUQ3NEI0MTIwMDg4RTc4MCAvKiBMZWdhY3lNZWRpYVF1ZXJ5
UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NDkzQjZCOTFENzRCMzk1MDA4OEU3ODAgLyogTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5oICovOyB9
OwogCQk5NDlDNzcwMTFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzZGRjFENkUx
RDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggKi87IH07CiAJCTk0OUM3NzA1MUQ2
RTM5RUEwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzAzMUQ2RTM5MzUwMEMwREU0
RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCAqLzsgfTsKIAkJOTQ5Qzc3MDkxRDZFNDk4
NzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc3MDcxRDZFNDhFRDAwQzBERTRGIC8q
IENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oICovOyB9OwpAQCAtMTAwMDUsMTIgKzEwMDAwLDYg
QEAKIAkJNERCNzEzMEEyMTZFQzJCQzAwOTZBNEREIC8qIE1lZGlhUmVjb3JkZXJFcnJvckV2ZW50
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTREQjcxMzBDMjE2RUMyQkQwMDk2QTRERCAv
KiBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZWRpYVJlY29yZGVyRXJyb3JFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0REI3MTMwRTIxNkVFQkFFMDA5NkE0REQgLyogTWVkaWFSZWNvcmRlckVycm9yRXZlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFSZWNvcmRlckVy
cm9yRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0RTE5NTkxRjBBMzlE
QUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhRmVhdHVyZU5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNEUxOTU5MjAwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5h
bWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUZlYXR1cmVOYW1l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0RTE5NTkyMzBBMzlEQUNDMDAyMjBG
RTUgLyogTGVnYWN5TWVkaWFRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTGVnYWN5TWVkaWFRdWVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTRFMTk1OTI0MEEzOURBQ0MwMDIyMEZFNSAvKiBMZWdhY3lNZWRpYVF1ZXJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lNZWRpYVF1ZXJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRFMTk1OTI1MEEzOURBQ0MwMDIyMEZFNSAvKiBMZWdhY3lN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNEUxOTU5MjYwQTM5REFDQzAwMjIwRkU1IC8qIExlZ2FjeU1lZGlhUXVlcnlFdmFs
dWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeU1lZGlhUXVl
cnlFdmFsdWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYxNTM0REQxMUI1
MzJFQzAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFZGl0aW5nQmVoYXZpb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JlaGF2aW9yVHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RkE2NUE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0
aE1MU3BhY2VFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1hdGhNTFNwYWNlRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MjI2Miw3ICsxMjI1MSw2IEBACiAJCTdDNDhBNkQyMTkxQzlEOEUwMDAyNjY3NCAvKiBXZWJLaXRO
YW1lc3BhY2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdE5hbWVzcGFjZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFt
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJl
YW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzRDOTZEODFBRDQ0ODM1MDAz
NjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1dyaXRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJOEM0Qzk2RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTSW50ZXJuYWxSZWFkYWJsZVN0cmVh
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsUmVhZGFibGVT
dHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0Qzk2RDkxQUQ0NDgzNTAw
MzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNSZWFkYWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dyaXRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDNEM5NkRBMUFENDQ4MzUwMDM2MzU3MiAvKiBKU1JlYWRhYmxlU3Ry
ZWFtQllPQlJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMjQ0NSw4ICsxMjQzMyw2IEBACiAJCTdDQTU1RkNBMjUyNDE3QTcwMDMxRjQ1MiAvKiBF
bGVtZW50Q29udGVudEVkaXRhYmxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbGVtZW50Q29udGVudEVkaXRhYmxlLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NBQzZBRTgyNDdGMDgyMDAwRTYxRDU5
IC8qIENvbG9yTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yTWF0cml4Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQUM2QUVDMjQ3RjFDNTEwMEU2MUQ1OSAvKiBDb2xvckNv
bXBvbmVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDb21wb25l
bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDQjVDQTNEMUU1MjVDNkMwMEZB
RUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTdDQjVDQTNFMUU1MjVDNkMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVz
c2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVF1ZXJ5RXhwcmVz
c2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0JBNUJBNjFGMEI0QkRFMDAz
NEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01D
b252ZXJ0V2ViR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0JCQkNDNDFG
NTYwNTY3MDA1RUZBQUMgLyogRE9NTWF0cml4MkRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBET01NYXRyaXgyREluaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
Q0JCQkNDNjFGNTYwNTY4MDA1RUZBQUMgLyogRE9NTWF0cml4MkRJbml0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1hdHJpeDJESW5pdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTMwOTksNiArMTMwODUsNyBAQAogCQk4QUY0RTU1NDExREM1QTM2MDAw
RUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4QUY0RTU1OTExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VUaW1pbmcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFGNEU1NUExMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1h
bmNlVGltaW5nLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQZXJmb3JtYW5jZVRpbWluZy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThDNEM5NkQ5MUFENDQ4MzUwMDM2NUE1
MCAvKiBKU0ludGVybmFsUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNJbnRlcm5hbFJlYWRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCThFMzNDRDkzMjAxQTI5QzEwMEUzOTA5MyAvKiBHYXBMZW5ndGguY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2FwTGVuZ3RoLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hS
ZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNo
UmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RTRDOTZEOTFBRDQ0
ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRmV0Y2hSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTM1NjcsOCArMTM1NTQsNiBAQAogCQk5NDc5NDkzQjFFMDQ1Q0UxMDAwMThEODUgLyogRGVw
cmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5NDkzQjZCNjFENzRCMzk1MDA4OEU3ODAgLyogTWVkaWFRdWVy
eUJsb2NrV2F0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBN
ZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcDsgcGF0aCA9IHBhcnNlci9NZWRpYVF1ZXJ5QmxvY2tX
YXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ5M0I2QjcxRDc0QjM5
NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oOyBwYXRoID0gcGFyc2VyL01l
ZGlhUXVlcnlCbG9ja1dhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTQ5
M0I2QjgxRDc0QjM5NTAwODhFNzgwIC8qIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5j
cHA7IHBhdGggPSBwYXJzZXIvTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTk0OTNCNkI5MUQ3NEIzOTUwMDg4RTc4MCAvKiBMZWdhY3lNZWRp
YVF1ZXJ5UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExlZ2FjeU1l
ZGlhUXVlcnlQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0OUM3NkZFMUQ2RTFEOEMwMEMwREU0RiAv
KiBDU1NQYXJzZXJGYXN0UGF0aHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJGYXN0
UGF0aHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDlDNzZGRjFENkUxRDhD
MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IENTU1BhcnNlckZhc3RQYXRocy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlckZh
c3RQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDlDNzcwMjFENkUzOTM1
MDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHA7IHBhdGgg
PSBwYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI3MDcwLDggKzI3MDU1LDYgQEAKIAkJCQk5NDZEMzczODFENkNERjk4MDA3
NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCAqLywKIAkJCQk5NDQ0Q0JEODFEODg0
ODJBMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVQYXJzZXIuY3BwICovLAogCQkJCTk0NDRDQkQ3MUQ4
ODQ4MkEwMDczQTA3NCAvKiBDU1NWYXJpYWJsZVBhcnNlci5oICovLAotCQkJCTk0OTNCNkI4MUQ3
NEIzOTUwMDg4RTc4MCAvKiBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmNwcCAqLywKLQkJCQk5NDkz
QjZCOTFENzRCMzk1MDA4OEU3ODAgLyogTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5oICovLAogCQkJ
CTk0OTNCNkI2MUQ3NEIzOTUwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcCAq
LywKIAkJCQk5NDkzQjZCNzFENzRCMzk1MDA4OEU3ODAgLyogTWVkaWFRdWVyeUJsb2NrV2F0Y2hl
ci5oICovLAogCQkJCTk0NDRDQkQyMUQ4NjBDNzQwMDczQTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBh
cnNlci5jcHAgKi8sCkBAIC0zMzA3MywyMyArMzMwNTYsMTUgQEAKIAkJCQlDRDRFMEFGQTExRjdC
QzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8sCiAJCQkJOTNDQTRDOTkwOURGOTNGQTAw
REY4Njc3IC8qIGh0bWwuY3NzICovLAogCQkJCUU1NENBNkREMjU1REUyRDUwMEY5MDFBMyAvKiBs
ZWdhY3lGb3JtQ29udHJvbHNJT1MuY3NzICovLAotCQkJCTRFMTk1OTIzMEEzOURBQ0MwMDIyMEZF
NSAvKiBMZWdhY3lNZWRpYVF1ZXJ5LmNwcCAqLywKLQkJCQk0RTE5NTkyNDBBMzlEQUNDMDAyMjBG
RTUgLyogTGVnYWN5TWVkaWFRdWVyeS5oICovLAotCQkJCTRFMTk1OTI1MEEzOURBQ0MwMDIyMEZF
NSAvKiBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAqLywKLQkJCQk0RTE5NTkyNjBBMzlE
QUNDMDAyMjBGRTUgLyogTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oICovLAogCQkJCTlCRTU0
NjhFMjg4MEQ3MjIwMEY2MzVBNCAvKiBMaW5rU3R5bGUuaWRsICovLAogCQkJCTkzQ0E0QzlBMDlE
RjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxlLWFycmF5cy5wbCAqLywKIAkJCQk0M0I4NUVE
MDE4Q0JFQUNFMDBFMzFBRjQgLyogbWFrZVNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmls
aXR5RWxlbWVudE1hcC5weSAqLywKIAkJCQkyNkFBMEY5OTE4RDI5NzNEMDA0MTkzODEgLyogbWFr
ZVNlbGVjdG9yUHNldWRvRWxlbWVudHNNYXAucHkgKi8sCiAJCQkJRkE2NTRBNjMxMTA4QUJCNzAw
MjYxNUUwIC8qIG1hdGhtbC5jc3MgKi8sCiAJCQkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8q
IG1lZGlhQ29udHJvbHMuY3NzICovLAotCQkJCTRFMTk1OTFGMEEzOURBQkEwMDIyMEZFNSAvKiBN
ZWRpYUZlYXR1cmVOYW1lcy5jcHAgKi8sCi0JCQkJNEUxOTU5MjAwQTM5REFCQTAwMjIwRkU1IC8q
IE1lZGlhRmVhdHVyZU5hbWVzLmggKi8sCiAJCQkJQThFQTgwMDEwQTE5NTE2RTAwQThFRjVGIC8q
IE1lZGlhTGlzdC5jcHAgKi8sCiAJCQkJQThFQTgwMDYwQTE5NTE2RTAwQThFRjVGIC8qIE1lZGlh
TGlzdC5oICovLAogCQkJCTg1QzU2QzVCMEFBODdBRkQwMEQ5NTc1NSAvKiBNZWRpYUxpc3QuaWRs
ICovLAotCQkJCTdDQjVDQTNEMUU1MjVDNkMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lv
bi5jcHAgKi8sCi0JCQkJN0NCNUNBM0UxRTUyNUM2QzAwRkFFRjEzIC8qIE1lZGlhUXVlcnlFeHBy
ZXNzaW9uLmggKi8sCiAJCQkJRDNBOTRBMzExMjJEQUJBQzAwQTM3QkJDIC8qIE1lZGlhUXVlcnlM
aXN0LmNwcCAqLywKIAkJCQlEM0E5NEEzMjEyMkRBQkFDMDBBMzdCQkMgLyogTWVkaWFRdWVyeUxp
c3QuaCAqLywKIAkJCQlEM0E5NEEzMzEyMkRBQkFDMDBBMzdCQkMgLyogTWVkaWFRdWVyeUxpc3Qu
aWRsICovLApAQCAtMzczODYsOSArMzczNjEsNiBAQAogCQkJCUJDRTc4OTE2MTEyMEQ2MDgwMDYw
RUNFNSAvKiBMZWdhY3lJbmxpbmVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4
NUEwOTdEOTMwMjAwOTRDOUU0IC8qIExlZ2FjeUlubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0RTk0RDYxMjJGRjE1OEEwMEREMTkxRiAvKiBMZWdhY3lMaW5lTGF5b3V0LmggaW4g
SGVhZGVycyAqLywKLQkJCQk0RTE5NTkyQTBBMzlEQUNDMDAyMjBGRTUgLyogTGVnYWN5TWVkaWFR
dWVyeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEUxOTU5MkMwQTM5REFDQzAwMjIwRkU1IC8qIExl
Z2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTk0OTNCNkMxMUQ3
NEI0MTIwMDg4RTc4MCAvKiBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNDRBNUY1OTFGRUQzOEYyMDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExODVCNDJBMUU4MjExQTEwMERDOTExOCAvKiBMZWdhY3lQ
cmV2aWV3TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTBEQkY0NzE4RjkyMzE3MDAwRDcw
QzYgLyogTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzUz
Miw3ICszNzUwNCw2IEBACiAJCQkJQ0QzRUVGNDIyNTc5QjQ0QTAwNjU2M0JCIC8qIE1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzQ4QUM5MjE0
OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0NDYxM0FEMENENjMzMTAwMEZBREE3NSAvKiBNZWRpYUVycm9y
LmggaW4gSGVhZGVycyAqLywKLQkJCQk0RTE5NTkyMjBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFG
ZWF0dXJlTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QTZEMUVDMTQ5MTEzNzcwMDA1MUQw
QyAvKiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzgyODk0
QjI1QzM2RkVEMDBBN0JBMDMgLyogTWVkaWFJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RG
NEI3MUExRTAxRDNEMDAwRTIzNUEyIC8qIE1lZGlhS2V5U2Vzc2lvblR5cGUuaWRsIGluIEhlYWRl
cnMgKi8sCkBAIC0zNzU2OCw3ICszNzUzOSw2IEBACiAJCQkJRTQ1NUE1ODIyOEZFOEQ4RDAwQjZF
QTc2IC8qIE1lZGlhUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0OTNCNkJGMUQ3NEI0MTIw
MDg4RTc4MCAvKiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NDU1QTU3MTI4RkQ3M0YzMDBCNkVBNzYgLyogTWVkaWFRdWVyeUV2YWx1YXRvci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJN0NCNUNBNDAxRTUyNUM3MzAwRkFFRjEzIC8qIE1lZGlhUXVlcnlFeHByZXNz
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDU1QTVCQTI5MDdBODlBMDBCNkVBNzYgLyogTWVk
aWFRdWVyeUZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0E5NEEzOTEyMkRBQkFDMDBB
MzdCQkMgLyogTWVkaWFRdWVyeUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NjUwRTdFMjM4
N0FEN0QwMDYyNjZFMiAvKiBNZWRpYVF1ZXJ5TGlzdEV2ZW50LmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaAppbmRleCAxYzFjZjM4YzE5ZmIuLmVhOGZkZDFlMjdkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaApAQCAtMjcsNyArMjcsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUxpc3Q7Ci1jbGFzcyBNZWRpYVF1ZXJ5U2V0OwogY2xh
c3MgU3R5bGVSdWxlTWVkaWE7CiAKIG5hbWVzcGFjZSBNUSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVn
YWN5TWVkaWFRdWVyeS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZGE5Zjhj
MDQyZi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1
ZXJ5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKiBDU1MgTWVkaWEg
UXVlcnkKLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgS2ltbW8gS2lubnVuZW4gPGtp
bW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJMZWdhY3lNZWRpYVF1ZXJ5LmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLS8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxpemUtYS1tZWRp
YS1xdWVyeQotU3RyaW5nIExlZ2FjeU1lZGlhUXVlcnk6OnNlcmlhbGl6ZSgpIGNvbnN0Ci17Ci0g
ICAgaWYgKG1faWdub3JlZCkgewotICAgICAgICAvLyBJZiBxdWVyeSBpcyBpbnZhbGlkLCBzZXJp
YWxpemVkIHRleHQgc2hvdWxkIHR1cm4gaW50byAibm90IGFsbCIuCi0gICAgICAgIHJldHVybiAi
bm90IGFsbCJfczsKLSAgICB9Ci0KLSAgICBib29sIHNob3VsZE9taXRNZWRpYVR5cGUgPSBmYWxz
ZTsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICBzd2l0Y2ggKG1fcmVzdHJpY3Rvcikg
ewotICAgIGNhc2UgTGVnYWN5TWVkaWFRdWVyeTo6T25seToKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZCgib25seSAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZWdhY3lNZWRpYVF1ZXJ5OjpO
b3Q6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIm5vdCAiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBMZWdhY3lNZWRpYVF1ZXJ5OjpOb25lOgotICAgICAgICBzaG91bGRPbWl0TWVkaWFUeXBl
ID0gIW1fZXhwcmVzc2lvbnMuaXNFbXB0eSgpICYmIG1fbWVkaWFUeXBlID09ICJhbGwiX3M7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBib29sIG5lZWRzQW5kID0gZmFsc2U7Ci0gICAgaWYg
KCFzaG91bGRPbWl0TWVkaWFUeXBlKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9tZWRpYVR5
cGUpOwotICAgICAgICBuZWVkc0FuZCA9IHRydWU7Ci0gICAgfQotICAgIGZvciAoYXV0byYgZXhw
cmVzc2lvbiA6IG1fZXhwcmVzc2lvbnMpIHsKLSAgICAgICAgaWYgKG5lZWRzQW5kKQotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiIGFuZCAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChleHBy
ZXNzaW9uLnNlcmlhbGl6ZSgpKTsKLSAgICAgICAgbmVlZHNBbmQgPSB0cnVlOwotICAgIH0KLSAg
ICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci19Ci0KLUxlZ2FjeU1lZGlhUXVlcnk6OkxlZ2Fj
eU1lZGlhUXVlcnkoUmVzdHJpY3RvciByZXN0cmljdG9yLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlw
ZSwgVmVjdG9yPE1lZGlhUXVlcnlFeHByZXNzaW9uPiYmIGV4cHJlc3Npb25zKQotICAgIDogbV9t
ZWRpYVR5cGUobWVkaWFUeXBlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCi0gICAgLCBtX2V4
cHJlc3Npb25zKFdURk1vdmUoZXhwcmVzc2lvbnMpKQotICAgICwgbV9yZXN0cmljdG9yKHJlc3Ry
aWN0b3IpCi17Ci19Ci0KLS8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNjb21wYXJl
LW1lZGlhLXF1ZXJpZXMKLWJvb2wgTGVnYWN5TWVkaWFRdWVyeTo6b3BlcmF0b3I9PShjb25zdCBM
ZWdhY3lNZWRpYVF1ZXJ5JiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gY3NzVGV4dCgpID09
IG90aGVyLmNzc1RleHQoKTsKLX0KLQotLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20v
I3NlcmlhbGl6ZS1hLWxpc3Qtb2YtbWVkaWEtcXVlcmllcwotY29uc3QgU3RyaW5nJiBMZWdhY3lN
ZWRpYVF1ZXJ5Ojpjc3NUZXh0KCkgY29uc3QKLXsKLSAgICBpZiAobV9zZXJpYWxpemF0aW9uQ2Fj
aGUuaXNOdWxsKCkpCi0gICAgICAgIG1fc2VyaWFsaXphdGlvbkNhY2hlID0gc2VyaWFsaXplKCk7
Ci0gICAgcmV0dXJuIG1fc2VyaWFsaXphdGlvbkNhY2hlOwotfQotCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBMZWdhY3lNZWRpYVF1ZXJ5JiBxdWVyeSkKLXsK
LSAgICB0cyA8PCBxdWVyeS5jc3NUZXh0KCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCi19IC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnku
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDg5MGM5MTA5M2YxOC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCww
IEBACi0vKgotICogQ1NTIE1lZGlhIFF1ZXJ5Ci0gKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEtp
bW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5va2lhLmNvbT4uCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIExlZ2FjeU1lZGlhUXVlcnkgewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGVudW0gUmVzdHJpY3Rv
ciB7IE9ubHksIE5vdCwgTm9uZSB9OwotCi0gICAgTGVnYWN5TWVkaWFRdWVyeShSZXN0cmljdG9y
LCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgVmVjdG9yPE1lZGlhUXVlcnlFeHByZXNzaW9uPiYm
KTsKLQotICAgIFJlc3RyaWN0b3IgcmVzdHJpY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJp
Y3RvcjsgfQotICAgIGNvbnN0IFZlY3RvcjxNZWRpYVF1ZXJ5RXhwcmVzc2lvbj4mIGV4cHJlc3Np
b25zKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uczsgfQotICAgIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVR5cGU7IH0KLSAgICBib29sIGlnbm9y
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZWQ7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgY3Nz
VGV4dCgpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlZ2FjeU1lZGlhUXVl
cnkmIG90aGVyKSBjb25zdDsKLQotICAgIHZvaWQgc2hyaW5rVG9GaXQoKSB7IG1fZXhwcmVzc2lv
bnMuc2hyaW5rVG9GaXQoKTsgfQotCi1wcml2YXRlOgotICAgIFN0cmluZyBzZXJpYWxpemUoKSBj
b25zdDsKLQotICAgIFN0cmluZyBtX21lZGlhVHlwZTsKLSAgICBtdXRhYmxlIFN0cmluZyBtX3Nl
cmlhbGl6YXRpb25DYWNoZTsKLSAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cHJlc3Npb24+IG1fZXhw
cmVzc2lvbnM7Ci0gICAgUmVzdHJpY3RvciBtX3Jlc3RyaWN0b3I7Ci0gICAgYm9vbCBtX2lnbm9y
ZWQgeyBmYWxzZSB9OwotfTsKLQotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYsIGNvbnN0IExlZ2FjeU1lZGlhUXVlcnkmKTsKLQotfSAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg0YjJlMWM5Y2JkLi4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsOTYzICswLDAgQEAKLS8qCi0gKiBDU1MgTWVkaWEgUXVlcnkgRXZhbHVh
dG9yCi0gKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtp
bm51bmVuQG5va2lhLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGVnYWN5TWVkaWFRdWVyeUV2YWx1
YXRvci5oIgotCi0jaW5jbHVkZSAiQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIgotI2luY2x1ZGUgIkNT
U1ByaW1pdGl2ZVZhbHVlLmgiCi0jaW5jbHVkZSAiQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5o
IgotI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNp
bmNsdWRlICJDaHJvbWVDbGllbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgotI2lu
Y2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiTGVnYWN5
TWVkaWFRdWVyeS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNZWRpYUZlYXR1
cmVOYW1lcy5oIgotI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgotI2luY2x1ZGUgIk1lZGlhUXVlcnlQ
YXJzZXJDb250ZXh0LmgiCi0jaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAi
UGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCi0jaW5jbHVkZSAiUXVpcmtzLmgi
Ci0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5j
bHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTdHlsZUZvbnRTaXplRnVuY3Rpb25zLmgiCi0j
aW5jbHVkZSAiVGhlbWUuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRTdHJlYW0uaD4KLQotI2lmIEVOQUJMRSgzRF9UUkFOU0ZPUk1TKQotI2luY2x1ZGUgIlJlbmRl
ckxheWVyQ29tcG9zaXRvci5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51
bSBNZWRpYUZlYXR1cmVQcmVmaXggeyBNaW5QcmVmaXgsIE1heFByZWZpeCwgTm9QcmVmaXggfTsK
LQotI2lmbmRlZiBMT0dfRElTQUJMRUQKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAgc3dpdGNoIChvcCkg
ewotICAgIGNhc2UgTWluUHJlZml4OiB0cyA8PCAibWluIjsgYnJlYWs7Ci0gICAgY2FzZSBNYXhQ
cmVmaXg6IHRzIDw8ICJtYXgiOyBicmVhazsKLSAgICBjYXNlIE5vUHJlZml4OiB0cyA8PCAiIjsg
YnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLSNlbmRpZgotCi10eXBlZGVmIGJvb2wg
KCpNZWRpYVF1ZXJ5RnVuY3Rpb24pKENTU1ZhbHVlKiwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYsIEZyYW1lJiwgTWVkaWFGZWF0dXJlUHJlZml4KTsKLXR5cGVkZWYgSGFzaE1hcDxB
dG9tU3RyaW5nSW1wbCosIE1lZGlhUXVlcnlGdW5jdGlvbj4gTWVkaWFRdWVyeUZ1bmN0aW9uTWFw
OwotCi1zdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlTZXR0aW5nc0RlcGVuZGVudChjb25zdCBB
dG9tU3RyaW5nJiBtZWRpYUZlYXR1cmUpCi17Ci0gICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBN
ZWRpYUZlYXR1cmVOYW1lczo6aW52ZXJ0ZWRDb2xvcnMKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJl
ID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhNb25vY2hyb21lCi0gICAgICAgIHx8IG1lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluTW9ub2Nocm9tZQotICAgICAgICB8fCBtZWRp
YUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1vbm9jaHJvbWUKLSAgICAgICAgfHwgbWVk
aWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwcmVmZXJzUmVkdWNlZE1vdGlvbgotICAg
ICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnByZWZlcnNDb250cmFz
dDsKLX0KLQotc3RhdGljIGJvb2wgaXNBcHBlYXJhbmNlRGVwZW5kZW50KGNvbnN0IEF0b21TdHJp
bmcmIG1lZGlhRmVhdHVyZSkKLXsKLSNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAgICBpZiAo
bWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwcmVmZXJzQ29sb3JTY2hlbWUpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBN
ZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc0RhcmtJbnRlcmZhY2U7Ci19Ci0KLU1lZGlhUXVlcnlW
aWV3cG9ydFN0YXRlIG1lZGlhUXVlcnlWaWV3cG9ydFN0YXRlRm9yRG9jdW1lbnQoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50KQotewotICAgIC8vIFRoZXNlIHRoaW5ncyBhZmZlY3QgZXZhbHVhdGlv
biBvZiB2aWV3cG9ydCBkZXBlbmRlbnQgbWVkaWEgcXVlcmllcy4KLSAgICByZXR1cm4geyBkb2N1
bWVudC52aWV3KCktPmxheW91dFNpemUoKSwgZG9jdW1lbnQuZnJhbWUoKS0+cGFnZVpvb21GYWN0
b3IoKSwgZG9jdW1lbnQucHJpbnRpbmcoKSB9OwotfQotCi1MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVh
dG9yOjpMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yKGJvb2wgbWVkaWFGZWF0dXJlUmVzdWx0KQot
ICAgIDogbV9mYWxsYmFja1Jlc3VsdChtZWRpYUZlYXR1cmVSZXN1bHQpCi17Ci19Ci0KLUxlZ2Fj
eU1lZGlhUXVlcnlFdmFsdWF0b3I6OkxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgU3Ry
aW5nJiBhY2NlcHRlZE1lZGlhVHlwZSwgYm9vbCBtZWRpYUZlYXR1cmVSZXN1bHQpCi0gICAgOiBt
X21lZGlhVHlwZShhY2NlcHRlZE1lZGlhVHlwZSkKLSAgICAsIG1fZmFsbGJhY2tSZXN1bHQobWVk
aWFGZWF0dXJlUmVzdWx0KQotewotfQotCi1MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpMZWdh
Y3lNZWRpYVF1ZXJ5RXZhbHVhdG9yKGNvbnN0IFN0cmluZyYgYWNjZXB0ZWRNZWRpYVR5cGUsIGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQotICAgIDog
bV9tZWRpYVR5cGUoYWNjZXB0ZWRNZWRpYVR5cGUpCi0gICAgLCBtX2RvY3VtZW50KGRvY3VtZW50
KQotICAgICwgbV9zdHlsZShzdHlsZSkKLXsKLX0KLQotYm9vbCBMZWdhY3lNZWRpYVF1ZXJ5RXZh
bHVhdG9yOjptZWRpYVR5cGVNYXRjaChjb25zdCBTdHJpbmcmIG1lZGlhVHlwZVRvTWF0Y2gpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1lZGlhVHlwZVRvTWF0Y2guaXNFbXB0eSgpCi0gICAgICAgIHx8
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1lZGlhVHlwZVRvTWF0Y2gsICJhbGwiX3Mp
Ci0gICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWVkaWFUeXBlVG9NYXRjaCwgbV9t
ZWRpYVR5cGUpOwotfQotCi1ib29sIExlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhVHlw
ZU1hdGNoU3BlY2lmaWMoQVNDSUlMaXRlcmFsIG1lZGlhVHlwZVRvTWF0Y2gpIGNvbnN0Ci17Ci0g
ICAgLy8gTGlrZSBtZWRpYVR5cGVNYXRjaCwgYnV0IHdpdGhvdXQgdGhlIHNwZWNpYWwgY2FzZXMg
Zm9yICIiIGFuZCAiYWxsIi4KLSAgICBBU1NFUlQoIW1lZGlhVHlwZVRvTWF0Y2guaXNOdWxsKCkp
OwotICAgIEFTU0VSVChtZWRpYVR5cGVUb01hdGNoLmNoYXJhY3RlckF0KDApICE9ICdcMCcpOwot
ICAgIEFTU0VSVCghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWVkaWFUeXBlVG9NYXRj
aCwgImFsbCJfcykpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fbWVkaWFU
eXBlLCBtZWRpYVR5cGVUb01hdGNoKTsKLX0KLQotc3RhdGljIGJvb2wgYXBwbHlSZXN0cmljdG9y
KExlZ2FjeU1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgciwgYm9vbCB2YWx1ZSkKLXsKLSAgICByZXR1
cm4gciA9PSBMZWdhY3lNZWRpYVF1ZXJ5OjpOb3QgPyAhdmFsdWUgOiB2YWx1ZTsKLX0KLQotYm9v
bCBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5U2V0
JiBxdWVyeVNldCkgY29uc3QKLXsKLSAgICBMT0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVzLCBz
dHJlYW0gPDwgIkxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlIG9uICIgPDwgKG1f
ZG9jdW1lbnQgPyBtX2RvY3VtZW50LT51cmwoKS5zdHJpbmcoKSA6IGVtcHR5U3RyaW5nKCkpKTsK
LQotICAgIGF1dG8mIHF1ZXJpZXMgPSBxdWVyeVNldC5xdWVyeVZlY3RvcigpOwotICAgIGlmICgh
cXVlcmllcy5zaXplKCkpIHsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKE1lZGlhUXVlcmllcywg
c3RyZWFtIDw8ICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZSAiIDw8IHF1ZXJ5
U2V0IDw8ICIgcmV0dXJuaW5nIHRydWUiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7IC8vIEVtcHR5
IHF1ZXJ5IGxpc3QgZXZhbHVhdGVzIHRvIHRydWUuCi0gICAgfQotCi0gICAgLy8gSXRlcmF0ZSBv
dmVyIHF1ZXJpZXMsIHN0b3AgaWYgYW55IG9mIHRoZW0gZXZhbCB0byB0cnVlIChPUiBzZW1hbnRp
Y3MpLgotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBxdWVyaWVzLnNpemUoKSAmJiAhcmVzdWx0OyArK2kpIHsKLSAgICAgICAgYXV0byYgcXVlcnkg
PSBxdWVyaWVzW2ldOwotCi0gICAgICAgIGlmIChxdWVyeS5pZ25vcmVkKCkgfHwgKCFxdWVyeS5l
eHByZXNzaW9ucygpLnNpemUoKSAmJiBxdWVyeS5tZWRpYVR5cGUoKS5pc0VtcHR5KCkpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKG1lZGlhVHlwZU1hdGNoKHF1ZXJ5Lm1l
ZGlhVHlwZSgpKSkgewotICAgICAgICAgICAgYXV0byYgZXhwcmVzc2lvbnMgPSBxdWVyeS5leHBy
ZXNzaW9ucygpOwotCi0gICAgICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggZXhwcmVzc2lvbnMs
IHN0b3AgaWYgYW55IG9mIHRoZW0gZXZhbCB0byBmYWxzZSAoQU5EIHNlbWFudGljcykuCi0gICAg
ICAgICAgICBzaXplX3QgaiA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgaiA8IGV4cHJlc3Npb25z
LnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBleHByZXNzaW9uUmVzdWx0ID0g
ZXZhbHVhdGUoZXhwcmVzc2lvbnNbal0pOwotICAgICAgICAgICAgICAgIGlmICghZXhwcmVzc2lv
blJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAvLyBBc3N1bWUgdHJ1ZSBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwg
b3RoZXJ3aXNlIGFzc3VtZSBmYWxzZS4KLSAgICAgICAgICAgIHJlc3VsdCA9IGFwcGx5UmVzdHJp
Y3RvcihxdWVyeS5yZXN0cmljdG9yKCksIGV4cHJlc3Npb25zLnNpemUoKSA9PSBqKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBhcHBseVJlc3RyaWN0b3IocXVlcnkucmVz
dHJpY3RvcigpLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgTE9HX1dJVEhfU1RSRUFNKE1lZGlhUXVl
cmllcywgc3RyZWFtIDw8ICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZSAiIDw8
IHF1ZXJ5U2V0IDw8ICIgcmV0dXJuaW5nICIgPDwgcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBib29sIGNvbXBhcmVWYWx1
ZShUIGEsIFUgYiwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQotewotICAgIHN3aXRjaCAob3ApIHsK
LSAgICBjYXNlIE1pblByZWZpeDoKLSAgICAgICAgcmV0dXJuIGEgPj0gYjsKLSAgICBjYXNlIE1h
eFByZWZpeDoKLSAgICAgICAgcmV0dXJuIGEgPD0gYjsKLSAgICBjYXNlIE5vUHJlZml4OgotICAg
ICAgICByZXR1cm4gYSA9PSBiOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNpZiAh
TE9HX0RJU0FCTEVECi0KLXN0YXRpYyBTdHJpbmcgYXNwZWN0UmF0aW9WYWx1ZUFzU3RyaW5nKENT
U1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAoIWlzPENTU0FzcGVjdFJhdGlvVmFsdWU+KHZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBhdXRvJiBhc3BlY3RSYXRp
byA9IGRvd25jYXN0PENTU0FzcGVjdFJhdGlvVmFsdWU+KCp2YWx1ZSk7Ci0gICAgcmV0dXJuIG1h
a2VTdHJpbmcoYXNwZWN0UmF0aW8ubnVtZXJhdG9yVmFsdWUoKSwgJy8nLCBhc3BlY3RSYXRpby5k
ZW5vbWluYXRvclZhbHVlKCkpOwotfQotCi0jZW5kaWYKLQotc3RhdGljIGJvb2wgY29tcGFyZUFz
cGVjdFJhdGlvVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIE1l
ZGlhRmVhdHVyZVByZWZpeCBvcCkKLXsKLSAgICBpZiAoIWlzPENTU0FzcGVjdFJhdGlvVmFsdWU+
KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIGFzcGVjdFJhdGlvID0g
ZG93bmNhc3Q8Q1NTQXNwZWN0UmF0aW9WYWx1ZT4oKnZhbHVlKTsKLSAgICByZXR1cm4gY29tcGFy
ZVZhbHVlKHdpZHRoICogYXNwZWN0UmF0aW8uZGVub21pbmF0b3JWYWx1ZSgpLCBoZWlnaHQgKiBh
c3BlY3RSYXRpby5udW1lcmF0b3JWYWx1ZSgpLCBvcCk7Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gZG91YmxlVmFsdWUoQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICghaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSB8fCAhZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp2YWx1ZSkuaXNOdW1iZXJPckludGVnZXIoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZG91Ymxl
VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwotfQotCi1zdGF0aWMgYm9vbCB6ZXJvRXZh
bHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAgYXV0
byBudW1lcmljVmFsdWUgPSBkb3VibGVWYWx1ZSh2YWx1ZSk7Ci0gICAgcmV0dXJuIG51bWVyaWNW
YWx1ZSAmJiBjb21wYXJlVmFsdWUoMCwgbnVtZXJpY1ZhbHVlLnZhbHVlKCksIG9wKTsKLX0KLQot
c3RhdGljIGJvb2wgb25lRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBNZWRpYUZlYXR1cmVQcmVm
aXggb3ApCi17Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgYXV0
byBudW1lcmljVmFsdWUgPSBkb3VibGVWYWx1ZSh2YWx1ZSk7Ci0gICAgcmV0dXJuIG51bWVyaWNW
YWx1ZSAmJiBjb21wYXJlVmFsdWUoMSwgbnVtZXJpY1ZhbHVlLnZhbHVlKCksIG9wKTsKLX0KLQot
c3RhdGljIGJvb2wgY29sb3JFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCBvcCkK
LXsKLSAgICBpbnQgYml0c1BlckNvbXBvbmVudCA9IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KGZy
YW1lLm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgYXV0byBudW1lcmljVmFsdWUgPSBkb3VibGVW
YWx1ZSh2YWx1ZSk7Ci0gICAgaWYgKCFudW1lcmljVmFsdWUpCi0gICAgICAgIHJldHVybiBiaXRz
UGVyQ29tcG9uZW50OwotICAgIHJldHVybiBjb21wYXJlVmFsdWUoYml0c1BlckNvbXBvbmVudCwg
bnVtZXJpY1ZhbHVlLnZhbHVlKCksIG9wKTsKLX0KLQotc3RhdGljIGJvb2wgY29sb3JJbmRleEV2
YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYs
IEZyYW1lJiwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQotewotICAgIC8vIEFsd2F5cyByZXR1cm4g
ZmFsc2UgZm9yIGluZGV4ZWQgZGlzcGxheS4KLSAgICByZXR1cm4gemVyb0V2YWx1YXRlKHZhbHVl
LCBvcCk7Ci19Ci0KLXN0YXRpYyBib29sIGNvbG9yR2FtdXRFdmFsdWF0ZShDU1NWYWx1ZSogdmFs
dWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUsIE1lZGlh
RmVhdHVyZVByZWZpeCkKLXsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJ
RCgpKSB7Ci0gICAgY2FzZSBDU1NWYWx1ZVNSR0I6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGNhc2UgQ1NTVmFsdWVQMzoKLSAgICAgICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIGp1
c3QgYXNzdW1lIGFueSAiZXh0ZW5kZWQgY29sb3IiIGRpc3BsYXkgaXMgYXQgbGVhc3QgYXMgZ29v
ZCBhcyBQMy4KLSAgICAgICAgcmV0dXJuIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihmcmFt
ZS5tYWluRnJhbWUoKS52aWV3KCkpOwotICAgIGNhc2UgQ1NTVmFsdWVSZWMyMDIwOgotICAgICAg
ICAvLyBGSVhNRTogQXQgc29tZSBwb2ludCB3ZSBzaG91bGQgc3RhcnQgZGV0ZWN0aW5nIGRpc3Bs
YXlzIHRoYXQgc3VwcG9ydCBtb3JlIGNvbG9ycy4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsgLy8gQW55IHVua25vd24gdmFsdWUgc2hv
dWxkIG5vdCBiZSBjb25zaWRlcmVkIGEgbWF0Y2guCi0gICAgfQotfQotCi1zdGF0aWMgYm9vbCBt
b25vY2hyb21lRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVm
aXggb3ApCi17Ci0gICAgYm9vbCBpc01vbm9jaHJvbWU7Ci0KLSAgICBpZiAoZnJhbWUuc2V0dGlu
Z3MoKS5mb3JjZWREaXNwbGF5SXNNb25vY2hyb21lQWNjZXNzaWJpbGl0eVZhbHVlKCkgPT0gRm9y
Y2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPbikKLSAgICAgICAgaXNNb25vY2hyb21lID0gdHJ1ZTsK
LSAgICBlbHNlIGlmIChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZERpc3BsYXlJc01vbm9jaHJvbWVB
Y2Nlc3NpYmlsaXR5VmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9mZikKLSAg
ICAgICAgaXNNb25vY2hyb21lID0gZmFsc2U7Ci0gICAgZWxzZQotICAgICAgICBpc01vbm9jaHJv
bWUgPSBzY3JlZW5Jc01vbm9jaHJvbWUoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKLQotICAg
IGlmICghaXNNb25vY2hyb21lKQotICAgICAgICByZXR1cm4gemVyb0V2YWx1YXRlKHZhbHVlLCBv
cCk7Ci0gICAgcmV0dXJuIGNvbG9yRXZhbHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFt
ZSwgb3ApOwotfQotCi1zdGF0aWMgYm9vbCBpbnZlcnRlZENvbG9yc0V2YWx1YXRlKENTU1ZhbHVl
KiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwg
TWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIGJvb2wgaXNJbnZlcnRlZDsKLQotICAgIGlmIChm
cmFtZS5zZXR0aW5ncygpLmZvcmNlZENvbG9yc0FyZUludmVydGVkQWNjZXNzaWJpbGl0eVZhbHVl
KCkgPT0gRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPbikKLSAgICAgICAgaXNJbnZlcnRlZCA9
IHRydWU7Ci0gICAgZWxzZSBpZiAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRDb2xvcnNBcmVJbnZl
cnRlZEFjY2Vzc2liaWxpdHlWYWx1ZSgpID09IEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2Zm
KQotICAgICAgICBpc0ludmVydGVkID0gZmFsc2U7Ci0gICAgZWxzZQotICAgICAgICBpc0ludmVy
dGVkID0gc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKLQotICAgIGlmICghdmFsdWUpCi0gICAg
ICAgIHJldHVybiBpc0ludmVydGVkOwotCi0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKSA9PSAoaXNJbnZlcnRlZCA/IENTU1ZhbHVlSW52ZXJ0
ZWQgOiBDU1NWYWx1ZU5vbmUpOwotfQotCi1zdGF0aWMgYm9vbCBvcmllbnRhdGlvbkV2YWx1YXRl
KENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1l
JiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIEZyYW1lVmlldyogdmlldyA9IGZy
YW1lLnZpZXcoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGF1dG8gd2lkdGggPSB2aWV3LT5sYXlvdXRXaWR0aCgpOwotICAgIGF1dG8gaGVpZ2h0ID0gdmll
dy0+bGF5b3V0SGVpZ2h0KCk7Ci0KLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkpIHsKLSAgICAgICAgLy8gRXhwcmVzc2lvbiAob3JpZW50YXRpb24pIGV2YWx1YXRlcyB0byB0
cnVlIGlmIHdpZHRoIGFuZCBoZWlnaHQgPj0gMC4KLSAgICAgICAgcmV0dXJuIGhlaWdodCA+PSAw
ICYmIHdpZHRoID49IDA7Ci0gICAgfQotCi0gICAgYXV0byBrZXl3b3JkID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOwotICAgIGJvb2wgcmVzdWx0OwotICAg
IGlmICh3aWR0aCA+IGhlaWdodCkgLy8gU3F1YXJlIHZpZXdwb3J0IGlzIHBvcnRyYWl0LgotICAg
ICAgICByZXN1bHQgPSBrZXl3b3JkID09IENTU1ZhbHVlTGFuZHNjYXBlOwotICAgIGVsc2UKLSAg
ICAgICAgcmVzdWx0ID0ga2V5d29yZCA9PSBDU1NWYWx1ZVBvcnRyYWl0OwotCi0gICAgTE9HX1dJ
VEhfU1RSRUFNKE1lZGlhUXVlcmllcywgc3RyZWFtIDw8ICIgIG9yaWVudGF0aW9uRXZhbHVhdGU6
IHZpZXcgc2l6ZSAiIDw8IHdpZHRoIDw8ICJ4IiA8PCBoZWlnaHQgPDwgIiBpcyAiIDw8IHZhbHVl
LT5jc3NUZXh0KCkgPDwgIjogIiA8PCByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LXN0YXRpYyBib29sIGFzcGVjdFJhdGlvRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVm
aXggb3ApCi17Ci0gICAgLy8gKHssbWluLSxtYXgtfWFzcGVjdC1yYXRpbykKLSAgICAvLyBhc3N1
bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgaXRzIGFzcGVjdCByYXRpbyBpcyBub24temVybwotICAg
IGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIEZyYW1lVmlldyogdmlldyA9
IGZyYW1lLnZpZXcoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGJvb2wgcmVzdWx0ID0gY29tcGFyZUFzcGVjdFJhdGlvVmFsdWUodmFsdWUsIHZpZXctPmxheW91
dFdpZHRoKCksIHZpZXctPmxheW91dEhlaWdodCgpLCBvcCk7Ci0gICAgTE9HX1dJVEhfU1RSRUFN
KE1lZGlhUXVlcmllcywgc3RyZWFtIDw8ICIgIGFzcGVjdFJhdGlvRXZhbHVhdGU6ICIgPDwgb3Ag
PDwgIiAiIDw8IGFzcGVjdFJhdGlvVmFsdWVBc1N0cmluZyh2YWx1ZSkgPDwgIiBhY3R1YWwgdmll
dyBzaXplICIgPDwgdmlldy0+bGF5b3V0V2lkdGgoKSA8PCAieCIgPDwgdmlldy0+bGF5b3V0SGVp
Z2h0KCkgPDwgIiA6ICIgPDwgcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0
aWMgYm9vbCBkZXZpY2VBc3BlY3RSYXRpb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3Qg
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJl
Zml4IG9wKQotewotICAgIC8vICh7LG1pbi0sbWF4LX1kZXZpY2UtYXNwZWN0LXJhdGlvKQotICAg
IC8vIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBpdHMgYXNwZWN0IHJhdGlvIGlzIG5vbi16
ZXJvCi0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvIHNp
emUgPSBmcmFtZS5tYWluRnJhbWUoKS5zY3JlZW5TaXplKCk7Ci0gICAgYm9vbCByZXN1bHQgPSBj
b21wYXJlQXNwZWN0UmF0aW9WYWx1ZSh2YWx1ZSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
LCBvcCk7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKE1lZGlhUXVlcmllcywgc3RyZWFtIDw8ICIgIGRl
dmljZUFzcGVjdFJhdGlvRXZhbHVhdGU6ICIgPDwgb3AgPDwgIiAiIDw8IGFzcGVjdFJhdGlvVmFs
dWVBc1N0cmluZyh2YWx1ZSkgPDwgIiBhY3R1YWwgc2NyZWVuIHNpemUgIiA8PCBzaXplIDw8ICI6
ICIgPDwgcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgYm9vbCBldmFs
dWF0ZVJlc29sdXRpb24oQ1NTVmFsdWUqIHZhbHVlLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVy
ZVByZWZpeCBvcCkKLXsKLSAgICAvLyBGSVhNRTogUG9zc2libGUgaGFuZGxlIG90aGVyIG1lZGlh
IHR5cGVzIHRoYW4gJ3NjcmVlbicgYW5kICdwcmludCcuCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0g
ZnJhbWUudmlldygpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAwOwotCi0gICAgLy8gVGhpcyBjaGVja3MgdGhl
IGFjdHVhbCBtZWRpYSB0eXBlIGFwcGxpZWQgdG8gdGhlIGRvY3VtZW50LCBhbmQgd2Uga25vdwot
ICAgIC8vIHRoaXMgbWV0aG9kIG9ubHkgZ290IGNhbGxlZCBpZiB0aGlzIG1lZGlhIHR5cGUgbWF0
Y2hlcyB0aGUgb25lIGRlZmluZWQKLSAgICAvLyBpbiB0aGUgcXVlcnkuIFRodXMsIGlmIGlmIHRo
ZSBkb2N1bWVudCdzIG1lZGlhIHR5cGUgaXMgInByaW50IiwgdGhlCi0gICAgLy8gbWVkaWEgdHlw
ZSBvZiB0aGUgcXVlcnkgd2lsbCBlaXRoZXIgYmUgInByaW50IiBvciAiYWxsIi4KLSAgICBTdHJp
bmcgbWVkaWFUeXBlID0gdmlldy0+bWVkaWFUeXBlKCk7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG1lZGlhVHlwZSwgInNjcmVlbiJfcykpCi0gICAgICAgIGRldmljZVNj
YWxlRmFjdG9yID0gZnJhbWUucGFnZSgpID8gZnJhbWUucGFnZSgpLT5kZXZpY2VTY2FsZUZhY3Rv
cigpIDogMTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtZWRp
YVR5cGUsICJwcmludCJfcykpIHsKLSAgICAgICAgLy8gVGhlIHJlc29sdXRpb24gb2YgaW1hZ2Vz
IHdoaWxlIHByaW50aW5nIHNob3VsZCBub3QgZGVwZW5kIG9uIHRoZSBkcGkKLSAgICAgICAgLy8g
b2YgdGhlIHNjcmVlbi4gVW50aWwgd2Ugc3VwcG9ydCBwcm9wZXIgd2F5cyBvZiBxdWVyeWluZyB0
aGlzIGluZm8KLSAgICAgICAgLy8gd2UgdXNlIDMwMHB4IHdoaWNoIGlzIGNvbnNpZGVyZWQgbWlu
aW11bSBmb3IgY3VycmVudCBwcmludGVycy4KLSAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IgPSAz
LjEyNTsgLy8gMzAwZHBpIC8gOTZkcGk7Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZSkKLSAgICAg
ICAgcmV0dXJuICEhZGV2aWNlU2NhbGVGYWN0b3I7Ci0KLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHJlc29s
dXRpb24gPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKLSAgICBmbG9hdCBy
ZXNvbHV0aW9uVmFsdWUgPSByZXNvbHV0aW9uLmlzTnVtYmVyT3JJbnRlZ2VyKCkgPyByZXNvbHV0
aW9uLmZsb2F0VmFsdWUoKSA6IHJlc29sdXRpb24uZmxvYXRWYWx1ZShDU1NVbml0VHlwZTo6Q1NT
X0RQUFgpOwotICAgIGJvb2wgcmVzdWx0ID0gY29tcGFyZVZhbHVlKGRldmljZVNjYWxlRmFjdG9y
LCByZXNvbHV0aW9uVmFsdWUsIG9wKTsKLSAgICBMT0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVz
LCBzdHJlYW0gPDwgIiAgZXZhbHVhdGVSZXNvbHV0aW9uOiAiIDw8IG9wIDw8ICIgIiA8PCByZXNv
bHV0aW9uVmFsdWUgPDwgIiBkZXZpY2Ugc2NhbGUgZmFjdG9yICIgPDwgZGV2aWNlU2NhbGVGYWN0
b3IgPDwgIjogIiA8PCByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBi
b29sIGRldmljZVBpeGVsUmF0aW9FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCBv
cCkKLXsKLSAgICByZXR1cm4gKCF2YWx1ZSB8fCAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1
ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuaXNOdW1iZXJPckludGVn
ZXIoKSkpICYmIGV2YWx1YXRlUmVzb2x1dGlvbih2YWx1ZSwgZnJhbWUsIG9wKTsKLX0KLQotc3Rh
dGljIGJvb2wgcmVzb2x1dGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9w
KQotewotICAgIGlmICghZnJhbWUuc2V0dGluZ3MoKS5yZXNvbHV0aW9uTWVkaWFGZWF0dXJlRW5h
YmxlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gKCF2YWx1ZSB8fCAo
aXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KCp2YWx1ZSkuaXNSZXNvbHV0aW9uKCkpKSAmJiBldmFsdWF0ZVJlc29sdXRpb24odmFsdWUs
IGZyYW1lLCBvcCk7Ci19Ci0KLXN0YXRpYyBib29sIGR5bmFtaWNSYW5nZUV2YWx1YXRlKENTU1Zh
bHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFt
ZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGJvb2wgc3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlOwotCi0gICAgaWYg
KGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlVmFsdWUoKSA9
PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQotICAgICAgICBzdXBwb3J0c0hpZ2hEeW5h
bWljUmFuZ2UgPSB0cnVlOwotICAgIGVsc2UgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkU3Vw
cG9ydHNIaWdoRHluYW1pY1JhbmdlVmFsdWUoKSA9PSBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6
Ok9mZikKLSAgICAgICAgc3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlID0gZmFsc2U7Ci0gICAgZWxz
ZQotICAgICAgICBzdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UgPSBzY3JlZW5TdXBwb3J0c0hpZ2hE
eW5hbWljUmFuZ2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKLQotICAgIHN3aXRjaCAoZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpKSB7Ci0gICAgY2FzZSBD
U1NWYWx1ZUhpZ2g6Ci0gICAgICAgIHJldHVybiBzdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7Ci0g
ICAgY2FzZSBDU1NWYWx1ZVN0YW5kYXJkOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZh
dWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEFueSB1bmtub3duIHZhbHVlIHNob3VsZCBu
b3QgYmUgY29uc2lkZXJlZCBhIG1hdGNoLgotICAgIH0KLX0KLQotc3RhdGljIGJvb2wgc2NhbkV2
YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYs
IEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIFJlZlB0ciB2aWV3ID0g
ZnJhbWUudmlldygpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLyogV2l0aCBNZWRpYSBRdWVyaWVzIExldmVsIDQsIHRoZSAidHYiIG1lZGlhIHR5cGUgaXMg
ZGVwcmVjYXRlZAotICAgICAqIGFuZCB0aGUgInNjYW4iIGZlYXR1cmUgYXBwbGllcyB0byBhbGwg
bWVkaWEgdHlwZXMuCi0gICAgICogV2UgYXJlIGN1cnJlbnRseSBzdXBwb3J0aW5nIE1lZGlhIFF1
ZXJpZXMgTGV2ZWwgMywKLSAgICAgKiB0aHVzIHRoZSBjaGVjayBhZ2FpbnN0ICJ0diIuCi0gICAg
ICovCi0gICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2aWV3LT5tZWRpYVR5
cGUoKSwgInR2Il9zKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byogcHJpbWl0
aXZlVmFsdWUgPSBkeW5hbWljRG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBB
bGwga25vd24gaW1wbGVtZW50YXRpb25zIChCbGluaywgR2Vja28pIGFzc3VtZSBhbmQgbWF0Y2gg
InByb2dyZXNzaXZlIi4KLSAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUtPnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZVByb2dyZXNzaXZlOwotfQotCi1zdGF0aWMgYm9vbCBmb3JjZWRDb2xvcnNFdmFsdWF0
ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFt
ZSYsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBhdXRvKiBwcmltaXRpdmVWYWx1ZSA9IGR5
bmFtaWNEb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmICghcHJpbWl0
aXZlVmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIE9uIENvY29hIHBsYXRm
b3JtcywgdGhlcmUgaXMgbm8gY29uY2VwdCBvZiAiZm9yY2VkIGNvbG9ycyIuCi0gICAgcmV0dXJu
IHByaW1pdGl2ZVZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOwotfQotCi1zdGF0aWMg
Ym9vbCBncmlkRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiwgRnJhbWUmLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAgcmV0dXJu
IHplcm9FdmFsdWF0ZSh2YWx1ZSwgb3ApOwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGNvbXB1dGVMZW5ndGgoQ1NTVmFsdWUqIHZhbHVlLCBib29sIHN0cmljdCwgY29uc3QgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCi17Ci0gICAgaWYgKCFpczxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
Ci0gICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
KnZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXJPckludGVnZXIoKSkgewot
ICAgICAgICBkb3VibGUgdmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpOwotICAg
ICAgICAvLyBUaGUgb25seSB1bml0bGVzcyBudW1iZXIgdmFsdWUgYWxsb3dlZCBpbiBzdHJpY3Qg
bW9kZSBpcyB6ZXJvLgotICAgICAgICBpZiAoc3RyaWN0ICYmIHZhbHVlKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLQotICAg
IGlmIChwcmltaXRpdmVWYWx1ZS5pc0xlbmd0aCgpKQotICAgICAgICByZXR1cm4gcHJpbWl0aXZl
VmFsdWUuY29tcHV0ZUxlbmd0aDxkb3VibGU+KGNvbnZlcnNpb25EYXRhKTsKLQotICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXN0YXRpYyBib29sIGRldmljZUhlaWdodEV2YWx1YXRlKENT
U1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lv
bkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQotewotICAgIC8vICh7
LG1pbi0sbWF4LX1kZXZpY2UtaGVpZ2h0KQotICAgIC8vIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2
aWNlLCBhc3N1bWUgbm9uLXplcm8KLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBhdXRvIGxlbmd0aCA9IGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS5kb2N1bWVu
dCgpLT5pblF1aXJrc01vZGUoKSwgY29udmVyc2lvbkRhdGEpOwotICAgIGlmICghbGVuZ3RoKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGhlaWdodCA9IGZyYW1lLm1haW5GcmFt
ZSgpLnNjcmVlblNpemUoKS5oZWlnaHQoKTsKLSAgICBMT0dfV0lUSF9TVFJFQU0oTWVkaWFRdWVy
aWVzLCBzdHJlYW0gPDwgIiAgZGV2aWNlSGVpZ2h0RXZhbHVhdGU6IHF1ZXJ5ICIgPDwgb3AgPDwg
IiBoZWlnaHQgIiA8PCAqbGVuZ3RoIDw8ICIsIGFjdHVhbCBoZWlnaHQgIiA8PCBoZWlnaHQgPDwg
IiByZXN1bHQ6ICIgPDwgY29tcGFyZVZhbHVlKGhlaWdodCwgKmxlbmd0aCwgb3ApKTsKLSAgICBy
ZXR1cm4gY29tcGFyZVZhbHVlKGhlaWdodCwgKmxlbmd0aCwgb3ApOwotfQotCi1zdGF0aWMgYm9v
bCBkZXZpY2VXaWR0aEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJl
UHJlZml4IG9wKQotewotICAgIC8vICh7LG1pbi0sbWF4LX1kZXZpY2Utd2lkdGgpCi0gICAgLy8g
YXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybwotICAgIGlmICghdmFs
dWUpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGF1dG8gbGVuZ3RoID0gY29tcHV0ZUxlbmd0
aCh2YWx1ZSwgIWZyYW1lLmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpLCBjb252ZXJzaW9uRGF0
YSk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8g
d2lkdGggPSBmcmFtZS5tYWluRnJhbWUoKS5zY3JlZW5TaXplKCkud2lkdGgoKTsKLSAgICBMT0df
V0lUSF9TVFJFQU0oTWVkaWFRdWVyaWVzLCBzdHJlYW0gPDwgIiAgZGV2aWNlV2lkdGhFdmFsdWF0
ZTogcXVlcnkgIiA8PCBvcCA8PCAiIHdpZHRoICIgPDwgKmxlbmd0aCA8PCAiLCBhY3R1YWwgd2lk
dGggIiA8PCB3aWR0aCA8PCAiIHJlc3VsdDogIiA8PCBjb21wYXJlVmFsdWUod2lkdGgsICpsZW5n
dGgsIG9wKSk7Ci0gICAgcmV0dXJuIGNvbXBhcmVWYWx1ZSh3aWR0aCwgKmxlbmd0aCwgb3ApOwot
fQotCi1zdGF0aWMgYm9vbCBoZWlnaHRFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1l
ZGlhRmVhdHVyZVByZWZpeCBvcCkKLXsKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS52aWV3
KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW50IGhlaWdo
dCA9IHZpZXctPmxheW91dEhlaWdodCgpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVy
biBoZWlnaHQ7Ci0KLSAgICBhdXRvIGxlbmd0aCA9IGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFt
ZS5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSwgY29udmVyc2lvbkRhdGEpOwotICAgIGlmICgh
bGVuZ3RoKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYXV0byogcmVuZGVyVmll
dyA9IGZyYW1lLmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSkKLSAgICAgICAgaGVpZ2h0ID0gYWRq
dXN0Rm9yQWJzb2x1dGVab29tKGhlaWdodCwgKnJlbmRlclZpZXcpOwotCi0gICAgTE9HX1dJVEhf
U1RSRUFNKE1lZGlhUXVlcmllcywgc3RyZWFtIDw8ICIgIGhlaWdodEV2YWx1YXRlOiBxdWVyeSAi
IDw8IG9wIDw8ICIgaGVpZ2h0ICIgPDwgKmxlbmd0aCA8PCAiLCBhY3R1YWwgaGVpZ2h0ICIgPDwg
aGVpZ2h0IDw8ICIgcmVzdWx0OiAiIDw8IGNvbXBhcmVWYWx1ZShoZWlnaHQsICpsZW5ndGgsIG9w
KSk7Ci0gICAgcmV0dXJuIGNvbXBhcmVWYWx1ZShoZWlnaHQsICpsZW5ndGgsIG9wKTsKLX0KLQot
c3RhdGljIGJvb2wgd2lkdGhFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVh
dHVyZVByZWZpeCBvcCkKLXsKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS52aWV3KCk7Ci0g
ICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW50IHdpZHRoID0gdmll
dy0+bGF5b3V0V2lkdGgoKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gd2lkdGg7
Ci0KLSAgICBhdXRvIGxlbmd0aCA9IGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS5kb2N1bWVu
dCgpLT5pblF1aXJrc01vZGUoKSwgY29udmVyc2lvbkRhdGEpOwotICAgIGlmICghbGVuZ3RoKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1l
LmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSkKLSAgICAgICAgd2lkdGggPSBhZGp1c3RGb3JBYnNv
bHV0ZVpvb20od2lkdGgsICpyZW5kZXJWaWV3KTsKLQotICAgIExPR19XSVRIX1NUUkVBTShNZWRp
YVF1ZXJpZXMsIHN0cmVhbSA8PCAiICB3aWR0aEV2YWx1YXRlOiBxdWVyeSAiIDw8IG9wIDw8ICIg
d2lkdGggIiA8PCAqbGVuZ3RoIDw8ICIsIGFjdHVhbCB3aWR0aCAiIDw8IHdpZHRoIDw8ICIgcmVz
dWx0OiAiIDw8IGNvbXBhcmVWYWx1ZSh3aWR0aCwgKmxlbmd0aCwgb3ApKTsKLSAgICByZXR1cm4g
Y29tcGFyZVZhbHVlKHdpZHRoLCAqbGVuZ3RoLCBvcCk7Ci19Ci0KLXN0YXRpYyBib29sIG1pbkNv
bG9yRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17
Ci0gICAgcmV0dXJuIGNvbG9yRXZhbHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFtZSwg
TWluUHJlZml4KTsKLX0KLQotc3RhdGljIGJvb2wgbWF4Q29sb3JFdmFsdWF0ZShDU1NWYWx1ZSog
dmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBG
cmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gY29sb3JFdmFs
dWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBNYXhQcmVmaXgpOwotfQotCi1zdGF0
aWMgYm9vbCBtaW5Db2xvckluZGV4RXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRp
YUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgcmV0dXJuIGNvbG9ySW5kZXhFdmFsdWF0ZSh2YWx1ZSwg
Y29udmVyc2lvbkRhdGEsIGZyYW1lLCBNaW5QcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtYXhD
b2xvckluZGV4RXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVm
aXgpCi17Ci0gICAgcmV0dXJuIGNvbG9ySW5kZXhFdmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRh
dGEsIGZyYW1lLCBNYXhQcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtaW5Nb25vY2hyb21lRXZh
bHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBj
b252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAg
cmV0dXJuIG1vbm9jaHJvbWVFdmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBN
aW5QcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtYXhNb25vY2hyb21lRXZhbHVhdGUoQ1NTVmFs
dWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0
YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgcmV0dXJuIG1vbm9j
aHJvbWVFdmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBNYXhQcmVmaXgpOwot
fQotCi1zdGF0aWMgYm9vbCBtaW5Bc3BlY3RSYXRpb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwg
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBm
cmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiBhc3BlY3RSYXRpb0V2YWx1
YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1pblByZWZpeCk7Ci19Ci0KLXN0YXRp
YyBib29sIG1heEFzcGVjdFJhdGlvRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRp
YUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgcmV0dXJuIGFzcGVjdFJhdGlvRXZhbHVhdGUodmFsdWUs
IGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgTWF4UHJlZml4KTsKLX0KLQotc3RhdGljIGJvb2wgbWlu
RGV2aWNlQXNwZWN0UmF0aW9FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVh
dHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gZGV2aWNlQXNwZWN0UmF0aW9FdmFsdWF0ZSh2YWx1
ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBNaW5QcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBt
YXhEZXZpY2VBc3BlY3RSYXRpb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFG
ZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiBkZXZpY2VBc3BlY3RSYXRpb0V2YWx1YXRlKHZh
bHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1heFByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29s
IG1pbkRldmljZVBpeGVsUmF0aW9FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlh
RmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gZGV2aWNlUGl4ZWxSYXRpb0V2YWx1YXRlKHZh
bHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1pblByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29s
IG1heERldmljZVBpeGVsUmF0aW9FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlh
RmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gZGV2aWNlUGl4ZWxSYXRpb0V2YWx1YXRlKHZh
bHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1heFByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29s
IG1pbkhlaWdodEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJl
Zml4KQotewotICAgIHJldHVybiBoZWlnaHRFdmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEs
IGZyYW1lLCBNaW5QcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtYXhIZWlnaHRFdmFsdWF0ZShD
U1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNp
b25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4g
aGVpZ2h0RXZhbHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgTWF4UHJlZml4KTsK
LX0KLQotc3RhdGljIGJvb2wgbWluV2lkdGhFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUs
IE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gd2lkdGhFdmFsdWF0ZSh2YWx1ZSwg
Y29udmVyc2lvbkRhdGEsIGZyYW1lLCBNaW5QcmVmaXgpOwotfQotCi1zdGF0aWMgYm9vbCBtYXhX
aWR0aEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQot
ewotICAgIHJldHVybiB3aWR0aEV2YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUs
IE1heFByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1pbkRldmljZUhlaWdodEV2YWx1YXRlKENT
U1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lv
bkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiBk
ZXZpY2VIZWlnaHRFdmFsdWF0ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBNaW5QcmVm
aXgpOwotfQotCi1zdGF0aWMgYm9vbCBtYXhEZXZpY2VIZWlnaHRFdmFsdWF0ZShDU1NWYWx1ZSog
dmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBG
cmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gZGV2aWNlSGVp
Z2h0RXZhbHVhdGUodmFsdWUsIGNvbnZlcnNpb25EYXRhLCBmcmFtZSwgTWF4UHJlZml4KTsKLX0K
LQotc3RhdGljIGJvb2wgbWluRGV2aWNlV2lkdGhFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNv
bnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJh
bWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICByZXR1cm4gZGV2aWNlV2lkdGhFdmFsdWF0
ZSh2YWx1ZSwgY29udmVyc2lvbkRhdGEsIGZyYW1lLCBNaW5QcmVmaXgpOwotfQotCi1zdGF0aWMg
Ym9vbCBtYXhEZXZpY2VXaWR0aEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFG
ZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiBkZXZpY2VXaWR0aEV2YWx1YXRlKHZhbHVlLCBj
b252ZXJzaW9uRGF0YSwgZnJhbWUsIE1heFByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1pblJl
c29sdXRpb25FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZp
eCkKLXsKLSAgICByZXR1cm4gcmVzb2x1dGlvbkV2YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0
YSwgZnJhbWUsIE1pblByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIG1heFJlc29sdXRpb25FdmFs
dWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNv
bnZlcnNpb25EYXRhLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBy
ZXR1cm4gcmVzb2x1dGlvbkV2YWx1YXRlKHZhbHVlLCBjb252ZXJzaW9uRGF0YSwgZnJhbWUsIE1h
eFByZWZpeCk7Ci19Ci0KLXN0YXRpYyBib29sIGFuaW1hdGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2
YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW1lJiwgTWVkaWFGZWF0
dXJlUHJlZml4IG9wKQotewotICAgIHJldHVybiBvbmVFdmFsdWF0ZSh2YWx1ZSwgb3ApOwotfQot
Ci1zdGF0aWMgYm9vbCB0cmFuc2l0aW9uRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmLCBNZWRpYUZlYXR1cmVQcmVmaXggb3Ap
Ci17Ci0gICAgcmV0dXJuIG9uZUV2YWx1YXRlKHZhbHVlLCBvcCk7Ci19Ci0KLXN0YXRpYyBib29s
IHRyYW5zZm9ybTJkRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhJiwgRnJhbWUmLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0gICAgcmV0
dXJuIG9uZUV2YWx1YXRlKHZhbHVlLCBvcCk7Ci19Ci0KLXN0YXRpYyBib29sIHRyYW5zZm9ybTNk
RXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
JiwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCi17Ci0jaWYgRU5BQkxFKDNE
X1RSQU5TRk9STVMpCi0gICAgYXV0byogdmlldyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOwot
ICAgIHJldHVybiB2aWV3ICYmIHZpZXctPmNvbXBvc2l0b3IoKS5jYW5SZW5kZXIzRFRyYW5zZm9y
bXMoKSA/IG9uZUV2YWx1YXRlKHZhbHVlLCBvcCkgOiB6ZXJvRXZhbHVhdGUodmFsdWUsIG9wKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKLSAgICByZXR1cm4gemVyb0V2YWx1YXRl
KHZhbHVlLCBvcCk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIGJvb2wgdmlkZW9QbGF5YWJsZUlubGlu
ZUV2YWx1YXRlKENTU1ZhbHVlKiwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZy
YW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQotewotICAgIHJldHVybiBmcmFtZS5zZXR0
aW5ncygpLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2soKTsKLX0KLQotc3RhdGljIGJvb2wgaG92
ZXJFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEmLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBhdXRvKiBwYWdl
ID0gZnJhbWUucGFnZSgpOwotICAgIGJvb2wgaG92ZXJTdXBwb3J0ZWRCeVByaW1hcnlQb2ludGlu
Z0RldmljZSA9IHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuaG92ZXJTdXBwb3J0ZWRC
eVByaW1hcnlQb2ludGluZ0RldmljZSgpOwotCi0gICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gaG92ZXJTdXBwb3J0ZWRCeVByaW1hcnlQb2ludGlu
Z0RldmljZTsKLQotICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PigqdmFsdWUpLnZhbHVlSUQoKTsKLSAgICByZXR1cm4gaG92ZXJTdXBwb3J0ZWRCeVByaW1hcnlQ
b2ludGluZ0RldmljZSA/IChrZXl3b3JkID09IENTU1ZhbHVlSG92ZXIpIDogKGtleXdvcmQgPT0g
Q1NTVmFsdWVOb25lKTsKLX0KLQotc3RhdGljIGJvb2wgYW55SG92ZXJFdmFsdWF0ZShDU1NWYWx1
ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUs
IE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBhdXRvKiBwYWdlID0gZnJhbWUucGFnZSgpOwot
ICAgIGJvb2wgaG92ZXJTdXBwb3J0ZWRCeUFueUF2YWlsYWJsZVBvaW50aW5nRGV2aWNlID0gcGFn
ZSAmJiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxl
UG9pbnRpbmdEZXZpY2UoKTsKLQotICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIGhvdmVyU3VwcG9ydGVkQnlBbnlBdmFpbGFibGVQb2ludGluZ0Rl
dmljZTsKLQotICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
dmFsdWUpLnZhbHVlSUQoKTsKLSAgICByZXR1cm4gaG92ZXJTdXBwb3J0ZWRCeUFueUF2YWlsYWJs
ZVBvaW50aW5nRGV2aWNlID8gKGtleXdvcmQgPT0gQ1NTVmFsdWVIb3ZlcikgOiAoa2V5d29yZCA9
PSBDU1NWYWx1ZU5vbmUpOwotfQotCi1zdGF0aWMgYm9vbCBwb2ludGVyRXZhbHVhdGUoQ1NTVmFs
dWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1l
LCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgYXV0byogcGFnZSA9IGZyYW1lLnBhZ2UoKTsK
LSAgICBhdXRvIHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSA9
IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5wb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQ
cmltYXJ5UG9pbnRpbmdEZXZpY2UoKSA6IHN0ZDo6b3B0aW9uYWw8UG9pbnRlckNoYXJhY3Rlcmlz
dGljcz4oKTsKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKHBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSA9PSBQb2ludGVyQ2hhcmFjdGVyaXN0
aWNzOjpDb2Fyc2UpIHsKLSAgICAgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVudCgp
OwotICAgICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZFByZXZl
bnRQb2ludGVyTWVkaWFRdWVyeUZyb21FdmFsdWF0aW5nVG9Db2Fyc2UoKSkKLSAgICAgICAgICAg
IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSA9IFBvaW50ZXJD
aGFyYWN0ZXJpc3RpY3M6OkZpbmU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAoIWlzPENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAhIXBvaW50ZXJDaGFyYWN0ZXJp
c3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZTsKLQotICAgIGF1dG8ga2V5d29yZCA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKTsKLSAgICBpZiAoa2V5d29y
ZCA9PSBDU1NWYWx1ZUZpbmUpCi0gICAgICAgIHJldHVybiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNz
T2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UgPT0gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsK
LSAgICBpZiAoa2V5d29yZCA9PSBDU1NWYWx1ZUNvYXJzZSkKLSAgICAgICAgcmV0dXJuIHBvaW50
ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0RldmljZSA9PSBQb2ludGVyQ2hhcmFj
dGVyaXN0aWNzOjpDb2Fyc2U7Ci0gICAgaWYgKGtleXdvcmQgPT0gQ1NTVmFsdWVOb25lKQotICAg
ICAgICByZXR1cm4gIXBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGluZ0Rldmlj
ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIGFueVBvaW50ZXJFdmFsdWF0
ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFt
ZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBhdXRvKiBwYWdlID0gZnJhbWUu
cGFnZSgpOwotICAgIGF1dG8gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mQWxsQXZhaWxhYmxlUG9p
bnRpbmdEZXZpY2VzID0gcGFnZSA/IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVBvaW50aW5nRGV2aWNlcygpIDogT3B0aW9uU2V0PFBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3M+KCk7Ci0KLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkpCi0gICAgICAgIHJldHVybiAhcG9pbnRlckNoYXJhY3RlcmlzdGljc09mQWxsQXZh
aWxhYmxlUG9pbnRpbmdEZXZpY2VzLmlzRW1wdHkoKTsKLQotICAgIGF1dG8ga2V5d29yZCA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKTsKLSAgICBpZiAoa2V5
d29yZCA9PSBDU1NWYWx1ZUZpbmUpCi0gICAgICAgIHJldHVybiBwb2ludGVyQ2hhcmFjdGVyaXN0
aWNzT2ZBbGxBdmFpbGFibGVQb2ludGluZ0RldmljZXMuY29udGFpbnMoUG9pbnRlckNoYXJhY3Rl
cmlzdGljczo6RmluZSk7Ci0gICAgaWYgKGtleXdvcmQgPT0gQ1NTVmFsdWVDb2Fyc2UpCi0gICAg
ICAgIHJldHVybiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZBbGxBdmFpbGFibGVQb2ludGluZ0Rl
dmljZXMuY29udGFpbnMoUG9pbnRlckNoYXJhY3RlcmlzdGljczo6Q29hcnNlKTsKLSAgICBpZiAo
a2V5d29yZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgIHJldHVybiBwb2ludGVyQ2hhcmFjdGVy
aXN0aWNzT2ZBbGxBdmFpbGFibGVQb2ludGluZ0RldmljZXMuaXNFbXB0eSgpOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotc3RhdGljIGJvb2wgcHJlZmVyc0RhcmtJbnRlcmZhY2VFdmFsdWF0ZShD
U1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYg
ZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBib29sIHByZWZlcnNEYXJrSW50ZXJm
YWNlID0gZmFsc2U7Ci0KLSAgICBpZiAoZnJhbWUucGFnZSgpLT51c2VTeXN0ZW1BcHBlYXJhbmNl
KCkgJiYgZnJhbWUucGFnZSgpLT51c2VEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICBwcmVmZXJz
RGFya0ludGVyZmFjZSA9IHRydWU7Ci0KLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4g
cHJlZmVyc0RhcmtJbnRlcmZhY2U7Ci0KLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpID09IChwcmVmZXJzRGFya0ludGVyZmFjZSA/IENTU1Zh
bHVlUHJlZmVycyA6IENTU1ZhbHVlTm9QcmVmZXJlbmNlKTsKLX0KLQotI2lmIEVOQUJMRShEQVJL
X01PREVfQ1NTKQotc3RhdGljIGJvb2wgcHJlZmVyc0NvbG9yU2NoZW1lRXZhbHVhdGUoQ1NTVmFs
dWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1l
LCBNZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKTsKLSAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlID0g
WyZdICgpIC0+IGF1dG8gewotICAgICAgICBpZiAoZnJhbWUuZG9jdW1lbnQoKS0+bG9hZGVyKCkp
IHsKLSAgICAgICAgICAgIGF1dG8gY29sb3JTY2hlbWVQcmVmZXJlbmNlID0gZnJhbWUuZG9jdW1l
bnQoKS0+bG9hZGVyKCktPmNvbG9yU2NoZW1lUHJlZmVyZW5jZSgpOwotICAgICAgICAgICAgaWYg
KGNvbG9yU2NoZW1lUHJlZmVyZW5jZSAhPSBDb2xvclNjaGVtZVByZWZlcmVuY2U6Ok5vUHJlZmVy
ZW5jZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY29sb3JTY2hlbWVQcmVmZXJlbmNlID09IENv
bG9yU2NoZW1lUHJlZmVyZW5jZTo6RGFyazsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBm
cmFtZS5wYWdlKCktPnVzZURhcmtBcHBlYXJhbmNlKCk7Ci0gICAgfSgpOwotCi0gICAgc3dpdGNo
IChrZXl3b3JkKSB7Ci0gICAgY2FzZSBDU1NWYWx1ZURhcms6Ci0gICAgICAgIHJldHVybiB1c2VE
YXJrQXBwZWFyYW5jZTsKLSAgICBjYXNlIENTU1ZhbHVlTGlnaHQ6Ci0gICAgICAgIHJldHVybiAh
dXNlRGFya0FwcGVhcmFuY2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLX0KLSNlbmRpZgotCi1zdGF0aWMgYm9vbCBwcmVmZXJzQ29udHJhc3RFdmFsdWF0ZShD
U1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYg
ZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBib29sIHVzZXJQcmVmZXJzQ29udHJh
c3QgPSBmYWxzZTsKLQotICAgIHN3aXRjaCAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRQcmVmZXJz
Q29udHJhc3RBY2Nlc3NpYmlsaXR5VmFsdWUoKSkgewotICAgIGNhc2UgRm9yY2VkQWNjZXNzaWJp
bGl0eVZhbHVlOjpPbjoKLSAgICAgICAgdXNlclByZWZlcnNDb250cmFzdCA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPZmY6Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpTeXN0ZW06Ci0j
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICB1c2VyUHJl
ZmVyc0NvbnRyYXN0ID0gVGhlbWU6OnNpbmdsZXRvbigpLnVzZXJQcmVmZXJzQ29udHJhc3QoKTsK
LSNlbmRpZgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVlKQotICAgICAg
ICByZXR1cm4gdXNlclByZWZlcnNDb250cmFzdDsKLQotICAgIC8vIEFwcGxlIHBsYXRmb3Jtczog
Imxlc3MiIGlzIGlnbm9yZWQgYW5kIG9ubHkgIm1vcmUiIGlzIG1hcHBlZCB0byB0aGUgdXNlcidz
IHByZWZlcmVuY2UuCi0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFs
dWUpLnZhbHVlSUQoKSA9PSAodXNlclByZWZlcnNDb250cmFzdCA/IENTU1ZhbHVlTW9yZSA6IENT
U1ZhbHVlTm9QcmVmZXJlbmNlKTsKLX0KLQotc3RhdGljIGJvb2wgcHJlZmVyc1JlZHVjZWRNb3Rp
b25FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEmLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKLXsKLSAgICBib29sIHVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbiA9IGZhbHNlOwotCi0gICAgc3dpdGNoIChmcmFtZS5zZXR0aW5n
cygpLmZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uQWNjZXNzaWJpbGl0eVZhbHVlKCkpIHsKLSAg
ICBjYXNlIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T246Ci0gICAgICAgIHVzZXJQcmVmZXJz
UmVkdWNlZE1vdGlvbiA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9yY2VkQWNj
ZXNzaWJpbGl0eVZhbHVlOjpPZmY6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9yY2VkQWNj
ZXNzaWJpbGl0eVZhbHVlOjpTeXN0ZW06Ci0jaWYgVVNFKE5FV19USEVNRSkgfHwgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAgICAgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID0gVGhlbWU6OnNp
bmdsZXRvbigpLnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpOwotI2VuZGlmCi0gICAgICAgIGJy
ZWFrOwotICAgIH0KLQotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiB1c2VyUHJlZmVy
c1JlZHVjZWRNb3Rpb247Ci0KLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp2YWx1ZSkudmFsdWVJRCgpID09ICh1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPyBDU1NWYWx1
ZVJlZHVjZSA6IENTU1ZhbHVlTm9QcmVmZXJlbmNlKTsKLX0KLQotI2lmIEVOQUJMRShBUFBMSUNB
VElPTl9NQU5JRkVTVCkKLXN0YXRpYyBib29sIGRpc3BsYXlNb2RlRXZhbHVhdGUoQ1NTVmFsdWUq
IHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBN
ZWRpYUZlYXR1cmVQcmVmaXgpCi17Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICBhdXRvIGtleXdvcmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZh
bHVlKS52YWx1ZUlEKCk7Ci0KLSAgICBhdXRvIG1hbmlmZXN0ID0gZnJhbWUucGFnZSgpID8gZnJh
bWUucGFnZSgpLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkgOiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYg
KCFtYW5pZmVzdCkKLSAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gQ1NTVmFsdWVCcm93c2VyOwot
Ci0gICAgc3dpdGNoIChtYW5pZmVzdC0+ZGlzcGxheSkgewotICAgIGNhc2UgQXBwbGljYXRpb25N
YW5pZmVzdDo6RGlzcGxheTo6RnVsbHNjcmVlbjoKLSAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0g
Q1NTVmFsdWVGdWxsc2NyZWVuOwotICAgIGNhc2UgQXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxh
eTo6U3RhbmRhbG9uZToKLSAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gQ1NTVmFsdWVTdGFuZGFs
b25lOwotICAgIGNhc2UgQXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheTo6TWluaW1hbFVJOgot
ICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBDU1NWYWx1ZU1pbmltYWxVaTsKLSAgICBjYXNlIEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OkRpc3BsYXk6OkJyb3dzZXI6Ci0gICAgICAgIHJldHVybiBrZXl3
b3JkID09IENTU1ZhbHVlQnJvd3NlcjsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0j
ZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotCi0vLyBVc2UgdGhpcyBmdW5j
dGlvbiBpbnN0ZWFkIG9mIGNhbGxpbmcgYWRkIGRpcmVjdGx5IHRvIGF2b2lkIGlubGluaW5nLgot
c3RhdGljIHZvaWQgYWRkKE1lZGlhUXVlcnlGdW5jdGlvbk1hcCYgbWFwLCBBdG9tU3RyaW5nSW1w
bCoga2V5LCBNZWRpYVF1ZXJ5RnVuY3Rpb24gdmFsdWUpCi17Ci0gICAgbWFwLmFkZChrZXksIHZh
bHVlKTsKLX0KLQotYm9vbCBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZShjb25z
dCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikgY29uc3QKLXsKLSAgICBpZiAoIW1f
ZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBtX2ZhbGxiYWNrUmVzdWx0OwotCi0gICAgYXV0byYg
ZG9jdW1lbnQgPSAqbV9kb2N1bWVudDsKLSAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1l
KCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSB8fCAhbV9zdHlsZSkKLSAgICAg
ICAgcmV0dXJuIG1fZmFsbGJhY2tSZXN1bHQ7Ci0KLSAgICBpZiAoIWV4cHJlc3Npb24uaXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
TWVkaWFRdWVyeUZ1bmN0aW9uTWFwPiBtYXAgPSBbXSB7Ci0gICAgICAgIE1lZGlhUXVlcnlGdW5j
dGlvbk1hcCBtYXA7Ci0jZGVmaW5lIEFERF9UT19GVU5DVElPTk1BUChuYW1lLCBzdHIpIGFkZCht
YXAsIE1lZGlhRmVhdHVyZU5hbWVzOjpuYW1lLT5pbXBsKCksIG5hbWUjI0V2YWx1YXRlKTsKLSAg
ICAgICAgQ1NTX01FRElBUVVFUllfTkFNRVNfRk9SX0VBQ0hfTUVESUFGRUFUVVJFKEFERF9UT19G
VU5DVElPTk1BUCk7Ci0jdW5kZWYgQUREX1RPX0ZVTkNUSU9OTUFQCi0gICAgICAgIHJldHVybiBt
YXA7Ci0gICAgfSgpOwotCi0gICAgYXV0byBmdW5jdGlvbiA9IG1hcC5nZXQoKS5nZXQoZXhwcmVz
c2lvbi5tZWRpYUZlYXR1cmUoKS5pbXBsKCkpOwotICAgIGlmICghZnVuY3Rpb24pCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gUmVuZGVyU3R5
bGU6OmNyZWF0ZSgpOwotICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gZGVmYXVsdFN0eWxlLmZv
bnREZXNjcmlwdGlvbigpOwotICAgIGF1dG8gc2l6ZSA9IFN0eWxlOjpmb250U2l6ZUZvcktleXdv
cmQoQ1NTVmFsdWVNZWRpdW0sIGZhbHNlLCBkb2N1bWVudCk7Ci0gICAgZm9udERlc2NyaXB0aW9u
LnNldENvbXB1dGVkU2l6ZShzaXplKTsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVk
U2l6ZShzaXplKTsKLSAgICBkZWZhdWx0U3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUo
Zm9udERlc2NyaXB0aW9uKSk7Ci0gICAgZGVmYXVsdFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRl
KCk7Ci0gICAgCi0gICAgLy8gUGFzcyBgbnVsbHB0cmAgZm9yIGBwYXJlbnRTdHlsZWAgYmVjYXVz
ZSB3ZSBhcmUgaW4gdGhlIGNvbnRleHQgb2YgYSBtZWRpYSBxdWVyeS4KLSAgICByZXR1cm4gZnVu
Y3Rpb24oZXhwcmVzc2lvbi52YWx1ZSgpLCB7ICptX3N0eWxlLCAmZGVmYXVsdFN0eWxlLCBudWxs
cHRyLCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgfSwgKmZyYW1lLCBOb1ByZWZpeCk7Ci19Ci0KLWJv
b2wgTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvcjo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKLXsKLSAgICBBU1NF
UlQoZG9jdW1lbnQucmVuZGVyVmlldygpKTsKLSAgICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlh
UXVlcnlTZXQ6OmNyZWF0ZShhdHRyaWJ1dGVWYWx1ZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQo
ZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3Jl
ZW4iX3MsIGRvY3VtZW50LCAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIH0uZXZhbHVh
dGUobWVkaWFRdWVyaWVzLmdldCgpKTsKLX0KLQotCi1PcHRpb25TZXQ8TVE6Ok1lZGlhUXVlcnlE
eW5hbWljRGVwZW5kZW5jeT4gbWVkaWFRdWVyeUR5bmFtaWNEZXBlbmRlbmNpZXMoY29uc3QgTWVk
aWFRdWVyeVNldCYgcXVlcmllcywgY29uc3QgTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvciYgZXZh
bHVhdG9yKQotewotICAgIE9wdGlvblNldDxNUTo6TWVkaWFRdWVyeUR5bmFtaWNEZXBlbmRlbmN5
PiByZXN1bHQ7Ci0KLSAgICBmb3IgKGF1dG8mIHF1ZXJ5IDogcXVlcmllcy5xdWVyeVZlY3Rvcigp
KSB7Ci0gICAgICAgIGlmIChxdWVyeS5pZ25vcmVkKCkgfHwgKCFxdWVyeS5leHByZXNzaW9ucygp
LnNpemUoKSAmJiBxdWVyeS5tZWRpYVR5cGUoKS5pc0VtcHR5KCkpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgaWYgKCFldmFsdWF0b3IubWVkaWFUeXBlTWF0Y2gocXVlcnkubWVk
aWFUeXBlKCkpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBl
eHByZXNzaW9uIDogcXVlcnkuZXhwcmVzc2lvbnMoKSkgewotICAgICAgICAgICAgaWYgKGV4cHJl
c3Npb24uaXNWaWV3cG9ydERlcGVuZGVudCgpKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQo
TVE6Ok1lZGlhUXVlcnlEeW5hbWljRGVwZW5kZW5jeTo6Vmlld3BvcnQpOwotICAgICAgICAgICAg
aWYgKGlzQXBwZWFyYW5jZURlcGVuZGVudChleHByZXNzaW9uLm1lZGlhRmVhdHVyZSgpKSkKLSAg
ICAgICAgICAgICAgICByZXN1bHQuYWRkKE1ROjpNZWRpYVF1ZXJ5RHluYW1pY0RlcGVuZGVuY3k6
OkFwcGVhcmFuY2UpOwotICAgICAgICAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eVNldHRpbmdzRGVw
ZW5kZW50KGV4cHJlc3Npb24ubWVkaWFGZWF0dXJlKCkpKQotICAgICAgICAgICAgICAgIHJlc3Vs
dC5hZGQoTVE6Ok1lZGlhUXVlcnlEeW5hbWljRGVwZW5kZW5jeTo6QWNjZXNzaWJpbGl0eSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTA3N2Y0NzVjMDEuLjAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENTUyBNZWRpYSBRdWVyeSBFdmFsdWF0b3IK
LSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgS2ltbW8gS2lubnVuZW4gPGtpbW1vLnQua2lubnVu
ZW5Abm9raWEuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiTWVkaWFR
dWVyeS5oIgotI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNs
YXNzIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YTsKLWNsYXNzIE1lZGlhUXVlcnlTZXQ7
Ci1jbGFzcyBSZW5kZXJTdHlsZTsKLQotc3RydWN0IE1lZGlhUXVlcnlSZXN1bHQgewotICAgIFJl
Zjxjb25zdCBNZWRpYVF1ZXJ5U2V0PiBxdWVyeTsKLSAgICBib29sIHJlc3VsdDsKLX07Ci0KLXVz
aW5nIE1lZGlhUXVlcnlWaWV3cG9ydFN0YXRlID0gc3RkOjp0dXBsZTxJbnRTaXplLCBmbG9hdCwg
Ym9vbD47Ci0KLU1lZGlhUXVlcnlWaWV3cG9ydFN0YXRlIG1lZGlhUXVlcnlWaWV3cG9ydFN0YXRl
Rm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKLQotLy8gU29tZSBvZiB0aGUgY29uc3RydWN0
b3JzIGFyZSB1c2VkIGZvciBjYXNlcyB3aGVyZSB0aGUgZGV2aWNlIGNoYXJhY3RlcmlzdGljcyBh
cmUgbm90IGtub3duLgotLy8gVGhlc2UgIGNhbiBiZSB1c2VkIHRvIHBydW5lIHRoZSBsb2FkaW5n
IG9mIHN0eWxlc2hlZXRzIHRvIG9ubHkgdGhvc2Ugd2hpY2ggYXJlIG5vdCBhbHJlYWR5IGtub3du
IHRvIG5vdCBtYXRjaC4KLQotY2xhc3MgTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvciB7Ci1wdWJs
aWM6Ci0gICAgLy8gQ3JlYXRlcyBldmFsdWF0b3Igd2hpY2ggZXZhbHVhdGVzIG9ubHkgc2ltcGxl
IG1lZGlhIHF1ZXJpZXMuCi0gICAgLy8gRXZhbHVhdG9yIHJldHVybnMgdHJ1ZSBmb3IgImFsbCIs
IGFuZCByZXR1cm5zIHZhbHVlIG9mIFxtZWRpYUZlYXR1cmVSZXN1bHQgZm9yIGFueSBtZWRpYSBm
ZWF0dXJlcy4KLSAgICBleHBsaWNpdCBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yKGJvb2wgbWVk
aWFGZWF0dXJlUmVzdWx0ID0gZmFsc2UpOwotCi0gICAgLy8gQ3JlYXRlcyBldmFsdWF0b3Igd2hp
Y2ggZXZhbHVhdGVzIG9ubHkgc2ltcGxlIG1lZGlhIHF1ZXJpZXMuCi0gICAgLy8gRXZhbHVhdG9y
IHJldHVybnMgdHJ1ZSBmb3IgYWNjZXB0ZWRNZWRpYVR5cGUgYW5kIHJldHVybnMgdmFsdWUgb2Yg
XG1lZGlhRmVhdHVyZVJlc3VsdCBmb3IgYW55IG1lZGlhIGZlYXR1cmVzLgotICAgIExlZ2FjeU1l
ZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgU3RyaW5nJiBhY2NlcHRlZE1lZGlhVHlwZSwgYm9vbCBt
ZWRpYUZlYXR1cmVSZXN1bHQgPSBmYWxzZSk7Ci0KLSAgICAvLyBDcmVhdGVzIGV2YWx1YXRvciB3
aGljaCBldmFsdWF0ZXMgZnVsbCBtZWRpYSBxdWVyaWVzLgotICAgIFdFQkNPUkVfRVhQT1JUIExl
Z2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgU3RyaW5nJiBhY2NlcHRlZE1lZGlhVHlwZSwg
Y29uc3QgRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSopOwotCi0gICAgYm9vbCBtZWRpYVR5
cGVNYXRjaChjb25zdCBTdHJpbmcmIG1lZGlhVHlwZVRvTWF0Y2gpIGNvbnN0OwotICAgIGJvb2wg
bWVkaWFUeXBlTWF0Y2hTcGVjaWZpYyhBU0NJSUxpdGVyYWwgbWVkaWFUeXBlVG9NYXRjaCkgY29u
c3Q7Ci0KLSAgICAvLyBFdmFsdWF0ZXMgbWVkaWEgcXVlcnkgc3ViZXhwcmVzc2lvbiwgaWUgImFu
ZCAobWVkaWEtZmVhdHVyZTogdmFsdWUpIiBwYXJ0LgotICAgIGJvb2wgZXZhbHVhdGUoY29uc3Qg
TWVkaWFRdWVyeUV4cHJlc3Npb24mKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeVNldCYpIGNvbnN0OwotCi0gICAgc3RhdGljIGJvb2wg
bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVW
YWx1ZSk7Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fbWVkaWFUeXBlOwotICAgIFdlYWtQdHI8
Y29uc3QgRG9jdW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4gbV9kb2N1bWVu
dDsKLSAgICBjb25zdCBSZW5kZXJTdHlsZSogbV9zdHlsZSB7IG51bGxwdHIgfTsKLSAgICBib29s
IG1fZmFsbGJhY2tSZXN1bHQgeyBmYWxzZSB9OwotfTsKLQotT3B0aW9uU2V0PE1ROjpNZWRpYVF1
ZXJ5RHluYW1pY0RlcGVuZGVuY3k+IG1lZGlhUXVlcnlEeW5hbWljRGVwZW5kZW5jaWVzKGNvbnN0
IE1lZGlhUXVlcnlTZXQmLCBjb25zdCBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yJik7Ci0KLX0g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJl
TmFtZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThmYzg3YmRjYzAxLi4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgSW5jLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCi0K
LSNpbmNsdWRlICJDb21tb25BdG9tU3RyaW5ncy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1u
YW1lc3BhY2UgTWVkaWFGZWF0dXJlTmFtZXMgewotCi0jZGVmaW5lIERFRklORV9NRURJQUZFQVRV
UkVfR0xPQkFMKG5hbWUsIHN0cmluZykgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IG5hbWU7Ci1DU1NfTUVESUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUoREVG
SU5FX01FRElBRkVBVFVSRV9HTE9CQUwpCi0jdW5kZWYgREVGSU5FX01FRElBRkVBVFVSRV9HTE9C
QUwKLQotdm9pZCBpbml0KCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKLSAgICBp
ZiAoIWluaXRpYWxpemVkKSB7Ci0gICAgICAgIGluaXRpYWxpemVDb21tb25BdG9tU3RyaW5ncygp
OwotI2RlZmluZSBJTklUSUFMSVpFX0dMT0JBTChuYW1lLCBzdHJpbmcpIG5hbWUuY29uc3RydWN0
KHN0cmluZyAjIyBfcyk7Ci0gICAgICAgIENTU19NRURJQVFVRVJZX05BTUVTX0ZPUl9FQUNIX01F
RElBRkVBVFVSRShJTklUSUFMSVpFX0dMT0JBTCkKLSN1bmRlZiBJTklUSUFMSVpFX0dMT0JBTAot
ICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBN
ZWRpYUZlYXR1cmVOYW1lcwotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFGZWF0dXJlTmFtZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgwYTIz
OWY4MWY3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVy
ZU5hbWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21TdHJpbmcuaD4KLQotI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
LSNkZWZpbmUgQ1NTX01FRElBUVVFUllfRElTUExBWV9NT0RFKG1hY3JvKSBtYWNybyhkaXNwbGF5
TW9kZSwgImRpc3BsYXktbW9kZSIpCi0jZWxzZQotI2RlZmluZSBDU1NfTUVESUFRVUVSWV9ESVNQ
TEFZX01PREUobWFjcm8pCi0jZW5kaWYKLQotI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotI2Rl
ZmluZSBDU1NfTUVESUFRVUVSWV9QUkVGRVJTX0NPTE9SX1NDSEVNRShtYWNybykgbWFjcm8ocHJl
ZmVyc0NvbG9yU2NoZW1lLCAicHJlZmVycy1jb2xvci1zY2hlbWUiKQotI2Vsc2UKLSNkZWZpbmUg
Q1NTX01FRElBUVVFUllfUFJFRkVSU19DT0xPUl9TQ0hFTUUobWFjcm8pCi0jZW5kaWYKLQotI2Rl
ZmluZSBDU1NfTUVESUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUobWFjcm8pIFwK
LSAgICBtYWNybyhhbmltYXRpb24sICItd2Via2l0LWFuaW1hdGlvbiIpIFwKLSAgICBtYWNybyhh
bnlIb3ZlciwgImFueS1ob3ZlciIpIFwKLSAgICBtYWNybyhhbnlQb2ludGVyLCAiYW55LXBvaW50
ZXIiKSBcCi0gICAgbWFjcm8oYXNwZWN0UmF0aW8sICJhc3BlY3QtcmF0aW8iKSBcCi0gICAgbWFj
cm8oY29sb3IsICJjb2xvciIpIFwKLSAgICBtYWNybyhjb2xvckdhbXV0LCAiY29sb3ItZ2FtdXQi
KSBcCi0gICAgbWFjcm8oY29sb3JJbmRleCwgImNvbG9yLWluZGV4IikgXAotICAgIG1hY3JvKGRl
dmljZUFzcGVjdFJhdGlvLCAiZGV2aWNlLWFzcGVjdC1yYXRpbyIpIFwKLSAgICBtYWNybyhkZXZp
Y2VIZWlnaHQsICJkZXZpY2UtaGVpZ2h0IikgXAotICAgIG1hY3JvKGRldmljZVBpeGVsUmF0aW8s
ICItd2Via2l0LWRldmljZS1waXhlbC1yYXRpbyIpIFwKLSAgICBtYWNybyhkZXZpY2VXaWR0aCwg
ImRldmljZS13aWR0aCIpIFwKLSAgICBtYWNybyhkeW5hbWljUmFuZ2UsICJkeW5hbWljLXJhbmdl
IikgXAotICAgIG1hY3JvKGZvcmNlZENvbG9ycywgImZvcmNlZC1jb2xvcnMiKSBcCi0gICAgbWFj
cm8oZ3JpZCwgImdyaWQiKSBcCi0gICAgbWFjcm8oaGVpZ2h0LCAiaGVpZ2h0IikgXAotICAgIG1h
Y3JvKGhvdmVyLCAiaG92ZXIiKSBcCi0gICAgbWFjcm8oaW52ZXJ0ZWRDb2xvcnMsICJpbnZlcnRl
ZC1jb2xvcnMiKSBcCi0gICAgbWFjcm8obWF4QXNwZWN0UmF0aW8sICJtYXgtYXNwZWN0LXJhdGlv
IikgXAotICAgIG1hY3JvKG1heENvbG9yLCAibWF4LWNvbG9yIikgXAotICAgIG1hY3JvKG1heENv
bG9ySW5kZXgsICJtYXgtY29sb3ItaW5kZXgiKSBcCi0gICAgbWFjcm8obWF4RGV2aWNlQXNwZWN0
UmF0aW8sICJtYXgtZGV2aWNlLWFzcGVjdC1yYXRpbyIpIFwKLSAgICBtYWNybyhtYXhEZXZpY2VI
ZWlnaHQsICJtYXgtZGV2aWNlLWhlaWdodCIpIFwKLSAgICBtYWNybyhtYXhEZXZpY2VQaXhlbFJh
dGlvLCAiLXdlYmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlvIikgXAotICAgIG1hY3JvKG1heERl
dmljZVdpZHRoLCAibWF4LWRldmljZS13aWR0aCIpIFwKLSAgICBtYWNybyhtYXhIZWlnaHQsICJt
YXgtaGVpZ2h0IikgXAotICAgIG1hY3JvKG1heE1vbm9jaHJvbWUsICJtYXgtbW9ub2Nocm9tZSIp
IFwKLSAgICBtYWNybyhtYXhSZXNvbHV0aW9uLCAibWF4LXJlc29sdXRpb24iKSBcCi0gICAgbWFj
cm8obWF4V2lkdGgsICJtYXgtd2lkdGgiKSBcCi0gICAgbWFjcm8obWluQXNwZWN0UmF0aW8sICJt
aW4tYXNwZWN0LXJhdGlvIikgXAotICAgIG1hY3JvKG1pbkNvbG9yLCAibWluLWNvbG9yIikgXAot
ICAgIG1hY3JvKG1pbkNvbG9ySW5kZXgsICJtaW4tY29sb3ItaW5kZXgiKSBcCi0gICAgbWFjcm8o
bWluRGV2aWNlQXNwZWN0UmF0aW8sICJtaW4tZGV2aWNlLWFzcGVjdC1yYXRpbyIpIFwKLSAgICBt
YWNybyhtaW5EZXZpY2VIZWlnaHQsICJtaW4tZGV2aWNlLWhlaWdodCIpIFwKLSAgICBtYWNybyht
aW5EZXZpY2VQaXhlbFJhdGlvLCAiLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvIikgXAot
ICAgIG1hY3JvKG1pbkRldmljZVdpZHRoLCAibWluLWRldmljZS13aWR0aCIpIFwKLSAgICBtYWNy
byhtaW5IZWlnaHQsICJtaW4taGVpZ2h0IikgXAotICAgIG1hY3JvKG1pbk1vbm9jaHJvbWUsICJt
aW4tbW9ub2Nocm9tZSIpIFwKLSAgICBtYWNybyhtaW5SZXNvbHV0aW9uLCAibWluLXJlc29sdXRp
b24iKSBcCi0gICAgbWFjcm8obWluV2lkdGgsICJtaW4td2lkdGgiKSBcCi0gICAgbWFjcm8obW9u
b2Nocm9tZSwgIm1vbm9jaHJvbWUiKSBcCi0gICAgbWFjcm8ob3JpZW50YXRpb24sICJvcmllbnRh
dGlvbiIpIFwKLSAgICBtYWNybyhwb2ludGVyLCAicG9pbnRlciIpIFwKLSAgICBtYWNybyhwcmVm
ZXJzQ29udHJhc3QsICJwcmVmZXJzLWNvbnRyYXN0IikgXAotICAgIG1hY3JvKHByZWZlcnNEYXJr
SW50ZXJmYWNlLCAicHJlZmVycy1kYXJrLWludGVyZmFjZSIpIFwKLSAgICBtYWNybyhwcmVmZXJz
UmVkdWNlZE1vdGlvbiwgInByZWZlcnMtcmVkdWNlZC1tb3Rpb24iKSBcCi0gICAgbWFjcm8ocmVz
b2x1dGlvbiwgInJlc29sdXRpb24iKSBcCi0gICAgbWFjcm8oc2NhbiwgInNjYW4iKSBcCi0gICAg
bWFjcm8odHJhbnNmb3JtMmQsICItd2Via2l0LXRyYW5zZm9ybS0yZCIpIFwKLSAgICBtYWNybyh0
cmFuc2Zvcm0zZCwgIi13ZWJraXQtdHJhbnNmb3JtLTNkIikgXAotICAgIG1hY3JvKHRyYW5zaXRp
b24sICItd2Via2l0LXRyYW5zaXRpb24iKSBcCi0gICAgbWFjcm8odmlkZW9QbGF5YWJsZUlubGlu
ZSwgIi13ZWJraXQtdmlkZW8tcGxheWFibGUtaW5saW5lIikgXAotICAgIG1hY3JvKHdpZHRoLCAi
d2lkdGgiKSBcCi0gICAgQ1NTX01FRElBUVVFUllfRElTUExBWV9NT0RFKG1hY3JvKSBcCi0gICAg
Q1NTX01FRElBUVVFUllfUFJFRkVSU19DT0xPUl9TQ0hFTUUobWFjcm8pIFwKLQotLy8gZW5kIG9m
IG1hY3JvCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBNZWRpYUZlYXR1cmVOYW1l
cyB7Ci0KLSNkZWZpbmUgQ1NTX01FRElBUVVFUllfTkFNRVNfREVDTEFSRShuYW1lLCBzdHJpbmcp
IGV4dGVybiBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gbmFtZTsKLSAgICBD
U1NfTUVESUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUoQ1NTX01FRElBUVVFUllf
TkFNRVNfREVDTEFSRSkKLSN1bmRlZiBDU1NfTUVESUFRVUVSWV9OQU1FU19ERUNMQVJFCi0KLSAg
ICB2b2lkIGluaXQoKTsKLQotfSAvLyBuYW1lc3BhY2UgTWVkaWFGZWF0dXJlTmFtZXMKLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggNDI0ZDJiMjhk
NjQyLi5lMmIzYjI2OGRhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCkBAIC0yNiw5ICsy
Niw2IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiTGVnYWN5TWVkaWFRdWVyeS5oIgot
I2luY2x1ZGUgIkxlZ2FjeU1lZGlhUXVlcnlQYXJzZXIuaCIKLSNpbmNsdWRlICJNZWRpYUZlYXR1
cmVOYW1lcy5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnkuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5
UGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0zNywxMzYgKzM0
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vKiBNZWRpYUxpc3QgaXMgdXNlZCB0byBz
dG9yZSAzIHR5cGVzIG9mIG1lZGlhIHJlbGF0ZWQgZW50aXRpZXMgd2hpY2ggbWVhbiB0aGUgc2Ft
ZToKLSAqIE1lZGlhIFF1ZXJpZXMsIE1lZGlhIFR5cGVzIGFuZCBNZWRpYSBEZXNjcmlwdG9ycy4K
LSAqIEN1cnJlbnRseSBNZWRpYUxpc3QgYWx3YXlzIHRyaWVzIHRvIHBhcnNlIG1lZGlhIHF1ZXJp
ZXMgYW5kIGlmIHBhcnNpbmcgZmFpbHMsCi0gKiB0cmllcyB0byBmYWxsYmFjayB0byBNZWRpYSBE
ZXNjcmlwdG9ycyBpZiBtX2ZhbGxiYWNrVG9EZXNjcmlwdG9yIGZsYWcgaXMgc2V0LgotICogU2xp
Z2h0IHByb2JsZW0gd2l0aCBzeW50YXggZXJyb3IgaGFuZGxpbmc6Ci0gKiBDU1MgMi4xIFNwZWMg
KGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL21lZGlhLmh0bWwpCi0gKiBzcGVjaWZpZXMgdGhh
dCBmYWlsaW5nIG1lZGlhIHR5cGUgcGFyc2luZyBpcyBhIHN5bnRheCBlcnJvcgotICogQ1NTIDMg
TWVkaWEgUXVlcmllcyBTcGVjIChodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmll
cy8pCi0gKiBzcGVjaWZpZXMgdGhhdCBmYWlsaW5nIG1lZGlhIHF1ZXJ5IGlzIGEgc3ludGF4IGVy
cm9yCi0gKiBIVE1MIDQuMDEgc3BlYyAoaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC9w
cmVzZW50L3N0eWxlcy5odG1sI2FkZWYtbWVkaWEpCi0gKiBzcGVjaWZpZXMgdGhhdCBNZWRpYSBE
ZXNjcmlwdG9ycyBzaG91bGQgYmUgcGFyc2VkIHdpdGggZm9yd2FyZC1jb21wYXRpYmxlIHN5bnRh
eAotICogRE9NIExldmVsIDIgU3R5bGUgU2hlZXQgc3BlYyAoaHR0cDovL3d3dy53My5vcmcvVFIv
RE9NLUxldmVsLTItU3R5bGUvKQotICogdGFsa3MgYWJvdXQgTWVkaWFMaXN0Lm1lZGlhVGV4dCBh
bmQgcmVmZXJzCi0gKiAgIC0gIHRvIE1lZGlhIERlc2NyaXB0b3JzIG9mIEhUTUwgNC4wIGluIGNv
bnRleHQgb2YgU3R5bGVTaGVldAotICogICAtICB0byBNZWRpYSBUeXBlcyBvZiBDU1MgMi4wIGlu
IGNvbnRleHQgb2YgQ1NTTWVkaWFSdWxlIGFuZCBDU1NJbXBvcnRSdWxlCi0gKgotICogVGhlc2Ug
ZmFjdHMgY3JlYXRlIHNpdHVhdGlvbiB3aGVyZSBzYW1lIChpbGxlZ2FsKSBtZWRpYSBzcGVjaWZp
Y2F0aW9uIG1heSByZXN1bHQgaW4KLSAqIGRpZmZlcmVudCBwYXJzZXMgZGVwZW5kaW5nIG9uIHdo
ZXRoZXIgaXQgaXMgbWVkaWEgYXR0ciBvZiBzdHlsZSBlbGVtZW50IG9yIHBhcnQgb2YKLSAqIGNz
cyBAbWVkaWEgcnVsZS4KLSAqIDxzdHlsZSBtZWRpYT0ic2NyZWVuIGFuZCByZXNvbHV0aW9uID4g
NDBkcGkiPiAuLjwvc3R5bGU+IHdpbGwgYmUgZW5hYmxlZCBvbiBzY3JlZW4gZGV2aWNlcyB3aGVy
ZSBhcwotICogQG1lZGlhIHNjcmVlbiBhbmQgcmVzb2x1dGlvbiA+IDQwZHBpIHsuLn0gd2lsbCBu
b3QuCi0gKiBUaGlzIGdldHMgbW9yZSBjb3VudGVyLWludHVpdGl2ZSBpbiBKYXZhU2NyaXB0Ogot
ICogZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWEubWVkaWFUZXh0ID0gInNjcmVlbiBhbmQg
cmVzb2x1dGlvbiA+IDQwZHBpIiB3aWxsIGJlIG9rIGFuZAotICogZW5hYmxlZCwgd2hpbGUKLSAq
IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLm1lZGlhLm1lZGlhVGV4dCA9ICJz
Y3JlZW4gYW5kIHJlc29sdXRpb24gPiA0MGRwaSIgd2lsbAotICogdGhyb3cgU3ludGF4RXJyb3Ig
ZXhjZXB0aW9uLgotICovCi0KLVJlZjxNZWRpYVF1ZXJ5U2V0PiBNZWRpYVF1ZXJ5U2V0OjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZywgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQgY29u
dGV4dCkKLXsKLSAgICBpZiAobWVkaWFTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
TWVkaWFRdWVyeVNldDo6Y3JlYXRlKCk7Ci0KLSAgICBhdXRvIHBhcnNlZE1lZGlhUXVlcnlTZXQg
PSBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnlTZXQobWVkaWFTdHJpbmcs
IGNvbnRleHQpOwotICAgIGlmIChVTkxJS0VMWSghcGFyc2VkTWVkaWFRdWVyeVNldCkpCi0gICAg
ICAgIHJldHVybiBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoKTsKLSAgICAKLSAgICByZXR1cm4gcGFy
c2VkTWVkaWFRdWVyeVNldC5yZWxlYXNlTm9uTnVsbCgpOwotfQotCi1NZWRpYVF1ZXJ5U2V0OjpN
ZWRpYVF1ZXJ5U2V0KCkgPSBkZWZhdWx0OwotCi1NZWRpYVF1ZXJ5U2V0OjpNZWRpYVF1ZXJ5U2V0
KGNvbnN0IE1lZGlhUXVlcnlTZXQmIG8pCi0gICAgOiBtX3F1ZXJpZXMoby5tX3F1ZXJpZXMpCi17
Ci19Ci0KLU1lZGlhUXVlcnlTZXQ6On5NZWRpYVF1ZXJ5U2V0KCkgPSBkZWZhdWx0OwotCi1ib29s
IE1lZGlhUXVlcnlTZXQ6OnNldChjb25zdCBTdHJpbmcmIG1lZGlhU3RyaW5nKQotewotICAgIGF1
dG8gcmVzdWx0ID0gY3JlYXRlKG1lZGlhU3RyaW5nKTsKLSAgICBtX3F1ZXJpZXMgPSBXVEZNb3Zl
KHJlc3VsdC0+bV9xdWVyaWVzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNZWRpYVF1
ZXJ5U2V0OjphZGQoY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZykKLXsKLSAgICAvLyBUbyAicGFy
c2UgYSBtZWRpYSBxdWVyeSIgZm9yIGEgZ2l2ZW4gc3RyaW5nIG1lYW5zIHRvIGZvbGxvdyAidGhl
IHBhcnNlCi0gICAgLy8gYSBtZWRpYSBxdWVyeSBsaXN0IiBzdGVwcyBhbmQgcmV0dXJuICJudWxs
IiBpZiBtb3JlIHRoYW4gb25lIG1lZGlhIHF1ZXJ5Ci0gICAgLy8gaXMgcmV0dXJuZWQsIG9yIGVs
c2UgdGhlIHJldHVybmVkIG1lZGlhIHF1ZXJ5LgotICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlKHF1
ZXJ5U3RyaW5nKTsKLSAgICAKLSAgICAvLyBPbmx5IGNvbnRpbnVlIGlmIGV4YWN0bHkgb25lIG1l
ZGlhIHF1ZXJ5IGlzIGZvdW5kLCBhcyBkZXNjcmliZWQgYWJvdmUuCi0gICAgaWYgKHJlc3VsdC0+
bV9xdWVyaWVzLnNpemUoKSAhPSAxKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAg
Ly8gSWYgY29tcGFyaW5nIHdpdGggYW55IG9mIHRoZSBtZWRpYSBxdWVyaWVzIGluIHRoZSBjb2xs
ZWN0aW9uIG9mIG1lZGlhCi0gICAgLy8gcXVlcmllcyByZXR1cm5zIHRydWUgdGVybWluYXRlIHRo
ZXNlIHN0ZXBzLgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9xdWVyaWVzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGlmIChtX3F1ZXJpZXNbaV0gPT0gcmVzdWx0LT5tX3F1ZXJpZXNbMF0p
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIG1fcXVlcmllcy5h
cHBlbmQocmVzdWx0LT5tX3F1ZXJpZXNbMF0pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IE1lZGlhUXVlcnlTZXQ6OnJlbW92ZShjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nVG9SZW1vdmUp
Ci17Ci0gICAgLy8gVG8gInBhcnNlIGEgbWVkaWEgcXVlcnkiIGZvciBhIGdpdmVuIHN0cmluZyBt
ZWFucyB0byBmb2xsb3cgInRoZSBwYXJzZQotICAgIC8vIGEgbWVkaWEgcXVlcnkgbGlzdCIgc3Rl
cHMgYW5kIHJldHVybiAibnVsbCIgaWYgbW9yZSB0aGFuIG9uZSBtZWRpYSBxdWVyeQotICAgIC8v
IGlzIHJldHVybmVkLCBvciBlbHNlIHRoZSByZXR1cm5lZCBtZWRpYSBxdWVyeS4KLSAgICBhdXRv
IHJlc3VsdCA9IGNyZWF0ZShxdWVyeVN0cmluZ1RvUmVtb3ZlKTsKLSAgICAKLSAgICAvLyBPbmx5
IGNvbnRpbnVlIGlmIGV4YWN0bHkgb25lIG1lZGlhIHF1ZXJ5IGlzIGZvdW5kLCBhcyBkZXNjcmli
ZWQgYWJvdmUuCi0gICAgaWYgKHJlc3VsdC0+bV9xdWVyaWVzLnNpemUoKSAhPSAxKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICAvLyBSZW1vdmUgYW55IG1lZGlhIHF1ZXJ5IGZyb20g
dGhlIGNvbGxlY3Rpb24gb2YgbWVkaWEgcXVlcmllcyBmb3Igd2hpY2gKLSAgICAvLyBjb21wYXJp
bmcgd2l0aCB0aGUgbWVkaWEgcXVlcnkgcmV0dXJucyB0cnVlLgotICAgIGJvb2wgZm91bmQgPSBm
YWxzZTsKLSAgICAKLSAgICAvLyBVc2luZyBzaWduZWQgaW50IGhlcmUsIHNpbmNlIGZvciB0aGUg
Zmlyc3QgdmFsdWUsIC0taSB3aWxsIHJlc3VsdCBpbiAtMS4KLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IChpbnQpbV9xdWVyaWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX3F1ZXJpZXNb
aV0gPT0gcmVzdWx0LT5tX3F1ZXJpZXNbMF0pIHsKLSAgICAgICAgICAgIG1fcXVlcmllcy5yZW1v
dmUoaSk7Ci0gICAgICAgICAgICAtLWk7Ci0gICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZvdW5kOwotfQotCi12b2lkIE1lZGlhUXVl
cnlTZXQ6OmFkZE1lZGlhUXVlcnkoTGVnYWN5TWVkaWFRdWVyeSYmIG1lZGlhUXVlcnkpCi17Ci0g
ICAgbV9xdWVyaWVzLmFwcGVuZChXVEZNb3ZlKG1lZGlhUXVlcnkpKTsKLX0KLQotU3RyaW5nIE1l
ZGlhUXVlcnlTZXQ6Om1lZGlhVGV4dCgpIGNvbnN0Ci17Ci0gICAgU3RyaW5nQnVpbGRlciB0ZXh0
OwotICAgIGJvb2wgbmVlZENvbW1hID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBxdWVyeSA6IG1f
cXVlcmllcykgewotICAgICAgICBpZiAobmVlZENvbW1hKQotICAgICAgICAgICAgdGV4dC5hcHBl
bmQoIiwgIik7Ci0gICAgICAgIHRleHQuYXBwZW5kKHF1ZXJ5LmNzc1RleHQoKSk7Ci0gICAgICAg
IG5lZWRDb21tYSA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiB0ZXh0LnRvU3RyaW5nKCk7Ci19
Ci0KLXZvaWQgTWVkaWFRdWVyeVNldDo6c2hyaW5rVG9GaXQoKQotewotICAgIG1fcXVlcmllcy5z
aHJpbmtUb0ZpdCgpOwotICAgIGZvciAoYXV0byYgcXVlcnkgOiBtX3F1ZXJpZXMpCi0gICAgICAg
IHF1ZXJ5LnNocmlua1RvRml0KCk7Ci19Ci0KIE1lZGlhTGlzdDo6TWVkaWFMaXN0KENTU1N0eWxl
U2hlZXQqIHBhcmVudFNoZWV0KQogICAgIDogbV9wYXJlbnRTdHlsZVNoZWV0KHBhcmVudFNoZWV0
KQogewpAQCAtMjY2LDEyICsxMzMsNiBAQCB2b2lkIE1lZGlhTGlzdDo6YXBwZW5kTWVkaXVtKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgc2V0TWVkaWFRdWVyaWVzKFdURk1vdmUocXVlcmllcykp
OwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBNZWRp
YVF1ZXJ5U2V0JiBxdWVyeVNldCkKLXsKLSAgICB0cyA8PCBxdWVyeVNldC5tZWRpYVRleHQoKTsK
LSAgICByZXR1cm4gdHM7Ci19Ci0KIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IE1lZGlhTGlzdCYgbWVkaWFMaXN0KQogewogICAgIHRzIDw8IG1lZGlhTGlzdC5t
ZWRpYVRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaAppbmRleCAyZmJmMzRjZWRjMWIuLjdmOTVj
ZjIzMjVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaApAQCAtMzMsNDMgKzMzLDggQEAgY2xhc3Mg
VGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDU1NQYXJzZXI7CiBj
bGFzcyBDU1NSdWxlOwogY2xhc3MgQ1NTU3R5bGVTaGVldDsKLWNsYXNzIERvY3VtZW50OwotY2xh
c3MgTGVnYWN5TWVkaWFRdWVyeTsKLQotY2xhc3MgTWVkaWFRdWVyeVNldCBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhUXVlcnlTZXQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1l
ZGlhUXVlcnlTZXQ+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZWRpYVF1ZXJ5U2V0KTsKLSAgICB9Ci0gICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZjxN
ZWRpYVF1ZXJ5U2V0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZywgTWVkaWFRdWVy
eVBhcnNlckNvbnRleHQgPSBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCgpKTsKLQotICAgIFdFQkNP
UkVfRVhQT1JUIH5NZWRpYVF1ZXJ5U2V0KCk7Ci0KLSAgICBib29sIHNldChjb25zdCBTdHJpbmcm
KTsKLSAgICBib29sIGFkZChjb25zdCBTdHJpbmcmKTsKLSAgICBib29sIHJlbW92ZShjb25zdCBT
dHJpbmcmKTsKLQotICAgIHZvaWQgYWRkTWVkaWFRdWVyeShMZWdhY3lNZWRpYVF1ZXJ5JiYpOwot
Ci0gICAgY29uc3QgVmVjdG9yPExlZ2FjeU1lZGlhUXVlcnk+JiBxdWVyeVZlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fcXVlcmllczsgfQotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG1lZGlh
VGV4dCgpIGNvbnN0OwotCi0gICAgUmVmPE1lZGlhUXVlcnlTZXQ+IGNvcHkoKSBjb25zdCB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUXVlcnlTZXQoKnRoaXMpKTsgfQotCi0gICAgdm9pZCBz
aHJpbmtUb0ZpdCgpOwotCi1wcml2YXRlOgotICAgIE1lZGlhUXVlcnlTZXQoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBNZWRpYVF1ZXJ5U2V0KGNvbnN0IFN0cmluZyYgbWVkaWFRdWVyeSk7Ci0gICAg
TWVkaWFRdWVyeVNldChjb25zdCBNZWRpYVF1ZXJ5U2V0Jik7Ci0KLSAgICBWZWN0b3I8TGVnYWN5
TWVkaWFRdWVyeT4gbV9xdWVyaWVzOwotfTsKIAogY2xhc3MgTWVkaWFMaXN0IGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFMaXN0PiB7CiBwdWJsaWM6CkBAIC0xMDksNyArNzQsNiBAQCBw
cml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8TVE6Ok1lZGlhUXVlcnlMaXN0PiBtX2RldGFjaGVk
TWVkaWFRdWVyaWVzOwogfTsKIAotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYsIGNvbnN0IE1lZGlhUXVlcnlTZXQmKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNZWRpYUxpc3QmKTsKIAogfSAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGY0Y2ZkZjAxM2IuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMzEwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgS2ltbW8gS2lubnVu
ZW4gPGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiTWVkaWFRdWVyeUV4cHJlc3Npb24uaCIKLQotI2luY2x1ZGUgIkNTU0FzcGVj
dFJhdGlvVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgotI2luY2x1ZGUg
IkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oIgotI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVz
LmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlckNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGlubGlu
ZSBib29sIGlzVmFsaWRWYWx1ZUZvcklkZW50TWVkaWFGZWF0dXJlKGNvbnN0IEF0b21TdHJpbmcm
IGZlYXR1cmUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKLXsKLSAgICBhdXRvIHZh
bHVlSUQgPSB2YWx1ZS52YWx1ZUlEKCk7Ci0KLSAgICBpZiAoZmVhdHVyZSA9PSBNZWRpYUZlYXR1
cmVOYW1lczo6b3JpZW50YXRpb24pCi0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVl
UG9ydHJhaXQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxhbmRzY2FwZTsKLSAgICBpZiAoZmVhdHVy
ZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6Y29sb3JHYW11dCkKLSAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVTUkdCIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQMyB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlUmVjMjAyMDsKLSAgICBpZiAoZmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
YW55SG92ZXIgfHwgZmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6aG92ZXIpCi0gICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlSG92ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5v
bmU7Ci0gICAgaWYgKGZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFueVBvaW50ZXIgfHwg
ZmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cG9pbnRlcikKLSAgICAgICAgcmV0dXJuIHZh
bHVlSUQgPT0gQ1NTVmFsdWVGaW5lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2Fyc2UgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU5vbmU7Ci0gICAgaWYgKGZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6OmludmVydGVkQ29sb3JzKQotICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUlu
dmVydGVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOwotI2lmIEVOQUJMRShBUFBMSUNBVElP
Tl9NQU5JRkVTVCkKLSAgICBpZiAoZmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGlzcGxh
eU1vZGUpCi0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlRnVsbHNjcmVlbiB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlU3RhbmRhbG9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWluaW1h
bFVpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCcm93c2VyOwotI2VuZGlmCi0jaWYgRU5BQkxFKERB
UktfTU9ERV9DU1MpCi0gICAgaWYgKGZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnByZWZl
cnNDb2xvclNjaGVtZSkKLSAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVMaWdodCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlRGFyazsKLSNlbmRpZgotICAgIGlmIChmZWF0dXJlID09IE1l
ZGlhRmVhdHVyZU5hbWVzOjpwcmVmZXJzQ29udHJhc3QpCi0gICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9QcmVmZXJlbmNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNb3JlIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVMZXNzOwotICAgIGlmIChmZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjpwcmVmZXJzUmVkdWNlZE1vdGlvbikKLSAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb1ByZWZlcmVuY2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlZHVjZTsKLSAgICBpZiAo
ZmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc0RhcmtJbnRlcmZhY2UpCi0gICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlUHJlZmVycyB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlTm9QcmVmZXJlbmNlOwotICAgIGlmIChmZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpk
eW5hbWljUmFuZ2UpCi0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlSGlnaCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlU3RhbmRhcmQ7Ci0gICAgaWYgKGZlYXR1cmUgPT0gTWVkaWFGZWF0
dXJlTmFtZXM6OnNjYW4pCi0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlUHJvZ3Jl
c3NpdmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUludGVybGFjZTsKLSAgICBpZiAoZmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6Zm9yY2VkQ29sb3JzKQotICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFjdGl2ZTsKLQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRoVmFsaWRJZGVu
dChjb25zdCBBdG9tU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVl
JiB2YWx1ZSwgY29uc3QgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAg
aWYgKHZhbHVlLnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NVbml0VHlwZTo6Q1NTX0lERU5UIHx8ICFp
c1ZhbGlkVmFsdWVGb3JJZGVudE1lZGlhRmVhdHVyZShtZWRpYUZlYXR1cmUsIHZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZl
YXR1cmVOYW1lczo6b3JpZW50YXRpb24KLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlh
RmVhdHVyZU5hbWVzOjpjb2xvckdhbXV0Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRp
YUZlYXR1cmVOYW1lczo6YW55SG92ZXIKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlh
RmVhdHVyZU5hbWVzOjphbnlQb2ludGVyCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRp
YUZlYXR1cmVOYW1lczo6aG92ZXIKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVh
dHVyZU5hbWVzOjppbnZlcnRlZENvbG9ycwotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVk
aWFGZWF0dXJlTmFtZXM6OnBvaW50ZXIKLSNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGlzcGxheU1v
ZGUKLSNlbmRpZgotI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotICAgICAgICB8fCBtZWRpYUZl
YXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnByZWZlcnNDb2xvclNjaGVtZQotI2VuZGlmCi0g
ICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc0NvbnRy
YXN0Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVy
c1JlZHVjZWRNb3Rpb24KLSAgICAgICAgfHwgKG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6cHJlZmVyc0RhcmtJbnRlcmZhY2UgJiYgKGNvbnRleHQudXNlU3lzdGVtQXBwZWFyYW5j
ZSB8fCBpc1VBU2hlZXRCZWhhdmlvcihjb250ZXh0Lm1vZGUpKSkKLSAgICAgICAgfHwgbWVkaWFG
ZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpkeW5hbWljUmFuZ2UKLSAgICAgICAgfHwgbWVk
aWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpzY2FuCi0gICAgICAgIHx8IG1lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6Zm9yY2VkQ29sb3JzOwotfQotCi1zdGF0aWMgaW5s
aW5lIGJvb2wgZmVhdHVyZVdpdGhWYWxpZERlbnNpdHkoY29uc3QgU3RyaW5nJiBtZWRpYUZlYXR1
cmUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlz
UmVzb2x1dGlvbigpIHx8IHZhbHVlLmRvdWJsZVZhbHVlKCkgPD0gMCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIAotICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6OnJlc29sdXRpb24KLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjptaW5SZXNvbHV0aW9uCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1
cmVOYW1lczo6bWF4UmVzb2x1dGlvbjsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVX
aXRoVmFsaWRQb3NpdGl2ZUxlbmd0aChjb25zdCBTdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3Qg
Q1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQotewotICAgIGlmICghKHZhbHVlLmlzTGVuZ3RoKCkg
fHwgKHZhbHVlLmlzTnVtYmVyT3JJbnRlZ2VyKCkgJiYgIXZhbHVlLmRvdWJsZVZhbHVlKCkpKSB8
fCB2YWx1ZS5kb3VibGVWYWx1ZSgpIDwgMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAot
ICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmhlaWdodAotICAg
ICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heEhlaWdodAotICAg
ICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbkhlaWdodAotICAg
ICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OndpZHRoCi0gICAgICAg
IHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4V2lkdGgKLSAgICAgICAg
fHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5XaWR0aAotICAgICAgICB8
fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmljZUhlaWdodAotICAgICAg
ICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heERldmljZUhlaWdodAot
ICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbkRldmljZUhl
aWdodAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmlj
ZVdpZHRoCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWlu
RGV2aWNlV2lkdGgKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
OjptYXhEZXZpY2VXaWR0aDsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVFeHBlY3Rp
bmdQb3NpdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBtZWRpYUZlYXR1cmUpCi17Ci0gICAgcmV0
dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6Y29sb3IKLSAgICAgICAgfHwg
bWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhDb2xvcgotICAgICAgICB8fCBt
ZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbkNvbG9yCi0gICAgICAgIHx8IG1l
ZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6Y29sb3JJbmRleAotICAgICAgICB8fCBt
ZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heENvbG9ySW5kZXgKLSAgICAgICAg
fHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5Db2xvckluZGV4Ci0gICAg
ICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bW9ub2Nocm9tZQotICAg
ICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heE1vbm9jaHJvbWUK
LSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5Nb25vY2hy
b21lOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgZmVhdHVyZVdpdGhQb3NpdGl2ZUludGVnZXIo
Y29uc3QgU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1
ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzSW50ZWdlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGZlYXR1cmVFeHBlY3RpbmdQb3NpdGl2ZUludGVnZXIobWVkaWFGZWF0dXJl
KTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRoUG9zaXRpdmVOdW1iZXIoY29u
c3QgU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkK
LXsKLSAgICBpZiAoIXZhbHVlLmlzTnVtYmVyT3JJbnRlZ2VyKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKLSAgICByZXR1cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
Ojp0cmFuc2Zvcm0zZAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6OmRldmljZVBpeGVsUmF0aW8KLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVh
dHVyZU5hbWVzOjptYXhEZXZpY2VQaXhlbFJhdGlvCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluRGV2aWNlUGl4ZWxSYXRpbwotICAgICAgICB8fCBtZWRp
YUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnRyYW5zaXRpb24KLSAgICAgICAgfHwgbWVk
aWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjphbmltYXRpb24KLSAgICAgICAgfHwgbWVk
aWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjp0cmFuc2Zvcm0yZDsKLX0KLQotc3RhdGlj
IGlubGluZSBib29sIGZlYXR1cmVXaXRoWmVyb09yT25lKGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0
dXJlLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZS5p
c051bWJlck9ySW50ZWdlcigpIHx8ICEodmFsdWUuZG91YmxlVmFsdWUoKSA9PSAxIHx8ICF2YWx1
ZS5kb3VibGVWYWx1ZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHJldHVy
biBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmdyaWQ7Ci19Ci0KLXN0YXRpYyBp
bmxpbmUgYm9vbCBpc0FzcGVjdFJhdGlvRmVhdHVyZShjb25zdCBBdG9tU3RyaW5nJiBtZWRpYUZl
YXR1cmUpCi17Ci0gICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
YXNwZWN0UmF0aW8KLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
OjpkZXZpY2VBc3BlY3RSYXRpbwotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0
dXJlTmFtZXM6Om1pbkFzcGVjdFJhdGlvCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRp
YUZlYXR1cmVOYW1lczo6bWF4QXNwZWN0UmF0aW8KLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09
IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5EZXZpY2VBc3BlY3RSYXRpbwotICAgICAgICB8fCBtZWRp
YUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heERldmljZUFzcGVjdFJhdGlvOwotfQot
Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNGZWF0dXJlVmFsaWRXaXRob3V0VmFsdWUoY29uc3QgQXRv
bVN0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCYgY29u
dGV4dCkKLXsKLSAgICAvLyBNZWRpYSBmZWF0dXJlcyB0aGF0IGFyZSBwcmVmaXhlZCBieSBtaW4v
bWF4IGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgYSB2YWx1ZS4KLSAgICByZXR1cm4gbWVkaWFGZWF0
dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjphbnlIb3ZlcgotICAgICAgICB8fCBtZWRpYUZlYXR1
cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFueVBvaW50ZXIKLSAgICAgICAgfHwgbWVkaWFGZWF0
dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptb25vY2hyb21lCi0gICAgICAgIHx8IG1lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6Y29sb3IKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJl
ID09IE1lZGlhRmVhdHVyZU5hbWVzOjpjb2xvckluZGV4Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVy
ZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6Z3JpZAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0g
TWVkaWFGZWF0dXJlTmFtZXM6OmhlaWdodAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVk
aWFGZWF0dXJlTmFtZXM6OndpZHRoCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZl
YXR1cmVOYW1lczo6ZGV2aWNlSGVpZ2h0Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRp
YUZlYXR1cmVOYW1lczo6ZGV2aWNlV2lkdGgKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1l
ZGlhRmVhdHVyZU5hbWVzOjpvcmllbnRhdGlvbgotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0g
TWVkaWFGZWF0dXJlTmFtZXM6OmFzcGVjdFJhdGlvCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGV2aWNlQXNwZWN0UmF0aW8KLSAgICAgICAgfHwgbWVkaWFG
ZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpob3ZlcgotICAgICAgICB8fCBtZWRpYUZlYXR1
cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnRyYW5zZm9ybTJkCi0gICAgICAgIHx8IG1lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6dHJhbnNmb3JtM2QKLSAgICAgICAgfHwgbWVkaWFG
ZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjp0cmFuc2l0aW9uCi0gICAgICAgIHx8IG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YW5pbWF0aW9uCi0gICAgICAgIHx8IG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6aW52ZXJ0ZWRDb2xvcnMKLSAgICAgICAgfHwg
bWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwb2ludGVyCi0gICAgICAgIHx8IG1l
ZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc0NvbnRyYXN0Ci0gICAgICAg
IHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc1JlZHVjZWRNb3Rp
b24KLSAgICAgICAgfHwgKG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVy
c0RhcmtJbnRlcmZhY2UgJiYgKGNvbnRleHQudXNlU3lzdGVtQXBwZWFyYW5jZSB8fCBpc1VBU2hl
ZXRCZWhhdmlvcihjb250ZXh0Lm1vZGUpKSkKLSNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLSAg
ICAgICAgfHwgKG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cHJlZmVyc0NvbG9y
U2NoZW1lKQotI2VuZGlmCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6ZGV2aWNlUGl4ZWxSYXRpbwotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6OnJlc29sdXRpb24KLSNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGlzcGxheU1v
ZGUKLSNlbmRpZgotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6
OnNjYW4KLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpmb3Jj
ZWRDb2xvcnMKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjp2
aWRlb1BsYXlhYmxlSW5saW5lOwotfQotCi1pbmxpbmUgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb25zdW1lRmlyc3RWYWx1ZShjb25zdCBTdHJpbmcmIG1lZGlhRmVhdHVyZSwgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCi17Ci0gICAgaWYgKGF1dG8gdmFsdWUgPSBDU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnM6OmNvbnN1bWVOb25OZWdhdGl2ZUludGVnZXIocmFuZ2UpKQotICAgICAgICBy
ZXR1cm4gdmFsdWU7Ci0KLSAgICBpZiAoIWZlYXR1cmVFeHBlY3RpbmdQb3NpdGl2ZUludGVnZXIo
bWVkaWFGZWF0dXJlKSAmJiAhaXNBc3BlY3RSYXRpb0ZlYXR1cmUoQXRvbVN0cmluZyB7IG1lZGlh
RmVhdHVyZSB9KSkgewotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IENTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6Y29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpKQot
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLQotICAgIGlmIChhdXRvIHZhbHVlID0g
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRh
cmRNb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSkpCi0gICAgICAgIHJldHVybiB2YWx1ZTsK
LQotICAgIGlmIChhdXRvIHZhbHVlID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1l
UmVzb2x1dGlvbihyYW5nZSkpCi0gICAgICAgIHJldHVybiB2YWx1ZTsKLQotICAgIGlmIChhdXRv
IHZhbHVlID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lSWRlbnQocmFuZ2UpKQot
ICAgICAgICByZXR1cm4gdmFsdWU7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotTWVkaWFR
dWVyeUV4cHJlc3Npb246Ok1lZGlhUXVlcnlFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZmVhdHVy
ZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0JiBj
b250ZXh0KQotICAgIDogbV9tZWRpYUZlYXR1cmUoZmVhdHVyZS5jb252ZXJ0VG9BU0NJSUxvd2Vy
Y2FzZSgpKQotICAgICwgbV9pc1ZhbGlkKGZhbHNlKQotewotICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gZmlyc3RWYWx1ZSA9IGNvbnN1bWVGaXJzdFZhbHVlKG1fbWVkaWFGZWF0dXJlLCBy
YW5nZSk7Ci0gICAgaWYgKCFmaXJzdFZhbHVlKSB7Ci0gICAgICAgIGlmIChpc0ZlYXR1cmVWYWxp
ZFdpdGhvdXRWYWx1ZShtX21lZGlhRmVhdHVyZSwgY29udGV4dCkpIHsKLSAgICAgICAgICAgIC8v
IFZhbGlkLCBjcmVhdGVzIGEgTWVkaWFRdWVyeUV4cCB3aXRoIGFuICdpbnZhbGlkJyBNZWRpYVF1
ZXJ5RXhwVmFsdWUKLSAgICAgICAgICAgIG1faXNWYWxpZCA9IHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBDcmVhdGUgdmFsdWUgZm9yIG1lZGlhIHF1ZXJ5
IGV4cHJlc3Npb24gdGhhdCBtdXN0IGhhdmUgMSBvciBtb3JlIHZhbHVlcy4KLSAgICBpZiAoaXNB
c3BlY3RSYXRpb0ZlYXR1cmUobV9tZWRpYUZlYXR1cmUpKSB7Ci0gICAgICAgIGlmICghZmlyc3RW
YWx1ZS0+aXNOdW1iZXJPckludGVnZXIoKSB8fCAhZmlyc3RWYWx1ZS0+ZG91YmxlVmFsdWUoKSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKCFDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBhdXRvIGRlbm9taW5hdG9yVmFsdWUgPSBDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnM6OmNvbnN1bWVQb3NpdGl2ZUludGVnZXJSYXcocmFuZ2UpOwotICAgICAgICBpZiAo
IWRlbm9taW5hdG9yVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdW5zaWdu
ZWQgbnVtZXJhdG9yID0gY2xhbXBUbzx1bnNpZ25lZD4oZmlyc3RWYWx1ZS0+ZG91YmxlVmFsdWUo
KSk7Ci0gICAgICAgIG1fdmFsdWUgPSBDU1NBc3BlY3RSYXRpb1ZhbHVlOjpjcmVhdGUobnVtZXJh
dG9yLCAqZGVub21pbmF0b3JWYWx1ZSk7Ci0gICAgICAgIG1faXNWYWxpZCA9IHRydWU7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGZlYXR1cmVXaXRoUG9zaXRpdmVJbnRlZ2VyKG1f
bWVkaWFGZWF0dXJlLCAqZmlyc3RWYWx1ZSkgfHwgZmVhdHVyZVdpdGhQb3NpdGl2ZU51bWJlciht
X21lZGlhRmVhdHVyZSwgKmZpcnN0VmFsdWUpCi0gICAgICAgIHx8IGZlYXR1cmVXaXRoWmVyb09y
T25lKG1fbWVkaWFGZWF0dXJlLCAqZmlyc3RWYWx1ZSkgfHwgZmVhdHVyZVdpdGhWYWxpZERlbnNp
dHkobV9tZWRpYUZlYXR1cmUsICpmaXJzdFZhbHVlKQotICAgICAgICB8fCBmZWF0dXJlV2l0aFZh
bGlkUG9zaXRpdmVMZW5ndGgobV9tZWRpYUZlYXR1cmUsICpmaXJzdFZhbHVlKSB8fCBmZWF0dXJl
V2l0aFZhbGlkSWRlbnQobV9tZWRpYUZlYXR1cmUsICpmaXJzdFZhbHVlLCBjb250ZXh0KSkgewot
ICAgICAgICBtX3ZhbHVlID0gZmlyc3RWYWx1ZTsKLSAgICAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotYm9vbCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6
aXNWaWV3cG9ydERlcGVuZGVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWVkaWFGZWF0dXJl
ID09IE1lZGlhRmVhdHVyZU5hbWVzOjp3aWR0aAotICAgICAgICB8fCBtX21lZGlhRmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6aGVpZ2h0Ci0gICAgICAgIHx8IG1fbWVkaWFGZWF0dXJlID09
IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5XaWR0aAotICAgICAgICB8fCBtX21lZGlhRmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluSGVpZ2h0Ci0gICAgICAgIHx8IG1fbWVkaWFGZWF0dXJl
ID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhXaWR0aAotICAgICAgICB8fCBtX21lZGlhRmVhdHVy
ZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4SGVpZ2h0Ci0gICAgICAgIHx8IG1fbWVkaWFGZWF0
dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpvcmllbnRhdGlvbgotICAgICAgICB8fCBtX21lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YXNwZWN0UmF0aW8KLSAgICAgICAgfHwgbV9t
ZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbkFzcGVjdFJhdGlvCi0gICAgICAg
IHx8IG1fbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhBc3BlY3RSYXRpbzsK
LX0KLQotU3RyaW5nIE1lZGlhUXVlcnlFeHByZXNzaW9uOjpzZXJpYWxpemUoKSBjb25zdAotewot
ICAgIGlmIChtX3NlcmlhbGl6YXRpb25DYWNoZS5pc051bGwoKSkKLSAgICAgICAgbV9zZXJpYWxp
emF0aW9uQ2FjaGUgPSBtYWtlU3RyaW5nKCcoJywgYXNBU0NJSUxvd2VyY2FzZShtX21lZGlhRmVh
dHVyZSksIG1fdmFsdWUgPyAiOiAiIDogIiIsIG1fdmFsdWUgPyBtX3ZhbHVlLT5jc3NUZXh0KCkg
OiBlbXB0eVN0cmluZygpLCAnKScpOwotICAgIHJldHVybiBtX3NlcmlhbGl6YXRpb25DYWNoZTsK
LX0KLQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgTWVkaWFR
dWVyeUV4cHJlc3Npb24mIGV4cHJlc3Npb24pCi17Ci0gICAgdHMgPDwgZXhwcmVzc2lvbi5zZXJp
YWxpemUoKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGNmM2YzMzQ5ZWQyYS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBLaW1tbyBLaW5udW5lbiA8a2ltbW8udC5raW5udW5l
bkBub2tpYS5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5n
ZS5oIgotI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotCi1uYW1lc3Bh
Y2UgV1RGIHsKLWNsYXNzIFRleHRTdHJlYW07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICAKLXN0cnVjdCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dDsKLQotY2xhc3MgTWVkaWFRdWVyeUV4
cHJlc3Npb24gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGV4
cGxpY2l0IE1lZGlhUXVlcnlFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0dXJlLCBD
U1NQYXJzZXJUb2tlblJhbmdlJiwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQmKTsKLQotICAgIGNv
bnN0IEF0b21TdHJpbmcmIG1lZGlhRmVhdHVyZSgpIGNvbnN0OwotICAgIENTU1ZhbHVlKiB2YWx1
ZSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1ZpZXdw
b3J0RGVwZW5kZW50KCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgc2VyaWFsaXplKCkgY29uc3Q7Ci0K
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVkaWFRdWVyeUV4cHJlc3Npb24mKSBjb25zdDsK
LQotcHJpdmF0ZToKLSAgICBBdG9tU3RyaW5nIG1fbWVkaWFGZWF0dXJlOwotICAgIFJlZlB0cjxD
U1NWYWx1ZT4gbV92YWx1ZTsKLSAgICBib29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgbXV0
YWJsZSBTdHJpbmcgbV9zZXJpYWxpemF0aW9uQ2FjaGU7Ci19OwotCi1pbmxpbmUgY29uc3QgQXRv
bVN0cmluZyYgTWVkaWFRdWVyeUV4cHJlc3Npb246Om1lZGlhRmVhdHVyZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fbWVkaWFGZWF0dXJlOwotfQotCi1pbmxpbmUgQ1NTVmFsdWUqIE1lZGlhUXVl
cnlFeHByZXNzaW9uOjp2YWx1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7
Ci19Ci0KLWlubGluZSBib29sIE1lZGlhUXVlcnlFeHByZXNzaW9uOjpvcGVyYXRvcj09KGNvbnN0
IE1lZGlhUXVlcnlFeHByZXNzaW9uJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gb3RoZXIu
bV9tZWRpYUZlYXR1cmUgPT0gbV9tZWRpYUZlYXR1cmUKLSAgICAgICAgJiYgKCghbV92YWx1ZSAm
JiAhb3RoZXIubV92YWx1ZSkgfHwgKG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZSAmJiAqbV92YWx1
ZSA9PSAqb3RoZXIubV92YWx1ZSkpOwotfQotCi1pbmxpbmUgYm9vbCBNZWRpYVF1ZXJ5RXhwcmVz
c2lvbjo6aXNWYWxpZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faXNWYWxpZDsKLX0KLQotV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1lZGlhUXVl
cnlFeHByZXNzaW9uJik7Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0xlZ2FjeU1lZGlhUXVlcnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2Y4MThjNmQ4NTIyLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDMyOSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0vLyBtZXQ6Ci0vLwotLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0v
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMZWdhY3lNZWRpYVF1ZXJ5
UGFyc2VyLmgiCi0KLSNpbmNsdWRlICJDU1NUb2tlbml6ZXIuaCIKLSNpbmNsdWRlICJNZWRpYUxp
c3QuaCIKLSNpbmNsdWRlICJNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8TWVkaWFRdWVyeVNl
dD4gTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5U2V0KGNvbnN0IFN0cmlu
ZyYgcXVlcnlTdHJpbmcsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0IGNvbnRleHQpCi17Ci0gICAg
YXV0byB0b2tlbml6ZXIgPSBDU1NUb2tlbml6ZXI6OnRyeUNyZWF0ZShxdWVyeVN0cmluZyk7Ci0g
ICAgaWYgKFVOTElLRUxZKCF0b2tlbml6ZXIpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gcGFyc2VNZWRpYVF1ZXJ5U2V0KHRva2VuaXplci0+dG9rZW5SYW5nZSgpLCBjb250
ZXh0KTsKLX0KLQotUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6
OnBhcnNlTWVkaWFRdWVyeVNldChDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dCBjb250ZXh0KQotewotICAgIHJldHVybiBMZWdhY3lNZWRpYVF1ZXJ5UGFy
c2VyKE1lZGlhUXVlcnlTZXRQYXJzZXIsIGNvbnRleHQpLnBhcnNlSW50ZXJuYWwocmFuZ2UpOwot
fQotCi1SZWZQdHI8TWVkaWFRdWVyeVNldD4gTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VN
ZWRpYUNvbmRpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBNZWRpYVF1ZXJ5UGFyc2Vy
Q29udGV4dCBjb250ZXh0KQotewotICAgIHJldHVybiBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyKE1l
ZGlhQ29uZGl0aW9uUGFyc2VyLCBjb250ZXh0KS5wYXJzZUludGVybmFsKHJhbmdlKTsKLX0KLQot
Y29uc3QgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFRdWVyeVBhcnNl
cjo6UmVhZFJlc3RyaWN0b3IgPSAmTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cmVhZFJlc3RyaWN0
b3I7Ci1jb25zdCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBMZWdhY3lNZWRpYVF1ZXJ5
UGFyc2VyOjpSZWFkTWVkaWFOb3QgPSAmTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cmVhZE1lZGlh
Tm90OwotY29uc3QgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFRdWVy
eVBhcnNlcjo6UmVhZE1lZGlhVHlwZSA9ICZMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkTWVk
aWFUeXBlOwotY29uc3QgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFR
dWVyeVBhcnNlcjo6UmVhZEFuZCA9ICZMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkQW5kOwot
Y29uc3QgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFRdWVyeVBhcnNl
cjo6UmVhZEZlYXR1cmVTdGFydCA9ICZMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVy
ZVN0YXJ0OwotY29uc3QgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFR
dWVyeVBhcnNlcjo6UmVhZEZlYXR1cmUgPSAmTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZl
YXR1cmU7Ci1jb25zdCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBMZWdhY3lNZWRpYVF1
ZXJ5UGFyc2VyOjpSZWFkRmVhdHVyZUNvbG9uID0gJkxlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJl
YWRGZWF0dXJlQ29sb247Ci1jb25zdCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBMZWdh
Y3lNZWRpYVF1ZXJ5UGFyc2VyOjpSZWFkRmVhdHVyZVZhbHVlID0gJkxlZ2FjeU1lZGlhUXVlcnlQ
YXJzZXI6OnJlYWRGZWF0dXJlVmFsdWU7Ci1jb25zdCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpT
dGF0ZSBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpSZWFkRmVhdHVyZUVuZCA9ICZMZWdhY3lNZWRp
YVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZUVuZDsKLWNvbnN0IExlZ2FjeU1lZGlhUXVlcnlQYXJz
ZXI6OlN0YXRlIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OlNraXBVbnRpbENvbW1hID0gJkxlZ2Fj
eU1lZGlhUXVlcnlQYXJzZXI6OnNraXBVbnRpbENvbW1hOwotY29uc3QgTGVnYWN5TWVkaWFRdWVy
eVBhcnNlcjo6U3RhdGUgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6U2tpcFVudGlsQmxvY2tFbmQg
PSAmTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6c2tpcFVudGlsQmxvY2tFbmQ7Ci1jb25zdCBMZWdh
Y3lNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpEb25lID0g
JkxlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OmRvbmU7Ci0KLUxlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6
OkxlZ2FjeU1lZGlhUXVlcnlQYXJzZXIoUGFyc2VyVHlwZSBwYXJzZXJUeXBlLCBNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dCBjb250ZXh0KQotICAgIDogbV9wYXJzZXJUeXBlKHBhcnNlclR5cGUpCi0g
ICAgLCBtX21lZGlhUXVlcnlEYXRhKGNvbnRleHQpCi0gICAgLCBtX3F1ZXJ5U2V0KE1lZGlhUXVl
cnlTZXQ6OmNyZWF0ZSgpKQotICAgIAotewotICAgIHN3aXRjaCAobV9wYXJzZXJUeXBlKSB7Ci0g
ICAgY2FzZSBNZWRpYVF1ZXJ5U2V0UGFyc2VyOgotICAgICAgICBtX3N0YXRlID0gJkxlZ2FjeU1l
ZGlhUXVlcnlQYXJzZXI6OnJlYWRSZXN0cmljdG9yOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1lZGlhQ29uZGl0aW9uUGFyc2VyOgotICAgICAgICBtX3N0YXRlID0gJkxlZ2FjeU1lZGlhUXVl
cnlQYXJzZXI6OnJlYWRNZWRpYU5vdDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1MZWdh
Y3lNZWRpYVF1ZXJ5UGFyc2VyOjp+TGVnYWN5TWVkaWFRdWVyeVBhcnNlcigpID0gZGVmYXVsdDsK
LQotdm9pZCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpzZXRTdGF0ZUFuZFJlc3RyaWN0KFN0YXRl
IHN0YXRlLCBMZWdhY3lNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHJlc3RyaWN0b3IpCi17Ci0gICAg
bV9tZWRpYVF1ZXJ5RGF0YS5zZXRSZXN0cmljdG9yKHJlc3RyaWN0b3IpOwotICAgIG1fc3RhdGUg
PSBzdGF0ZTsKLX0KLQotLy8gU3RhdGUgbWFjaGluZSBtZW1iZXIgZnVuY3Rpb25zIHN0YXJ0IGhl
cmUKLXZvaWQgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cmVhZFJlc3RyaWN0b3IoQ1NTUGFyc2Vy
VG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiwgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCi17Ci0gICAgcmVhZE1lZGlhVHlwZSh0eXBlLCB0b2tlbiwgcmFuZ2Up
OwotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRNZWRpYU5vdChDU1NQYXJz
ZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuLCBDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKLXsKLSAgICBpZiAodHlwZSA9PSBJZGVudFRva2VuICYmIGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVlKCksICJub3QiX3MpKQotICAgICAg
ICBzZXRTdGF0ZUFuZFJlc3RyaWN0KFJlYWRGZWF0dXJlU3RhcnQsIExlZ2FjeU1lZGlhUXVlcnk6
Ok5vdCk7Ci0gICAgZWxzZQotICAgICAgICByZWFkRmVhdHVyZVN0YXJ0KHR5cGUsIHRva2VuLCBy
YW5nZSk7Ci19Ci0KLXN0YXRpYyBib29sIGlzUmVzdHJpY3Rvck9yTG9naWNhbE9wZXJhdG9yKGNv
bnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKLXsKLSAgICAvLyBGSVhNRTogaXQgd291bGQgYmUg
bW9yZSBlZmZpY2llbnQgdG8gdXNlIGxvd2VyLWNhc2UgYWx3YXlzIGZvciB0b2tlblZhbHVlLgot
ICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbi52YWx1ZSgpLCAi
bm90Il9zKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbi52
YWx1ZSgpLCAiYW5kIl9zKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh0b2tlbi52YWx1ZSgpLCAib3IiX3MpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHRva2VuLnZhbHVlKCksICJvbmx5Il9zKTsKLX0KLQotdm9pZCBMZWdhY3lNZWRp
YVF1ZXJ5UGFyc2VyOjpyZWFkTWVkaWFUeXBlKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBjb25z
dCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4sIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQotewot
ICAgIGlmICh0eXBlID09IExlZnRQYXJlbnRoZXNpc1Rva2VuKSB7Ci0gICAgICAgIGlmIChtX21l
ZGlhUXVlcnlEYXRhLnJlc3RyaWN0b3IoKSAhPSBMZWdhY3lNZWRpYVF1ZXJ5OjpOb25lKQotICAg
ICAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX3N0YXRlID0gUmVhZEZlYXR1cmU7Ci0gICAgfSBlbHNlIGlmICh0eXBlID09IElkZW50
VG9rZW4pIHsKLSAgICAgICAgaWYgKG1fc3RhdGUgPT0gUmVhZFJlc3RyaWN0b3IgJiYgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwgIm5vdCJfcykpCi0gICAgICAg
ICAgICBzZXRTdGF0ZUFuZFJlc3RyaWN0KFJlYWRNZWRpYVR5cGUsIExlZ2FjeU1lZGlhUXVlcnk6
Ok5vdCk7Ci0gICAgICAgIGVsc2UgaWYgKG1fc3RhdGUgPT0gUmVhZFJlc3RyaWN0b3IgJiYgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwgIm9ubHkiX3MpKQotICAg
ICAgICAgICAgc2V0U3RhdGVBbmRSZXN0cmljdChSZWFkTWVkaWFUeXBlLCBMZWdhY3lNZWRpYVF1
ZXJ5OjpPbmx5KTsKLSAgICAgICAgZWxzZSBpZiAobV9tZWRpYVF1ZXJ5RGF0YS5yZXN0cmljdG9y
KCkgIT0gTGVnYWN5TWVkaWFRdWVyeTo6Tm9uZQotICAgICAgICAgICAgJiYgaXNSZXN0cmljdG9y
T3JMb2dpY2FsT3BlcmF0b3IodG9rZW4pKSB7Ci0gICAgICAgICAgICBtX3N0YXRlID0gU2tpcFVu
dGlsQ29tbWE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX21lZGlhUXVlcnlEYXRh
LnNldE1lZGlhVHlwZSh0b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgbV9z
dGF0ZSA9IFJlYWRBbmQ7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gRU9GVG9r
ZW4gJiYgKCFtX3F1ZXJ5U2V0LT5xdWVyeVZlY3RvcigpLnNpemUoKSB8fCBtX3N0YXRlICE9IFJl
YWRSZXN0cmljdG9yKSkKLSAgICAgICAgbV9zdGF0ZSA9IERvbmU7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ29tbWFU
b2tlbikKLSAgICAgICAgICAgIHNraXBVbnRpbENvbW1hKHR5cGUsIHRva2VuLCByYW5nZSk7Ci0g
ICAgfQotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OmNvbW1pdE1lZGlhUXVlcnko
KQotewotICAgIC8vIEZJWE1FLU5FV1BBUlNFUjogQ29udm9sdXRlZCBhbmQgYXdmdWwsIGJ1dCB3
ZSBjYW4ndCBjaGFuZ2UgdGhlIE1lZGlhUXVlcnlTZXQgeWV0IGJlY2F1c2Ugb2YgdGhlCi0gICAg
Ly8gb2xkIHBhcnNlci4KLSAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBk
ZWZhdWx0TWVkaWFUeXBlIHsgImFsbCJfcyB9OwotICAgIExlZ2FjeU1lZGlhUXVlcnkgbWVkaWFR
dWVyeSB7IG1fbWVkaWFRdWVyeURhdGEucmVzdHJpY3RvcigpLCBtX21lZGlhUXVlcnlEYXRhLm1l
ZGlhVHlwZSgpLnZhbHVlX29yKGRlZmF1bHRNZWRpYVR5cGUpLCBXVEZNb3ZlKG1fbWVkaWFRdWVy
eURhdGEuZXhwcmVzc2lvbnMoKSkgfTsKLSAgICBtX21lZGlhUXVlcnlEYXRhLmNsZWFyKCk7Ci0g
ICAgbV9xdWVyeVNldC0+YWRkTWVkaWFRdWVyeShXVEZNb3ZlKG1lZGlhUXVlcnkpKTsKLX0KLQot
dm9pZCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkQW5kKENTU1BhcnNlclRva2VuVHlwZSB0
eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4sIENTU1BhcnNlclRva2VuUmFuZ2UmIC8q
cmFuZ2UqLykKLXsKLSAgICBpZiAodHlwZSA9PSBJZGVudFRva2VuICYmIGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVlKCksICJhbmQiX3MpKSB7Ci0gICAgICAgIG1fc3Rh
dGUgPSBSZWFkRmVhdHVyZVN0YXJ0OwotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDb21tYVRva2Vu
ICYmIG1fcGFyc2VyVHlwZSAhPSBNZWRpYUNvbmRpdGlvblBhcnNlcikgewotICAgICAgICBjb21t
aXRNZWRpYVF1ZXJ5KCk7Ci0gICAgICAgIG1fc3RhdGUgPSBSZWFkUmVzdHJpY3RvcjsKLSAgICB9
IGVsc2UgaWYgKHR5cGUgPT0gRU9GVG9rZW4pCi0gICAgICAgIG1fc3RhdGUgPSBEb25lOwotICAg
IGVsc2UKLSAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOwotfQotCi12b2lkIExlZ2Fj
eU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJlU3RhcnQoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5
cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiAvKnRva2VuKi8sIENTU1BhcnNlclRva2VuUmFuZ2Um
IC8qcmFuZ2UqLykKLXsKLSAgICBpZiAodHlwZSA9PSBMZWZ0UGFyZW50aGVzaXNUb2tlbikKLSAg
ICAgICAgbV9zdGF0ZSA9IFJlYWRGZWF0dXJlOwotICAgIGVsc2UKLSAgICAgICAgbV9zdGF0ZSA9
IFNraXBVbnRpbENvbW1hOwotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRG
ZWF0dXJlKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9r
ZW4sIENTU1BhcnNlclRva2VuUmFuZ2UmIC8qcmFuZ2UqLykKLXsKLSAgICBpZiAodHlwZSA9PSBJ
ZGVudFRva2VuKSB7Ci0gICAgICAgIG1fbWVkaWFRdWVyeURhdGEuc2V0TWVkaWFGZWF0dXJlKHRv
a2VuLnZhbHVlKCkudG9TdHJpbmcoKSk7Ci0gICAgICAgIG1fc3RhdGUgPSBSZWFkRmVhdHVyZUNv
bG9uOwotICAgIH0gZWxzZQotICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQ29tbWE7Ci19Ci0K
LXZvaWQgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZlYXR1cmVDb2xvbihDU1NQYXJzZXJU
b2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuLCBDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKLXsKLSAgICBpZiAodHlwZSA9PSBDb2xvblRva2VuKSB7Ci0gICAgICAg
IHdoaWxlIChyYW5nZS5wZWVrKCkudHlwZSgpID09IFdoaXRlc3BhY2VUb2tlbikKLSAgICAgICAg
ICAgIHJhbmdlLmNvbnN1bWUoKTsKLSAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0g
UmlnaHRQYXJlbnRoZXNpc1Rva2VuIHx8IHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gRU9GVG9rZW4p
Ci0gICAgICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQmxvY2tFbmQ7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fc3RhdGUgPSBSZWFkRmVhdHVyZVZhbHVlOwotICAgIH0gZWxzZSBpZiAo
dHlwZSA9PSBSaWdodFBhcmVudGhlc2lzVG9rZW4gfHwgdHlwZSA9PSBFT0ZUb2tlbikgewotICAg
ICAgICBtX21lZGlhUXVlcnlEYXRhLmFkZEV4cHJlc3Npb24ocmFuZ2UpOwotICAgICAgICByZWFk
RmVhdHVyZUVuZCh0eXBlLCB0b2tlbiwgcmFuZ2UpOwotICAgIH0gZWxzZQotICAgICAgICBtX3N0
YXRlID0gU2tpcFVudGlsQmxvY2tFbmQ7Ci19Ci0KLXZvaWQgTGVnYWN5TWVkaWFRdWVyeVBhcnNl
cjo6cmVhZEZlYXR1cmVWYWx1ZShDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIHRva2VuLCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKLXsKLSAgICBpZiAo
dHlwZSA9PSBEaW1lbnNpb25Ub2tlbiAmJiB0b2tlbi51bml0VHlwZSgpID09IENTU1VuaXRUeXBl
OjpDU1NfVU5LTk9XTikgewotICAgICAgICByYW5nZS5jb25zdW1lKCk7Ci0gICAgICAgIG1fc3Rh
dGUgPSBTa2lwVW50aWxDb21tYTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX21lZGlhUXVlcnlE
YXRhLmFkZEV4cHJlc3Npb24ocmFuZ2UpOwotICAgICAgICBtX3N0YXRlID0gUmVhZEZlYXR1cmVF
bmQ7Ci0gICAgfQotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJl
RW5kKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgLyp0b2tl
biovLCBDU1NQYXJzZXJUb2tlblJhbmdlJiAvKnJhbmdlKi8pCi17Ci0gICAgaWYgKHR5cGUgPT0g
UmlnaHRQYXJlbnRoZXNpc1Rva2VuIHx8IHR5cGUgPT0gRU9GVG9rZW4pIHsKLSAgICAgICAgaWYg
KHR5cGUgIT0gRU9GVG9rZW4gJiYgbV9tZWRpYVF1ZXJ5RGF0YS5sYXN0RXhwcmVzc2lvblZhbGlk
KCkpCi0gICAgICAgICAgICBtX3N0YXRlID0gUmVhZEFuZDsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1f
bWVkaWFRdWVyeURhdGEucmVtb3ZlTGFzdEV4cHJlc3Npb24oKTsKLSAgICAgICAgbV9zdGF0ZSA9
IFNraXBVbnRpbEJsb2NrRW5kOwotICAgIH0KLX0KLQotdm9pZCBMZWdhY3lNZWRpYVF1ZXJ5UGFy
c2VyOjpza2lwVW50aWxDb21tYShDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIC8qdG9rZW4qLywgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgLypyYW5nZSovKQotewot
ICAgIGlmICgodHlwZSA9PSBDb21tYVRva2VuICYmICFtX2Jsb2NrV2F0Y2hlci5ibG9ja0xldmVs
KCkpIHx8IHR5cGUgPT0gRU9GVG9rZW4pIHsKLSAgICAgICAgbV9zdGF0ZSA9IFJlYWRSZXN0cmlj
dG9yOwotICAgICAgICBtX21lZGlhUXVlcnlEYXRhLmNsZWFyKCk7Ci0gICAgICAgIGF1dG8gcXVl
cnkgPSBMZWdhY3lNZWRpYVF1ZXJ5KExlZ2FjeU1lZGlhUXVlcnk6Ok5vdCwgImFsbCJfcywgVmVj
dG9yPE1lZGlhUXVlcnlFeHByZXNzaW9uPigpKTsKLSAgICAgICAgbV9xdWVyeVNldC0+YWRkTWVk
aWFRdWVyeShXVEZNb3ZlKHF1ZXJ5KSk7Ci0gICAgfQotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVl
cnlQYXJzZXI6OnNraXBVbnRpbEJsb2NrRW5kKENTU1BhcnNlclRva2VuVHlwZSAvKnR5cGUgKi8s
IGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgLypyYW5n
ZSovKQotewotICAgIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6
QmxvY2tFbmQgJiYgIW1fYmxvY2tXYXRjaGVyLmJsb2NrTGV2ZWwoKSkKLSAgICAgICAgbV9zdGF0
ZSA9IFNraXBVbnRpbENvbW1hOwotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OmRv
bmUoQ1NTUGFyc2VyVG9rZW5UeXBlIC8qdHlwZSovLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgLyp0
b2tlbiovLCBDU1NQYXJzZXJUb2tlblJhbmdlJiAvKnJhbmdlKi8pIHsgfQotCi12b2lkIExlZ2Fj
eU1lZGlhUXVlcnlQYXJzZXI6OmhhbmRsZUJsb2Nrcyhjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9r
ZW4pCi17Ci0gICAgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgpICE9IENTU1BhcnNlclRva2VuOjpC
bG9ja1N0YXJ0KQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byBzaG91bGRTa2lwQmxvY2sgPSBb
Jl0gewotICAgICAgICAvLyBGSVhNRTogTmVzdGVkIGJsb2NrcyBzaG91bGQgYmUgc3VwcG9ydGVk
LgotICAgICAgICBpZiAobV9ibG9ja1dhdGNoZXIuYmxvY2tMZXZlbCgpKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTGVmdFBhcmVudGhlc2lz
VG9rZW4pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0oKTsKLSAgICBpZiAoc2hvdWxkU2tpcEJsb2NrKQotICAgICAgICBtX3N0YXRlID0gU2tp
cFVudGlsQmxvY2tFbmQ7Ci19Ci0KLXZvaWQgTGVnYWN5TWVkaWFRdWVyeVBhcnNlcjo6cHJvY2Vz
c1Rva2VuKGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCi17Ci0gICAgQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUgPSB0b2tlbi50eXBlKCk7Ci0K
LSAgICBpZiAodHlwZSA9PSBXaGl0ZXNwYWNlVG9rZW4pIHsKLSAgICAgICAgcmFuZ2UuY29uc3Vt
ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fc3RhdGUgIT0gUmVhZEZl
YXR1cmVWYWx1ZSkgewotICAgICAgICBoYW5kbGVCbG9ja3ModG9rZW4pOwotICAgICAgICBtX2Js
b2NrV2F0Y2hlci5oYW5kbGVUb2tlbih0b2tlbik7Ci0gICAgICAgIHJhbmdlLmNvbnN1bWUoKTsK
LSAgICB9Ci0KLSAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgY3VycmVudCBz
dGF0ZQotICAgICgodGhpcyktPioobV9zdGF0ZSkpKHR5cGUsIHRva2VuLCByYW5nZSk7Ci19Ci0K
LS8vIFRoZSBzdGF0ZSBtYWNoaW5lIGxvb3AKLVJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBMZWdhY3lN
ZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZUludGVybmFsKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQotewotICAgIAotICAgIHdoaWxlICghcmFuZ2UuYXRFbmQoKSkKLSAgICAgICAgcHJvY2Vzc1Rv
a2VuKHJhbmdlLnBlZWsoKSwgcmFuZ2UpOwotCi0gICAgLy8gRklYTUU6IENhbiB3ZSBnZXQgcmlk
IG9mIHRoaXMgc3BlY2lhbCBjYXNlPwotICAgIGlmIChtX3BhcnNlclR5cGUgPT0gTWVkaWFRdWVy
eVNldFBhcnNlcikKLSAgICAgICAgcHJvY2Vzc1Rva2VuKENTU1BhcnNlclRva2VuKEVPRlRva2Vu
KSwgcmFuZ2UpOwotCi0gICAgaWYgKG1fc3RhdGUgIT0gUmVhZEFuZCAmJiBtX3N0YXRlICE9IFJl
YWRSZXN0cmljdG9yICYmIG1fc3RhdGUgIT0gRG9uZSAmJiBtX3N0YXRlICE9IFJlYWRNZWRpYU5v
dCkgewotICAgICAgICBhdXRvIHF1ZXJ5ID0gTGVnYWN5TWVkaWFRdWVyeShMZWdhY3lNZWRpYVF1
ZXJ5OjpOb3QsICJhbGwiX3MsIFZlY3RvcjxNZWRpYVF1ZXJ5RXhwcmVzc2lvbj4oKSk7Ci0gICAg
ICAgIG1fcXVlcnlTZXQtPmFkZE1lZGlhUXVlcnkoV1RGTW92ZShxdWVyeSkpOwotICAgIH0gZWxz
ZSBpZiAobV9tZWRpYVF1ZXJ5RGF0YS5jdXJyZW50TWVkaWFRdWVyeUNoYW5nZWQoKSkKLSAgICAg
ICAgY29tbWl0TWVkaWFRdWVyeSgpOwotCi0gICAgbV9xdWVyeVNldC0+c2hyaW5rVG9GaXQoKTsK
LQotICAgIHJldHVybiBtX3F1ZXJ5U2V0OwotfQotCi1MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpN
ZWRpYVF1ZXJ5RGF0YTo6TWVkaWFRdWVyeURhdGEoTWVkaWFRdWVyeVBhcnNlckNvbnRleHQgY29u
dGV4dCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotewotfQotCi12b2lkIExlZ2FjeU1lZGlh
UXVlcnlQYXJzZXI6Ok1lZGlhUXVlcnlEYXRhOjpjbGVhcigpCi17Ci0gICAgbV9yZXN0cmljdG9y
ID0gTGVnYWN5TWVkaWFRdWVyeTo6Tm9uZTsKLSAgICBtX21lZGlhVHlwZSA9IHN0ZDo6bnVsbG9w
dDsKLSAgICBtX21lZGlhRmVhdHVyZSA9IFN0cmluZygpOwotICAgIG1fZXhwcmVzc2lvbnMuY2xl
YXIoKTsKLX0KLQotdm9pZCBMZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyOjpNZWRpYVF1ZXJ5RGF0YTo6
YWRkRXhwcmVzc2lvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKLXsKLSAgICBtX2V4cHJl
c3Npb25zLmFwcGVuZChNZWRpYVF1ZXJ5RXhwcmVzc2lvbiB7IG1fbWVkaWFGZWF0dXJlLCByYW5n
ZSwgbV9jb250ZXh0IH0pOwotfQotCi1ib29sIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6Ok1lZGlh
UXVlcnlEYXRhOjpsYXN0RXhwcmVzc2lvblZhbGlkKCkKLXsKLSAgICByZXR1cm4gbV9leHByZXNz
aW9ucy5sYXN0KCkuaXNWYWxpZCgpOwotfQotCi12b2lkIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6
Ok1lZGlhUXVlcnlEYXRhOjpyZW1vdmVMYXN0RXhwcmVzc2lvbigpCi17Ci0gICAgbV9leHByZXNz
aW9ucy5yZW1vdmVMYXN0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9MZWdhY3lNZWRpYVF1ZXJ5UGFyc2VyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYmEwODZlOGUzMy4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTGVnYWN5TWVkaWFRdWVyeVBhcnNlci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1
bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDU1NQYXJzZXJUb2tl
bi5oIgotI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKLSNpbmNsdWRlICJMZWdhY3lN
ZWRpYVF1ZXJ5LmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oIgotI2luY2x1
ZGUgIk1lZGlhUXVlcnlFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlckNv
bnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBNZWRpYVF1ZXJ5U2V0Owotc3RydWN0IENTU1BhcnNlckNvbnRleHQ7
Ci0KLWNsYXNzIExlZ2FjeU1lZGlhUXVlcnlQYXJzZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKExlZ2FjeU1lZGlhUXVlcnlQYXJzZXIpOwotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
TWVkaWFRdWVyeVNldD4gcGFyc2VNZWRpYVF1ZXJ5U2V0KGNvbnN0IFN0cmluZyYsIE1lZGlhUXVl
cnlQYXJzZXJDb250ZXh0KTsKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IHBhcnNl
TWVkaWFRdWVyeVNldChDU1NQYXJzZXJUb2tlblJhbmdlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4
dCk7Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBwYXJzZU1lZGlhQ29uZGl0aW9u
KENTU1BhcnNlclRva2VuUmFuZ2UsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KTsKLQotcHJpdmF0
ZToKLSAgICBlbnVtIFBhcnNlclR5cGUgewotICAgICAgICBNZWRpYVF1ZXJ5U2V0UGFyc2VyLAot
ICAgICAgICBNZWRpYUNvbmRpdGlvblBhcnNlciwKLSAgICB9OwotCi0gICAgTGVnYWN5TWVkaWFR
dWVyeVBhcnNlcihQYXJzZXJUeXBlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCk7Ci0gICAgdmly
dHVhbCB+TGVnYWN5TWVkaWFRdWVyeVBhcnNlcigpOwotCi0gICAgUmVmUHRyPE1lZGlhUXVlcnlT
ZXQ+IHBhcnNlSW50ZXJuYWwoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotCi0gICAgdm9pZCBwcm9j
ZXNzVG9rZW4oY29uc3QgQ1NTUGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0K
LSAgICB2b2lkIHJlYWRSZXN0cmljdG9yKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFy
c2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0gICAgdm9pZCByZWFkTWVkaWFOb3Qo
Q1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYsIENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKLSAgICB2b2lkIHJlYWRNZWRpYVR5cGUoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25z
dCBDU1NQYXJzZXJUb2tlbiYsIENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLSAgICB2b2lkIHJlYWRB
bmQoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYsIENTU1BhcnNlclRv
a2VuUmFuZ2UmKTsKLSAgICB2b2lkIHJlYWRGZWF0dXJlU3RhcnQoQ1NTUGFyc2VyVG9rZW5UeXBl
LCBjb25zdCBDU1NQYXJzZXJUb2tlbiYsIENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLSAgICB2b2lk
IHJlYWRGZWF0dXJlKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mLCBD
U1NQYXJzZXJUb2tlblJhbmdlJik7Ci0gICAgdm9pZCByZWFkRmVhdHVyZUNvbG9uKENTU1BhcnNl
clRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7
Ci0gICAgdm9pZCByZWFkRmVhdHVyZVZhbHVlKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NT
UGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0gICAgdm9pZCByZWFkRmVhdHVy
ZUVuZChDU1NQYXJzZXJUb2tlblR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiwgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYpOwotICAgIHZvaWQgc2tpcFVudGlsQ29tbWEoQ1NTUGFyc2VyVG9rZW5UeXBl
LCBjb25zdCBDU1NQYXJzZXJUb2tlbiYsIENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLSAgICB2b2lk
IHNraXBVbnRpbEJsb2NrRW5kKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0gICAgdm9pZCBkb25lKENTU1BhcnNlclRva2Vu
VHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0KLSAg
ICB1c2luZyBTdGF0ZSA9IHZvaWQgKExlZ2FjeU1lZGlhUXVlcnlQYXJzZXI6OiopKENTU1BhcnNl
clRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mLCBDU1NQYXJzZXJUb2tlblJhbmdlJik7
Ci0KLSAgICB2b2lkIHNldFN0YXRlQW5kUmVzdHJpY3QoU3RhdGUsIExlZ2FjeU1lZGlhUXVlcnk6
OlJlc3RyaWN0b3IpOwotICAgIHZvaWQgaGFuZGxlQmxvY2tzKGNvbnN0IENTU1BhcnNlclRva2Vu
Jik7Ci0gICAgCi0gICAgdm9pZCBjb21taXRNZWRpYVF1ZXJ5KCk7Ci0KLSAgICBjbGFzcyBNZWRp
YVF1ZXJ5RGF0YSB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUXVlcnlEYXRh
KTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IE1lZGlhUXVlcnlEYXRhKE1lZGlhUXVl
cnlQYXJzZXJDb250ZXh0KTsKLSAgICAgICAgdm9pZCBjbGVhcigpOwotICAgICAgICB2b2lkIGFk
ZEV4cHJlc3Npb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotICAgICAgICBib29sIGxhc3RFeHBy
ZXNzaW9uVmFsaWQoKTsKLSAgICAgICAgdm9pZCByZW1vdmVMYXN0RXhwcmVzc2lvbigpOwotICAg
ICAgICB2b2lkIHNldE1lZGlhVHlwZShTdHJpbmcmJiBtZWRpYVR5cGUpIHsgbV9tZWRpYVR5cGUg
PSBXVEZNb3ZlKG1lZGlhVHlwZSk7IH0KLQotICAgICAgICBMZWdhY3lNZWRpYVF1ZXJ5OjpSZXN0
cmljdG9yIHJlc3RyaWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KLSAgICAg
ICAgVmVjdG9yPE1lZGlhUXVlcnlFeHByZXNzaW9uPiYgZXhwcmVzc2lvbnMoKSB7IHJldHVybiBt
X2V4cHJlc3Npb25zOyB9Ci0gICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgbWVk
aWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVR5cGU7IH0KLQotICAgICAgICBib29sIGN1
cnJlbnRNZWRpYVF1ZXJ5Q2hhbmdlZCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAobV9yZXN0cmljdG9yICE9IExlZ2FjeU1lZGlhUXVlcnk6Ok5vbmUgfHwgbV9tZWRpYVR5
cGUgfHwgIW1fZXhwcmVzc2lvbnMuaXNFbXB0eSgpKTsKLSAgICAgICAgfQotICAgICAgICBMZWdh
Y3lNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHJlc3RyaWN0b3IoKSB7IHJldHVybiBtX3Jlc3RyaWN0
b3I7IH0KLQotICAgICAgICB2b2lkIHNldFJlc3RyaWN0b3IoTGVnYWN5TWVkaWFRdWVyeTo6UmVz
dHJpY3RvciByZXN0cmljdG9yKSB7IG1fcmVzdHJpY3RvciA9IHJlc3RyaWN0b3I7IH0KLQotICAg
ICAgICB2b2lkIHNldE1lZGlhRmVhdHVyZShjb25zdCBTdHJpbmcmIHN0cikgeyBtX21lZGlhRmVh
dHVyZSA9IHN0cjsgfQotCi0gICAgICAgIHZvaWQgc2V0TWVkaWFRdWVyeVBhcnNlckNvbnRleHQo
TWVkaWFRdWVyeVBhcnNlckNvbnRleHQgY29udGV4dCkgeyBtX2NvbnRleHQgPSBjb250ZXh0OyB9
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBMZWdhY3lNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIG1f
cmVzdHJpY3RvciB7IExlZ2FjeU1lZGlhUXVlcnk6Ok5vbmUgfTsKLSAgICAgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IG1fbWVkaWFUeXBlOwotICAgICAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cHJl
c3Npb24+IG1fZXhwcmVzc2lvbnM7Ci0gICAgICAgIFN0cmluZyBtX21lZGlhRmVhdHVyZTsKLSAg
ICAgICAgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQgbV9jb250ZXh0OwotICAgIH07Ci0KLSAgICBT
dGF0ZSBtX3N0YXRlOwotICAgIFBhcnNlclR5cGUgbV9wYXJzZXJUeXBlOwotICAgIE1lZGlhUXVl
cnlEYXRhIG1fbWVkaWFRdWVyeURhdGE7Ci0gICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1fcXVl
cnlTZXQ7Ci0gICAgTWVkaWFRdWVyeUJsb2NrV2F0Y2hlciBtX2Jsb2NrV2F0Y2hlcjsKLQotICAg
IGNvbnN0IHN0YXRpYyBTdGF0ZSBSZWFkUmVzdHJpY3RvcjsKLSAgICBjb25zdCBzdGF0aWMgU3Rh
dGUgUmVhZE1lZGlhTm90OwotICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBSZWFkTWVkaWFUeXBlOwot
ICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBSZWFkQW5kOwotICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBS
ZWFkRmVhdHVyZVN0YXJ0OwotICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBSZWFkRmVhdHVyZTsKLSAg
ICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZEZlYXR1cmVDb2xvbjsKLSAgICBjb25zdCBzdGF0aWMg
U3RhdGUgUmVhZEZlYXR1cmVWYWx1ZTsKLSAgICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZEZlYXR1
cmVFbmQ7Ci0gICAgY29uc3Qgc3RhdGljIFN0YXRlIFNraXBVbnRpbENvbW1hOwotICAgIGNvbnN0
IHN0YXRpYyBTdGF0ZSBTa2lwVW50aWxCbG9ja0VuZDsKLSAgICBjb25zdCBzdGF0aWMgU3RhdGUg
RG9uZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAKaW5kZXggNWE2NTAzODkyNjk0
Li5kOTk0Y2E1YjNlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6
ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6
ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBTaXplc0F0dHJp
YnV0ZVBhcnNlcjo6cGFyc2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSkKICAgICAgICAgaWYg
KCFtZWRpYUNvbmRpdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBib29sIG1h
dGNoZXMgPSBtZWRpYUNvbmRpdGlvbk1hdGNoZXMoKm1lZGlhQ29uZGl0aW9uKTsKLSAgICAgICAg
TVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3IgZXZhbHVhdG9yIHsgc2NyZWVuQXRvbSgpLCBtX2RvY3Vt
ZW50LCBudWxscHRyIH07CisgICAgICAgIE1ROjpNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2YWx1YXRv
ciB7IHNjcmVlbkF0b20oKSB9OwogICAgICAgICBpZiAoIWV2YWx1YXRvci5jb2xsZWN0RHluYW1p
Y0RlcGVuZGVuY2llcygqbWVkaWFDb25kaXRpb24pLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1f
ZHluYW1pY01lZGlhUXVlcnlSZXN1bHRzLmFwcGVuZCh7IE1ROjpNZWRpYVF1ZXJ5TGlzdCB7ICpt
ZWRpYUNvbmRpdGlvbiB9LCBtYXRjaGVzIH0pOwogICAgICAgICBpZiAoIW1hdGNoZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBhcnNlci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuaAppbmRleCBlZjQ4NTUzMTE2
NDQuLjM1NDkzMzAwNzEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01l
ZGlhUXVlcnlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVy
eVBhcnNlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJHZW5lcmljTWVkaWFRdWVy
eVBhcnNlci5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnkuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTVEgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggZmMzNGQ4MGQ2MzliLi42YTJi
OGUyZTdlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAtNjksNyAr
NjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3JpcHQoKSBjb25zdCB7IHJl
dHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlwdDsgfQogICAgIERPTVRva2Vu
TGlzdCYgc2l6ZXMoKTsKIAotICAgIGJvb2wgbWVkaWFBdHRyaWJ1dGVNYXRjaGVzKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKSBjb25zdDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Jvc3NPcmlnaW4oY29uc3QgQXRvbVN0cmlu
ZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcm9zc09yaWdpbigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5k
ZXggMDA3M2M4YmNmZWJkLi4xYzc2Nzg1MmIxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiAj
aW5jbHVkZSAiSFRNTFNyY3NldFBhcnNlci5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbml6ZXIuaCIK
ICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgotI2luY2x1ZGUgIkxlZ2FjeU1lZGlhUXVlcnlF
dmFsdWF0b3IuaCIKICNpbmNsdWRlICJMaW5rTG9hZGVyLmgiCiAjaW5jbHVkZSAiTGlua1JlbEF0
dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNl
ckNvbnRleHQuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAi
TWVkaWFRdWVyeVBhcnNlci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJT
ZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0yMjcsMTAgKzIyNywx
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1hdGNoKGF0dHJp
YnV0ZU5hbWUsIG1lZGlhQXR0cikgJiYgbV9tZWRpYUF0dHJpYnV0ZS5pc051bGwoKSkgewogICAg
ICAgICAgICAgICAgIG1fbWVkaWFBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVWYWx1ZS50b1N0cmluZygp
OwotICAgICAgICAgICAgICAgIGF1dG8gbWVkaWFTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUo
bV9tZWRpYUF0dHJpYnV0ZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9kb2N1bWVudCkpOwor
ICAgICAgICAgICAgICAgIGF1dG8gbWVkaWFRdWVyaWVzID0gTVE6Ok1lZGlhUXVlcnlQYXJzZXI6
OnBhcnNlKG1fbWVkaWFBdHRyaWJ1dGUsIHsgbV9kb2N1bWVudCB9KTsKICAgICAgICAgICAgICAg
ICBSZWZQdHIgZG9jdW1lbnRFbGVtZW50ID0gbV9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsK
ICAgICAgICAgICAgICAgICBMT0coTWVkaWFRdWVyaWVzLCAiSFRNTFByZWxvYWRTY2FubmVyICVw
IHByb2Nlc3NBdHRyaWJ1dGUgZXZhbHVhdGluZyBtZWRpYSBxdWVyaWVzIiwgdGhpcyk7Ci0gICAg
ICAgICAgICAgICAgbV9tZWRpYU1hdGNoZWQgPSBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsg
bV9kb2N1bWVudC5wcmludGluZygpID8gInByaW50Il9zIDogInNjcmVlbiJfcywgbV9kb2N1bWVu
dCwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkgOiBu
dWxscHRyIH0uZXZhbHVhdGUobWVkaWFTZXQuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1fbWVk
aWFNYXRjaGVkID0gTVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3IgeyBtX2RvY3VtZW50LnByaW50aW5n
KCkgPyBwcmludEF0b20oKSA6IHNjcmVlbkF0b20oKSwgbV9kb2N1bWVudCwgZG9jdW1lbnRFbGVt
ZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVh
dGUobWVkaWFRdWVyaWVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtYXRjaChh
dHRyaWJ1dGVOYW1lLCB0eXBlQXR0cikgJiYgbV90eXBlQXR0cmlidXRlLmlzTnVsbCgpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gd2hlbiBtdWx0aXBsZSB0eXBlIGF0dHJpYnV0ZXMgcHJlc2VudDog
Zmlyc3QgdmFsdWUgd2lucywgaWdub3JlIHN1YnNlcXVlbnQgKHRvIG1hdGNoIEltYWdlRWxlbWVu
dCBwYXJzZXIgYW5kIEJsaW5rIGJlaGF2aW91cnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAppbmRleCA4ZDNlMWJiODhhNDcu
LjBjYTI4NDAwNDM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFJlc291cmNlUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSAiQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiRGVmYXVsdFJlc291cmNlTG9hZFBy
aW9yaXR5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJMZWdhY3lNZWRpYVF1
ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgorI2luY2x1
ZGUgIk1lZGlhUXVlcnlQYXJzZXIuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudENhY2hlZFNjcmlw
dEZldGNoZXIuaCIKIApAQCAtODEsMTEgKzgzLDEyIEBAIHZvaWQgSFRNTFJlc291cmNlUHJlbG9h
ZGVyOjpwcmVsb2FkKHN0ZDo6dW5pcXVlX3B0cjxQcmVsb2FkUmVxdWVzdD4gcHJlbG9hZCkKIHsK
ICAgICBBU1NFUlQobV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBBU1NFUlQobV9kb2N1bWVudC5y
ZW5kZXJWaWV3KCkpOwotICAgIGlmICghcHJlbG9hZC0+bWVkaWEoKS5pc0VtcHR5KCkgJiYgIUxl
Z2FjeU1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyhtX2RvY3VtZW50
LCBwcmVsb2FkLT5tZWRpYSgpKSkKKworICAgIGF1dG8gcXVlcmllcyA9IE1ROjpNZWRpYVF1ZXJ5
UGFyc2VyOjpwYXJzZShwcmVsb2FkLT5tZWRpYSgpLCB7IG1fZG9jdW1lbnQgfSk7CisgICAgaWYg
KCFNUTo6TWVkaWFRdWVyeUV2YWx1YXRvciB7IHNjcmVlbkF0b20oKSwgbV9kb2N1bWVudCwgbV9k
b2N1bWVudC5yZW5kZXJTdHlsZSgpIH0uZXZhbHVhdGUocXVlcmllcykpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5wcmVsb2FkKHByZWxv
YWQtPnJlc291cmNlVHlwZSgpLCBwcmVsb2FkLT5yZXNvdXJjZVJlcXVlc3QobV9kb2N1bWVudCkp
OwogfQogCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCAxNmVmYWM4
OTU1N2YuLmViOTM4NDQ3OTJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xp
bmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApA
QCAtNDgsMTMgKzQ4LDE0IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRN
TFNyY3NldFBhcnNlci5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXF1ZXN0RGVzdGluYXRpb24uaCIK
LSNpbmNsdWRlICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiTGlua0hl
YWRlci5oIgogI2luY2x1ZGUgIkxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnRzLmgiCiAjaW5jbHVk
ZSAiTGlua1JlbEF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5j
bHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgorI2luY2x1
ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5UGFyc2VyLmgi
CisjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVn
aWVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CkBAIC0zMDUsNyArMzA2LDggQEAgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VD
bGllbnQ+IExpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZChjb25zdCBMaW4KICAgICAgICAgICAg
IGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCAiPGxpbmsgcmVsPXByZWxvYWQ+IGhhcyBhbiBpbnZhbGlkIGBpbWFnZXNy
Y3NldGAgdmFsdWUiX3MpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYg
KCFMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMoZG9jdW1l
bnQsIHBhcmFtcy5tZWRpYSkpCisgICAgYXV0byBxdWVyaWVzID0gTVE6Ok1lZGlhUXVlcnlQYXJz
ZXI6OnBhcnNlKHBhcmFtcy5tZWRpYSwgeyBkb2N1bWVudCB9KTsKKyAgICBpZiAoIU1ROjpNZWRp
YVF1ZXJ5RXZhbHVhdG9yIHsgc2NyZWVuQXRvbSgpLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVy
U3R5bGUoKSB9LmV2YWx1YXRlKHF1ZXJpZXMpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBpZiAoIWlzU3VwcG9ydGVkVHlwZSh0eXBlLnZhbHVlKCksIHBhcmFtcy5taW1lVHlwZSwgZG9j
dW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNz
V2FybWluZy5jcHAKaW5kZXggY2M0YTc3Yzc5NTFkLi42MTRhMzkwNWVhMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAi
Rm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIk1hdGhNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMuaCIKKyNpbmNs
dWRlICJNZWRpYVF1ZXJ5RmVhdHVyZXMuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJUYWdOYW1lLmgiCkBAIC01NSw3ICs1NSw2
IEBAIHZvaWQgUHJvY2Vzc1dhcm1pbmc6OmluaXRpYWxpemVOYW1lcygpCiAgICAgaW5pdGlhbGl6
ZUNvbW1vbkF0b21TdHJpbmdzKCk7CiAgICAgSFRNTE5hbWVzOjppbml0KCk7CiAgICAgUXVhbGlm
aWVkTmFtZTo6aW5pdCgpOwotICAgIE1lZGlhRmVhdHVyZU5hbWVzOjppbml0KCk7CiAgICAgU1ZH
TmFtZXM6OmluaXQoKTsKICAgICBYTGlua05hbWVzOjppbml0KCk7CiAgICAgTWF0aE1MTmFtZXM6
OmluaXQoKTsKQEAgLTcxLDYgKzcwLDcgQEAgdm9pZCBQcm9jZXNzV2FybWluZzo6cHJld2FybUds
b2JhbGx5KCkKICAgICAKICAgICAvLyBQcmV3YXJtcyB1c2VyIGFnZW50IHN0eWxlc2hlZXQuCiAg
ICAgU3R5bGU6OlVzZXJBZ2VudFN0eWxlOjppbml0RGVmYXVsdFN0eWxlU2hlZXQoKTsKKyAgICBN
UTo6RmVhdHVyZXM6OmFsbFNjaGVtYXMoKTsKICAgICAKICAgICAvLyBQcmV3YXJtcyBKUyBWTS4K
ICAgICBjb21tb25WTSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFp
bmVyUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVl
cnlFdmFsdWF0b3IuY3BwCmluZGV4IDZmMDY5YTFiMjFmYi4uMzE4M2VlYzkzZmEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0z
MSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlQW5jZXN0b3JJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgotI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0Lmgi
CiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SdWxlU2V0LmNwcAppbmRleCBmNmZmNjJjODMxYjUuLjI3YTM4Y2Q0NWQyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGQ6Om9wdGlv
bmFsPER5bmFtaWNNZWRpYVF1ZXJ5RXZhbHVhdGlvbkNoYW5nZXM+IFJ1bGVTZXQ6OmV2YWx1YXRl
RHluYW1pY01lZGlhUQogCiAgICAgYXV0byYgcnVsZVNldCA9IG1fbWVkaWFRdWVyeUludmFsaWRh
dGlvblJ1bGVTZXRDYWNoZS5lbnN1cmUoY29sbGVjdGVkQ2hhbmdlcy5jaGFuZ2VkUXVlcnlJbmRl
eGVzLCBbJl0gewogICAgICAgICBhdXRvIHJ1bGVTZXQgPSBSdWxlU2V0OjpjcmVhdGUoKTsKLSAg
ICAgICAgUnVsZVNldEJ1aWxkZXIgYnVpbGRlcihydWxlU2V0LCBNUTo6TWVkaWFRdWVyeUV2YWx1
YXRvcigic2NyZWVuIl9zLCBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VHJ1ZSkpOworICAgICAgICBS
dWxlU2V0QnVpbGRlciBidWlsZGVyKHJ1bGVTZXQsIE1ROjpNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsg
c2NyZWVuQXRvbSgpLCBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VHJ1ZSB9KTsKICAgICAgICAgZm9y
IChhdXRvKiBydWxlcyA6IGNvbGxlY3RlZENoYW5nZXMuYWZmZWN0ZWRSdWxlcykgewogICAgICAg
ICAgICAgZm9yIChhdXRvJiBydWxlIDogKnJ1bGVzKQogICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YWRkU3R5bGVSdWxlKHJ1bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcApp
bmRleCA0OTdiMDhlZmI5ZTUuLjVhMjAwNmY5YTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVSZXNvbHZlci5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLZXlmcmFt
ZUxpc3QuaCIKLSNpbmNsdWRlICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIk5vZGVSZW5k
ZXJTdHlsZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAppbmRleCA1MDVhZGE0ZDkw
YzEuLjZiNDcyZDk5NzdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTY5
OSw2ICs2OTksMTIgQEAgdm9pZCBTY29wZTo6c2NoZWR1bGVVcGRhdGUoVXBkYXRlVHlwZSB1cGRh
dGUpCiAgICAgbV9wZW5kaW5nVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKK2F1
dG8gU2NvcGU6Om1lZGlhUXVlcnlWaWV3cG9ydFN0YXRlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50KSAtPiBNZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZQoreworICAgIC8vIFRoZXNl
IHRoaW5ncyBhZmZlY3QgZXZhbHVhdGlvbiBvZiB2aWV3cG9ydCBkZXBlbmRlbnQgbWVkaWEgcXVl
cmllcy4KKyAgICByZXR1cm4geyBkb2N1bWVudC52aWV3KCktPmxheW91dFNpemUoKSwgZG9jdW1l
bnQuZnJhbWUoKS0+cGFnZVpvb21GYWN0b3IoKSwgZG9jdW1lbnQucHJpbnRpbmcoKSB9OworfQor
CiB2b2lkIFNjb3BlOjpldmFsdWF0ZU1lZGlhUXVlcmllc0ZvclZpZXdwb3J0Q2hhbmdlKCkKIHsK
ICAgICBhdXRvIHZpZXdwb3J0U3RhdGUgPSBtZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZUZvckRvY3Vt
ZW50KG1fZG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCmluZGV4IGQzNjE1YzU3
ZjBmNS4uYWY4MGFkMWE1OGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCkBAIC0yOCw3
ICsyOCw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxheW91dFNpemUuaCIKLSNpbmNs
dWRlICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZU9y
ZGluYWwuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTE4OCw2
ICsxODcsOSBAQCBwcml2YXRlOgogCiAgICAgVHJlZVNjb3BlJiB0cmVlU2NvcGUoKTsKIAorICAg
IHVzaW5nIE1lZGlhUXVlcnlWaWV3cG9ydFN0YXRlID0gc3RkOjp0dXBsZTxJbnRTaXplLCBmbG9h
dCwgYm9vbD47CisgICAgc3RhdGljIE1lZGlhUXVlcnlWaWV3cG9ydFN0YXRlIG1lZGlhUXVlcnlW
aWV3cG9ydFN0YXRlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKKwogICAgIERvY3VtZW50
JiBtX2RvY3VtZW50OwogICAgIFNoYWRvd1Jvb3QqIG1fc2hhZG93Um9vdCB7IG51bGxwdHIgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggZTUxMzkzMDQ0NWE5Li5hMTM2YjNj
ZjU1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTAsOCArNTAsNiBAQAog
I2ltcG9ydCA8V2ViQ29yZS9JbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU05vZGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01lZGlhTGlzdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Ob2RlRmlsdGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVSZW5kZXJT
dHlsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CkBAIC03MDgsMTUgKzcwNiw3IEBAIC0g
KEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzRm9yT3JpZW50YXRpb246KGludClvcmllbnRhdGlvbgog
CiAtIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hlcwogewotICAgIEhUTUxMaW5rRWxlbWVudCYgbGlu
ayA9ICpzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihjb3JlKHNlbGYpKTsKLQotICAgIGF1
dG8mIG1lZGlhID0gbGluay5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6bWVkaWFBdHRyKTsKLSAgICBpZiAobWVkaWEuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKLSAgICBh
dXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVl
cnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJuIExlZ2FjeU1lZGlhUXVlcnlF
dmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8g
JmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRp
YVF1ZXJ5U2V0LmdldCgpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8SFRNTExpbmtFbGVtZW50Pihj
b3JlKHNlbGYpKS0+bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKCk7CiB9CiAKIEBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463836</attachid>
            <date>2022-12-01 09:49:46 -0800</date>
            <delta_ts>2022-12-01 12:54:25 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-248594-20221201194945.patch</filename>
            <type>text/plain</type>
            <size>13492</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSBjYmE3Y2ZlNjVmODEwOWQ5MzBlNjNlNGVjNTI5ZGNlMGRmNGM5MzliIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEgRGVjIDIwMjIgMTk6NDc6MDggKzAyMDAKU3ViamVjdDogW1BBVENIXSBbTVE0XSBS
ZXBsYWNlIHRoZSBsYXN0IHVzZXMgb2YgbGVnYWN5IG1lZGlhIHF1ZXJ5IGNvZGUKIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDg1OTQgcmRhcjovLzEwMjg1MzcxMQoK
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIKClVzZSB0aGUgbW9kZXJuIHBhcnNlciBhbmQgZXZhbHVh
dG9yLgoKKiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6
CihXZWJDb3JlOjptZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZUZvckRvY3VtZW50KTogRGVsZXRlZC4K
KiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oOgoqIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwOgooV2ViQ29yZTo6
U2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OnBhcnNlKToKKiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHA6CihXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXI6
OnByb2Nlc3NBdHRyaWJ1dGUpOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNv
dXJjZVByZWxvYWRlci5jcHA6CihXZWJDb3JlOjpIVE1MUmVzb3VyY2VQcmVsb2FkZXI6OnByZWxv
YWQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcDoKKFdlYkNvcmU6Okxp
bmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZCk6CiogU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNl
dC5jcHA6CihXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6ZXZhbHVhdGVEeW5hbWljTWVkaWFRdWVy
eVJ1bGVzKToKKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcDoKKiBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcDoKKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6
bWVkaWFRdWVyeVZpZXdwb3J0U3RhdGVGb3JEb2N1bWVudCk6CiogU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTY29wZS5oOgoqIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW06Cigt
W0RPTUhUTUxMaW5rRWxlbWVudCBfbWVkaWFRdWVyeU1hdGNoZXNdKToKLS0tCiBTb3VyY2UvV2Vi
Q29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgICAgIHwgIDYgLS0tLS0tCiBT
b3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oICAgICAgIHwgIDQg
LS0tLQogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAg
ICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oICAgICAgICAg
ICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAgICAgfCAgOCArKysrLS0tLQogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFJlc291cmNlUHJlbG9hZGVyLmNwcCB8ICA5ICsrKysrKy0tLQogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuY3BwICAgICAgICAgICAgICAgICB8ICA4ICsrKysrLS0tCiBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwICAgICAgICAgICAgICAgfCAgMSAt
CiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCAgICAgICAgICAgICAgICAgIHwg
IDYgKysrKysrCiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmggICAgICAgICAgICAg
ICAgICAgIHwgIDQgKysrLQogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSAgICAg
ICAgICAgICAgICAgICB8IDEyICstLS0tLS0tLS0tLQogMTIgZmlsZXMgY2hhbmdlZCwgMjggaW5z
ZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0xl
Z2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IDk4NGIyZTFjOWNiZC4uNTQ5MWMxNGYy
OGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVnYWN5TWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwCkBAIC05OCwxMiArOTgsNiBAQCBzdGF0aWMgYm9vbCBpc0FwcGVhcmFuY2VEZXBlbmRl
bnQoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFGZWF0dXJlKQogICAgIHJldHVybiBtZWRpYUZlYXR1
cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnByZWZlcnNEYXJrSW50ZXJmYWNlOwogfQogCi1NZWRp
YVF1ZXJ5Vmlld3BvcnRTdGF0ZSBtZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZUZvckRvY3VtZW50KGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCkKLXsKLSAgICAvLyBUaGVzZSB0aGluZ3MgYWZmZWN0IGV2
YWx1YXRpb24gb2Ygdmlld3BvcnQgZGVwZW5kZW50IG1lZGlhIHF1ZXJpZXMuCi0gICAgcmV0dXJu
IHsgZG9jdW1lbnQudmlldygpLT5sYXlvdXRTaXplKCksIGRvY3VtZW50LmZyYW1lKCktPnBhZ2Va
b29tRmFjdG9yKCksIGRvY3VtZW50LnByaW50aW5nKCkgfTsKLX0KLQogTGVnYWN5TWVkaWFRdWVy
eUV2YWx1YXRvcjo6TGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvcihib29sIG1lZGlhRmVhdHVyZVJl
c3VsdCkKICAgICA6IG1fZmFsbGJhY2tSZXN1bHQobWVkaWFGZWF0dXJlUmVzdWx0KQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9MZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKaW5kZXggN2Uw
NzdmNDc1YzAxLi40OTI3NDk2NjRjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9M
ZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlZ2Fj
eU1lZGlhUXVlcnlFdmFsdWF0b3IuaApAQCAtNDQsMTAgKzQ0LDYgQEAgc3RydWN0IE1lZGlhUXVl
cnlSZXN1bHQgewogICAgIGJvb2wgcmVzdWx0OwogfTsKIAotdXNpbmcgTWVkaWFRdWVyeVZpZXdw
b3J0U3RhdGUgPSBzdGQ6OnR1cGxlPEludFNpemUsIGZsb2F0LCBib29sPjsKLQotTWVkaWFRdWVy
eVZpZXdwb3J0U3RhdGUgbWVkaWFRdWVyeVZpZXdwb3J0U3RhdGVGb3JEb2N1bWVudChjb25zdCBE
b2N1bWVudCYpOwotCiAvLyBTb21lIG9mIHRoZSBjb25zdHJ1Y3RvcnMgYXJlIHVzZWQgZm9yIGNh
c2VzIHdoZXJlIHRoZSBkZXZpY2UgY2hhcmFjdGVyaXN0aWNzIGFyZSBub3Qga25vd24uCiAvLyBU
aGVzZSAgY2FuIGJlIHVzZWQgdG8gcHJ1bmUgdGhlIGxvYWRpbmcgb2Ygc3R5bGVzaGVldHMgdG8g
b25seSB0aG9zZSB3aGljaCBhcmUgbm90IGFscmVhZHkga25vd24gdG8gbm90IG1hdGNoLgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3Bw
CmluZGV4IDVhNjUwMzg5MjY5NC4uZDk5NGNhNWIzZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmNwcApAQCAtMTM2LDcgKzEzNiw3
IEBAIGJvb2wgU2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OnBhcnNlKENTU1BhcnNlclRva2VuUmFuZ2Ug
cmFuZ2UpCiAgICAgICAgIGlmICghbWVkaWFDb25kaXRpb24pCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgYm9vbCBtYXRjaGVzID0gbWVkaWFDb25kaXRpb25NYXRjaGVzKCptZWRpYUNv
bmRpdGlvbik7Ci0gICAgICAgIE1ROjpNZWRpYVF1ZXJ5RXZhbHVhdG9yIGV2YWx1YXRvciB7IHNj
cmVlbkF0b20oKSwgbV9kb2N1bWVudCwgbnVsbHB0ciB9OworICAgICAgICBNUTo6TWVkaWFRdWVy
eUV2YWx1YXRvciBldmFsdWF0b3IgeyBzY3JlZW5BdG9tKCkgfTsKICAgICAgICAgaWYgKCFldmFs
dWF0b3IuY29sbGVjdER5bmFtaWNEZXBlbmRlbmNpZXMoKm1lZGlhQ29uZGl0aW9uKS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBtX2R5bmFtaWNNZWRpYVF1ZXJ5UmVzdWx0cy5hcHBlbmQoeyBNUTo6
TWVkaWFRdWVyeUxpc3QgeyAqbWVkaWFDb25kaXRpb24gfSwgbWF0Y2hlcyB9KTsKICAgICAgICAg
aWYgKCFtYXRjaGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggZmMz
NGQ4MGQ2MzliLi42YTJiOGUyZTdlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlwdDsg
fQogICAgIERPTVRva2VuTGlzdCYgc2l6ZXMoKTsKIAotICAgIGJvb2wgbWVkaWFBdHRyaWJ1dGVN
YXRjaGVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtZWRpYUF0dHJpYnV0ZU1h
dGNoZXMoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Jvc3NPcmlnaW4o
Y29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcm9zc09yaWdp
bigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAKaW5kZXggMDA3M2M4YmNmZWJkLi4xYzc2Nzg1MmIxMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMzQs
MTMgKzM0LDEzIEBACiAjaW5jbHVkZSAiSFRNTFNyY3NldFBhcnNlci5oIgogI2luY2x1ZGUgIkhU
TUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgotI2luY2x1ZGUgIkxl
Z2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJMaW5rTG9hZGVyLmgiCiAjaW5j
bHVkZSAiTGlua1JlbEF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCi0jaW5jbHVkZSAi
TWVkaWFRdWVyeVBhcnNlckNvbnRleHQuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBA
IC0yMjcsMTAgKzIyNywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIG1lZGlhQXR0cikgJiYgbV9tZWRpYUF0dHJpYnV0ZS5p
c051bGwoKSkgewogICAgICAgICAgICAgICAgIG1fbWVkaWFBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVW
YWx1ZS50b1N0cmluZygpOwotICAgICAgICAgICAgICAgIGF1dG8gbWVkaWFTZXQgPSBNZWRpYVF1
ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYUF0dHJpYnV0ZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQo
bV9kb2N1bWVudCkpOworICAgICAgICAgICAgICAgIGF1dG8gbWVkaWFRdWVyaWVzID0gTVE6Ok1l
ZGlhUXVlcnlQYXJzZXI6OnBhcnNlKG1fbWVkaWFBdHRyaWJ1dGUsIHsgbV9kb2N1bWVudCB9KTsK
ICAgICAgICAgICAgICAgICBSZWZQdHIgZG9jdW1lbnRFbGVtZW50ID0gbV9kb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQoKTsKICAgICAgICAgICAgICAgICBMT0coTWVkaWFRdWVyaWVzLCAiSFRNTFBy
ZWxvYWRTY2FubmVyICVwIHByb2Nlc3NBdHRyaWJ1dGUgZXZhbHVhdGluZyBtZWRpYSBxdWVyaWVz
IiwgdGhpcyk7Ci0gICAgICAgICAgICAgICAgbV9tZWRpYU1hdGNoZWQgPSBMZWdhY3lNZWRpYVF1
ZXJ5RXZhbHVhdG9yIHsgbV9kb2N1bWVudC5wcmludGluZygpID8gInByaW50Il9zIDogInNjcmVl
biJfcywgbV9kb2N1bWVudCwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21w
dXRlZFN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFTZXQuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIG1fbWVkaWFNYXRjaGVkID0gTVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3IgeyBtX2Rv
Y3VtZW50LnByaW50aW5nKCkgPyBwcmludEF0b20oKSA6IHNjcmVlbkF0b20oKSwgbV9kb2N1bWVu
dCwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkgOiBu
dWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyaWVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCB0eXBlQXR0cikgJiYgbV90eXBlQXR0cmlidXRl
LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gd2hlbiBtdWx0aXBsZSB0eXBlIGF0dHJp
YnV0ZXMgcHJlc2VudDogZmlyc3QgdmFsdWUgd2lucywgaWdub3JlIHN1YnNlcXVlbnQgKHRvIG1h
dGNoIEltYWdlRWxlbWVudCBwYXJzZXIgYW5kIEJsaW5rIGJlaGF2aW91cnMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAppbmRl
eCA4ZDNlMWJiODhhNDcuLjBjYTI4NDAwNDM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCkBAIC0zMCw3ICszMCw5IEBA
CiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiRGVmYXVs
dFJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRl
ICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1
YXRvci5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXIuaCIKKyNpbmNsdWRlICJOb2RlUmVu
ZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxl
bWVudENhY2hlZFNjcmlwdEZldGNoZXIuaCIKIApAQCAtODEsMTEgKzgzLDEyIEBAIHZvaWQgSFRN
TFJlc291cmNlUHJlbG9hZGVyOjpwcmVsb2FkKHN0ZDo6dW5pcXVlX3B0cjxQcmVsb2FkUmVxdWVz
dD4gcHJlbG9hZCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBBU1NF
UlQobV9kb2N1bWVudC5yZW5kZXJWaWV3KCkpOwotICAgIGlmICghcHJlbG9hZC0+bWVkaWEoKS5p
c0VtcHR5KCkgJiYgIUxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0
Y2hlcyhtX2RvY3VtZW50LCBwcmVsb2FkLT5tZWRpYSgpKSkKKworICAgIGF1dG8gcXVlcmllcyA9
IE1ROjpNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZShwcmVsb2FkLT5tZWRpYSgpLCB7IG1fZG9jdW1l
bnQgfSk7CisgICAgaWYgKCFNUTo6TWVkaWFRdWVyeUV2YWx1YXRvciB7IHNjcmVlbkF0b20oKSwg
bV9kb2N1bWVudCwgbV9kb2N1bWVudC5yZW5kZXJTdHlsZSgpIH0uZXZhbHVhdGUocXVlcmllcykp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIo
KS5wcmVsb2FkKHByZWxvYWQtPnJlc291cmNlVHlwZSgpLCBwcmVsb2FkLT5yZXNvdXJjZVJlcXVl
c3QobV9kb2N1bWVudCkpOwogfQogCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNw
cAppbmRleCAxNmVmYWM4OTU1N2YuLmViOTM4NDQ3OTJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
aW5rTG9hZGVyLmNwcApAQCAtNDgsMTMgKzQ4LDE0IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiSFRNTFNyY3NldFBhcnNlci5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXF1ZXN0
RGVzdGluYXRpb24uaCIKLSNpbmNsdWRlICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAj
aW5jbHVkZSAiTGlua0hlYWRlci5oIgogI2luY2x1ZGUgIkxpbmtQcmVsb2FkUmVzb3VyY2VDbGll
bnRzLmgiCiAjaW5jbHVkZSAiTGlua1JlbEF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkxvYWRlclN0
cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2luY2x1ZGUgIk1lZGlh
TGlzdC5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKKyNpbmNsdWRlICJNZWRp
YVF1ZXJ5UGFyc2VyLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCkBAIC0zMDUsNyArMzA2LDggQEAgc3RkOjp1bmlxdWVfcHRyPExpbmtQ
cmVsb2FkUmVzb3VyY2VDbGllbnQ+IExpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZChjb25zdCBM
aW4KICAgICAgICAgICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiPGxpbmsgcmVsPXByZWxvYWQ+IGhhcyBhbiBp
bnZhbGlkIGBpbWFnZXNyY3NldGAgdmFsdWUiX3MpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9Ci0gICAgaWYgKCFMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0dHJpYnV0
ZU1hdGNoZXMoZG9jdW1lbnQsIHBhcmFtcy5tZWRpYSkpCisgICAgYXV0byBxdWVyaWVzID0gTVE6
Ok1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlKHBhcmFtcy5tZWRpYSwgeyBkb2N1bWVudCB9KTsKKyAg
ICBpZiAoIU1ROjpNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgc2NyZWVuQXRvbSgpLCBkb2N1bWVudCwg
ZG9jdW1lbnQucmVuZGVyU3R5bGUoKSB9LmV2YWx1YXRlKHF1ZXJpZXMpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBpZiAoIWlzU3VwcG9ydGVkVHlwZSh0eXBlLnZhbHVlKCksIHBhcmFt
cy5taW1lVHlwZSwgZG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvUnVsZVNldC5jcHAKaW5kZXggZjZmZjYyYzgzMWI1Li4yN2EzOGNkNDVkMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1J1bGVTZXQuY3BwCkBAIC0zNTAsNyArMzUwLDcgQEAgc3RkOjpvcHRpb25hbDxEeW5h
bWljTWVkaWFRdWVyeUV2YWx1YXRpb25DaGFuZ2VzPiBSdWxlU2V0OjpldmFsdWF0ZUR5bmFtaWNN
ZWRpYVEKIAogICAgIGF1dG8mIHJ1bGVTZXQgPSBtX21lZGlhUXVlcnlJbnZhbGlkYXRpb25SdWxl
U2V0Q2FjaGUuZW5zdXJlKGNvbGxlY3RlZENoYW5nZXMuY2hhbmdlZFF1ZXJ5SW5kZXhlcywgWyZd
IHsKICAgICAgICAgYXV0byBydWxlU2V0ID0gUnVsZVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgIFJ1
bGVTZXRCdWlsZGVyIGJ1aWxkZXIocnVsZVNldCwgTVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3IoInNj
cmVlbiJfcywgTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlRydWUpKTsKKyAgICAgICAgUnVsZVNldEJ1
aWxkZXIgYnVpbGRlcihydWxlU2V0LCBNUTo6TWVkaWFRdWVyeUV2YWx1YXRvciB7IHNjcmVlbkF0
b20oKSwgTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlRydWUgfSk7CiAgICAgICAgIGZvciAoYXV0byog
cnVsZXMgOiBjb2xsZWN0ZWRDaGFuZ2VzLmFmZmVjdGVkUnVsZXMpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgcnVsZSA6ICpydWxlcykKICAgICAgICAgICAgICAgICBidWlsZGVyLmFkZFN0eWxl
UnVsZShydWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNDk3
YjA4ZWZiOWU1Li41YTIwMDZmOWE1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZXIuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVMaXN0Lmgi
Ci0jaW5jbHVkZSAiTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggNTA1YWRhNGQ5MGMxLi42YjQ3
MmQ5OTc3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCkBAIC02OTksNiArNjk5
LDEyIEBAIHZvaWQgU2NvcGU6OnNjaGVkdWxlVXBkYXRlKFVwZGF0ZVR5cGUgdXBkYXRlKQogICAg
IG1fcGVuZGluZ1VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCithdXRvIFNjb3Bl
OjptZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkgLT4gTWVkaWFRdWVyeVZpZXdwb3J0U3RhdGUKK3sKKyAgICAvLyBUaGVzZSB0aGluZ3Mg
YWZmZWN0IGV2YWx1YXRpb24gb2Ygdmlld3BvcnQgZGVwZW5kZW50IG1lZGlhIHF1ZXJpZXMuCisg
ICAgcmV0dXJuIHsgZG9jdW1lbnQudmlldygpLT5sYXlvdXRTaXplKCksIGRvY3VtZW50LmZyYW1l
KCktPnBhZ2Vab29tRmFjdG9yKCksIGRvY3VtZW50LnByaW50aW5nKCkgfTsKK30KKwogdm9pZCBT
Y29wZTo6ZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JWaWV3cG9ydENoYW5nZSgpCiB7CiAgICAgYXV0
byB2aWV3cG9ydFN0YXRlID0gbWVkaWFRdWVyeVZpZXdwb3J0U3RhdGVGb3JEb2N1bWVudChtX2Rv
Y3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaAppbmRleCBkMzYxNWM1N2YwZjUuLmFm
ODBhZDFhNThlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaApAQCAtMjgsNyArMjgsNiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJMYXlvdXRTaXplLmgiCi0jaW5jbHVkZSAiTGVn
YWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGVPcmRpbmFsLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxtZW1vcnk+CkBAIC0xODgsNiArMTg3LDkg
QEAgcHJpdmF0ZToKIAogICAgIFRyZWVTY29wZSYgdHJlZVNjb3BlKCk7CiAKKyAgICB1c2luZyBN
ZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZSA9IHN0ZDo6dHVwbGU8SW50U2l6ZSwgZmxvYXQsIGJvb2w+
OworICAgIHN0YXRpYyBNZWRpYVF1ZXJ5Vmlld3BvcnRTdGF0ZSBtZWRpYVF1ZXJ5Vmlld3BvcnRT
dGF0ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50Jik7CisKICAgICBEb2N1bWVudCYgbV9kb2N1
bWVudDsKICAgICBTaGFkb3dSb290KiBtX3NoYWRvd1Jvb3QgeyBudWxscHRyIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IGU1MTM5MzA0NDVhOS4uYTEzNmIzY2Y1NWRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTUwLDggKzUwLDYgQEAKICNpbXBvcnQg
PFdlYkNvcmUvSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNOb2RlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5TWVkaWFRdWVy
eUV2YWx1YXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9NZWRpYUxpc3QuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTm9kZUZpbHRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlUmVuZGVyU3R5bGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgpAQCAtNzA4LDE1ICs3MDYsNyBAQCAtIChCT09MKV9t
ZWRpYVF1ZXJ5TWF0Y2hlc0Zvck9yaWVudGF0aW9uOihpbnQpb3JpZW50YXRpb24KIAogLSAoQk9P
TClfbWVkaWFRdWVyeU1hdGNoZXMKIHsKLSAgICBIVE1MTGlua0VsZW1lbnQmIGxpbmsgPSAqc3Rh
dGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4oY29yZShzZWxmKSk7Ci0KLSAgICBhdXRvJiBtZWRp
YSA9IGxpbmsuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Om1lZGlh
QXR0cik7Ci0gICAgaWYgKG1lZGlhLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBsaW5rLmRvY3VtZW50KCk7Ci0gICAgYXV0byBtZWRp
YVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2Vy
Q29udGV4dChkb2N1bWVudCkpOwotICAgIHJldHVybiBMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9y
IHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVu
dC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNl
dC5nZXQoKSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxMaW5rRWxlbWVudD4oY29yZShzZWxm
KSktPm1lZGlhQXR0cmlidXRlTWF0Y2hlcygpOwogfQogCiBAZW5kCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>