<?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>253612</bug_id>
          
          <creation_ts>2023-03-08 15:46:01 -0800</creation_ts>
          <short_desc>AX: Stop caching 9 isolated object properties unnecessarily</short_desc>
          <delta_ts>2023-03-10 10:27:32 -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>Accessibility</component>
          <version>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1939882</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-03-08 15:46:01 -0800</bug_when>
    <thetext>We have many properties that can be expressed purely in terms of AXCoreObject methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1939883</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-03-08 15:46:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/106456887&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1939884</commentid>
    <comment_count>2</comment_count>
      <attachid>465365</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-03-08 15:52:15 -0800</bug_when>
    <thetext>Created attachment 465365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1939889</commentid>
    <comment_count>3</comment_count>
      <attachid>465365</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-03-08 16:03:54 -0800</bug_when>
    <thetext>Comment on attachment 465365
Patch

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

did you measure any improvements from this one?

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:-1054
&gt; -    AXCoreObject::AccessibilityChildrenVector tabs;

how come we don&apos;t need this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1939890</commentid>
    <comment_count>4</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-03-08 16:05:45 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #3)
&gt; Comment on attachment 465365 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=465365&amp;action=review
&gt; 
&gt; did you measure any improvements from this one?
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:-1054
&gt; &gt; -    AXCoreObject::AccessibilityChildrenVector tabs;
&gt; 
&gt; how come we don&apos;t need this?
The code builds `tabs` but never uses it, so I believe this is just wasted work unless you know of some reason to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1939897</commentid>
    <comment_count>5</comment_count>
      <attachid>465365</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-03-08 16:36:39 -0800</bug_when>
    <thetext>Comment on attachment 465365
Patch

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

&gt;&gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:-1054
&gt;&gt;&gt; -    AXCoreObject::AccessibilityChildrenVector tabs;
&gt;&gt; 
&gt;&gt; how come we don&apos;t need this?
&gt; 
&gt; The code builds `tabs` but never uses it, so I believe this is just wasted work unless you know of some reason to do this.

does tabChildren do some work in the background?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1939910</commentid>
    <comment_count>6</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-03-08 17:53:18 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #5)
&gt; Comment on attachment 465365 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=465365&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:-1054
&gt; &gt;&gt;&gt; -    AXCoreObject::AccessibilityChildrenVector tabs;
&gt; &gt;&gt; 
&gt; &gt;&gt; how come we don&apos;t need this?
&gt; &gt; 
&gt; &gt; The code builds `tabs` but never uses it, so I believe this is just wasted work unless you know of some reason to do this.
&gt; 
&gt; does tabChildren do some work in the background?
The only side-effect it could have is calling AXCoreObject::children(updateChildrenIfNecessary = true), but I don&apos;t think that side-effect is needed here (and if it were, a comment should be added, and a test should fail if the side effect is removed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1940110</commentid>
    <comment_count>7</comment_count>
      <attachid>465377</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-03-09 10:26:48 -0800</bug_when>
    <thetext>Created attachment 465377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1940323</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-03-10 00:20:34 -0800</bug_when>
    <thetext>commit-queue failed to commit attachment 465377 to WebKit repository. To retry, please set cq+ flag again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1940429</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-03-10 10:27:30 -0800</bug_when>
    <thetext>Committed 261508@main (ae20ce99baa2): &lt;https://commits.webkit.org/261508@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 465377.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465365</attachid>
            <date>2023-03-08 15:52:15 -0800</date>
            <delta_ts>2023-03-09 10:26:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-253612-20230308155214.patch</filename>
            <type>text/plain</type>
            <size>35985</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA4ODgxNWJiNGRlZmRlNjhjMGRlMjE3YmM2Mzk1N2IyZDMyM2YzOGI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogV2VkLCA4IE1hciAyMDIzIDE1OjQ2OjA5IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IFN0
b3AgY2FjaGluZyA5IGlzb2xhdGVkIG9iamVjdCBwcm9wZXJ0aWVzIHVubmVjZXNzYXJpbHkKIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTM2MTIgcmRhcjovL3Byb2Js
ZW0vMTA2NDU2ODg3CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoZXJlIGFyZSBzZXZl
cmFsIHByb3BlcnRpZXMgdGhhdCB3ZSBjdXJyZW50bHkgY2FjaGUgZm9yCkFYSXNvbGF0ZWRPYmpl
Y3RzIHRoYXQgY2FuIGJlIGV4cHJlc3NlZCBlbnRpcmVseSBieSBBWENvcmVPYmplY3QKbWV0aG9k
cy4gVGhpcyBtZWFucyB0aGF0IGNhY2hpbmcgdGhlbSBpcyB1bm5jZXNzYXJ5IGlmIHdlIG1vdmUg
dGhlaXIKaW1wbGVtZW50YXRpb24gdG8gQVhDb3JlT2JqZWN0LgoKQmVzaWRlcyB0aGUgcGVyZm9y
bWFuY2UgYW5kIG1lbW9yeSBpbXByb3ZlbWVudHMgZnJvbSBjYWNoaW5nIGxlc3MKcHJvcGVydGll
cywgdGhpcyBhbHNvIGltcHJvdmVzIGNvcnJlY3RuZXNzLCBhcyB0aGVzZSBwcm9wZXJ0aWVzIGNh
biBubwpsb25nZXIgYmUgc3RhbGUgKGJlY2F1c2UgdGhleSBkb24ndCBleGlzdCkuIEZvciBleGFt
cGxlLCBwcmlvciB0byB0aGlzIHBhdGNoLApBWFByb3BlcnR5TmFtZTo6SXNJbnNpZGVMaXZlUmVn
aW9uIGNvdWxkJ3ZlIGJlY29tZSBzdGFsZSBmb3IgcmUtcGFyZW50ZWQgQVggb2JqZWN0cy4KCiog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24u
aDoKKGlzVHlwZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6
c2VsZWN0ZWRDaGlsZHJlbik6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3RQb3B1cC5oOgooaXNUeXBlKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpjb250ZW50cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0luc2lkZUxp
dmVSZWdpb24gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
bGl2ZVJlZ2lvbkFuY2VzdG9yIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTWVudUxpc3RQb3B1cCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc01lbnVMaXN0T3B0aW9uIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKFdlYkNvcmU6OkFYQ29yZU9iamVj
dDo6aXNJbnNpZGVMaXZlUmVnaW9uIGNvbnN0KToKKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6dGFi
Q2hpbGRyZW4pOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1
dGVzIGNvbnN0KToKKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6Y2FuU2V0RXhwYW5kZWRBdHRyaWJ1
dGUgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTo6bGl2ZVJlZ2lvbkFuY2VzdG9yKToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuU2V0RXhwYW5kZWRB
dHRyaWJ1dGUgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6Y2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcyBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0YWJDaGlsZHJlbik6IERlbGV0ZWQuCiogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6Ciog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BWE9iamVjdENhY2hlQXRzcGkuY3Bw
OgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aS5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuY3BwOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6QVhJc29sYXRlZE9iamVj
dCk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyk6CihX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpsaW5rUmVsVmFsdWUgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5o
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6Ci0tLQogLi4uL0FjY2Vzc2liaWxpdHlNZW51TGlzdE9w
dGlvbi5oICAgICAgICAgICAgIHwgIDQgKy0KIC4uLi9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1
cC5jcHAgICAgICAgICAgICB8ICAzICstCiAuLi4vQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAu
aCAgICAgICAgICAgICAgfCAgNyArKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcCB8ICAzIC0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcCAgICAgfCAyMSArKy0tLS0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oICAgICAgIHwgMTIgKystLS0KIC4uLi9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlLmggICAgICAgICAgICB8IDUxICsrKysrKysrKysrKysrKystLS0KIC4uLi9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCAgICAgICAgICAgICB8IDI0IC0tLS0tLS0tLQogLi4uL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIHwgIDQgLS0KIC4uLi9hdHNwaS9B
WE9iamVjdENhY2hlQXRzcGkuY3BwICAgICAgICAgICAgICB8ICAyICstCiAuLi4vYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcCAgICAgICAgfCAgMiArLQogLi4uL2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcCAgICAgICAgIHwgMzkgKysrKysrKy0tLS0tLS0KIC4uLi9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oICAgICAgICAgICB8IDEyICsrLS0tCiAuLi4v
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgOCAtLS0KIC4uLi9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gICB8ICA5ICstLS0KIDE1IGZp
bGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDExNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9w
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3RPcHRpb24uaAppbmRleCA4NDRhY2E2ZmY2YWMuLmRlZTE3NTkyMjlmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dE9wdGlvbi5oCkBAIC02NCw0ICs2NCw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbiwgaXNNZW51TGlzdE9wdGlvbigpKQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24pIFwKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCYgb2Jq
ZWN0KSB7IHJldHVybiBvYmplY3QuaXNNZW51TGlzdE9wdGlvbigpOyB9IFwKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKaW5kZXggODRiNGQwYjJhNDhh
Li4xZDhhNjViM2RhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCkBAIC04Nyw3ICs4Nyw4IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OnNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByCiAgICAgICAgIGFkZENoaWxkcmVuKCk7CiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikgewotICAgICAgICBpZiAoY2hpbGQt
PmlzTWVudUxpc3RPcHRpb24oKSAmJiBjaGlsZC0+aXNTZWxlY3RlZCgpKQorICAgICAgICBhdXRv
KiBsaXZlQ2hpbGQgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oY2hpbGQu
Z2V0KCkpOworICAgICAgICBpZiAobGl2ZUNoaWxkICYmIGxpdmVDaGlsZC0+aXNNZW51TGlzdE9w
dGlvbigpICYmIGxpdmVDaGlsZC0+aXNTZWxlY3RlZCgpKQogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChjaGlsZC5nZXQoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oCmluZGV4IDE1YjFi
MDVmNjY0Yy4uZjI0ZTYwYWZkNDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oCkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAoKTsK
IAotICAgIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIExheW91dFJlY3QoKTsgfQogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdFBvcHVwOyB9
CkBAIC02NCw0ICs2NCw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwLCBpc01lbnVMaXN0UG9wdXAoKSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXApIFwKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7IHJldHVy
biBvYmplY3QuaXNNZW51TGlzdFBvcHVwKCk7IH0gXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3QmIG9iamVjdCkgeyByZXR1cm4gb2JqZWN0LmlzQWNj
ZXNzaWJpbGl0eU9iamVjdCgpICYmIGRvd25jYXN0PFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q+KG9iamVjdCkuaXNNZW51TGlzdFBvcHVwKCk7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCAwYjdjNjRiYmUzNDkuLjY5M2I4ZTRlMGFkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKQEAgLTEwNTEsOSArMTA1MSw2IEBAIEFYQ29yZU9iamVjdCogQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSgpCiAKICAgICAvLyBGSVhNRTog
SXMgdGhpcyB2YWxpZD8gQVJJQSB0YWIgaXRlbXMgc3VwcG9ydCBhcmlhLXNlbGVjdGVkOyBub3Qg
YXJpYS1jaGVja2VkLgogICAgIC8vIEZpbmQgdGhlIGNoaWxkIHRhYiBpdGVtIHRoYXQgaXMgc2Vs
ZWN0ZWQgKGllLiB0aGUgaW50VmFsdWUgPT0gMSkuCi0gICAgQVhDb3JlT2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFiczsKLSAgICB0YWJDaGlsZHJlbih0YWJzKTsKLQogICAg
IGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlmIChjaGls
ZC0+aXNUYWJJdGVtKCkgJiYgKGNoaWxkLT5pc0NoZWNrZWQoKSB8fCBjaGlsZC0+aXNTZWxlY3Rl
ZCgpKSkKICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDVkODQ2
YmYwOGFkMC4uNjE1YTk3NGNiZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTI4MjMsMTggKzI4MjMsNiBAQCBj
b25zdCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6cGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAgICAgCi1ib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzSW5zaWRlTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZikgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbGl2ZVJlZ2lvbkFuY2VzdG9yKGV4Y2x1ZGVJZk9mZik7Ci19Ci0gICAgCi1BY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZlUmVnaW9uQW5jZXN0b3IoYm9v
bCBleGNsdWRlSWZPZmYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OmZpbmRB
bmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqdGhpcywgdHJ1ZSwgW2V4Y2x1ZGVJZk9mZl0g
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewotICAgICAgICByZXR1cm4gb2Jq
ZWN0LnN1cHBvcnRzTGl2ZVJlZ2lvbihleGNsdWRlSWZPZmYpOwotICAgIH0pOwotfQotCiBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBjb25zdAogewog
ICAgIC8vIFRoaXMgcmV0dXJucyB3aGV0aGVyIHRoZSBlbGVtZW50IHN1cHBvcnRzIGFueSBnbG9i
YWwgQVJJQSBhdHRyaWJ1dGVzLgpAQCAtMzQ5OSwxMiArMzQ4Nyw5IEBAIEludFJlY3QgQWNjZXNz
aWJpbGl0eU9iamVjdDo6c2Nyb2xsVmlzaWJsZUNvbnRlbnRSZWN0KCkgY29uc3QKIAogQVhDb3Jl
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6
Y29udGVudHMoKQogewotICAgIGlmIChpc1RhYkxpc3QoKSkgewotICAgICAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgdGFiczsKLSAgICAgICAgdGFiQ2hpbGRyZW4odGFicyk7Ci0gICAg
ICAgIHJldHVybiB0YWJzOwotICAgIH0KLSAgICAKKyAgICBpZiAoaXNUYWJMaXN0KCkpCisgICAg
ICAgIHJldHVybiB0YWJDaGlsZHJlbigpOworCiAgICAgaWYgKGlzU2Nyb2xsVmlldygpKSB7CiAg
ICAgICAgIC8vIEEgc2Nyb2xsIHZpZXcncyBjb250ZW50cyBhcmUgZXZlcnl0aGluZyBleGNlcHQg
dGhlIHNjcm9sbCBiYXJzLgogICAgICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igbm9u
U2Nyb2xsYmFyQ2hpbGRyZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDAyOTRkZjRlYmUzNC4uZmRjNzc0YWJiNzFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaApAQCAtMTk1LDggKzE5NSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzR3JvdXAoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNNZW51TGlzdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVMaXN0UG9wdXAo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNNZW51TGlzdE9w
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGlzTWVudUxpc3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc05hdGl2ZVNwaW5CdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IEFYQ29yZU9iamVjdCogaW5jcmVtZW50QnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQogICAgIEFYQ29yZU9iamVjdCogZGVjcmVtZW50QnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTGFu
ZG1hcmsoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzUmFuZ2VDb250cm9sKCkgY29uc3Q7
CiAgICAgYm9vbCBpc01ldGVyKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0Owog
ICAgIGJvb2wgaXNGaWd1cmVFbGVtZW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9j
dXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc091dHB1dCgpIGNvbnN0OwpAQCAt
MjU5LDEyICsyNTksMTAgQEAgcHVibGljOgogICAgIFN0cmluZyBkYXRldGltZUF0dHJpYnV0ZVZh
bHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNldFRleHRSYW5n
ZUF0dHJpYnV0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
Y2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW4oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgY2FuU2V0RXhwYW5kZWRBdHRy
aWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgRWxlbWVudCog
ZWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIE5vZGUqIG5vZGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CkBAIC01MjQsNyArNTIyLDYgQEAgcHVibGljOgogICAgIHZv
aWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlk
ZSB7IH0KICAgICB2b2lkIHNldFNlbGVjdGVkQ2hpbGRyZW4oY29uc3QgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCB0YWJDaGls
ZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogCkBAIC02MTYsOCArNjEzLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gQVJJQSBsaXZlLXJlZ2lvbiBmZWF0dXJlcy4KICAgICBib29sIHN1cHBvcnRz
TGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGJvb2wgaXNJbnNpZGVMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGl2ZVJlZ2lvbkFuY2VzdG9yKGJv
b2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
bGl2ZVJlZ2lvbkFuY2VzdG9yKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3QgZmluYWwg
eyByZXR1cm4gQWNjZXNzaWJpbGl0eTo6bGl2ZVJlZ2lvbkFuY2VzdG9yKCp0aGlzLCBleGNsdWRl
SWZPZmYpOyB9CiAgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25TdGF0dXMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uUmVs
ZXZhbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9CiAgICAgYm9vbCBs
aXZlUmVnaW9uQXRvbWljKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlLmgKaW5kZXggODVkY2YyOWFiY2Y3Li44OTEyNmI4ZGNjYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oCkBAIC05MTcsOCArOTE3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpc0dyb3VwKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlTWFwTGlu
aygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3QgPSAwOwogCiAgICAgLy8gTmF0aXZlIHNw
aW4gYnV0dG9ucy4KICAgICBib29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9CkBAIC05NTcsNyArOTU1
LDYgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMYW5kbWFyaygpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKCkgY29uc3QgPSAwOwogCiAg
ICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0ID0gMDsKQEAgLTEwMDMsMTIgKzEwMDAs
MTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUo
KSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBj
b25zdCA9IDA7CisgICAgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBj
YW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICBib29sIGNhblNldEV4cGFu
ZGVkQXR0cmlidXRlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1lbnQoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgPSAwOwpAQCAtMTIyNyw3
ICsxMjI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RlZENoaWxkcmVuKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vs
ZWN0ZWRDaGlsZHJlbihjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRhYkNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpID0gMDsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFiQ2hp
bGRyZW4oKTsKICAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCgpIGNv
bnN0ID0gMDsKICAgICBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0IEFYQ29yZU9iamVj
dCopIGNvbnN0OwogICAgIGJvb2wgaXNBbmNlc3Rvck9mT2JqZWN0KGNvbnN0IEFYQ29yZU9iamVj
dCopIGNvbnN0OwpAQCAtMTMwMCw3ICsxMjk3LDggQEAgcHVibGljOgogCiAgICAgLy8gQVJJQSBs
aXZlLXJlZ2lvbiBmZWF0dXJlcy4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9u
KGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBp
c0luc2lkZUxpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGxpdmVSZWdpb25BbmNlc3Rvcihib29sIGV4Y2x1ZGVJ
Zk9mZiA9IHRydWUpIGNvbnN0ID0gMDsKKyAgICBib29sIGlzSW5zaWRlTGl2ZVJlZ2lvbihib29s
IGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nIGxp
dmVSZWdpb25TdGF0dXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcgbGl2
ZVJlZ2lvblJlbGV2YW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBsaXZlUmVnaW9u
QXRvbWljKCkgY29uc3QgPSAwOwpAQCAtMTQ0Miw2ICsxNDQwLDM3IEBAIGlubGluZSBWZWN0b3I8
QVhJRD4gYXhJRHMoY29uc3QgQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIG9iamVjCiAgICAgfSk7CiB9CiAKK2lubGluZSBib29sIEFYQ29yZU9iamVjdDo6aXNJbnNp
ZGVMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAoreworICAgIHJldHVybiBsaXZl
UmVnaW9uQW5jZXN0b3IoZXhjbHVkZUlmT2ZmKTsKK30KKworaW5saW5lIEFYQ29yZU9iamVjdDo6
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFYQ29yZU9iamVjdDo6dGFiQ2hpbGRyZW4oKQor
eworICAgIGlmIChyb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdCkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIHJlc3VsdDsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4o
KSkgeworICAgICAgICBpZiAoY2hpbGQtPmlzVGFiSXRlbSgpKQorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChjaGlsZCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2lubGluZSBi
b29sIEFYQ29yZU9iamVjdDo6Y2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGlzVGV4dENvbnRyb2woKTsKK30KKworaW5saW5lIGJvb2wgQVhDb3JlT2JqZWN0
OjpjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAgaWYgKHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiBzdXBwb3J0c0V4cGFuZGVkKCk7Cit9CisKIGlubGluZSBTdHJpbmcgQVhDb3Jl
T2JqZWN0OjpjdXJyZW50VmFsdWUoKSBjb25zdAogewogICAgIHN3aXRjaCAoY3VycmVudFN0YXRl
KCkpIHsKQEAgLTE1ODcsNiArMTYxNiwxNCBAQCBUKiBmaW5kUmVsYXRlZE9iamVjdEluQW5jZXN0
cnkoY29uc3QgVCYgb2JqZWN0LCBBWFJlbGF0aW9uVHlwZSByZWxhdGlvblR5cGUsIGNvbgogICAg
IHJldHVybiBudWxscHRyOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVCogbGl2ZVJlZ2lv
bkFuY2VzdG9yKGNvbnN0IFQmIG9iamVjdCwgYm9vbCBleGNsdWRlSWZPZmYpCit7CisgICAgcmV0
dXJuIGZpbmRBbmNlc3RvcjxUPihvYmplY3QsIHRydWUsIFtleGNsdWRlSWZPZmZdIChjb25zdCBU
JiBvYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5zdXBwb3J0c0xpdmVSZWdpb24oZXhj
bHVkZUlmT2ZmKTsKKyAgICB9KTsKK30KKwogdm9pZCBmaW5kTWF0Y2hpbmdPYmplY3RzKGNvbnN0
IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSYsIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJik7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEY+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAppbmRleCBlZDllNmIyN2M3NjQuLjBmNWQwZjUwYmIzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCkBAIC0yODM3LDE5ICsyODM3LDYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdAog
ICAgIH0KIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjYW5TZXRFeHBhbmRl
ZEF0dHJpYnV0ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpEZXRhaWxzKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBzdXBw
b3J0c0V4cGFuZGVkKCk7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2Fu
U2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGlzVGV4dENvbnRy
b2woKTsKLX0KLQogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZU1hcENo
aWxkcmVuKCkKIHsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3NzQm94ID0gcmVuZGVyQm94
TW9kZWxPYmplY3QoKTsKQEAgLTMyODcsMTcgKzMyNzQsNiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IHJlcwogICAgIHJldHVybiBhcmlhTGlzdGJveFZpc2libGVDaGlsZHJlbihyZXN1bHQpOwogfQog
IAotdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0YWJDaGlsZHJlbihBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKLXsKLSAgICBpZiAocm9sZVZhbHVlKCkgIT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoY29u
c3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNUYWJJ
dGVtKCkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoaWxkKTsKLSAgICB9Ci19Ci0KIHZv
aWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0QWNjZXNzaWJsZU5hbWUoY29uc3QgQXRv
bVN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBTZXR0aW5nIHRoZSBhY2Nlc3NpYmxlIG5hbWUgY2Fu
IHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGUgRE9NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmluZGV4IGVlMzhiM2Ux
NDFkNC4uYjU0NmM2M2UwNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtNzEsOSArNzEsNiBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNTYW1lU3R5bGUoY29uc3QgQVhDb3JlT2JqZWN0JikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNVbmRlcmxpbmUoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJv
b2wgY2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKLQogICAgIHZvaWQg
c2V0QWNjZXNzaWJsZU5hbWUoY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgLy8g
UHJvdmlkZXMgY29tbW9uIGxvZ2ljIHVzZWQgYnkgYWxsIGVsZW1lbnRzIHdoZW4gZGV0ZXJtaW5p
bmcgaXNJZ25vcmVkLgpAQCAtMTQxLDcgKzEzOCw2IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhh
dmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZWxlY3RlZENo
aWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
dmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkv
QVhPYmplY3RDYWNoZUF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRz
cGkvQVhPYmplY3RDYWNoZUF0c3BpLmNwcAppbmRleCAwMmQ3NWYzOWJjZmIuLjAyYmUyZjQ0OTNm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BWE9iamVj
dENhY2hlQXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkv
QVhPYmplY3RDYWNoZUF0c3BpLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIGNvcmVPYmplY3QsIEFY
Tm90aWZpYwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTWVudUxpc3RJdGVtU2VsZWN0ZWQ6
IHsKICAgICAgICAgLy8gTWVudSBsaXN0IHBvcHVwIGl0ZW1zIGFyZSBoYW5kbGVkIGJ5IEFYU2Vs
ZWN0ZWRTdGF0ZUNoYW5nZWQuCi0gICAgICAgIGF1dG8qIHBhcmVudCA9IGNvcmVPYmplY3QtPnBh
cmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICBhdXRvKiBwYXJlbnQgPSBkeW5hbWljRG93
bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oY29yZU9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25v
cmVkKCkpOwogICAgICAgICBpZiAocGFyZW50ICYmICFwYXJlbnQtPmlzTWVudUxpc3RQb3B1cCgp
KQogICAgICAgICAgICAgd3JhcHBlci0+c3RhdGVDaGFuZ2VkKCJzZWxlY3RlZCIsIGNvcmVPYmpl
Y3QtPmlzU2VsZWN0ZWQoKSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGkuY3BwCmluZGV4IDFmMDVlYmZlMTUzZS4uYzAwNjVjZTg1ZTZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGkuY3BwCkBAIC05ODIsNyArOTgyLDcgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjphdHRyaWJ1dGVzKCkgY29uc3QKICAgICAgICAg
Ly8gdG8gYmUgb2J0YWluYWJsZSBpbiB0aGUgc2FtZSBmYXNoaW9uIGFzIGFuIEFSSUEgbGFuZG1h
cmssIGZhbGwgYmFjayBvbiB0aGUgY29tcHV0ZWRSb2xlU3RyaW5nLgogICAgICAgICAvLyBXZSBh
bHNvIHdhbnQgdG8gZG8gdGhpcyBmb3IgdGhlIHN0eWxlLWZvcm1hdC1ncm91cCBlbGVtZW50IHR5
cGVzIHNvIHRoYXQgdGhlIHR5cGUgb2YgZm9ybWF0CiAgICAgICAgIC8vIGdyb3VwIGl0IGlzIGRv
ZXNuJ3QgZ2V0IGxvc3QgdG8gYSBnZW5lcmljIHBsYXRmb3JtIHJvbGUuCi0gICAgICAgIGlmICht
X2NvcmVPYmplY3QtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVu
a25vd24gJiYgKG1fY29yZU9iamVjdC0+aXNMYW5kbWFyaygpIHx8IG1fY29yZU9iamVjdC0+aXNT
dHlsZUZvcm1hdEdyb3VwKCkpKQorICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0
dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3Qt
PmlzTGFuZG1hcmsoKSB8fCAobGl2ZU9iamVjdCAmJiBsaXZlT2JqZWN0LT5pc1N0eWxlRm9ybWF0
R3JvdXAoKSkpKQogICAgICAgICAgICAgbWFwLnNldCgieG1sLXJvbGVzIl9zLCBjb21wdXRlZFJv
bGVTdHJpbmcpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCA4MDRl
MDUzNTJjOWIuLjQxZGJiM2I1MDc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAg
LTUzLDcgKzUzLDcgQEAgQVhJc29sYXRlZE9iamVjdDo6QVhJc29sYXRlZE9iamVjdChjb25zdCBS
ZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2JqZWN0LCBBWEkKICAgICAvLyBFdmVyeSBvYmpl
Y3Qgd2lsbCBoYXZlIGF0IGxlYXN0IHRoaXMgbWFueSBwcm9wZXJ0aWVzLiBXZSBjYW4gc2hyaW5r
IHRoaXMgbnVtYmVyCiAgICAgLy8gdG8gc29tZSBlc3RpbWF0ZWQgYXZlcmFnZSBvbmNlIHdlIGlt
cGxlbWVudCBzcGFyc2UgcHJvcGVydHkgc3RvcmFnZSAoaS5lLiBvbmx5IHN0b3JpbmcKICAgICAv
LyBhIHByb3BlcnR5IGlmIGl0J3Mgbm90IHRoZSBkZWZhdWx0IHZhbHVlIGZvciBpdHMgdHlwZSku
Ci0gICAgbV9wcm9wZXJ0eU1hcC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEyNik7CisgICAgbV9w
cm9wZXJ0eU1hcC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDExNik7CiAKICAgICBpbml0aWFsaXpl
UHJvcGVydGllcyhheE9iamVjdCwgaXNSb290KTsKIH0KQEAgLTk4LDggKzk4LDYgQEAgdm9pZCBB
WElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyhjb25zdCBSZWY8QWNjZXNzaWJp
bGl0eU9iamVjdD4mIGF4T2IKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51
QnV0dG9uLCBvYmplY3QuaXNNZW51QnV0dG9uKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpJc01lbnVJdGVtLCBvYmplY3QuaXNNZW51SXRlbSgpKTsKICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6SXNNZW51TGlzdCwgb2JqZWN0LmlzTWVudUxpc3QoKSk7Ci0gICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3RPcHRpb24sIG9iamVjdC5pc01l
bnVMaXN0T3B0aW9uKCkpOwotICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVM
aXN0UG9wdXAsIG9iamVjdC5pc01lbnVMaXN0UG9wdXAoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OklzTWVudVJlbGF0ZWQsIG9iamVjdC5pc01lbnVSZWxhdGVkKCkpOwogICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc011bHRpU2VsZWN0YWJsZSwgb2JqZWN0Lmlz
TXVsdGlTZWxlY3RhYmxlKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1By
ZXNzZWQsIG9iamVjdC5pc1ByZXNzZWQoKSk7CkBAIC0xMDksNyArMTA3LDYgQEAgdm9pZCBBWElz
b2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0
eU9iamVjdD4mIGF4T2IKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNTZWN1cmVG
aWVsZCwgb2JqZWN0LmlzU2VjdXJlRmllbGQoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OklzU2VsZWN0ZWQsIG9iamVjdC5pc1NlbGVjdGVkKCkpOwogICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpJc1NsaWRlciwgb2JqZWN0LmlzU2xpZGVyKCkpOwotICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1N0eWxlRm9ybWF0R3JvdXAsIG9iamVjdC5pc1N0eWxl
Rm9ybWF0R3JvdXAoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzVW52aXNp
dGVkLCBvYmplY3QuaXNVbnZpc2l0ZWQoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OklzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSwgb2JqZWN0LmlzVmFsdWVBdXRvZmlsbEF2YWls
YWJsZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNWaXNpdGVkLCBvYmpl
Y3QuaXNWaXNpdGVkKCkpOwpAQCAtMTIxLDEzICsxMTgsMTEgQEAgdm9pZCBBWElzb2xhdGVkT2Jq
ZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4m
IGF4T2IKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNEYXRldGltZUF0
dHJpYnV0ZSwgb2JqZWN0LnN1cHBvcnRzRGF0ZXRpbWVBdHRyaWJ1dGUoKSk7CiAgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OkRhdGV0aW1lQXR0cmlidXRlVmFsdWUsIG9iamVjdC5kYXRl
dGltZUF0dHJpYnV0ZVZhbHVlKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpDYW5TZXRGb2N1c0F0dHJpYnV0ZSwgb2JqZWN0LmNhblNldEZvY3VzQXR0
cmlidXRlKCkpOwotICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDYW5TZXRUZXh0UmFu
Z2VBdHRyaWJ1dGVzLCBvYmplY3QuY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpKTsKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0VmFsdWVBdHRyaWJ1dGUsIG9iamVjdC5j
YW5TZXRWYWx1ZUF0dHJpYnV0ZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
Q2FuU2V0TnVtZXJpY1ZhbHVlLCBvYmplY3QuY2FuU2V0TnVtZXJpY1ZhbHVlKCkpOwogICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlLCBvYmpl
Y3Quc3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6Q2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUsIG9iamVjdC5jYW5TZXRTZWxlY3RlZEF0
dHJpYnV0ZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0U2VsZWN0
ZWRDaGlsZHJlbiwgb2JqZWN0LmNhblNldFNlbGVjdGVkQ2hpbGRyZW4oKSk7Ci0gICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNhblNldEV4cGFuZGVkQXR0cmlidXRlLCBvYmplY3QuY2Fu
U2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OkJsb2NrcXVvdGVMZXZlbCwgb2JqZWN0LmJsb2NrcXVvdGVMZXZlbCgpKTsKICAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6SGVhZGluZ0xldmVsLCBvYmplY3QuaGVhZGluZ0xldmVsKCkp
OwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpWYWx1ZURlc2NyaXB0aW9uLCBvYmpl
Y3QudmFsdWVEZXNjcmlwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTE0OSw3ICsxNDQsNiBA
QCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhPYgogICAgIC8vIERvbid0IGNhY2hlIElEIHdoZW4gbG9n
Z2luZyBpcyBkaXNhYmxlZCBiZWNhdXNlIHdlIGRvbid0IGV4cGVjdCBub24tdGVzdCBBWCBjbGll
bnRzIHRvIGFjdHVhbGx5IHJlcXVlc3QgaXQuCiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OklkZW50aWZpZXJBdHRyaWJ1dGUsIG9iamVjdC5pZGVudGlmaWVyQXR0cmlidXRlKCkuaXNv
bGF0ZWRDb3B5KCkpOwogI2VuZGlmCi0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okxp
bmtSZWxWYWx1ZSwgb2JqZWN0LmxpbmtSZWxWYWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q3VycmVudFN0YXRlLCBzdGF0aWNfY2FzdDxpbnQ+
KG9iamVjdC5jdXJyZW50U3RhdGUoKSkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpTdXBwb3J0c0N1cnJlbnQsIG9iamVjdC5zdXBwb3J0c0N1cnJlbnQoKSk7CiAgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzS2V5U2hvcnRjdXRzLCBvYmplY3Quc3VwcG9y
dHNLZXlTaG9ydGN1dHMoKSk7CkBAIC0xNzYsMTEgKzE3MCwxMSBAQCB2b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PiYgYXhPYgogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZWFkT25seVZhbHVlLCBv
YmplY3QucmVhZE9ubHlWYWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6QXV0b0NvbXBsZXRlVmFsdWUsIG9iamVjdC5hdXRvQ29tcGxldGVWYWx1
ZSgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U3Ry
aW5nVmFsdWUsIG9iamVjdC5zdHJpbmdWYWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29sb3JWYWx1ZSwgb2JqZWN0LmNvbG9yVmFsdWUoKSk7
CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok9yaWVudGF0aW9uLCBzdGF0aWNfY2Fz
dDxpbnQ+KG9iamVjdC5vcmllbnRhdGlvbigpKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OkhpZXJhcmNoaWNhbExldmVsLCBvYmplY3QuaGllcmFyY2hpY2FsTGV2ZWwoKSk7CiAg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okxhbmd1YWdlLCBvYmplY3QubGFuZ3VhZ2Uo
KS5pc29sYXRlZENvcHkoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBv
cnRzTGl2ZVJlZ2lvbiwgb2JqZWN0LnN1cHBvcnRzTGl2ZVJlZ2lvbigpKTsKLSAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNJbnNpZGVMaXZlUmVnaW9uLCBvYmplY3QuaXNJbnNpZGVM
aXZlUmVnaW9uKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpMaXZlUmVnaW9u
U3RhdHVzLCBvYmplY3QubGl2ZVJlZ2lvblN0YXR1cygpLmlzb2xhdGVkQ29weSgpKTsKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGl2ZVJlZ2lvblJlbGV2YW50LCBvYmplY3QubGl2
ZVJlZ2lvblJlbGV2YW50KCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpMaXZlUmVnaW9uQXRvbWljLCBvYmplY3QubGl2ZVJlZ2lvbkF0b21pYygpKTsK
QEAgLTI3NywyMSArMjcxLDE1IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoY29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAgICAgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHZpc2libGVDaGlsZHJlbjsKICAgICBvYmplY3QudmlzaWJs
ZUNoaWxkcmVuKHZpc2libGVDaGlsZHJlbik7CiAgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OlZpc2libGVDaGlsZHJlbiwgdmlzaWJsZUNoaWxkcmVuKTsKLQotICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB0YWJDaGlsZHJlbjsKLSAgICBvYmplY3QudGFi
Q2hpbGRyZW4odGFiQ2hpbGRyZW4pOwotICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpUYWJDaGlsZHJlbiwgdGFiQ2hpbGRyZW4pOwotCiAgICAgc2V0T2JqZWN0VmVj
dG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkxpbmtlZE9iamVjdHMsIG9iamVjdC5saW5rZWRP
YmplY3RzKCkpOwogCi0gICAgLy8gU3BpbiBidXR0b24gc3VwcG9ydC4KLSAgICBzZXRPYmplY3RQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RGVjcmVtZW50QnV0dG9uLCBvYmplY3QuZGVjcmVtZW50
QnV0dG9uKCkpOwotICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJbmNyZW1l
bnRCdXR0b24sIG9iamVjdC5pbmNyZW1lbnRCdXR0b24oKSk7Ci0KLSAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6Q29sb3JWYWx1ZSwgb2JqZWN0LmNvbG9yVmFsdWUoKSk7CisgICAgaWYg
KG9iamVjdC5pc1NwaW5CdXR0b24oKSkgeworICAgICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6RGVjcmVtZW50QnV0dG9uLCBvYmplY3QuZGVjcmVtZW50QnV0dG9uKCkpOwor
ICAgICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SW5jcmVtZW50QnV0dG9u
LCBvYmplY3QuaW5jcmVtZW50QnV0dG9uKCkpOworICAgIH0KIAotICAgIGlmIChib29sIGlzTWF0
aEVsZW1lbnQgPSBvYmplY3QuaXNNYXRoRWxlbWVudCgpKSB7Ci0gICAgICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpJc01hdGhFbGVtZW50LCBpc01hdGhFbGVtZW50KTsKKyAgICBpZiAo
b2JqZWN0LmlzTWF0aEVsZW1lbnQoKSkgeworICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6SXNNYXRoRWxlbWVudCwgdHJ1ZSk7CiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpJc01hdGhGcmFjdGlvbiwgb2JqZWN0LmlzTWF0aEZyYWN0aW9uKCkpOwogICAgICAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoRmVuY2VkLCBvYmplY3QuaXNNYXRo
RmVuY2VkKCkpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoU3Vi
c2NyaXB0U3VwZXJzY3JpcHQsIG9iamVjdC5pc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpKTsK
QEAgLTE1NzQsNiArMTU2MiwxNyBAQCBib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omhhc1NhbWVTdHls
ZShjb25zdCBBWENvcmVPYmplY3QmIG90aGVyT2JqZWN0KSBjb25zdAogICAgIH0pOwogfQogCisv
LyBUaGUgYXR0cmlidXRlIHRoaXMgdmFsdWUgaXMgZXhwb3NlZCBhcyBpcyBub3QgdXNlZCBieSBW
b2ljZU92ZXIgb3IgYW55IG90aGVyIEFYIGNsaWVudCBvbiBtYWNPUywgc28gd2UgaW50ZW50aW9u
YWxseSBkb24ndCBjYWNoZSBpdC4KKy8vIFJlLXZpc2l0IGlmIElUTSBleHBhbmRzIHRvIG1vcmUg
cGxhdGZvcm1zLCBvciBpZiBBWCBjbGllbnRzIG5lZWQgdG8gc3RhcnQgdXNpbmcgdGhpcy4KK1N0
cmluZyBBWElzb2xhdGVkT2JqZWN0OjpsaW5rUmVsVmFsdWUoKSBjb25zdAoreworICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8U3RyaW5nPihbdGhp
c10gKCkgLT4gU3RyaW5nIHsKKyAgICAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGFzc29jaWF0ZWRB
WE9iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+bGlua1JlbFZhbHVlKCkuaXNv
bGF0ZWRDb3B5KCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfSk7Cit9CisKIEVsZW1lbnQq
IEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnQoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGNhNjNkZjlmYWE0Yi4uZjQ2NTQ1
MWRjZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICBBWElzb2xhdGVkT2JqZWN0KiBlZGl0YWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZWRpdGFibGVBbmNlc3RvcigqdGhpcyk7IH07CiAgICAgYm9v
bCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0Rm9jdXNBdHRyaWJ1dGUpOyB9CiAgICAg
Ym9vbCBpc1RleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RleHRDb250cm9sKTsgfQorICAgIGJvb2wgc3VwcG9y
dHNMaXZlUmVnaW9uKGJvb2wgPSB0cnVlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzTGl2ZVJlZ2lvbik7IH0KIAogcHJp
dmF0ZToKICAgICB2b2lkIGRldGFjaFJlbW90ZVBhcnRzKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50
VHlwZSkgb3ZlcnJpZGU7CkBAIC0xNzgsMTAgKzE3OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0ZpZWxkc2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpJc0ZpZWxkc2V0KTsgfQogICAgIGJvb2wgaXNHcm91cCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNHcm91
cCk7IH0KICAgICBib29sIGlzTWVudUxpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3QpOyB9Ci0gICAgYm9vbCBp
c01lbnVMaXN0UG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3RQb3B1cCk7IH0KLSAgICBib29sIGlzTWVudUxp
c3RPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OklzTWVudUxpc3RPcHRpb24pOyB9CiAgICAgYm9vbCBpc0J1dHRvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNCdXR0b24pOyB9Ci0gICAgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzU3R5bGVGb3Jt
YXRHcm91cCk7IH0KICAgICBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNDaGVja2VkKTsgfQogICAgIGJv
b2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpJc0VuYWJsZWQpOyB9CiAgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJ
c1NlbGVjdGVkKTsgfQpAQCAtMTk0LDEyICsxOTIsMTAgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJl
Y3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNEYXRl
dGltZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSk7IH0KICAgICBTdHJp
bmcgZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmlu
Z0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpEYXRldGltZUF0dHJpYnV0ZVZhbHVlKTsg
fQotICAgIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0VGV4dFJhbmdl
QXR0cmlidXRlcyk7IH0KICAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDYW5TZXRW
YWx1ZUF0dHJpYnV0ZSk7IH0KICAgICBib29sIGNhblNldE51bWVyaWNWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0
TnVtZXJpY1ZhbHVlKTsgfQogICAgIGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNh
blNldFNlbGVjdGVkQXR0cmlidXRlKTsgfQogICAgIGJvb2wgY2FuU2V0U2VsZWN0ZWRDaGlsZHJl
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6Q2FuU2V0U2VsZWN0ZWRDaGlsZHJlbik7IH0KLSAgICBib29sIGNhblNldEV4cGFuZGVk
QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpDYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSk7IH0KICAgICAvLyBXZSBzaG91
bGQgbmV2ZXIgY3JlYXRlIGFuIGlzb2xhdGVkIG9iamVjdCBmcm9tIGFuIGlnbm9yZWQgbGl2ZSBv
YmplY3QsIHNvIHdlIGNhbiBoYXJkY29kZSB0aGlzIHRvIGZhbHNlLgogICAgIGJvb2wgYWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdW5zaWdu
ZWRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6QmxvY2txdW90ZUxldmVsKTsgfQpAQCAt
MjIzLDcgKzIxOSw3IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24g
c29ydERpcmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vz
c2liaWxpdHlTb3J0RGlyZWN0aW9uPihpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
U29ydERpcmVjdGlvbikpOyB9CiAgICAgYm9vbCBzdXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBv
cnRzUmFuZ2VWYWx1ZSk7IH0KICAgICBTdHJpbmcgaWRlbnRpZmllckF0dHJpYnV0ZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIFN0cmluZyBsaW5rUmVsVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TGlua1JlbFZhbHVlKTsg
fQorICAgIFN0cmluZyBsaW5rUmVsVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8
U3RyaW5nPiBjbGFzc0xpc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5Q3Vy
cmVudFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19j
YXN0PEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGU+KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpDdXJyZW50U3RhdGUpKTsgfQogICAgIGJvb2wgc3VwcG9ydHNDdXJyZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpT
dXBwb3J0c0N1cnJlbnQpOyB9CkBAIC0zMTksMTQgKzMxNSwxMiBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVu
KSBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpTZWxlY3RlZENoaWxkcmVuLCBjaGlsZHJlbik7IH0KICAgICB2b2lkIHNldFNlbGVjdGVkQ2hp
bGRyZW4oY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJl
bikgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6VmlzaWJsZUNoaWxkcmVuLCBjaGlsZHJlbik7IH0KLSAgICB2b2lkIHRhYkNoaWxkcmVuKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIG92ZXJyaWRlIHsgZmlsbENoaWxk
cmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlRhYkNoaWxkcmVuLCBjaGlsZHJl
bik7IH0KICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udGVudHMoKSBvdmVycmlk
ZTsKICAgICBBdG9tU3RyaW5nIHRhZ05hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5J
Zk5lZWRlZCA9IHRydWUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vz
c2FyeSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNEZXRhY2hlZEZyb21QYXJlbnQoKSBvdmVycmlk
ZTsKLSAgICBib29sIHN1cHBvcnRzTGl2ZVJlZ2lvbihib29sID0gdHJ1ZSkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0xp
dmVSZWdpb24pOyB9Ci0gICAgYm9vbCBpc0luc2lkZUxpdmVSZWdpb24oYm9vbCA9IHRydWUpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNJbnNpZGVMaXZlUmVnaW9uKTsgfQorICAgIEFYSXNvbGF0ZWRPYmplY3QqIGxpdmVSZWdpb25B
bmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHk6OmxpdmVSZWdpb25BbmNlc3RvcigqdGhpcywgZXhjbHVkZUlmT2ZmKTsgfQog
ICAgIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uU3RhdHVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkxpdmVSZWdpb25TdGF0dXMp
OyB9CiAgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpMaXZlUmVnaW9u
UmVsZXZhbnQpOyB9CiAgICAgYm9vbCBsaXZlUmVnaW9uQXRvbWljKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpMaXZlUmVnaW9uQXRv
bWljKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggMzYzNDM2MzhkYWUyLi44NTg4YmNlMzk4
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtNzEsMTIgKzcxLDEwIEBAIGVudW0gY2xhc3Mg
QVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgQnJhaWxsZVJvbGVEZXNjcmlwdGlvbiwK
ICAgICBCdXR0b25TdGF0ZSwKICAgICBDYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbiwKLSAgICBDYW5T
ZXRFeHBhbmRlZEF0dHJpYnV0ZSwKICAgICBDYW5TZXRGb2N1c0F0dHJpYnV0ZSwKICAgICBDYW5T
ZXROdW1lcmljVmFsdWUsCiAgICAgQ2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUsCiAgICAgQ2FuU2V0
U2VsZWN0ZWRDaGlsZHJlbiwKLSAgICBDYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzLAogICAgIENh
blNldFZhbHVlQXR0cmlidXRlLAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBDYXJldEJyb3dzaW5n
RW5hYmxlZCwKQEAgLTEzNSw3ICsxMzMsNiBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDog
dWludDE2X3QgewogICAgIElzSW5kZXRlcm1pbmF0ZSwKICAgICBJc0lubGluZVRleHQsCiAgICAg
SXNJbnB1dEltYWdlLAotICAgIElzSW5zaWRlTGl2ZVJlZ2lvbiwKICAgICBJc0hlYWRpbmcsCiAg
ICAgSXNLZXlib2FyZEZvY3VzYWJsZSwKICAgICBJc0xhbmRtYXJrLApAQCAtMTYwLDggKzE1Nyw2
IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgSXNNZW51QnV0
dG9uLAogICAgIElzTWVudUl0ZW0sCiAgICAgSXNNZW51TGlzdCwKLSAgICBJc01lbnVMaXN0T3B0
aW9uLAotICAgIElzTWVudUxpc3RQb3B1cCwKICAgICBJc01lbnVSZWxhdGVkLAogICAgIElzTXVs
dGlTZWxlY3RhYmxlLAogICAgIElzUHJlc3NlZCwKQEAgLTE3Miw3ICsxNjcsNiBAQCBlbnVtIGNs
YXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIElzU2VsZWN0ZWQsCiAgICAgSXNT
ZWxlY3RlZE9wdGlvbkFjdGl2ZSwKICAgICBJc1NsaWRlciwKLSAgICBJc1N0eWxlRm9ybWF0R3Jv
dXAsCiAgICAgSXNUYWJsZSwKICAgICBJc1RhYmxlQ2VsbCwKICAgICBJc1RhYmxlQ29sdW1uLApA
QCAtMTg3LDcgKzE4MSw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7
CiAgICAgSXNXaWRnZXQsCiAgICAgS2V5U2hvcnRjdXRzLAogICAgIExhbmd1YWdlLAotICAgIExp
bmtSZWxWYWx1ZSwKICAgICBMaW5rZWRPYmplY3RzLAogICAgIExpdmVSZWdpb25BdG9taWMsCiAg
ICAgTGl2ZVJlZ2lvblJlbGV2YW50LApAQCAtMjUyLDcgKzI0NSw2IEBAIGVudW0gY2xhc3MgQVhQ
cm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgU3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSwK
ICAgICBTdXBwb3J0c1NlbGVjdGVkUm93cywKICAgICBTdXBwb3J0c1NldFNpemUsCi0gICAgVGFi
Q2hpbGRyZW4sCiAgICAgVGFibGVMZXZlbCwKICAgICBUZXh0Q29udGVudCwKICAgICBUaXRsZUF0
dHJpYnV0ZVZhbHVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRl
eCBmNzNlMWRmYzFjYjQuLjYzYTQ5OWEyYjI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KQEAgLTE3OTksMTMgKzE3OTksOCBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUxpbmtSZWxhdGlvbnNoaXBUeXBlQXR0cmlidXRlXSkKICAgICAgICAg
cmV0dXJuIGJhY2tpbmdPYmplY3QtPmxpbmtSZWxWYWx1ZSgpOwogCi0gICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRlXSkgewot
ICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJMaXN0KCkpIHsKLSAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB0YWJzQ2hpbGRy
ZW47Ci0gICAgICAgICAgICBiYWNraW5nT2JqZWN0LT50YWJDaGlsZHJlbih0YWJzQ2hpbGRyZW4p
OwotICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHRhYnNDaGlsZHJlbik7Ci0gICAgICAg
IH0KLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlUYWJzQXR0cmlidXRlXSAmJiBiYWNraW5nT2JqZWN0LT5pc1RhYkxpc3QoKSkKKyAg
ICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPnRhYkNoaWxkcmVuKCkpOwog
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlD
b250ZW50c0F0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2Jq
ZWN0LT5jb250ZW50cygpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465377</attachid>
            <date>2023-03-09 10:26:48 -0800</date>
            <delta_ts>2023-03-10 10:27:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-253612-20230309102646.patch</filename>
            <type>text/plain</type>
            <size>36063</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA1ZmQyMzI5ZmJlNTA1MmUyNGJmYTA5ZTI1NTE1Yjg4NTY1OGQ0NDgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogV2VkLCA4IE1hciAyMDIzIDE1OjQ2OjA5IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IFN0
b3AgY2FjaGluZyA5IGlzb2xhdGVkIG9iamVjdCBwcm9wZXJ0aWVzIHVubmVjZXNzYXJpbHkKIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTM2MTIgcmRhcjovL3Byb2Js
ZW0vMTA2NDU2ODg3CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoZXJlIGFyZSBzZXZl
cmFsIHByb3BlcnRpZXMgdGhhdCB3ZSBjdXJyZW50bHkgY2FjaGUgZm9yCkFYSXNvbGF0ZWRPYmpl
Y3RzIHRoYXQgY2FuIGJlIGV4cHJlc3NlZCBlbnRpcmVseSBieSBBWENvcmVPYmplY3QKbWV0aG9k
cy4gVGhpcyBtZWFucyB0aGF0IGNhY2hpbmcgdGhlbSBpcyB1bm5jZXNzYXJ5IGlmIHdlIG1vdmUg
dGhlaXIKaW1wbGVtZW50YXRpb24gdG8gQVhDb3JlT2JqZWN0LgoKQmVzaWRlcyB0aGUgcGVyZm9y
bWFuY2UgYW5kIG1lbW9yeSBpbXByb3ZlbWVudHMgZnJvbSBjYWNoaW5nIGxlc3MKcHJvcGVydGll
cywgdGhpcyBhbHNvIGltcHJvdmVzIGNvcnJlY3RuZXNzLCBhcyB0aGVzZSBwcm9wZXJ0aWVzIGNh
biBubwpsb25nZXIgYmUgc3RhbGUgKGJlY2F1c2UgdGhleSBkb24ndCBleGlzdCkuIEZvciBleGFt
cGxlLCBwcmlvciB0byB0aGlzIHBhdGNoLApBWFByb3BlcnR5TmFtZTo6SXNJbnNpZGVMaXZlUmVn
aW9uIGNvdWxkJ3ZlIGJlY29tZSBzdGFsZSBmb3IgcmUtcGFyZW50ZWQgQVggb2JqZWN0cy4KCiog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24u
aDoKKGlzVHlwZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6
c2VsZWN0ZWRDaGlsZHJlbik6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3RQb3B1cC5oOgooaXNUeXBlKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpjb250ZW50cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0luc2lkZUxp
dmVSZWdpb24gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
bGl2ZVJlZ2lvbkFuY2VzdG9yIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTWVudUxpc3RQb3B1cCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc01lbnVMaXN0T3B0aW9uIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKFdlYkNvcmU6OkFYQ29yZU9iamVj
dDo6aXNJbnNpZGVMaXZlUmVnaW9uIGNvbnN0KToKKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6dGFi
Q2hpbGRyZW4pOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1
dGVzIGNvbnN0KToKKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6Y2FuU2V0RXhwYW5kZWRBdHRyaWJ1
dGUgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTo6bGl2ZVJlZ2lvbkFuY2VzdG9yKToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuU2V0RXhwYW5kZWRB
dHRyaWJ1dGUgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6Y2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcyBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0YWJDaGlsZHJlbik6IERlbGV0ZWQuCiogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6Ciog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BWE9iamVjdENhY2hlQXRzcGkuY3Bw
OgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aS5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuY3BwOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6QVhJc29sYXRlZE9iamVj
dCk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyk6CihX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpsaW5rUmVsVmFsdWUgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5o
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6Ci0tLQogLi4uL0FjY2Vzc2liaWxpdHlNZW51TGlzdE9w
dGlvbi5oICAgICAgICAgICAgIHwgIDQgKy0KIC4uLi9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1
cC5jcHAgICAgICAgICAgICB8ICAzICstCiAuLi4vQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAu
aCAgICAgICAgICAgICAgfCAgNyArKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcCB8ICAzIC0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcCAgICAgfCAyMSArKy0tLS0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oICAgICAgIHwgMTIgKystLS0KIC4uLi9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlLmggICAgICAgICAgICB8IDUxICsrKysrKysrKysrKysrKystLS0KIC4uLi9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCAgICAgICAgICAgICB8IDI0IC0tLS0tLS0tLQogLi4uL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIHwgIDQgLS0KIC4uLi9hdHNwaS9B
WE9iamVjdENhY2hlQXRzcGkuY3BwICAgICAgICAgICAgICB8ICAyICstCiAuLi4vYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcCAgICAgICAgfCAgMiArLQogLi4uL2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcCAgICAgICAgIHwgMzkgKysrKysrKy0tLS0tLS0KIC4uLi9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oICAgICAgICAgICB8IDEyICsrLS0tCiAuLi4v
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgOCAtLS0KIC4uLi9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gICB8ICA5ICstLS0KIDE1IGZp
bGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDExNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9w
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3RPcHRpb24uaAppbmRleCA4NDRhY2E2ZmY2YWMuLmRlZTE3NTkyMjlmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dE9wdGlvbi5oCkBAIC02NCw0ICs2NCw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbiwgaXNNZW51TGlzdE9wdGlvbigpKQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24pIFwKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCYgb2Jq
ZWN0KSB7IHJldHVybiBvYmplY3QuaXNNZW51TGlzdE9wdGlvbigpOyB9IFwKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKaW5kZXggODRiNGQwYjJhNDhh
Li4xZDhhNjViM2RhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCkBAIC04Nyw3ICs4Nyw4IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OnNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByCiAgICAgICAgIGFkZENoaWxkcmVuKCk7CiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogbV9jaGlsZHJlbikgewotICAgICAgICBpZiAoY2hpbGQt
PmlzTWVudUxpc3RPcHRpb24oKSAmJiBjaGlsZC0+aXNTZWxlY3RlZCgpKQorICAgICAgICBhdXRv
KiBsaXZlQ2hpbGQgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oY2hpbGQu
Z2V0KCkpOworICAgICAgICBpZiAobGl2ZUNoaWxkICYmIGxpdmVDaGlsZC0+aXNNZW51TGlzdE9w
dGlvbigpICYmIGxpdmVDaGlsZC0+aXNTZWxlY3RlZCgpKQogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChjaGlsZC5nZXQoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oCmluZGV4IDE1YjFi
MDVmNjY0Yy4uZjI0ZTYwYWZkNDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oCkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAoKTsK
IAotICAgIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIExheW91dFJlY3QoKTsgfQogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdFBvcHVwOyB9
CkBAIC02NCw0ICs2NCw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwLCBpc01lbnVMaXN0UG9wdXAoKSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXApIFwKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7IHJldHVy
biBvYmplY3QuaXNNZW51TGlzdFBvcHVwKCk7IH0gXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3QmIG9iamVjdCkgeyByZXR1cm4gb2JqZWN0LmlzQWNj
ZXNzaWJpbGl0eU9iamVjdCgpICYmIGRvd25jYXN0PFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q+KG9iamVjdCkuaXNNZW51TGlzdFBvcHVwKCk7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCBkODllYWU2MjA5Y2UuLjAyNmI3ZjI5N2NiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKQEAgLTEwNDcsOSArMTA0Nyw2IEBAIEFYQ29yZU9iamVjdCogQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSgpCiAKICAgICAvLyBGSVhNRTog
SXMgdGhpcyB2YWxpZD8gQVJJQSB0YWIgaXRlbXMgc3VwcG9ydCBhcmlhLXNlbGVjdGVkOyBub3Qg
YXJpYS1jaGVja2VkLgogICAgIC8vIEZpbmQgdGhlIGNoaWxkIHRhYiBpdGVtIHRoYXQgaXMgc2Vs
ZWN0ZWQgKGllLiB0aGUgaW50VmFsdWUgPT0gMSkuCi0gICAgQVhDb3JlT2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFiczsKLSAgICB0YWJDaGlsZHJlbih0YWJzKTsKLQogICAg
IGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlmIChjaGls
ZC0+aXNUYWJJdGVtKCkgJiYgKGNoaWxkLT5pc0NoZWNrZWQoKSB8fCBjaGlsZC0+aXNTZWxlY3Rl
ZCgpKSkKICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDlkZTIx
OWJmOTgyMC4uNDNmMWM4Njg3ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTI4NTMsMTggKzI4NTMsNiBAQCBj
b25zdCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6cGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAgICAgCi1ib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzSW5zaWRlTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZikgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbGl2ZVJlZ2lvbkFuY2VzdG9yKGV4Y2x1ZGVJZk9mZik7Ci19Ci0gICAgCi1BY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZlUmVnaW9uQW5jZXN0b3IoYm9v
bCBleGNsdWRlSWZPZmYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OmZpbmRB
bmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqdGhpcywgdHJ1ZSwgW2V4Y2x1ZGVJZk9mZl0g
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewotICAgICAgICByZXR1cm4gb2Jq
ZWN0LnN1cHBvcnRzTGl2ZVJlZ2lvbihleGNsdWRlSWZPZmYpOwotICAgIH0pOwotfQotCiBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBjb25zdAogewog
ICAgIC8vIFRoaXMgcmV0dXJucyB3aGV0aGVyIHRoZSBlbGVtZW50IHN1cHBvcnRzIGFueSBnbG9i
YWwgQVJJQSBhdHRyaWJ1dGVzLgpAQCAtMzUyOSwxMiArMzUxNyw5IEBAIEludFJlY3QgQWNjZXNz
aWJpbGl0eU9iamVjdDo6c2Nyb2xsVmlzaWJsZUNvbnRlbnRSZWN0KCkgY29uc3QKIAogQVhDb3Jl
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6
Y29udGVudHMoKQogewotICAgIGlmIChpc1RhYkxpc3QoKSkgewotICAgICAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgdGFiczsKLSAgICAgICAgdGFiQ2hpbGRyZW4odGFicyk7Ci0gICAg
ICAgIHJldHVybiB0YWJzOwotICAgIH0KLSAgICAKKyAgICBpZiAoaXNUYWJMaXN0KCkpCisgICAg
ICAgIHJldHVybiB0YWJDaGlsZHJlbigpOworCiAgICAgaWYgKGlzU2Nyb2xsVmlldygpKSB7CiAg
ICAgICAgIC8vIEEgc2Nyb2xsIHZpZXcncyBjb250ZW50cyBhcmUgZXZlcnl0aGluZyBleGNlcHQg
dGhlIHNjcm9sbCBiYXJzLgogICAgICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igbm9u
U2Nyb2xsYmFyQ2hpbGRyZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IGFlNGY3ODIxNTZkNy4uZmZlMmIxZjE2M2E5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaApAQCAtMTk1LDggKzE5NSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzR3JvdXAoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNNZW51TGlzdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVMaXN0UG9wdXAo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNNZW51TGlzdE9w
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGlzTWVudUxpc3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc05hdGl2ZVNwaW5CdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IEFYQ29yZU9iamVjdCogaW5jcmVtZW50QnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQogICAgIEFYQ29yZU9iamVjdCogZGVjcmVtZW50QnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTGFu
ZG1hcmsoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzUmFuZ2VDb250cm9sKCkgY29uc3Q7
CiAgICAgYm9vbCBpc01ldGVyKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0Owog
ICAgIGJvb2wgaXNGaWd1cmVFbGVtZW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9j
dXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc091dHB1dCgpIGNvbnN0OwpAQCAt
MjU5LDEyICsyNTksMTAgQEAgcHVibGljOgogICAgIFN0cmluZyBkYXRldGltZUF0dHJpYnV0ZVZh
bHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNldFRleHRSYW5n
ZUF0dHJpYnV0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
Y2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW4oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgY2FuU2V0RXhwYW5kZWRBdHRy
aWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgRWxlbWVudCog
ZWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIE5vZGUqIG5vZGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CkBAIC01MjQsNyArNTIyLDYgQEAgcHVibGljOgogICAgIHZv
aWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlk
ZSB7IH0KICAgICB2b2lkIHNldFNlbGVjdGVkQ2hpbGRyZW4oY29uc3QgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCB0YWJDaGls
ZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogCkBAIC02MTYsOCArNjEzLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gQVJJQSBsaXZlLXJlZ2lvbiBmZWF0dXJlcy4KICAgICBib29sIHN1cHBvcnRz
TGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGJvb2wgaXNJbnNpZGVMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGl2ZVJlZ2lvbkFuY2VzdG9yKGJv
b2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
bGl2ZVJlZ2lvbkFuY2VzdG9yKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3QgZmluYWwg
eyByZXR1cm4gQWNjZXNzaWJpbGl0eTo6bGl2ZVJlZ2lvbkFuY2VzdG9yKCp0aGlzLCBleGNsdWRl
SWZPZmYpOyB9CiAgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25TdGF0dXMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uUmVs
ZXZhbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxsQXRvbSgpOyB9CiAgICAgYm9vbCBs
aXZlUmVnaW9uQXRvbWljKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlLmgKaW5kZXggOGViNTg4YjA3NzAxLi4xMTE0OWNmZmY1NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oCkBAIC05MjQsOCArOTI0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpc0dyb3VwKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlTWFwTGlu
aygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3QgPSAwOwogCiAgICAgLy8gTmF0aXZlIHNw
aW4gYnV0dG9ucy4KICAgICBib29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9CkBAIC05NjUsNyArOTYz
LDYgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMYW5kbWFyaygpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKCkgY29uc3QgPSAwOwogCiAg
ICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0ID0gMDsKQEAgLTEwMTEsMTIgKzEwMDgs
MTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUo
KSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBj
b25zdCA9IDA7CisgICAgYm9vbCBjYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBj
YW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKKyAgICBib29sIGNhblNldEV4cGFu
ZGVkQXR0cmlidXRlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1lbnQoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgPSAwOwpAQCAtMTIzNCw3
ICsxMjMxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RlZENoaWxkcmVuKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vs
ZWN0ZWRDaGlsZHJlbihjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRhYkNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpID0gMDsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFiQ2hp
bGRyZW4oKTsKICAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCgpIGNv
bnN0ID0gMDsKICAgICBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0IEFYQ29yZU9iamVj
dCopIGNvbnN0OwogICAgIGJvb2wgaXNBbmNlc3Rvck9mT2JqZWN0KGNvbnN0IEFYQ29yZU9iamVj
dCopIGNvbnN0OwpAQCAtMTMwNyw3ICsxMzA0LDggQEAgcHVibGljOgogCiAgICAgLy8gQVJJQSBs
aXZlLXJlZ2lvbiBmZWF0dXJlcy4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9u
KGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBp
c0luc2lkZUxpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGxpdmVSZWdpb25BbmNlc3Rvcihib29sIGV4Y2x1ZGVJ
Zk9mZiA9IHRydWUpIGNvbnN0ID0gMDsKKyAgICBib29sIGlzSW5zaWRlTGl2ZVJlZ2lvbihib29s
IGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nIGxp
dmVSZWdpb25TdGF0dXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcgbGl2
ZVJlZ2lvblJlbGV2YW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBsaXZlUmVnaW9u
QXRvbWljKCkgY29uc3QgPSAwOwpAQCAtMTQ1NSw2ICsxNDUzLDM3IEBAIGlubGluZSBTcGluQnV0
dG9uVHlwZSBBWENvcmVPYmplY3Q6OnNwaW5CdXR0b25UeXBlKCkKICAgICByZXR1cm4gaW5jcmVt
ZW50QnV0dG9uKCkgfHwgZGVjcmVtZW50QnV0dG9uKCkgPyBTcGluQnV0dG9uVHlwZTo6Q29tcG9z
aXRlIDogU3BpbkJ1dHRvblR5cGU6OlN0YW5kYWxvbmU7CiB9CiAKK2lubGluZSBib29sIEFYQ29y
ZU9iamVjdDo6aXNJbnNpZGVMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAorewor
ICAgIHJldHVybiBsaXZlUmVnaW9uQW5jZXN0b3IoZXhjbHVkZUlmT2ZmKTsKK30KKworaW5saW5l
IEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFYQ29yZU9iamVjdDo6
dGFiQ2hpbGRyZW4oKQoreworICAgIGlmIChyb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGFiTGlzdCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIEFYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdDsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNo
aWxkIDogY2hpbGRyZW4oKSkgeworICAgICAgICBpZiAoY2hpbGQtPmlzVGFiSXRlbSgpKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGlsZCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK2lubGluZSBib29sIEFYQ29yZU9iamVjdDo6Y2FuU2V0VGV4dFJhbmdlQXR0cmlidXRl
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzVGV4dENvbnRyb2woKTsKK30KKworaW5saW5lIGJv
b2wgQVhDb3JlT2JqZWN0OjpjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAg
aWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBzdXBwb3J0c0V4cGFuZGVkKCk7Cit9CisKIGlubGlu
ZSBTdHJpbmcgQVhDb3JlT2JqZWN0OjpjdXJyZW50VmFsdWUoKSBjb25zdAogewogICAgIHN3aXRj
aCAoY3VycmVudFN0YXRlKCkpIHsKQEAgLTE2MDAsNiArMTYyOSwxNCBAQCBUKiBmaW5kUmVsYXRl
ZE9iamVjdEluQW5jZXN0cnkoY29uc3QgVCYgb2JqZWN0LCBBWFJlbGF0aW9uVHlwZSByZWxhdGlv
blR5cGUsIGNvbgogICAgIHJldHVybiBudWxscHRyOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorVCogbGl2ZVJlZ2lvbkFuY2VzdG9yKGNvbnN0IFQmIG9iamVjdCwgYm9vbCBleGNsdWRlSWZP
ZmYpCit7CisgICAgcmV0dXJuIGZpbmRBbmNlc3RvcjxUPihvYmplY3QsIHRydWUsIFtleGNsdWRl
SWZPZmZdIChjb25zdCBUJiBvYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5zdXBwb3J0
c0xpdmVSZWdpb24oZXhjbHVkZUlmT2ZmKTsKKyAgICB9KTsKK30KKwogdm9pZCBmaW5kTWF0Y2hp
bmdPYmplY3RzKGNvbnN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSYsIEFYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEY+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAzMDM2MDA2YTUxZDguLmRkMTc4
NTkyMmY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0yODE4LDE5ICsyODE4LDYgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hp
bGRyZW4oKSBjb25zdAogICAgIH0KIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIHJldHVybiBzdXBwb3J0c0V4cGFuZGVkKCk7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6Y2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIGlzVGV4dENvbnRyb2woKTsKLX0KLQogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRJbWFnZU1hcENoaWxkcmVuKCkKIHsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3Nz
Qm94ID0gcmVuZGVyQm94TW9kZWxPYmplY3QoKTsKQEAgLTMyNjksMTcgKzMyNTYsNiBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImIHJlcwogICAgIHJldHVybiBhcmlhTGlzdGJveFZpc2libGVDaGlsZHJl
bihyZXN1bHQpOwogfQogIAotdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0YWJDaGls
ZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKLXsKLSAgICBpZiAocm9s
ZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3QpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgIGlm
IChjaGlsZC0+aXNUYWJJdGVtKCkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoaWxkKTsK
LSAgICB9Ci19Ci0KIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0QWNjZXNzaWJs
ZU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBTZXR0aW5nIHRoZSBhY2Nl
c3NpYmxlIG5hbWUgY2FuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGUgRE9NCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
CmluZGV4IGFkNDAzMWRmOTIzNC4uMGEyYzE4MjFlM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAt
NzEsOSArNzEsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTYW1lU3R5bGUoY29uc3QgQVhDb3Jl
T2JqZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNVbmRlcmxpbmUoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0IG92
ZXJyaWRlOwotICAgIGJvb2wgY2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlk
ZTsKLQogICAgIHZvaWQgc2V0QWNjZXNzaWJsZU5hbWUoY29uc3QgQXRvbVN0cmluZyYpIG92ZXJy
aWRlOwogCiAgICAgLy8gUHJvdmlkZXMgY29tbW9uIGxvZ2ljIHVzZWQgYnkgYWxsIGVsZW1lbnRz
IHdoZW4gZGV0ZXJtaW5pbmcgaXNJZ25vcmVkLgpAQCAtMTQwLDcgKzEzNyw2IEBAIHB1YmxpYzoK
ICAgICBib29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQo
KSBjb25zdCBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5k
YW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQVhPYmplY3RDYWNoZUF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQVhPYmplY3RDYWNoZUF0c3BpLmNwcAppbmRleCAwMmQ3NWYzOWJj
ZmIuLjAyYmUyZjQ0OTNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdHNwaS9BWE9iamVjdENhY2hlQXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQVhPYmplY3RDYWNoZUF0c3BpLmNwcApAQCAtODIsNyArODIsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3Qq
IGNvcmVPYmplY3QsIEFYTm90aWZpYwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTWVudUxp
c3RJdGVtU2VsZWN0ZWQ6IHsKICAgICAgICAgLy8gTWVudSBsaXN0IHBvcHVwIGl0ZW1zIGFyZSBo
YW5kbGVkIGJ5IEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQuCi0gICAgICAgIGF1dG8qIHBhcmVudCA9
IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICBhdXRvKiBwYXJl
bnQgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oY29yZU9iamVjdC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCkpOwogICAgICAgICBpZiAocGFyZW50ICYmICFwYXJlbnQtPmlz
TWVudUxpc3RQb3B1cCgpKQogICAgICAgICAgICAgd3JhcHBlci0+c3RhdGVDaGFuZ2VkKCJzZWxl
Y3RlZCIsIGNvcmVPYmplY3QtPmlzU2VsZWN0ZWQoKSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGkuY3BwCmluZGV4IDdlZTkyYTNiNTM4NS4uY2QzYjk0ZGZkMzM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNw
aS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCkBAIC05ODIsNyArOTgyLDcgQEAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjphdHRyaWJ1dGVzKCkg
Y29uc3QKICAgICAgICAgLy8gdG8gYmUgb2J0YWluYWJsZSBpbiB0aGUgc2FtZSBmYXNoaW9uIGFz
IGFuIEFSSUEgbGFuZG1hcmssIGZhbGwgYmFjayBvbiB0aGUgY29tcHV0ZWRSb2xlU3RyaW5nLgog
ICAgICAgICAvLyBXZSBhbHNvIHdhbnQgdG8gZG8gdGhpcyBmb3IgdGhlIHN0eWxlLWZvcm1hdC1n
cm91cCBlbGVtZW50IHR5cGVzIHNvIHRoYXQgdGhlIHR5cGUgb2YgZm9ybWF0CiAgICAgICAgIC8v
IGdyb3VwIGl0IGlzIGRvZXNuJ3QgZ2V0IGxvc3QgdG8gYSBnZW5lcmljIHBsYXRmb3JtIHJvbGUu
Ci0gICAgICAgIGlmIChsaXZlT2JqZWN0ICYmIGxpdmVPYmplY3QtPmFyaWFSb2xlQXR0cmlidXRl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24gJiYgKG1fY29yZU9iamVjdC0+aXNMYW5k
bWFyaygpIHx8IG1fY29yZU9iamVjdC0+aXNTdHlsZUZvcm1hdEdyb3VwKCkpKQorICAgICAgICBp
ZiAobGl2ZU9iamVjdCAmJiBsaXZlT2JqZWN0LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpVbmtub3duICYmIChsaXZlT2JqZWN0LT5pc0xhbmRtYXJrKCkgfHwgbGl2
ZU9iamVjdC0+aXNTdHlsZUZvcm1hdEdyb3VwKCkpKQogICAgICAgICAgICAgbWFwLnNldCgieG1s
LXJvbGVzIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmNwcAppbmRleCBkOTI1MGI1NzkxODQuLmY4YTM5ODBkZjIwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgQVhJc29sYXRlZE9iamVjdDo6QVhJ
c29sYXRlZE9iamVjdChjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2JqZWN0LCBB
WEkKICAgICAvLyBFdmVyeSBvYmplY3Qgd2lsbCBoYXZlIGF0IGxlYXN0IHRoaXMgbWFueSBwcm9w
ZXJ0aWVzLiBXZSBjYW4gc2hyaW5rIHRoaXMgbnVtYmVyCiAgICAgLy8gdG8gc29tZSBlc3RpbWF0
ZWQgYXZlcmFnZSBvbmNlIHdlIGltcGxlbWVudCBzcGFyc2UgcHJvcGVydHkgc3RvcmFnZSAoaS5l
LiBvbmx5IHN0b3JpbmcKICAgICAvLyBhIHByb3BlcnR5IGlmIGl0J3Mgbm90IHRoZSBkZWZhdWx0
IHZhbHVlIGZvciBpdHMgdHlwZSkuCi0gICAgbV9wcm9wZXJ0eU1hcC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KDEyNik7CisgICAgbV9wcm9wZXJ0eU1hcC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEx
Nik7CiAKICAgICBpbml0aWFsaXplUHJvcGVydGllcyhheE9iamVjdCwgaXNSb290KTsKIH0KQEAg
LTk4LDggKzk4LDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGll
cyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2IKICAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6SXNNZW51QnV0dG9uLCBvYmplY3QuaXNNZW51QnV0dG9uKCkpOwogICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVJdGVtLCBvYmplY3QuaXNNZW51SXRl
bSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51TGlzdCwgb2JqZWN0
LmlzTWVudUxpc3QoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxp
c3RPcHRpb24sIG9iamVjdC5pc01lbnVMaXN0T3B0aW9uKCkpOwotICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpJc01lbnVMaXN0UG9wdXAsIG9iamVjdC5pc01lbnVMaXN0UG9wdXAoKSk7
CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVudVJlbGF0ZWQsIG9iamVjdC5p
c01lbnVSZWxhdGVkKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc011bHRp
U2VsZWN0YWJsZSwgb2JqZWN0LmlzTXVsdGlTZWxlY3RhYmxlKCkpOwogICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpJc1ByZXNzZWQsIG9iamVjdC5pc1ByZXNzZWQoKSk7CkBAIC0xMDks
NyArMTA3LDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyhj
b25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2IKICAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6SXNTZWN1cmVGaWVsZCwgb2JqZWN0LmlzU2VjdXJlRmllbGQoKSk7CiAgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQsIG9iamVjdC5pc1NlbGVjdGVk
KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1NsaWRlciwgb2JqZWN0Lmlz
U2xpZGVyKCkpOwotICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1N0eWxlRm9ybWF0
R3JvdXAsIG9iamVjdC5pc1N0eWxlRm9ybWF0R3JvdXAoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OklzVW52aXNpdGVkLCBvYmplY3QuaXNVbnZpc2l0ZWQoKSk7CiAgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSwgb2JqZWN0
LmlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6SXNWaXNpdGVkLCBvYmplY3QuaXNWaXNpdGVkKCkpOwpAQCAtMTIxLDEzICsxMTgsMTEg
QEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyhjb25zdCBSZWY8
QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2IKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6U3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSwgb2JqZWN0LnN1cHBvcnRzRGF0ZXRpbWVBdHRy
aWJ1dGUoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkRhdGV0aW1lQXR0cmli
dXRlVmFsdWUsIG9iamVjdC5kYXRldGltZUF0dHJpYnV0ZVZhbHVlKCkuaXNvbGF0ZWRDb3B5KCkp
OwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDYW5TZXRGb2N1c0F0dHJpYnV0ZSwg
b2JqZWN0LmNhblNldEZvY3VzQXR0cmlidXRlKCkpOwotICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpDYW5TZXRUZXh0UmFuZ2VBdHRyaWJ1dGVzLCBvYmplY3QuY2FuU2V0VGV4dFJhbmdl
QXR0cmlidXRlcygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0VmFs
dWVBdHRyaWJ1dGUsIG9iamVjdC5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpKTsKICAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0TnVtZXJpY1ZhbHVlLCBvYmplY3QuY2FuU2V0TnVt
ZXJpY1ZhbHVlKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c1Jl
cXVpcmVkQXR0cmlidXRlLCBvYmplY3Quc3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSgpKTsKICAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUsIG9i
amVjdC5jYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6Q2FuU2V0U2VsZWN0ZWRDaGlsZHJlbiwgb2JqZWN0LmNhblNldFNlbGVjdGVkQ2hp
bGRyZW4oKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNhblNldEV4cGFuZGVk
QXR0cmlidXRlLCBvYmplY3QuY2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSk7CiAgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OkJsb2NrcXVvdGVMZXZlbCwgb2JqZWN0LmJsb2NrcXVvdGVM
ZXZlbCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGVhZGluZ0xldmVsLCBv
YmplY3QuaGVhZGluZ0xldmVsKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpW
YWx1ZURlc2NyaXB0aW9uLCBvYmplY3QudmFsdWVEZXNjcmlwdGlvbigpLmlzb2xhdGVkQ29weSgp
KTsKQEAgLTE0OSw3ICsxNDQsNiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQ
cm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhPYgogICAgIC8vIERv
bid0IGNhY2hlIElEIHdoZW4gbG9nZ2luZyBpcyBkaXNhYmxlZCBiZWNhdXNlIHdlIGRvbid0IGV4
cGVjdCBub24tdGVzdCBBWCBjbGllbnRzIHRvIGFjdHVhbGx5IHJlcXVlc3QgaXQuCiAgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklkZW50aWZpZXJBdHRyaWJ1dGUsIG9iamVjdC5pZGVu
dGlmaWVyQXR0cmlidXRlKCkuaXNvbGF0ZWRDb3B5KCkpOwogI2VuZGlmCi0gICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OkxpbmtSZWxWYWx1ZSwgb2JqZWN0LmxpbmtSZWxWYWx1ZSgpLmlz
b2xhdGVkQ29weSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q3VycmVudFN0
YXRlLCBzdGF0aWNfY2FzdDxpbnQ+KG9iamVjdC5jdXJyZW50U3RhdGUoKSkpOwogICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0N1cnJlbnQsIG9iamVjdC5zdXBwb3J0c0N1
cnJlbnQoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzS2V5U2hv
cnRjdXRzLCBvYmplY3Quc3VwcG9ydHNLZXlTaG9ydGN1dHMoKSk7CkBAIC0xNzYsMTEgKzE3MCwx
MSBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJl
ZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhPYgogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpSZWFkT25seVZhbHVlLCBvYmplY3QucmVhZE9ubHlWYWx1ZSgpLmlzb2xhdGVkQ29weSgp
KTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QXV0b0NvbXBsZXRlVmFsdWUsIG9i
amVjdC5hdXRvQ29tcGxldGVWYWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6U3RyaW5nVmFsdWUsIG9iamVjdC5zdHJpbmdWYWx1ZSgpLmlzb2xh
dGVkQ29weSgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29sb3JWYWx1ZSwg
b2JqZWN0LmNvbG9yVmFsdWUoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok9y
aWVudGF0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KG9iamVjdC5vcmllbnRhdGlvbigpKSk7CiAgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkhpZXJhcmNoaWNhbExldmVsLCBvYmplY3QuaGll
cmFyY2hpY2FsTGV2ZWwoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okxhbmd1
YWdlLCBvYmplY3QubGFuZ3VhZ2UoKS5pc29sYXRlZENvcHkoKSk7CiAgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzTGl2ZVJlZ2lvbiwgb2JqZWN0LnN1cHBvcnRzTGl2ZVJl
Z2lvbigpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNJbnNpZGVMaXZlUmVn
aW9uLCBvYmplY3QuaXNJbnNpZGVMaXZlUmVnaW9uKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpMaXZlUmVnaW9uU3RhdHVzLCBvYmplY3QubGl2ZVJlZ2lvblN0YXR1cygpLmlz
b2xhdGVkQ29weSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGl2ZVJlZ2lv
blJlbGV2YW50LCBvYmplY3QubGl2ZVJlZ2lvblJlbGV2YW50KCkuaXNvbGF0ZWRDb3B5KCkpOwog
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpMaXZlUmVnaW9uQXRvbWljLCBvYmplY3Qu
bGl2ZVJlZ2lvbkF0b21pYygpKTsKQEAgLTI3NywyMSArMjcxLDE1IEBAIHZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+JiBheE9iCiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHZpc2libGVDaGlsZHJl
bjsKICAgICBvYmplY3QudmlzaWJsZUNoaWxkcmVuKHZpc2libGVDaGlsZHJlbik7CiAgICAgc2V0
T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZpc2libGVDaGlsZHJlbiwgdmlz
aWJsZUNoaWxkcmVuKTsKLQotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB0YWJDaGls
ZHJlbjsKLSAgICBvYmplY3QudGFiQ2hpbGRyZW4odGFiQ2hpbGRyZW4pOwotICAgIHNldE9iamVj
dFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpUYWJDaGlsZHJlbiwgdGFiQ2hpbGRyZW4p
OwotCiAgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkxpbmtlZE9i
amVjdHMsIG9iamVjdC5saW5rZWRPYmplY3RzKCkpOwogCi0gICAgLy8gU3BpbiBidXR0b24gc3Vw
cG9ydC4KLSAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RGVjcmVtZW50QnV0
dG9uLCBvYmplY3QuZGVjcmVtZW50QnV0dG9uKCkpOwotICAgIHNldE9iamVjdFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpJbmNyZW1lbnRCdXR0b24sIG9iamVjdC5pbmNyZW1lbnRCdXR0b24oKSk7
Ci0KLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29sb3JWYWx1ZSwgb2JqZWN0LmNv
bG9yVmFsdWUoKSk7CisgICAgaWYgKG9iamVjdC5pc1NwaW5CdXR0b24oKSkgeworICAgICAgICBz
ZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RGVjcmVtZW50QnV0dG9uLCBvYmplY3Qu
ZGVjcmVtZW50QnV0dG9uKCkpOworICAgICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6SW5jcmVtZW50QnV0dG9uLCBvYmplY3QuaW5jcmVtZW50QnV0dG9uKCkpOworICAgIH0K
IAotICAgIGlmIChib29sIGlzTWF0aEVsZW1lbnQgPSBvYmplY3QuaXNNYXRoRWxlbWVudCgpKSB7
Ci0gICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01hdGhFbGVtZW50LCBpc01h
dGhFbGVtZW50KTsKKyAgICBpZiAob2JqZWN0LmlzTWF0aEVsZW1lbnQoKSkgeworICAgICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoRWxlbWVudCwgdHJ1ZSk7CiAgICAgICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01hdGhGcmFjdGlvbiwgb2JqZWN0LmlzTWF0
aEZyYWN0aW9uKCkpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRo
RmVuY2VkLCBvYmplY3QuaXNNYXRoRmVuY2VkKCkpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6SXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQsIG9iamVjdC5pc01hdGhTdWJz
Y3JpcHRTdXBlcnNjcmlwdCgpKTsKQEAgLTE1NzEsNiArMTU1OSwxNyBAQCBib29sIEFYSXNvbGF0
ZWRPYmplY3Q6Omhhc1NhbWVTdHlsZShjb25zdCBBWENvcmVPYmplY3QmIG90aGVyT2JqZWN0KSBj
b25zdAogICAgIH0pOwogfQogCisvLyBUaGUgYXR0cmlidXRlIHRoaXMgdmFsdWUgaXMgZXhwb3Nl
ZCBhcyBpcyBub3QgdXNlZCBieSBWb2ljZU92ZXIgb3IgYW55IG90aGVyIEFYIGNsaWVudCBvbiBt
YWNPUywgc28gd2UgaW50ZW50aW9uYWxseSBkb24ndCBjYWNoZSBpdC4KKy8vIFJlLXZpc2l0IGlm
IElUTSBleHBhbmRzIHRvIG1vcmUgcGxhdGZvcm1zLCBvciBpZiBBWCBjbGllbnRzIG5lZWQgdG8g
c3RhcnQgdXNpbmcgdGhpcy4KK1N0cmluZyBBWElzb2xhdGVkT2JqZWN0OjpsaW5rUmVsVmFsdWUo
KSBjb25zdAoreworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1h
aW5UaHJlYWQ8U3RyaW5nPihbdGhpc10gKCkgLT4gU3RyaW5nIHsKKyAgICAgICAgaWYgKGF1dG8q
IG9iamVjdCA9IGFzc29jaWF0ZWRBWE9iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIG9iamVj
dC0+bGlua1JlbFZhbHVlKCkuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfSk7Cit9CisKIEVsZW1lbnQqIEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnQoKSBjb25zdAog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4
IDFkMjVmNmY3NWY4OC4uZDk0NmEwODk0YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBA
IC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBBWElzb2xhdGVkT2JqZWN0KiBlZGl0YWJsZUFu
Y2VzdG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZWRpdGFibGVBbmNlc3Rv
cigqdGhpcyk7IH07CiAgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0Rm9j
dXNBdHRyaWJ1dGUpOyB9CiAgICAgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RleHRDb250cm9s
KTsgfQorICAgIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgPSB0cnVlKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRz
TGl2ZVJlZ2lvbik7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGRldGFjaFJlbW90ZVBhcnRzKEFj
Y2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSkgb3ZlcnJpZGU7CkBAIC0xNzgsMTAgKzE3OSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0ZpZWxkc2V0KTsgfQogICAgIGJv
b2wgaXNHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SXNHcm91cCk7IH0KICAgICBib29sIGlzTWVudUxpc3QoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVu
dUxpc3QpOyB9Ci0gICAgYm9vbCBpc01lbnVMaXN0UG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3RQb3B1cCk7
IH0KLSAgICBib29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3RPcHRpb24pOyB9CiAg
ICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNCdXR0b24pOyB9Ci0gICAgYm9vbCBpc1N0eWxlRm9ybWF0
R3JvdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzU3R5bGVGb3JtYXRHcm91cCk7IH0KICAgICBib29sIGlzQ2hlY2tlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNDaGVja2VkKTsgfQogICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0VuYWJsZWQpOyB9CiAgICAg
Ym9vbCBpc1NlbGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpJc1NlbGVjdGVkKTsgfQpAQCAtMTk0LDEyICsxOTIsMTAgQEAg
cHJpdmF0ZToKICAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNEYXRldGltZUF0
dHJpYnV0ZSk7IH0KICAgICBTdHJpbmcgZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpEYXRl
dGltZUF0dHJpYnV0ZVZhbHVlKTsgfQotICAgIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRl
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6Q2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcyk7IH0KICAgICBib29sIGNhblNldFZhbHVl
QXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpDYW5TZXRWYWx1ZUF0dHJpYnV0ZSk7IH0KICAgICBib29sIGNhblNldE51
bWVyaWNWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6Q2FuU2V0TnVtZXJpY1ZhbHVlKTsgfQogICAgIGJvb2wgY2FuU2V0U2Vs
ZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OkNhblNldFNlbGVjdGVkQXR0cmlidXRlKTsgfQogICAgIGJvb2wg
Y2FuU2V0U2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0U2VsZWN0ZWRDaGlsZHJlbik7IH0KLSAg
ICBib29sIGNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDYW5TZXRFeHBhbmRlZEF0dHJpYnV0
ZSk7IH0KICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgY3JlYXRlIGFuIGlzb2xhdGVkIG9iamVjdCBm
cm9tIGFuIGlnbm9yZWQgbGl2ZSBvYmplY3QsIHNvIHdlIGNhbiBoYXJkY29kZSB0aGlzIHRvIGZh
bHNlLgogICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdW5zaWduZWQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdW5zaWduZWRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Qmxv
Y2txdW90ZUxldmVsKTsgfQpAQCAtMjIzLDcgKzIxOSw3IEBAIHByaXZhdGU6CiAgICAgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uPihpbnRBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6U29ydERpcmVjdGlvbikpOyB9CiAgICAgYm9vbCBzdXBwb3J0
c1JhbmdlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzUmFuZ2VWYWx1ZSk7IH0KICAgICBTdHJpbmcgaWRlbnRp
ZmllckF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIFN0cmluZyBsaW5rUmVsVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6TGlua1JlbFZhbHVlKTsgfQorICAgIFN0cmluZyBsaW5rUmVsVmFsdWUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGFzc0xpc3QoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGU+KGludEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDdXJyZW50U3RhdGUpKTsgfQogICAgIGJvb2wg
c3VwcG9ydHNDdXJyZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0N1cnJlbnQpOyB9CkBAIC0zMTcsMTQgKzMxMywx
MiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTZWxlY3RlZENoaWxkcmVuLCBjaGlsZHJlbik7IH0KICAg
ICB2b2lkIHNldFNlbGVjdGVkQ2hpbGRyZW4oY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBjaGlsZHJlbikgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VmlzaWJsZUNoaWxkcmVuLCBjaGlsZHJlbik7IH0KLSAg
ICB2b2lkIHRhYkNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4p
IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OlRhYkNoaWxkcmVuLCBjaGlsZHJlbik7IH0KICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgY29udGVudHMoKSBvdmVycmlkZTsKICAgICBBdG9tU3RyaW5nIHRhZ05hbWUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVu
KGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9IHRydWUpIG92ZXJyaWRlOwogICAgIHZvaWQg
dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNEZXRhY2hl
ZEZyb21QYXJlbnQoKSBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzTGl2ZVJlZ2lvbihib29s
ID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpTdXBwb3J0c0xpdmVSZWdpb24pOyB9Ci0gICAgYm9vbCBpc0luc2lkZUxpdmVS
ZWdpb24oYm9vbCA9IHRydWUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNJbnNpZGVMaXZlUmVnaW9uKTsgfQorICAgIEFYSXNvbGF0
ZWRPYmplY3QqIGxpdmVSZWdpb25BbmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OmxpdmVSZWdpb25BbmNlc3RvcigqdGhp
cywgZXhjbHVkZUlmT2ZmKTsgfQogICAgIGNvbnN0IFN0cmluZyBsaXZlUmVnaW9uU3RhdHVzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OkxpdmVSZWdpb25TdGF0dXMpOyB9CiAgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxl
dmFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpMaXZlUmVnaW9uUmVsZXZhbnQpOyB9CiAgICAgYm9vbCBsaXZlUmVnaW9uQXRv
bWljKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpMaXZlUmVnaW9uQXRvbWljKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggZTI4
ZDdmMGY2OWRiLi42Njk1OTk5N2RlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtNzAsMTIg
KzcwLDEwIEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgQnJh
aWxsZVJvbGVEZXNjcmlwdGlvbiwKICAgICBCdXR0b25TdGF0ZSwKICAgICBDYW5IYXZlU2VsZWN0
ZWRDaGlsZHJlbiwKLSAgICBDYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSwKICAgICBDYW5TZXRGb2N1
c0F0dHJpYnV0ZSwKICAgICBDYW5TZXROdW1lcmljVmFsdWUsCiAgICAgQ2FuU2V0U2VsZWN0ZWRB
dHRyaWJ1dGUsCiAgICAgQ2FuU2V0U2VsZWN0ZWRDaGlsZHJlbiwKLSAgICBDYW5TZXRUZXh0UmFu
Z2VBdHRyaWJ1dGVzLAogICAgIENhblNldFZhbHVlQXR0cmlidXRlLAogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBDYXJldEJyb3dzaW5nRW5hYmxlZCwKQEAgLTEzNCw3ICsxMzIsNiBAQCBlbnVtIGNs
YXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIElzSW5kZXRlcm1pbmF0ZSwKICAg
ICBJc0lubGluZVRleHQsCiAgICAgSXNJbnB1dEltYWdlLAotICAgIElzSW5zaWRlTGl2ZVJlZ2lv
biwKICAgICBJc0hlYWRpbmcsCiAgICAgSXNLZXlib2FyZEZvY3VzYWJsZSwKICAgICBJc0xhbmRt
YXJrLApAQCAtMTU5LDggKzE1Niw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50
MTZfdCB7CiAgICAgSXNNZW51QnV0dG9uLAogICAgIElzTWVudUl0ZW0sCiAgICAgSXNNZW51TGlz
dCwKLSAgICBJc01lbnVMaXN0T3B0aW9uLAotICAgIElzTWVudUxpc3RQb3B1cCwKICAgICBJc01l
bnVSZWxhdGVkLAogICAgIElzTXVsdGlTZWxlY3RhYmxlLAogICAgIElzUHJlc3NlZCwKQEAgLTE3
MSw3ICsxNjYsNiBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAg
IElzU2VsZWN0ZWQsCiAgICAgSXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSwKICAgICBJc1NsaWRlciwK
LSAgICBJc1N0eWxlRm9ybWF0R3JvdXAsCiAgICAgSXNUYWJsZSwKICAgICBJc1RhYmxlQ2VsbCwK
ICAgICBJc1RhYmxlQ29sdW1uLApAQCAtMTg2LDcgKzE4MCw2IEBAIGVudW0gY2xhc3MgQVhQcm9w
ZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgSXNXaWRnZXQsCiAgICAgS2V5U2hvcnRjdXRzLAog
ICAgIExhbmd1YWdlLAotICAgIExpbmtSZWxWYWx1ZSwKICAgICBMaW5rZWRPYmplY3RzLAogICAg
IExpdmVSZWdpb25BdG9taWMsCiAgICAgTGl2ZVJlZ2lvblJlbGV2YW50LApAQCAtMjUxLDcgKzI0
NCw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgU3VwcG9y
dHNSZXF1aXJlZEF0dHJpYnV0ZSwKICAgICBTdXBwb3J0c1NlbGVjdGVkUm93cywKICAgICBTdXBw
b3J0c1NldFNpemUsCi0gICAgVGFiQ2hpbGRyZW4sCiAgICAgVGFibGVMZXZlbCwKICAgICBUZXh0
Q29udGVudCwKICAgICBUaXRsZUF0dHJpYnV0ZVZhbHVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQppbmRleCBjMDkyMzlkYzZiOTMuLjViMTdjMGM3NGNhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTE4MDgsMTMgKzE4MDgsOCBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUxpbmtSZWxhdGlvbnNoaXBUeXBl
QXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPmxpbmtSZWxWYWx1ZSgp
OwogCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlUYWJzQXR0cmlidXRlXSkgewotICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJMaXN0
KCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciB0YWJzQ2hpbGRyZW47Ci0gICAgICAgICAgICBiYWNraW5nT2JqZWN0LT50YWJD
aGlsZHJlbih0YWJzQ2hpbGRyZW4pOwotICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KHRh
YnNDaGlsZHJlbik7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRlXSAmJiBiYWNraW5nT2Jq
ZWN0LT5pc1RhYkxpc3QoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmpl
Y3QtPnRhYkNoaWxkcmVuKCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlDb250ZW50c0F0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBt
YWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb250ZW50cygpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>