<?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>232755</bug_id>
          
          <creation_ts>2021-11-05 06:12:56 -0700</creation_ts>
          <short_desc>[GTK][a11y] Add implementation of document interface when building with ATSPI</short_desc>
          <delta_ts>2021-11-19 06:51:21 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>232749</dependson>
          <blocked>230253</blocked>
    
    <blocked>232782</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>aperez</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1812111</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-05 06:12:56 -0700</bug_when>
    <thetext>Implement document</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812112</commentid>
    <comment_count>1</comment_count>
      <attachid>443390</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-05 06:17:29 -0700</bug_when>
    <thetext>Created attachment 443390
Patch

This won&apos;t apply because it depends on other bugs not fixed yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816820</commentid>
    <comment_count>2</comment_count>
      <attachid>444809</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-19 05:45:40 -0800</bug_when>
    <thetext>Created attachment 444809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816834</commentid>
    <comment_count>3</comment_count>
      <attachid>444813</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-19 06:31:13 -0800</bug_when>
    <thetext>Created attachment 444813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816838</commentid>
    <comment_count>4</comment_count>
      <attachid>444813</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-11-19 06:42:01 -0800</bug_when>
    <thetext>Comment on attachment 444813
Patch

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

&gt; Source/WebCore/accessibility/atspi/AccessibilityObjectDocumentAtspi.cpp:112
&gt; +            return map;

I would first check m_coreObject and do the early return, after that we know
that it will not be null and avoid checking it again. I am thinking of this:

  if (!m_coreObject)
      return map;

  m_coreObject-&gt;updateBackingStore();
  auto* document = m_coreObject-&gt;document();
  // ...rest of the code as it was...

&gt; Source/WebCore/accessibility/atspi/AccessibilityObjectDocumentAtspi.cpp:148
&gt; +            return { };

Same here, there are two null-checks on m_coreObject one right after the other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816839</commentid>
    <comment_count>5</comment_count>
      <attachid>444813</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-19 06:46:20 -0800</bug_when>
    <thetext>Comment on attachment 444813
Patch

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

&gt;&gt; Source/WebCore/accessibility/atspi/AccessibilityObjectDocumentAtspi.cpp:112
&gt;&gt; +            return map;
&gt; 
&gt; I would first check m_coreObject and do the early return, after that we know
&gt; that it will not be null and avoid checking it again. I am thinking of this:
&gt; 
&gt;   if (!m_coreObject)
&gt;       return map;
&gt; 
&gt;   m_coreObject-&gt;updateBackingStore();
&gt;   auto* document = m_coreObject-&gt;document();
&gt;   // ...rest of the code as it was...

This is because updateBackingStore can make m_coreObject nullptr.

&gt;&gt; Source/WebCore/accessibility/atspi/AccessibilityObjectDocumentAtspi.cpp:148
&gt;&gt; +            return { };
&gt; 
&gt; Same here, there are two null-checks on m_coreObject one right after the other.

Same here, the pattern is repeated everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816843</commentid>
    <comment_count>6</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-11-19 06:49:46 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #5)
&gt; Comment on attachment 444813 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=444813&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/accessibility/atspi/AccessibilityObjectDocumentAtspi.cpp:112
&gt; &gt;&gt; +            return map;
&gt; &gt; 
&gt; &gt; I would first check m_coreObject and do the early return, after that we know
&gt; &gt; that it will not be null and avoid checking it again. I am thinking of this:
&gt; &gt; 
&gt; &gt;   if (!m_coreObject)
&gt; &gt;       return map;
&gt; &gt; 
&gt; &gt;   m_coreObject-&gt;updateBackingStore();
&gt; &gt;   auto* document = m_coreObject-&gt;document();
&gt; &gt;   // ...rest of the code as it was...
&gt; 
&gt; This is because updateBackingStore can make m_coreObject nullptr.
&gt; 
&gt; &gt;&gt; Source/WebCore/accessibility/atspi/AccessibilityObjectDocumentAtspi.cpp:148
&gt; &gt;&gt; +            return { };
&gt; &gt; 
&gt; &gt; Same here, there are two null-checks on m_coreObject one right after the other.
&gt; 
&gt; Same here, the pattern is repeated everywhere.

Right. Thanks for commenting on this :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816846</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-19 06:51:21 -0800</bug_when>
    <thetext>Committed r286059 (244446@main): &lt;https://commits.webkit.org/244446@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443390</attachid>
            <date>2021-11-05 06:17:29 -0700</date>
            <delta_ts>2021-11-19 05:45:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-document.diff</filename>
            <type>text/plain</type>
            <size>20431</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NmI5OTdmNWUxYzkuLjliNDlhMmMxZGE0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDIxLTExLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2Yg
ZG9jdW1lbnQgaW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0aCBBVFNQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNzU1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmludGVyZmFjZXNG
b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpw
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6bG9jYWxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YnVp
bGRJbnRlcmZhY2VzIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdERvY3VtZW50QXRzcGkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6ZG9jdW1lbnRBdHRyaWJ1dGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpkb2N1bWVudEF0dHJp
YnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
Ojpkb2N1bWVudExvY2FsZSBjb25zdCk6CisKIDIwMjEtMTEtMDUgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbXBs
ZW1lbnRhdGlvbiBvZiBhY3Rpb24gaW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0aCBBVFNQSQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzR1RLLnR4dAppbmRleCA0MDdmM2Q2NGQ5N2IuLjBiNDkwODgzNzhhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0dUSy50eHQKQEAgLTQzLDYgKzQzLDcgQEAgYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nl
c3NpYmlsaXR5QXRzcGkuY3BwCiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAKIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEFjdGlv
bkF0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q29tcG9u
ZW50QXRzcGkuY3BwCithY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3REb2N1
bWVudEF0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlw
ZXJsaW5rQXRzcGkuY3BwCiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RI
eXBlcnRleHRBdHNwaS5jcHAKIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFRleHRBdHNwaS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAppbmRleCA1MDc5N2Jk
NDc1MjEuLjdhZWEwZGMzMzkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcApAQCAt
OTEsNiArOTEsOSBAQCBPcHRpb25TZXQ8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpJbnRlcmZh
Y2U+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6aW50ZXJmYQogICAgIGlmIChjb3JlT2JqZWN0
LmlzTGluaygpIHx8IChpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KHJlbmRlcmVyKSkpCiAgICAg
ICAgIGludGVyZmFjZXMuYWRkKEludGVyZmFjZTo6SHlwZXJsaW5rKTsKIAorICAgIGlmIChjb3Jl
T2JqZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQorICAgICAg
ICBpbnRlcmZhY2VzLmFkZChJbnRlcmZhY2U6OkRvY3VtZW50KTsKKwogICAgIHJldHVybiBpbnRl
cmZhY2VzOwogfQogCkBAIC00NDUsNyArNDQ4LDcgQEAgR0RCdXNJbnRlcmZhY2VWVGFibGUgQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzX2FjY2Vzc2libGVGdW5jdGlvbnMgPSB7CiAgICAgICAg
IGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIkRlc2NyaXB0aW9uIikpCiAgICAgICAgICAg
ICByZXR1cm4gZ192YXJpYW50X25ld19zdHJpbmcoYXRzcGlPYmplY3QtPmRlc2NyaXB0aW9uKCku
ZGF0YSgpKTsKICAgICAgICAgaWYgKCFnX3N0cmNtcDAocHJvcGVydHlOYW1lLCAiTG9jYWxlIikp
Ci0gICAgICAgICAgICByZXR1cm4gZ192YXJpYW50X25ld19zdHJpbmcoc2V0bG9jYWxlKExDX01F
U1NBR0VTLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXR1cm4gZ192YXJpYW50X25ld19zdHJp
bmcoYXRzcGlPYmplY3QtPmxvY2FsZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBpZiAoIWdf
c3RyY21wMChwcm9wZXJ0eU5hbWUsICJBY2Nlc3NpYmxlSWQiKSkKICAgICAgICAgICAgIHJldHVy
biBnX3ZhcmlhbnRfbmV3X3N0cmluZyhhdHNwaU9iamVjdC0+bV9heE9iamVjdCA/IFN0cmluZzo6
bnVtYmVyKGF0c3BpT2JqZWN0LT5tX2F4T2JqZWN0LT5vYmplY3RJRCgpKS51dGY4KCkuZGF0YSgp
IDogIiIpOwogICAgICAgICBpZiAoIWdfc3RyY21wMChwcm9wZXJ0eU5hbWUsICJQYXJlbnQiKSkK
QEAgLTQ4NSw2ICs0ODgsOCBAQCBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aTo6cGF0aCgpCiAgICAgICAgICAgICBpbnRlcmZhY2VzLmFwcGVuZCh7IGNvbnN0X2Nhc3Q8R0RC
dXNJbnRlcmZhY2VJbmZvKj4oJndlYmtpdF9oeXBlcnRleHRfaW50ZXJmYWNlKSwgJnNfaHlwZXJ0
ZXh0RnVuY3Rpb25zIH0pOwogICAgICAgICBpZiAobV9pbnRlcmZhY2VzLmNvbnRhaW5zKEludGVy
ZmFjZTo6QWN0aW9uKSkKICAgICAgICAgICAgIGludGVyZmFjZXMuYXBwZW5kKHsgY29uc3RfY2Fz
dDxHREJ1c0ludGVyZmFjZUluZm8qPigmd2Via2l0X2FjdGlvbl9pbnRlcmZhY2UpLCAmc19hY3Rp
b25GdW5jdGlvbnMgfSk7CisgICAgICAgIGlmIChtX2ludGVyZmFjZXMuY29udGFpbnMoSW50ZXJm
YWNlOjpEb2N1bWVudCkpCisgICAgICAgICAgICBpbnRlcmZhY2VzLmFwcGVuZCh7IGNvbnN0X2Nh
c3Q8R0RCdXNJbnRlcmZhY2VJbmZvKj4oJndlYmtpdF9kb2N1bWVudF9pbnRlcmZhY2UpLCAmc19k
b2N1bWVudEZ1bmN0aW9ucyB9KTsKICAgICAgICAgbV9wYXRoID0gYXRzcGlSb290LT5hdHNwaSgp
LnJlZ2lzdGVyT2JqZWN0KCp0aGlzLCBXVEZNb3ZlKGludGVyZmFjZXMpKTsKICAgICB9CiAKQEAg
LTY5NSw2ICs3MDAsMTIgQEAgQ1N0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmRlc2Ny
aXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gIiI7CiB9CiAKK1N0cmluZyBBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGk6OmxvY2FsZSgpIGNvbnN0Cit7CisgICAgYXV0byogYXhPYmplY3QgPSBpc01h
aW5UaHJlYWQoKSA/IG1fY29yZU9iamVjdCA6IG1fYXhPYmplY3Q7CisgICAgcmV0dXJuIGF4T2Jq
ZWN0ID8gYXhPYmplY3QtPmxhbmd1YWdlKCkgOiBTdHJpbmcoKTsKK30KKwogc3RhdGljIGJvb2wg
c2hvdWxkSW5jbHVkZU9yaWVudGF0aW9uU3RhdGUoY29uc3QgQVhDb3JlT2JqZWN0JiBjb3JlT2Jq
ZWN0KQogewogICAgIHJldHVybiBjb3JlT2JqZWN0LmlzQ29tYm9Cb3goKQpAQCAtMTExOSw2ICsx
MTMwLDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmJ1aWxkSW50ZXJmYWNlcyhH
VmFyaWFudEJ1aWxkZXIqIGJ1aWxkZXIpIGNvbnN0CiAgICAgICAgIGdfdmFyaWFudF9idWlsZGVy
X2FkZChidWlsZGVyLCAicyIsIHdlYmtpdF9oeXBlcnRleHRfaW50ZXJmYWNlLm5hbWUpOwogICAg
IGlmIChtX2ludGVyZmFjZXMuY29udGFpbnMoSW50ZXJmYWNlOjpBY3Rpb24pKQogICAgICAgICBn
X3ZhcmlhbnRfYnVpbGRlcl9hZGQoYnVpbGRlciwgInMiLCB3ZWJraXRfYWN0aW9uX2ludGVyZmFj
ZS5uYW1lKTsKKyAgICBpZiAobV9pbnRlcmZhY2VzLmNvbnRhaW5zKEludGVyZmFjZTo6RG9jdW1l
bnQpKQorICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoYnVpbGRlciwgInMiLCB3ZWJraXRf
ZG9jdW1lbnRfaW50ZXJmYWNlLm5hbWUpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaTo6c2VyaWFsaXplKEdWYXJpYW50QnVpbGRlciogYnVpbGRlcikgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaS5oCmluZGV4IDA0M2FiMmIyN2ZmZi4uNDhkNzQwMWJhMDI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpLmgKQEAgLTQ5LDcgKzQ5LDggQEAgcHVibGljOgogICAgICAgICBW
YWx1ZSA9IDEgPDwgMywKICAgICAgICAgSHlwZXJsaW5rID0gMSA8PCA0LAogICAgICAgICBIeXBl
cnRleHQgPSAxIDw8IDUsCi0gICAgICAgIEFjdGlvbiA9IDEgPDwgNgorICAgICAgICBBY3Rpb24g
PSAxIDw8IDYsCisgICAgICAgIERvY3VtZW50ID0gMSA8PCA3CiAgICAgfTsKICAgICBjb25zdCBP
cHRpb25TZXQ8SW50ZXJmYWNlPiYgaW50ZXJmYWNlcygpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJm
YWNlczsgfQogCkBAIC03NCw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgaWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBDU3RyaW5nIG5hbWUoKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBDU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvY2FsZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHVuc2lnbmVkIHJvbGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjaGls
ZENvdW50KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGk+PiBjaGlsZHJlbigpIGNvbnN0OwpAQCAtMTI2LDYgKzEyOCw4IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYWN0aW9uTmFtZSgpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZG9BY3Rpb24oKSBjb25zdDsKIAorICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBkb2N1bWVudEF0dHJpYnV0ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKwog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkoQVhDb3JlT2Jq
ZWN0Kik7CiAKQEAgLTE2OCw2ICsxNzIsOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBsb2NhbGl6
ZWRBY3Rpb25OYW1lKCkgY29uc3Q7CiAgICAgU3RyaW5nIGFjdGlvbktleUJpbmRpbmcoKSBjb25z
dDsKIAorICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGRvY3VtZW50QXR0cmlidXRlcygpIGNv
bnN0OworICAgIFN0cmluZyBkb2N1bWVudExvY2FsZSgpIGNvbnN0OworCiAgICAgc3RhdGljIE9w
dGlvblNldDxJbnRlcmZhY2U+IGludGVyZmFjZXNGb3JPYmplY3QoQVhDb3JlT2JqZWN0Jik7CiAK
ICAgICBzdGF0aWMgR0RCdXNJbnRlcmZhY2VWVGFibGUgc19hY2Nlc3NpYmxlRnVuY3Rpb25zOwpA
QCAtMTc3LDYgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEdEQnVzSW50ZXJmYWNlVlRh
YmxlIHNfaHlwZXJsaW5rRnVuY3Rpb25zOwogICAgIHN0YXRpYyBHREJ1c0ludGVyZmFjZVZUYWJs
ZSBzX2h5cGVydGV4dEZ1bmN0aW9uczsKICAgICBzdGF0aWMgR0RCdXNJbnRlcmZhY2VWVGFibGUg
c19hY3Rpb25GdW5jdGlvbnM7CisgICAgc3RhdGljIEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfZG9j
dW1lbnRGdW5jdGlvbnM7CiAKICAgICBBWENvcmVPYmplY3QqIG1fYXhPYmplY3QgeyBudWxscHRy
IH07CiAgICAgQVhDb3JlT2JqZWN0KiBtX2NvcmVPYmplY3QgeyBudWxscHRyIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3REb2N1bWVudEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkv
QWNjZXNzaWJpbGl0eU9iamVjdERvY3VtZW50QXRzcGkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uOGJjZDdhNDBlOGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0RG9jdW1l
bnRBdHNwaS5jcHAKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
SWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaS5oIgorCisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFVTRShBVFNQSSkK
KworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRJbmxpbmVzLmgiCisj
aW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworR0RCdXNJbnRlcmZhY2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjpzX2RvY3VtZW50RnVuY3Rpb25zID0geworICAgIC8vIG1ldGhvZF9jYWxsCisgICAg
W10oR0RCdXNDb25uZWN0aW9uKiwgY29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhciosIGNvbnN0IGdj
aGFyKiwgY29uc3QgZ2NoYXIqIG1ldGhvZE5hbWUsIEdWYXJpYW50KiBwYXJhbWV0ZXJzLCBHREJ1
c01ldGhvZEludm9jYXRpb24qIGludm9jYXRpb24sIGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGF1dG8gYXRzcGlP
YmplY3QgPSBSZWYgeyAqc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKj4odXNl
ckRhdGEpIH07CisgICAgICAgIGF0c3BpT2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKwor
ICAgICAgICBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0QXR0cmlidXRlVmFsdWUiKSkg
eworICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICAgICAgICAgIGdfdmFyaWFudF9n
ZXQocGFyYW1ldGVycywgIigmcykiLCAmbmFtZSk7CisgICAgICAgICAgICBnX2RidXNfbWV0aG9k
X2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihzKSIs
IGF0c3BpT2JqZWN0LT5kb2N1bWVudEF0dHJpYnV0ZShTdHJpbmc6OmZyb21VVEY4KG5hbWUpKS51
dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1l
LCAiR2V0QXR0cmlidXRlcyIpKSB7CisgICAgICAgICAgICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRl
ciA9IEdfVkFSSUFOVF9CVUlMREVSX0lOSVQoR19WQVJJQU5UX1RZUEUoIihhe3NzfSkiKSk7Cisg
ICAgICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9vcGVuKCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQ
RSgiYXtzc30iKSk7CisgICAgICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBhdHNwaU9iamVjdC0+
ZG9jdW1lbnRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0IDog
YXR0cmlidXRlcykKKyAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxk
ZXIsICJ7c3N9IiwgaXQua2V5LnV0ZjgoKS5kYXRhKCksIGl0LnZhbHVlLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICAgICAgZ192YXJpYW50X2J1aWxkZXJfY2xvc2UoJmJ1aWxkZXIpOworICAgICAg
ICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBn
X3ZhcmlhbnRfYnVpbGRlcl9lbmQoJmJ1aWxkZXIpKTsKKyAgICAgICAgfSBlbHNlIGlmICghZ19z
dHJjbXAwKG1ldGhvZE5hbWUsICJHZXRMb2NhbGUiKSkKKyAgICAgICAgICAgIGdfZGJ1c19tZXRo
b2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKHMp
IiwgYXRzcGlPYmplY3QtPmRvY3VtZW50TG9jYWxlKCkudXRmOCgpLmRhdGEoKSkpOworICAgIH0s
CisgICAgLy8gZ2V0X3Byb3BlcnR5CisgICAgW10oR0RCdXNDb25uZWN0aW9uKiwgY29uc3QgZ2No
YXIqLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwgY29uc3QgZ2NoYXIqIHByb3BlcnR5TmFt
ZSwgR0Vycm9yKiogZXJyb3IsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHVmFyaWFudCogeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgICAgICBhdXRvIGF0c3Bp
T2JqZWN0ID0gUmVmIHsgKnN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSo+KHVz
ZXJEYXRhKSB9OworICAgICAgICBhdHNwaU9iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisK
KyAgICAgICAgaWYgKCFnX3N0cmNtcDAocHJvcGVydHlOYW1lLCAiQ3VycmVudFBhZ2VOdW1iZXIi
KSkKKyAgICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2ludDMyKC0xKTsKKyAgICAgICAg
aWYgKCFnX3N0cmNtcDAocHJvcGVydHlOYW1lLCAiUGFnZUNvdW50IikpCisgICAgICAgICAgICBy
ZXR1cm4gZ192YXJpYW50X25ld19pbnQzMigtMSk7CisKKyAgICAgICAgZ19zZXRfZXJyb3IoZXJy
b3IsIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfTk9UX1NVUFBPUlRFRCwgIlVua25vd24gcHJvcGVy
dHkgJyVzJyIsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0s
CisgICAgLy8gc2V0X3Byb3BlcnR5LAorICAgIG51bGxwdHIsCisgICAgLy8gcGFkZGluZworICAg
IG51bGxwdHIKK307CisKK1N0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmRvY3VtZW50
QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFN0cmluZz4oW3RoaXMsIG5hbWUg
PSBuYW1lLmlzb2xhdGVkQ29weSgpXSgpIC0+IFN0cmluZyB7CisgICAgICAgIGlmIChtX2NvcmVP
YmplY3QpCisgICAgICAgICAgICBtX2NvcmVPYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwor
CisgICAgICAgIGlmICghbV9jb3JlT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgICAgICBhdXRvKiBkb2N1bWVudCA9IG1fY29yZU9iamVjdC0+ZG9jdW1lbnQoKTsKKyAgICAg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgaWYg
KG5hbWUgPT0gIkRvY1R5cGUiX3MpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmRvY3R5
cGUoKSA/IGRvY3VtZW50LT5kb2N0eXBlKCktPm5hbWUoKS5pc29sYXRlZENvcHkoKSA6IFN0cmlu
ZygpOworICAgICAgICBpZiAobmFtZSA9PSAiRW5jb2RpbmciX3MpCisgICAgICAgICAgICByZXR1
cm4gZG9jdW1lbnQtPmNoYXJzZXQoKS5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgaWYgKG5hbWUg
PT0gIlVSSSJfcykKKyAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC0+ZG9jdW1lbnRVUkkoKS5p
c29sYXRlZENvcHkoKTsKKyAgICAgICAgaWYgKG5hbWUgPT0gIk1pbWVUeXBlIl9zKQorICAgICAg
ICAgICAgcmV0dXJuIGRvY3VtZW50LT5jb250ZW50VHlwZSgpLmlzb2xhdGVkQ29weSgpOworICAg
ICAgICBpZiAobmFtZSA9PSAiVGl0bGUiX3MpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQt
PnRpdGxlKCkuaXNvbGF0ZWRDb3B5KCk7CisKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9KTsK
K30KKworSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpk
b2N1bWVudEF0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Ojpy
ZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+KFt0aGlz
XSgpIC0+IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4gbWFwOworICAgICAgICBpZiAobV9jb3JlT2JqZWN0KQorICAgICAgICAgICAgbV9j
b3JlT2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAgICAgICBpZiAoIW1fY29yZU9i
amVjdCkKKyAgICAgICAgICAgIHJldHVybiBtYXA7CisKKyAgICAgICAgYXV0byogZG9jdW1lbnQg
PSBtX2NvcmVPYmplY3QtPmRvY3VtZW50KCk7CisgICAgICAgIGlmICghZG9jdW1lbnQpCisgICAg
ICAgICAgICByZXR1cm4gbWFwOworCisgICAgICAgIGlmIChhdXRvKiBkb2N0eXBlID0gZG9jdW1l
bnQtPmRvY3R5cGUoKSkKKyAgICAgICAgICAgIG1hcC5hZGQoIkRvY1R5cGUiX3MsIGRvY3R5cGUt
Pm5hbWUoKSk7CisKKyAgICAgICAgYXV0byBjaGFyc2V0ID0gZG9jdW1lbnQtPmNoYXJzZXQoKTsK
KyAgICAgICAgaWYgKCFjaGFyc2V0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1hcC5hZGQoIkVu
Y29kaW5nIl9zLCBXVEZNb3ZlKGNoYXJzZXQpKTsKKworICAgICAgICBhdXRvIHVyaSA9IGRvY3Vt
ZW50LT5kb2N1bWVudFVSSSgpOworICAgICAgICBpZiAoIXVyaS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBtYXAuYWRkKCJVUkkiX3MsIFdURk1vdmUodXJpKSk7CisKKyAgICAgICAgYXV0byBjb250
ZW50VHlwZSA9IGRvY3VtZW50LT5jb250ZW50VHlwZSgpOworICAgICAgICBpZiAoIWNvbnRlbnRU
eXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1hcC5hZGQoIk1pbWVUeXBlIl9zLCBXVEZNb3Zl
KGNvbnRlbnRUeXBlKSk7CisKKyAgICAgICAgY29uc3QgYXV0byYgdGl0bGUgPSBkb2N1bWVudC0+
dGl0bGUoKTsKKyAgICAgICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBtYXAu
YWRkKCJUaXRsZSJfcywgdGl0bGUpOworCisgICAgICAgIHJldHVybiBtYXA7CisgICAgfSk7Cit9
CisKK1N0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmRvY3VtZW50TG9jYWxlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhy
ZWFkPFN0cmluZz4oW3RoaXNdKCkgLT4gU3RyaW5nIHsKKyAgICAgICAgaWYgKG1fY29yZU9iamVj
dCkKKyAgICAgICAgICAgIG1fY29yZU9iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisKKyAg
ICAgICAgaWYgKCFtX2NvcmVPYmplY3QpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAg
ICAgIGF1dG8qIGRvY3VtZW50ID0gbV9jb3JlT2JqZWN0LT5kb2N1bWVudCgpOworICAgICAgICBp
ZiAoIWRvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICByZXR1cm4g
ZG9jdW1lbnQtPmNvbnRlbnRMYW5ndWFnZSgpLmlzb2xhdGVkQ29weSgpOworICAgIH0pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQUNDRVNTSUJJTElU
WSkgJiYgVVNFKEFUU1BJKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGY1MGNjZGVlOTI0Ni4uZTdhNGY3YTBmNjhmIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEt
MTEtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtHVEtdW2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBkb2N1bWVudCBpbnRlcmZhY2Ug
d2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzI3NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdW5pdCB0ZXN0IGZvciB0aGUgZG9jdW1lbnQgaW50ZXJmYWNl
IGFuZCBXVFIgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHA6CisgICAgICAgICh0ZXN0RG9j
dW1lbnRCYXNpYyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNw
cDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29kaW5nKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkpOgorCiAyMDIx
LTExLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXVthMTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2YgYWN0aW9uIGludGVyZmFjZSB3
aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcAppbmRl
eCBiNTY1MGFkOTQ2NWYuLmU4YWJhNTY5MWRmMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5
LmNwcApAQCAtMTg5Myw2ICsxODkzLDY4IEBAIHN0YXRpYyB2b2lkIHRlc3RBY3Rpb25CYXNpYyhB
Y2Nlc3NpYmlsaXR5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBz
dHIoa2V5QmluZGluZy5nZXQoKSwgPT0sICIiKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdERvY3Vt
ZW50QmFzaWMoQWNjZXNzaWJpbGl0eVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAg
dGVzdC0+c2hvd0luV2luZG93KDgwMCwgNjAwKTsKKyAgICB0ZXN0LT5sb2FkSHRtbCgKKyAgICAg
ICAgIjwhZG9jdHlwZSBodG1sPiIKKyAgICAgICAgIjxodG1sPiIKKyAgICAgICAgIiAgPGhlYWQ+
IgorICAgICAgICAiICAgIDxtZXRhIGh0dHAtZXF1aXY9J2NvbnRlbnQtbGFuZ3VhZ2UnIGNvbnRl
bnQ9J2VuLXVzJy8+IgorICAgICAgICAiICAgIDxtZXRhIGh0dHAtZXF1aXY9J2NvbnRlbnQtdHlw
ZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PVVURi04Jy8+IgorICAgICAgICAiICAgIDx0
aXRsZT5Eb2N1bWVudCBhdHRyaWJ1dGVzPC90aXRsZT4iCisgICAgICAgICIgIDwvaGVhZD4iCisg
ICAgICAgICIgIDxib2R5PiIKKyAgICAgICAgIiAgICA8cD5UaGlzIGlzIGEgcGFyYWdyYXBoPC9w
PiIKKyAgICAgICAgIiAgICA8cCBsYW5nPSdlcyc+U3BhbmlzaDwvcD4iCisgICAgICAgICIgIDwv
Ym9keT4iCisgICAgICAgICI8L2h0bWw+IiwKKyAgICAgICAgImh0dHA6Ly9leGFtcGxlLm9yZyIp
OworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgYXV0byB0ZXN0QXBw
ID0gdGVzdC0+ZmluZFRlc3RBcHBsaWNhdGlvbigpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElf
SVNfQUNDRVNTSUJMRSh0ZXN0QXBwLmdldCgpKSk7CisKKyAgICBhdXRvIGRvY3VtZW50V2ViID0g
dGVzdC0+ZmluZERvY3VtZW50V2ViKHRlc3RBcHAuZ2V0KCkpOworICAgIGdfYXNzZXJ0X3RydWUo
QVRTUElfSVNfRE9DVU1FTlQoZG9jdW1lbnRXZWIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfY291bnQoZG9jdW1lbnRXZWIuZ2V0KCksIG51
bGxwdHIpLCA9PSwgMik7CisKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGxhbmd1YWdlKGF0c3BpX2Rv
Y3VtZW50X2dldF9sb2NhbGUoQVRTUElfRE9DVU1FTlQoZG9jdW1lbnRXZWIuZ2V0KCkpLCBudWxs
cHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKGxhbmd1YWdlLmdldCgpLCA9PSwgImVuLXVzIik7
CisgICAgLy8gRWxlbWVudHMgd2l0aCBubyBsYW5ndWFnZSBhdHRyaWJ1dGUgaW5oZXdpciB0aGUg
ZG9jdW1lbnQgb25lLgorICAgIGF1dG8gcDEgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9n
ZXRfY2hpbGRfYXRfaW5kZXgoZG9jdW1lbnRXZWIuZ2V0KCksIDAsIG51bGxwdHIpKTsKKyAgICBn
X2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUocDEuZ2V0KCkpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBzdHIoYXRzcGlfYWNjZXNzaWJsZV9nZXRfb2JqZWN0X2xvY2FsZShwMS5nZXQoKSwgbnVs
bHB0ciksID09LCAiZW4tdXMiKTsKKyAgICBhdXRvIHAyID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vz
c2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KGRvY3VtZW50V2ViLmdldCgpLCAxLCBudWxscHRyKSk7
CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKHAyLmdldCgpKSk7CisgICAg
Z19hc3NlcnRfY21wc3RyKGF0c3BpX2FjY2Vzc2libGVfZ2V0X29iamVjdF9sb2NhbGUocDIuZ2V0
KCksIG51bGxwdHIpLCA9PSwgImVzIik7CisKKyAgICBHUmVmUHRyPEdIYXNoVGFibGU+IGF0dHJp
YnV0ZXMgPSBhZG9wdEdSZWYoYXRzcGlfZG9jdW1lbnRfZ2V0X2F0dHJpYnV0ZXMoQVRTUElfRE9D
VU1FTlQoZG9jdW1lbnRXZWIuZ2V0KCkpLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfbm9ubnVs
bChhdHRyaWJ1dGVzLmdldCgpKTsKKyNpZiBVU0UoQVRTUEkpCisgICAgZ19hc3NlcnRfY21wdWlu
dChnX2hhc2hfdGFibGVfc2l6ZShhdHRyaWJ1dGVzLmdldCgpKSwgPT0sIDUpOworI2Vsc2UKKyAg
ICBnX2Fzc2VydF9jbXB1aW50KGdfaGFzaF90YWJsZV9zaXplKGF0dHJpYnV0ZXMuZ2V0KCkpLCA9
PSwgMyk7CisjZW5kaWYKKyAgICBnX2Fzc2VydF9jbXBzdHIoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGdfaGFzaF90YWJsZV9sb29rdXAoYXR0cmlidXRlcy5nZXQoKSwgIkRvY1R5cGUiKSksID09
LCAiaHRtbCIpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWUoYXRzcGlfZG9jdW1lbnRfZ2V0
X2RvY3VtZW50X2F0dHJpYnV0ZV92YWx1ZShBVFNQSV9ET0NVTUVOVChkb2N1bWVudFdlYi5nZXQo
KSksIGNvbnN0X2Nhc3Q8Y2hhcio+KCJEb2NUeXBlIiksIG51bGxwdHIpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBzdHIodmFsdWUuZ2V0KCksID09LCAiaHRtbCIpOworICAgIGdfYXNzZXJ0X2NtcHN0cihz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZ19oYXNoX3RhYmxlX2xvb2t1cChhdHRyaWJ1dGVzLmdl
dCgpLCAiRW5jb2RpbmciKSksID09LCAiVVRGLTgiKTsKKyAgICB2YWx1ZS5yZXNldChhdHNwaV9k
b2N1bWVudF9nZXRfZG9jdW1lbnRfYXR0cmlidXRlX3ZhbHVlKEFUU1BJX0RPQ1VNRU5UKGRvY3Vt
ZW50V2ViLmdldCgpKSwgY29uc3RfY2FzdDxjaGFyKj4oIkVuY29kaW5nIiksIG51bGxwdHIpKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWUuZ2V0KCksID09LCAiVVRGLTgiKTsKKyAgICBnX2Fz
c2VydF9jbXBzdHIoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGdfaGFzaF90YWJsZV9sb29rdXAo
YXR0cmlidXRlcy5nZXQoKSwgIlVSSSIpKSwgPT0sICJodHRwOi8vZXhhbXBsZS5vcmcvIik7Cisg
ICAgdmFsdWUucmVzZXQoYXRzcGlfZG9jdW1lbnRfZ2V0X2RvY3VtZW50X2F0dHJpYnV0ZV92YWx1
ZShBVFNQSV9ET0NVTUVOVChkb2N1bWVudFdlYi5nZXQoKSksIGNvbnN0X2Nhc3Q8Y2hhcio+KCJV
UkkiKSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZS5nZXQoKSwgPT0sICJo
dHRwOi8vZXhhbXBsZS5vcmcvIik7CisjaWYgVVNFKEFUU1BJKQorICAgIGdfYXNzZXJ0X2NtcHN0
cihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZ19oYXNoX3RhYmxlX2xvb2t1cChhdHRyaWJ1dGVz
LmdldCgpLCAiTWltZVR5cGUiKSksID09LCAidGV4dC9odG1sIik7CisgICAgdmFsdWUucmVzZXQo
YXRzcGlfZG9jdW1lbnRfZ2V0X2RvY3VtZW50X2F0dHJpYnV0ZV92YWx1ZShBVFNQSV9ET0NVTUVO
VChkb2N1bWVudFdlYi5nZXQoKSksIGNvbnN0X2Nhc3Q8Y2hhcio+KCJNaW1lVHlwZSIpLCBudWxs
cHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlLmdldCgpLCA9PSwgInRleHQvaHRtbCIp
OworICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZ19oYXNoX3Rh
YmxlX2xvb2t1cChhdHRyaWJ1dGVzLmdldCgpLCAiVGl0bGUiKSksID09LCAiRG9jdW1lbnQgYXR0
cmlidXRlcyIpOworICAgIHZhbHVlLnJlc2V0KGF0c3BpX2RvY3VtZW50X2dldF9kb2N1bWVudF9h
dHRyaWJ1dGVfdmFsdWUoQVRTUElfRE9DVU1FTlQoZG9jdW1lbnRXZWIuZ2V0KCkpLCBjb25zdF9j
YXN0PGNoYXIqPigiVGl0bGUiKSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1
ZS5nZXQoKSwgPT0sICJEb2N1bWVudCBhdHRyaWJ1dGVzIik7CisjZW5kaWYKK30KKwogdm9pZCBi
ZWZvcmVBbGwoKQogewogICAgIEFjY2Vzc2liaWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2li
aWxpdHkiLCAiYWNjZXNzaWJsZS9iYXNpYy1oaWVyYXJjaHkiLCB0ZXN0QWNjZXNzaWJsZUJhc2lj
SGllcmFyY2h5KTsKQEAgLTE5MTcsNiArMTk3OSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBB
Y2Nlc3NpYmlsaXR5VGVzdDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgImh5cGVybGluay9i
YXNpYyIsIHRlc3RIeXBlcmxpbmtCYXNpYyk7CiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgi
V2ViS2l0QWNjZXNzaWJpbGl0eSIsICJoeXBlcnRleHQvYmFzaWMiLCB0ZXN0SHlwZXJ0ZXh0QmFz
aWMpOwogICAgIEFjY2Vzc2liaWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAi
YWN0aW9uL2Jhc2ljIiwgdGVzdEFjdGlvbkJhc2ljKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGVzdDo6
YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgImRvY3VtZW50L2Jhc2ljIiwgdGVzdERvY3VtZW50
QmFzaWMpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3Bp
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcAppbmRleCA0N2M5YmI2MTI1OTYuLmE0MjdmZGU3OGQx
NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNw
aS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNw
cApAQCAtNzM4LDcgKzczOCwxNSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQogewotICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworICAgIGlmICghbV9lbGVtZW50KQorICAgICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIG1fZWxl
bWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgYXV0byBsb2NhbGUgPSBtX2VsZW1lbnQt
PmxvY2FsZSgpOworICAgIGlmIChsb2NhbGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIHJldHVybiBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKG1ha2VTdHJpbmcoIkFYTGFuZ3VhZ2U6ICIsIGxvY2FsZSkpLmxlYWtS
ZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmhlbHBUZXh0KCkgY29uc3QKQEAgLTEyMTUsMTIgKzEyMjMsMTggQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSgp
IGNvbnN0CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpkb2N1bWVudEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCAwKTsKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5pbnRlcmZh
Y2VzKCkuY29udGFpbnMoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpJbnRlcmZh
Y2U6OkRvY3VtZW50KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoMCwgMCk7CisKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1l
bnQtPmRvY3VtZW50QXR0cmlidXRlKCJFbmNvZGluZyIpKS5sZWFrUmVmKCk7CiB9CiAKIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgp
CiB7Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisgICAg
aWYgKCFtX2VsZW1lbnQgfHwgIW1fZWxlbWVudC0+aW50ZXJmYWNlcygpLmNvbnRhaW5zKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6SW50ZXJmYWNlOjpEb2N1bWVudCkpCisgICAg
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgcmV0
dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobV9lbGVtZW50LT5kb2N1bWVudEF0dHJpYnV0
ZSgiVVJJIikpLmxlYWtSZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444809</attachid>
            <date>2021-11-19 05:45:40 -0800</date>
            <delta_ts>2021-11-19 06:31:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-document.diff</filename>
            <type>text/plain</type>
            <size>20339</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZjU0ZmEzMGE4ZDkuLmZmZGVjNzI4NDEzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDIxLTExLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2Yg
ZG9jdW1lbnQgaW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0aCBBVFNQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNzU1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmludGVyZmFjZXNG
b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpw
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6bG9jYWxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YnVp
bGRJbnRlcmZhY2VzIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdERvY3VtZW50QXRzcGkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6ZG9jdW1lbnRBdHRyaWJ1dGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpkb2N1bWVudEF0dHJp
YnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
Ojpkb2N1bWVudExvY2FsZSBjb25zdCk6CisKIDIwMjEtMTEtMDUgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbXBs
ZW1lbnRhdGlvbiBvZiBhY3Rpb24gaW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0aCBBVFNQSQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzR1RLLnR4dAppbmRleCA0MDdmM2Q2NGQ5N2IuLjBiNDkwODgzNzhhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0dUSy50eHQKQEAgLTQzLDYgKzQzLDcgQEAgYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nl
c3NpYmlsaXR5QXRzcGkuY3BwCiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAKIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEFjdGlv
bkF0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q29tcG9u
ZW50QXRzcGkuY3BwCithY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3REb2N1
bWVudEF0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlw
ZXJsaW5rQXRzcGkuY3BwCiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RI
eXBlcnRleHRBdHNwaS5jcHAKIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFRleHRBdHNwaS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAppbmRleCBlODc1ZTQ5
NDVhMmUuLjg5ODZhNTkyYzVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcApAQCAt
OTEsNiArOTEsOSBAQCBPcHRpb25TZXQ8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpJbnRlcmZh
Y2U+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6aW50ZXJmYQogICAgIGlmIChjb3JlT2JqZWN0
LmlzTGluaygpIHx8IChpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KHJlbmRlcmVyKSkpCiAgICAg
ICAgIGludGVyZmFjZXMuYWRkKEludGVyZmFjZTo6SHlwZXJsaW5rKTsKIAorICAgIGlmIChjb3Jl
T2JqZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQorICAgICAg
ICBpbnRlcmZhY2VzLmFkZChJbnRlcmZhY2U6OkRvY3VtZW50KTsKKwogICAgIHJldHVybiBpbnRl
cmZhY2VzOwogfQogCkBAIC00NDUsNyArNDQ4LDcgQEAgR0RCdXNJbnRlcmZhY2VWVGFibGUgQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzX2FjY2Vzc2libGVGdW5jdGlvbnMgPSB7CiAgICAgICAg
IGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIkRlc2NyaXB0aW9uIikpCiAgICAgICAgICAg
ICByZXR1cm4gZ192YXJpYW50X25ld19zdHJpbmcoYXRzcGlPYmplY3QtPmRlc2NyaXB0aW9uKCku
ZGF0YSgpKTsKICAgICAgICAgaWYgKCFnX3N0cmNtcDAocHJvcGVydHlOYW1lLCAiTG9jYWxlIikp
Ci0gICAgICAgICAgICByZXR1cm4gZ192YXJpYW50X25ld19zdHJpbmcoc2V0bG9jYWxlKExDX01F
U1NBR0VTLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXR1cm4gZ192YXJpYW50X25ld19zdHJp
bmcoYXRzcGlPYmplY3QtPmxvY2FsZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBpZiAoIWdf
c3RyY21wMChwcm9wZXJ0eU5hbWUsICJBY2Nlc3NpYmxlSWQiKSkKICAgICAgICAgICAgIHJldHVy
biBnX3ZhcmlhbnRfbmV3X3N0cmluZyhhdHNwaU9iamVjdC0+bV9heE9iamVjdCA/IFN0cmluZzo6
bnVtYmVyKGF0c3BpT2JqZWN0LT5tX2F4T2JqZWN0LT5vYmplY3RJRCgpLnRvVUludDY0KCkpLnV0
ZjgoKS5kYXRhKCkgOiAiIik7CiAgICAgICAgIGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwg
IlBhcmVudCIpKQpAQCAtNDg1LDYgKzQ4OCw4IEBAIGNvbnN0IFN0cmluZyYgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjpwYXRoKCkKICAgICAgICAgICAgIGludGVyZmFjZXMuYXBwZW5kKHsgY29u
c3RfY2FzdDxHREJ1c0ludGVyZmFjZUluZm8qPigmd2Via2l0X2h5cGVydGV4dF9pbnRlcmZhY2Up
LCAmc19oeXBlcnRleHRGdW5jdGlvbnMgfSk7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZXMuY29u
dGFpbnMoSW50ZXJmYWNlOjpBY3Rpb24pKQogICAgICAgICAgICAgaW50ZXJmYWNlcy5hcHBlbmQo
eyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRfYWN0aW9uX2ludGVyZmFj
ZSksICZzX2FjdGlvbkZ1bmN0aW9ucyB9KTsKKyAgICAgICAgaWYgKG1faW50ZXJmYWNlcy5jb250
YWlucyhJbnRlcmZhY2U6OkRvY3VtZW50KSkKKyAgICAgICAgICAgIGludGVyZmFjZXMuYXBwZW5k
KHsgY29uc3RfY2FzdDxHREJ1c0ludGVyZmFjZUluZm8qPigmd2Via2l0X2RvY3VtZW50X2ludGVy
ZmFjZSksICZzX2RvY3VtZW50RnVuY3Rpb25zIH0pOwogICAgICAgICBtX3BhdGggPSBhdHNwaVJv
b3QtPmF0c3BpKCkucmVnaXN0ZXJPYmplY3QoKnRoaXMsIFdURk1vdmUoaW50ZXJmYWNlcykpOwog
ICAgIH0KIApAQCAtNjk1LDYgKzcwMCwxMiBAQCBDU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaTo6ZGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiAiIjsKIH0KIAorU3RyaW5nIEFj
Y2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6bG9jYWxlKCkgY29uc3QKK3sKKyAgICBhdXRvKiBheE9i
amVjdCA9IGlzTWFpblRocmVhZCgpID8gbV9jb3JlT2JqZWN0IDogbV9heE9iamVjdDsKKyAgICBy
ZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+bGFuZ3VhZ2UoKSA6IFN0cmluZygpOworfQorCiBz
dGF0aWMgYm9vbCBzaG91bGRJbmNsdWRlT3JpZW50YXRpb25TdGF0ZShjb25zdCBBWENvcmVPYmpl
Y3QmIGNvcmVPYmplY3QpCiB7CiAgICAgcmV0dXJuIGNvcmVPYmplY3QuaXNDb21ib0JveCgpCkBA
IC0xMTE5LDYgKzExMzAsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YnVpbGRJ
bnRlcmZhY2VzKEdWYXJpYW50QnVpbGRlciogYnVpbGRlcikgY29uc3QKICAgICAgICAgZ192YXJp
YW50X2J1aWxkZXJfYWRkKGJ1aWxkZXIsICJzIiwgd2Via2l0X2h5cGVydGV4dF9pbnRlcmZhY2Uu
bmFtZSk7CiAgICAgaWYgKG1faW50ZXJmYWNlcy5jb250YWlucyhJbnRlcmZhY2U6OkFjdGlvbikp
CiAgICAgICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZChidWlsZGVyLCAicyIsIHdlYmtpdF9hY3Rp
b25faW50ZXJmYWNlLm5hbWUpOworICAgIGlmIChtX2ludGVyZmFjZXMuY29udGFpbnMoSW50ZXJm
YWNlOjpEb2N1bWVudCkpCisgICAgICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZChidWlsZGVyLCAi
cyIsIHdlYmtpdF9kb2N1bWVudF9pbnRlcmZhY2UubmFtZSk7CiB9CiAKIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjpzZXJpYWxpemUoR1ZhcmlhbnRCdWlsZGVyKiBidWlsZGVyKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGkuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkv
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmgKaW5kZXggMDQzYWIyYjI3ZmZmLi40OGQ3NDAxYmEw
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuaApAQCAtNDksNyArNDksOCBAQCBwdWJsaWM6
CiAgICAgICAgIFZhbHVlID0gMSA8PCAzLAogICAgICAgICBIeXBlcmxpbmsgPSAxIDw8IDQsCiAg
ICAgICAgIEh5cGVydGV4dCA9IDEgPDwgNSwKLSAgICAgICAgQWN0aW9uID0gMSA8PCA2CisgICAg
ICAgIEFjdGlvbiA9IDEgPDwgNiwKKyAgICAgICAgRG9jdW1lbnQgPSAxIDw8IDcKICAgICB9Owog
ICAgIGNvbnN0IE9wdGlvblNldDxJbnRlcmZhY2U+JiBpbnRlcmZhY2VzKCkgY29uc3QgeyByZXR1
cm4gbV9pbnRlcmZhY2VzOyB9CiAKQEAgLTc0LDYgKzc1LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBpZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIENTdHJpbmcg
bmFtZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIENTdHJpbmcgZGVzY3JpcHRpb24oKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9jYWxlKCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdW5zaWduZWQgcm9sZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHVu
c2lnbmVkIGNoaWxkQ291bnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaT4+IGNoaWxkcmVuKCkgY29uc3Q7CkBAIC0xMjYs
NiArMTI4LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhY3Rpb25OYW1l
KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkb0FjdGlvbigpIGNvbnN0OwogCisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRvY3VtZW50QXR0cmlidXRlKGNvbnN0IFN0cmluZyYp
IGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aShBWENvcmVPYmplY3QqKTsKIApAQCAtMTY4LDYgKzE3Miw5IEBAIHByaXZhdGU6CiAgICAgU3Ry
aW5nIGxvY2FsaXplZEFjdGlvbk5hbWUoKSBjb25zdDsKICAgICBTdHJpbmcgYWN0aW9uS2V5Qmlu
ZGluZygpIGNvbnN0OwogCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZG9jdW1lbnRBdHRy
aWJ1dGVzKCkgY29uc3Q7CisgICAgU3RyaW5nIGRvY3VtZW50TG9jYWxlKCkgY29uc3Q7CisKICAg
ICBzdGF0aWMgT3B0aW9uU2V0PEludGVyZmFjZT4gaW50ZXJmYWNlc0Zvck9iamVjdChBWENvcmVP
YmplY3QmKTsKIAogICAgIHN0YXRpYyBHREJ1c0ludGVyZmFjZVZUYWJsZSBzX2FjY2Vzc2libGVG
dW5jdGlvbnM7CkBAIC0xNzcsNiArMTg0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgR0RCdXNJ
bnRlcmZhY2VWVGFibGUgc19oeXBlcmxpbmtGdW5jdGlvbnM7CiAgICAgc3RhdGljIEdEQnVzSW50
ZXJmYWNlVlRhYmxlIHNfaHlwZXJ0ZXh0RnVuY3Rpb25zOwogICAgIHN0YXRpYyBHREJ1c0ludGVy
ZmFjZVZUYWJsZSBzX2FjdGlvbkZ1bmN0aW9uczsKKyAgICBzdGF0aWMgR0RCdXNJbnRlcmZhY2VW
VGFibGUgc19kb2N1bWVudEZ1bmN0aW9uczsKIAogICAgIEFYQ29yZU9iamVjdCogbV9heE9iamVj
dCB7IG51bGxwdHIgfTsKICAgICBBWENvcmVPYmplY3QqIG1fY29yZU9iamVjdCB7IG51bGxwdHIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdERvY3VtZW50QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0RG9jdW1lbnRBdHNwaS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YmNkN2E0MGU4ZmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlP
YmplY3REb2N1bWVudEF0c3BpLmNwcApAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpLmgiCisKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYg
VVNFKEFUU1BJKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudElu
bGluZXMuaCIKKyNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGk6OnNfZG9jdW1lbnRGdW5jdGlvbnMgPSB7CisgICAgLy8gbWV0aG9k
X2NhbGwKKyAgICBbXShHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFy
KiwgY29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhciogbWV0aG9kTmFtZSwgR1ZhcmlhbnQqIHBhcmFt
ZXRlcnMsIEdEQnVzTWV0aG9kSW52b2NhdGlvbiogaW52b2NhdGlvbiwgZ3BvaW50ZXIgdXNlckRh
dGEpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAg
YXV0byBhdHNwaU9iamVjdCA9IFJlZiB7ICpzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGkqPih1c2VyRGF0YSkgfTsKKyAgICAgICAgYXRzcGlPYmplY3QtPnVwZGF0ZUJhY2tpbmdT
dG9yZSgpOworCisgICAgICAgIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRBdHRyaWJ1
dGVWYWx1ZSIpKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lOworICAgICAgICAgICAg
Z192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKCZzKSIsICZuYW1lKTsKKyAgICAgICAgICAgIGdf
ZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50
X25ldygiKHMpIiwgYXRzcGlPYmplY3QtPmRvY3VtZW50QXR0cmlidXRlKFN0cmluZzo6ZnJvbVVU
RjgobmFtZSkpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAw
KG1ldGhvZE5hbWUsICJHZXRBdHRyaWJ1dGVzIikpIHsKKyAgICAgICAgICAgIEdWYXJpYW50QnVp
bGRlciBidWlsZGVyID0gR19WQVJJQU5UX0JVSUxERVJfSU5JVChHX1ZBUklBTlRfVFlQRSgiKGF7
c3N9KSIpKTsKKyAgICAgICAgICAgIGdfdmFyaWFudF9idWlsZGVyX29wZW4oJmJ1aWxkZXIsIEdf
VkFSSUFOVF9UWVBFKCJhe3NzfSIpKTsKKyAgICAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IGF0
c3BpT2JqZWN0LT5kb2N1bWVudEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgaXQgOiBhdHRyaWJ1dGVzKQorICAgICAgICAgICAgICAgIGdfdmFyaWFudF9idWlsZGVy
X2FkZCgmYnVpbGRlciwgIntzc30iLCBpdC5rZXkudXRmOCgpLmRhdGEoKSwgaXQudmFsdWUudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9jbG9zZSgmYnVpbGRl
cik7CisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGlu
dm9jYXRpb24sIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcikpOworICAgICAgICB9IGVs
c2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldExvY2FsZSIpKQorICAgICAgICAgICAg
Z19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3Zhcmlh
bnRfbmV3KCIocykiLCBhdHNwaU9iamVjdC0+ZG9jdW1lbnRMb2NhbGUoKS51dGY4KCkuZGF0YSgp
KSk7CisgICAgfSwKKyAgICAvLyBnZXRfcHJvcGVydHkKKyAgICBbXShHREJ1c0Nvbm5lY3Rpb24q
LCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwgY29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhciog
cHJvcGVydHlOYW1lLCBHRXJyb3IqKiBlcnJvciwgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdWYXJp
YW50KiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgICAg
IGF1dG8gYXRzcGlPYmplY3QgPSBSZWYgeyAqc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpKj4odXNlckRhdGEpIH07CisgICAgICAgIGF0c3BpT2JqZWN0LT51cGRhdGVCYWNraW5n
U3RvcmUoKTsKKworICAgICAgICBpZiAoIWdfc3RyY21wMChwcm9wZXJ0eU5hbWUsICJDdXJyZW50
UGFnZU51bWJlciIpKQorICAgICAgICAgICAgcmV0dXJuIGdfdmFyaWFudF9uZXdfaW50MzIoLTEp
OworICAgICAgICBpZiAoIWdfc3RyY21wMChwcm9wZXJ0eU5hbWUsICJQYWdlQ291bnQiKSkKKyAg
ICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2ludDMyKC0xKTsKKworICAgICAgICBnX3Nl
dF9lcnJvcihlcnJvciwgR19JT19FUlJPUiwgR19JT19FUlJPUl9OT1RfU1VQUE9SVEVELCAiVW5r
bm93biBwcm9wZXJ0eSAnJXMnIiwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfSwKKyAgICAvLyBzZXRfcHJvcGVydHksCisgICAgbnVsbHB0ciwKKyAgICAvLyBw
YWRkaW5nCisgICAgbnVsbHB0cgorfTsKKworU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aTo6ZG9jdW1lbnRBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8U3RyaW5nPihb
dGhpcywgbmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCldKCkgLT4gU3RyaW5nIHsKKyAgICAgICAg
aWYgKG1fY29yZU9iamVjdCkKKyAgICAgICAgICAgIG1fY29yZU9iamVjdC0+dXBkYXRlQmFja2lu
Z1N0b3JlKCk7CisKKyAgICAgICAgaWYgKCFtX2NvcmVPYmplY3QpCisgICAgICAgICAgICByZXR1
cm4geyB9OworCisgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gbV9jb3JlT2JqZWN0LT5kb2N1bWVu
dCgpOworICAgICAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgICAgICBpZiAobmFtZSA9PSAiRG9jVHlwZSJfcykKKyAgICAgICAgICAgIHJldHVybiBkb2N1
bWVudC0+ZG9jdHlwZSgpID8gZG9jdW1lbnQtPmRvY3R5cGUoKS0+bmFtZSgpLmlzb2xhdGVkQ29w
eSgpIDogU3RyaW5nKCk7CisgICAgICAgIGlmIChuYW1lID09ICJFbmNvZGluZyJfcykKKyAgICAg
ICAgICAgIHJldHVybiBkb2N1bWVudC0+Y2hhcnNldCgpLmlzb2xhdGVkQ29weSgpOworICAgICAg
ICBpZiAobmFtZSA9PSAiVVJJIl9zKQorICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5kb2N1
bWVudFVSSSgpLmlzb2xhdGVkQ29weSgpOworICAgICAgICBpZiAobmFtZSA9PSAiTWltZVR5cGUi
X3MpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmNvbnRlbnRUeXBlKCkuaXNvbGF0ZWRD
b3B5KCk7CisgICAgICAgIGlmIChuYW1lID09ICJUaXRsZSJfcykKKyAgICAgICAgICAgIHJldHVy
biBkb2N1bWVudC0+dGl0bGUoKS5pc29sYXRlZENvcHkoKTsKKworICAgICAgICByZXR1cm4geyB9
OworICAgIH0pOworfQorCitIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QXRzcGk6OmRvY3VtZW50QXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPj4oW3RoaXNdKCkgLT4gSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4geworICAgICAgICBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiBtYXA7CisgICAgICAgIGlmIChtX2NvcmVPYmplY3QpCisgICAg
ICAgICAgICBtX2NvcmVPYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworCisgICAgICAgIGlm
ICghbV9jb3JlT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIG1hcDsKKworICAgICAgICBhdXRv
KiBkb2N1bWVudCA9IG1fY29yZU9iamVjdC0+ZG9jdW1lbnQoKTsKKyAgICAgICAgaWYgKCFkb2N1
bWVudCkKKyAgICAgICAgICAgIHJldHVybiBtYXA7CisKKyAgICAgICAgaWYgKGF1dG8qIGRvY3R5
cGUgPSBkb2N1bWVudC0+ZG9jdHlwZSgpKQorICAgICAgICAgICAgbWFwLmFkZCgiRG9jVHlwZSJf
cywgZG9jdHlwZS0+bmFtZSgpKTsKKworICAgICAgICBhdXRvIGNoYXJzZXQgPSBkb2N1bWVudC0+
Y2hhcnNldCgpOworICAgICAgICBpZiAoIWNoYXJzZXQuaXNFbXB0eSgpKQorICAgICAgICAgICAg
bWFwLmFkZCgiRW5jb2RpbmciX3MsIFdURk1vdmUoY2hhcnNldCkpOworCisgICAgICAgIGF1dG8g
dXJpID0gZG9jdW1lbnQtPmRvY3VtZW50VVJJKCk7CisgICAgICAgIGlmICghdXJpLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIG1hcC5hZGQoIlVSSSJfcywgV1RGTW92ZSh1cmkpKTsKKworICAgICAg
ICBhdXRvIGNvbnRlbnRUeXBlID0gZG9jdW1lbnQtPmNvbnRlbnRUeXBlKCk7CisgICAgICAgIGlm
ICghY29udGVudFR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgbWFwLmFkZCgiTWltZVR5cGUi
X3MsIFdURk1vdmUoY29udGVudFR5cGUpKTsKKworICAgICAgICBjb25zdCBhdXRvJiB0aXRsZSA9
IGRvY3VtZW50LT50aXRsZSgpOworICAgICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIG1hcC5hZGQoIlRpdGxlIl9zLCB0aXRsZSk7CisKKyAgICAgICAgcmV0dXJuIG1hcDsK
KyAgICB9KTsKK30KKworU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6ZG9jdW1lbnRM
b2NhbGUoKSBjb25zdAoreworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVl
RnJvbU1haW5UaHJlYWQ8U3RyaW5nPihbdGhpc10oKSAtPiBTdHJpbmcgeworICAgICAgICBpZiAo
bV9jb3JlT2JqZWN0KQorICAgICAgICAgICAgbV9jb3JlT2JqZWN0LT51cGRhdGVCYWNraW5nU3Rv
cmUoKTsKKworICAgICAgICBpZiAoIW1fY29yZU9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiB7
IH07CisKKyAgICAgICAgYXV0byogZG9jdW1lbnQgPSBtX2NvcmVPYmplY3QtPmRvY3VtZW50KCk7
CisgICAgICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAg
ICAgIHJldHVybiBkb2N1bWVudC0+Y29udGVudExhbmd1YWdlKCkuaXNvbGF0ZWRDb3B5KCk7Cisg
ICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShB
Q0NFU1NJQklMSVRZKSAmJiBVU0UoQVRTUEkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGQ0ZjRlNjI3OTJiLi43NjRlOGRmNTYxZmIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAyMS0xMS0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGRvY3VtZW50
IGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjc1NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB1bml0IHRlc3QgZm9yIHRoZSBkb2N1bWVu
dCBpbnRlcmZhY2UgYW5kIFdUUiBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcDoKKyAgICAg
ICAgKHRlc3REb2N1bWVudEJhc2ljKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50QXRzcGkuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5n
dWFnZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5j
b2RpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVS
SSk6CisKIDIwMjEtMTEtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBhY3Rpb24g
aW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxp
dHkuY3BwCmluZGV4IGI1NjUwYWQ5NDY1Zi4uZThhYmE1NjkxZGYzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFj
Y2Vzc2liaWxpdHkuY3BwCkBAIC0xODkzLDYgKzE4OTMsNjggQEAgc3RhdGljIHZvaWQgdGVzdEFj
dGlvbkJhc2ljKEFjY2Vzc2liaWxpdHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdf
YXNzZXJ0X2NtcHN0cihrZXlCaW5kaW5nLmdldCgpLCA9PSwgIiIpOwogfQogCitzdGF0aWMgdm9p
ZCB0ZXN0RG9jdW1lbnRCYXNpYyhBY2Nlc3NpYmlsaXR5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKK3sKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coODAwLCA2MDApOworICAgIHRlc3QtPmxvYWRI
dG1sKAorICAgICAgICAiPCFkb2N0eXBlIGh0bWw+IgorICAgICAgICAiPGh0bWw+IgorICAgICAg
ICAiICA8aGVhZD4iCisgICAgICAgICIgICAgPG1ldGEgaHR0cC1lcXVpdj0nY29udGVudC1sYW5n
dWFnZScgY29udGVudD0nZW4tdXMnLz4iCisgICAgICAgICIgICAgPG1ldGEgaHR0cC1lcXVpdj0n
Y29udGVudC10eXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnLz4iCisgICAg
ICAgICIgICAgPHRpdGxlPkRvY3VtZW50IGF0dHJpYnV0ZXM8L3RpdGxlPiIKKyAgICAgICAgIiAg
PC9oZWFkPiIKKyAgICAgICAgIiAgPGJvZHk+IgorICAgICAgICAiICAgIDxwPlRoaXMgaXMgYSBw
YXJhZ3JhcGg8L3A+IgorICAgICAgICAiICAgIDxwIGxhbmc9J2VzJz5TcGFuaXNoPC9wPiIKKyAg
ICAgICAgIiAgPC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4iLAorICAgICAgICAiaHR0cDovL2V4
YW1wbGUub3JnIik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBh
dXRvIHRlc3RBcHAgPSB0ZXN0LT5maW5kVGVzdEFwcGxpY2F0aW9uKCk7CisgICAgZ19hc3NlcnRf
dHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKHRlc3RBcHAuZ2V0KCkpKTsKKworICAgIGF1dG8gZG9j
dW1lbnRXZWIgPSB0ZXN0LT5maW5kRG9jdW1lbnRXZWIodGVzdEFwcC5nZXQoKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZShBVFNQSV9JU19ET0NVTUVOVChkb2N1bWVudFdlYi5nZXQoKSkpOworICAgIGdf
YXNzZXJ0X2NtcGludChhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9jb3VudChkb2N1bWVudFdl
Yi5nZXQoKSwgbnVsbHB0ciksID09LCAyKTsKKworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbGFuZ3Vh
Z2UoYXRzcGlfZG9jdW1lbnRfZ2V0X2xvY2FsZShBVFNQSV9ET0NVTUVOVChkb2N1bWVudFdlYi5n
ZXQoKSksIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIobGFuZ3VhZ2UuZ2V0KCksID09
LCAiZW4tdXMiKTsKKyAgICAvLyBFbGVtZW50cyB3aXRoIG5vIGxhbmd1YWdlIGF0dHJpYnV0ZSBp
bmhld2lyIHRoZSBkb2N1bWVudCBvbmUuCisgICAgYXV0byBwMSA9IGFkb3B0R1JlZihhdHNwaV9h
Y2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChkb2N1bWVudFdlYi5nZXQoKSwgMCwgbnVsbHB0
cikpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShwMS5nZXQoKSkpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cihhdHNwaV9hY2Nlc3NpYmxlX2dldF9vYmplY3RfbG9jYWxlKHAx
LmdldCgpLCBudWxscHRyKSwgPT0sICJlbi11cyIpOworICAgIGF1dG8gcDIgPSBhZG9wdEdSZWYo
YXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgoZG9jdW1lbnRXZWIuZ2V0KCksIDEs
IG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUocDIuZ2V0
KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIoYXRzcGlfYWNjZXNzaWJsZV9nZXRfb2JqZWN0X2xv
Y2FsZShwMi5nZXQoKSwgbnVsbHB0ciksID09LCAiZXMiKTsKKworICAgIEdSZWZQdHI8R0hhc2hU
YWJsZT4gYXR0cmlidXRlcyA9IGFkb3B0R1JlZihhdHNwaV9kb2N1bWVudF9nZXRfYXR0cmlidXRl
cyhBVFNQSV9ET0NVTUVOVChkb2N1bWVudFdlYi5nZXQoKSksIG51bGxwdHIpKTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKGF0dHJpYnV0ZXMuZ2V0KCkpOworI2lmIFVTRShBVFNQSSkKKyAgICBnX2Fz
c2VydF9jbXB1aW50KGdfaGFzaF90YWJsZV9zaXplKGF0dHJpYnV0ZXMuZ2V0KCkpLCA9PSwgNSk7
CisjZWxzZQorICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19oYXNoX3RhYmxlX3NpemUoYXR0cmlidXRl
cy5nZXQoKSksID09LCAzKTsKKyNlbmRpZgorICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oZ19oYXNoX3RhYmxlX2xvb2t1cChhdHRyaWJ1dGVzLmdldCgpLCAiRG9j
VHlwZSIpKSwgPT0sICJodG1sIik7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB2YWx1ZShhdHNwaV9k
b2N1bWVudF9nZXRfZG9jdW1lbnRfYXR0cmlidXRlX3ZhbHVlKEFUU1BJX0RPQ1VNRU5UKGRvY3Vt
ZW50V2ViLmdldCgpKSwgY29uc3RfY2FzdDxjaGFyKj4oIkRvY1R5cGUiKSwgbnVsbHB0cikpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZS5nZXQoKSwgPT0sICJodG1sIik7CisgICAgZ19hc3Nl
cnRfY21wc3RyKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihnX2hhc2hfdGFibGVfbG9va3VwKGF0
dHJpYnV0ZXMuZ2V0KCksICJFbmNvZGluZyIpKSwgPT0sICJVVEYtOCIpOworICAgIHZhbHVlLnJl
c2V0KGF0c3BpX2RvY3VtZW50X2dldF9kb2N1bWVudF9hdHRyaWJ1dGVfdmFsdWUoQVRTUElfRE9D
VU1FTlQoZG9jdW1lbnRXZWIuZ2V0KCkpLCBjb25zdF9jYXN0PGNoYXIqPigiRW5jb2RpbmciKSwg
bnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZS5nZXQoKSwgPT0sICJVVEYtOCIp
OworICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZ19oYXNoX3Rh
YmxlX2xvb2t1cChhdHRyaWJ1dGVzLmdldCgpLCAiVVJJIikpLCA9PSwgImh0dHA6Ly9leGFtcGxl
Lm9yZy8iKTsKKyAgICB2YWx1ZS5yZXNldChhdHNwaV9kb2N1bWVudF9nZXRfZG9jdW1lbnRfYXR0
cmlidXRlX3ZhbHVlKEFUU1BJX0RPQ1VNRU5UKGRvY3VtZW50V2ViLmdldCgpKSwgY29uc3RfY2Fz
dDxjaGFyKj4oIlVSSSIpLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlLmdl
dCgpLCA9PSwgImh0dHA6Ly9leGFtcGxlLm9yZy8iKTsKKyNpZiBVU0UoQVRTUEkpCisgICAgZ19h
c3NlcnRfY21wc3RyKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihnX2hhc2hfdGFibGVfbG9va3Vw
KGF0dHJpYnV0ZXMuZ2V0KCksICJNaW1lVHlwZSIpKSwgPT0sICJ0ZXh0L2h0bWwiKTsKKyAgICB2
YWx1ZS5yZXNldChhdHNwaV9kb2N1bWVudF9nZXRfZG9jdW1lbnRfYXR0cmlidXRlX3ZhbHVlKEFU
U1BJX0RPQ1VNRU5UKGRvY3VtZW50V2ViLmdldCgpKSwgY29uc3RfY2FzdDxjaGFyKj4oIk1pbWVU
eXBlIiksIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWUuZ2V0KCksID09LCAi
dGV4dC9odG1sIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihnX2hhc2hfdGFibGVfbG9va3VwKGF0dHJpYnV0ZXMuZ2V0KCksICJUaXRsZSIpKSwgPT0sICJE
b2N1bWVudCBhdHRyaWJ1dGVzIik7CisgICAgdmFsdWUucmVzZXQoYXRzcGlfZG9jdW1lbnRfZ2V0
X2RvY3VtZW50X2F0dHJpYnV0ZV92YWx1ZShBVFNQSV9ET0NVTUVOVChkb2N1bWVudFdlYi5nZXQo
KSksIGNvbnN0X2Nhc3Q8Y2hhcio+KCJUaXRsZSIpLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHZhbHVlLmdldCgpLCA9PSwgIkRvY3VtZW50IGF0dHJpYnV0ZXMiKTsKKyNlbmRpZgor
fQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2Vi
S2l0QWNjZXNzaWJpbGl0eSIsICJhY2Nlc3NpYmxlL2Jhc2ljLWhpZXJhcmNoeSIsIHRlc3RBY2Nl
c3NpYmxlQmFzaWNIaWVyYXJjaHkpOwpAQCAtMTkxNyw2ICsxOTc5LDcgQEAgdm9pZCBiZWZvcmVB
bGwoKQogICAgIEFjY2Vzc2liaWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAi
aHlwZXJsaW5rL2Jhc2ljIiwgdGVzdEh5cGVybGlua0Jhc2ljKTsKICAgICBBY2Nlc3NpYmlsaXR5
VGVzdDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgImh5cGVydGV4dC9iYXNpYyIsIHRlc3RI
eXBlcnRleHRCYXNpYyk7CiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2ViS2l0QWNjZXNz
aWJpbGl0eSIsICJhY3Rpb24vYmFzaWMiLCB0ZXN0QWN0aW9uQmFzaWMpOworICAgIEFjY2Vzc2li
aWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAiZG9jdW1lbnQvYmFzaWMiLCB0
ZXN0RG9jdW1lbnRCYXNpYyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50QXRzcGkuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCmluZGV4IDhmZWM2MmQzODgzMy4u
ZGNjZTI2OWFiN2EwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNwaS5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50QXRzcGkuY3BwCkBAIC02ODQsNyArNjg0LDEyIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpCiAKIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiB7Ci0gICAgcmV0
dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisgICAgbV9lbGVtZW50LT51
cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICBhdXRvIGxvY2FsZSA9IG1fZWxlbWVudC0+bG9jYWxl
KCk7CisgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0
cnlDcmVhdGUobWFrZVN0cmluZygiQVhMYW5ndWFnZTogIiwgbG9jYWxlKSkubGVha1JlZigpOwog
fQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVs
cFRleHQoKSBjb25zdApAQCAtMTEyMiwxMiArMTEyNywxOCBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eVZhbHVlKCkgY29uc3QK
IAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3Vt
ZW50RW5jb2RpbmcoKQogewotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJz
KDAsIDApOworICAgIGlmICghbV9lbGVtZW50LT5pbnRlcmZhY2VzKCkuY29udGFpbnMoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpJbnRlcmZhY2U6OkRvY3VtZW50KSkKKyAgICAg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisKKyAgICByZXR1
cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1lbnQtPmRvY3VtZW50QXR0cmlidXRl
KCJFbmNvZGluZyIpKS5sZWFrUmVmKCk7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgpCiB7Ci0gICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisgICAgaWYgKCFtX2VsZW1lbnQtPmludGVy
ZmFjZXMoKS5jb250YWlucyhXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OkludGVy
ZmFjZTo6RG9jdW1lbnQpKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycygwLCAwKTsKKworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxl
bWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIlVSSSIpKS5sZWFrUmVmKCk7CiB9CiAKIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444813</attachid>
            <date>2021-11-19 06:31:13 -0800</date>
            <delta_ts>2021-11-19 06:50:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-document.diff</filename>
            <type>text/plain</type>
            <size>20339</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZjU0ZmEzMGE4ZDkuLmZmZGVjNzI4NDEzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDIxLTExLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2Yg
ZG9jdW1lbnQgaW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0aCBBVFNQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNzU1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmludGVyZmFjZXNG
b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpw
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6bG9jYWxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YnVp
bGRJbnRlcmZhY2VzIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdERvY3VtZW50QXRzcGkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6ZG9jdW1lbnRBdHRyaWJ1dGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpkb2N1bWVudEF0dHJp
YnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
Ojpkb2N1bWVudExvY2FsZSBjb25zdCk6CisKIDIwMjEtMTEtMDUgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbXBs
ZW1lbnRhdGlvbiBvZiBhY3Rpb24gaW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0aCBBVFNQSQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzR1RLLnR4dAppbmRleCA0MDdmM2Q2NGQ5N2IuLjBiNDkwODgzNzhhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0dUSy50eHQKQEAgLTQzLDYgKzQzLDcgQEAgYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nl
c3NpYmlsaXR5QXRzcGkuY3BwCiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAKIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEFjdGlv
bkF0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q29tcG9u
ZW50QXRzcGkuY3BwCithY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3REb2N1
bWVudEF0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlw
ZXJsaW5rQXRzcGkuY3BwCiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RI
eXBlcnRleHRBdHNwaS5jcHAKIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFRleHRBdHNwaS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAppbmRleCBlODc1ZTQ5
NDVhMmUuLjg5ODZhNTkyYzVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcApAQCAt
OTEsNiArOTEsOSBAQCBPcHRpb25TZXQ8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpJbnRlcmZh
Y2U+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6aW50ZXJmYQogICAgIGlmIChjb3JlT2JqZWN0
LmlzTGluaygpIHx8IChpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KHJlbmRlcmVyKSkpCiAgICAg
ICAgIGludGVyZmFjZXMuYWRkKEludGVyZmFjZTo6SHlwZXJsaW5rKTsKIAorICAgIGlmIChjb3Jl
T2JqZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQorICAgICAg
ICBpbnRlcmZhY2VzLmFkZChJbnRlcmZhY2U6OkRvY3VtZW50KTsKKwogICAgIHJldHVybiBpbnRl
cmZhY2VzOwogfQogCkBAIC00NDUsNyArNDQ4LDcgQEAgR0RCdXNJbnRlcmZhY2VWVGFibGUgQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzX2FjY2Vzc2libGVGdW5jdGlvbnMgPSB7CiAgICAgICAg
IGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIkRlc2NyaXB0aW9uIikpCiAgICAgICAgICAg
ICByZXR1cm4gZ192YXJpYW50X25ld19zdHJpbmcoYXRzcGlPYmplY3QtPmRlc2NyaXB0aW9uKCku
ZGF0YSgpKTsKICAgICAgICAgaWYgKCFnX3N0cmNtcDAocHJvcGVydHlOYW1lLCAiTG9jYWxlIikp
Ci0gICAgICAgICAgICByZXR1cm4gZ192YXJpYW50X25ld19zdHJpbmcoc2V0bG9jYWxlKExDX01F
U1NBR0VTLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXR1cm4gZ192YXJpYW50X25ld19zdHJp
bmcoYXRzcGlPYmplY3QtPmxvY2FsZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBpZiAoIWdf
c3RyY21wMChwcm9wZXJ0eU5hbWUsICJBY2Nlc3NpYmxlSWQiKSkKICAgICAgICAgICAgIHJldHVy
biBnX3ZhcmlhbnRfbmV3X3N0cmluZyhhdHNwaU9iamVjdC0+bV9heE9iamVjdCA/IFN0cmluZzo6
bnVtYmVyKGF0c3BpT2JqZWN0LT5tX2F4T2JqZWN0LT5vYmplY3RJRCgpLnRvVUludDY0KCkpLnV0
ZjgoKS5kYXRhKCkgOiAiIik7CiAgICAgICAgIGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwg
IlBhcmVudCIpKQpAQCAtNDg1LDYgKzQ4OCw4IEBAIGNvbnN0IFN0cmluZyYgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjpwYXRoKCkKICAgICAgICAgICAgIGludGVyZmFjZXMuYXBwZW5kKHsgY29u
c3RfY2FzdDxHREJ1c0ludGVyZmFjZUluZm8qPigmd2Via2l0X2h5cGVydGV4dF9pbnRlcmZhY2Up
LCAmc19oeXBlcnRleHRGdW5jdGlvbnMgfSk7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZXMuY29u
dGFpbnMoSW50ZXJmYWNlOjpBY3Rpb24pKQogICAgICAgICAgICAgaW50ZXJmYWNlcy5hcHBlbmQo
eyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRfYWN0aW9uX2ludGVyZmFj
ZSksICZzX2FjdGlvbkZ1bmN0aW9ucyB9KTsKKyAgICAgICAgaWYgKG1faW50ZXJmYWNlcy5jb250
YWlucyhJbnRlcmZhY2U6OkRvY3VtZW50KSkKKyAgICAgICAgICAgIGludGVyZmFjZXMuYXBwZW5k
KHsgY29uc3RfY2FzdDxHREJ1c0ludGVyZmFjZUluZm8qPigmd2Via2l0X2RvY3VtZW50X2ludGVy
ZmFjZSksICZzX2RvY3VtZW50RnVuY3Rpb25zIH0pOwogICAgICAgICBtX3BhdGggPSBhdHNwaVJv
b3QtPmF0c3BpKCkucmVnaXN0ZXJPYmplY3QoKnRoaXMsIFdURk1vdmUoaW50ZXJmYWNlcykpOwog
ICAgIH0KIApAQCAtNjk1LDYgKzcwMCwxMiBAQCBDU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaTo6ZGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiAiIjsKIH0KIAorU3RyaW5nIEFj
Y2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6bG9jYWxlKCkgY29uc3QKK3sKKyAgICBhdXRvKiBheE9i
amVjdCA9IGlzTWFpblRocmVhZCgpID8gbV9jb3JlT2JqZWN0IDogbV9heE9iamVjdDsKKyAgICBy
ZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+bGFuZ3VhZ2UoKSA6IFN0cmluZygpOworfQorCiBz
dGF0aWMgYm9vbCBzaG91bGRJbmNsdWRlT3JpZW50YXRpb25TdGF0ZShjb25zdCBBWENvcmVPYmpl
Y3QmIGNvcmVPYmplY3QpCiB7CiAgICAgcmV0dXJuIGNvcmVPYmplY3QuaXNDb21ib0JveCgpCkBA
IC0xMTE5LDYgKzExMzAsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YnVpbGRJ
bnRlcmZhY2VzKEdWYXJpYW50QnVpbGRlciogYnVpbGRlcikgY29uc3QKICAgICAgICAgZ192YXJp
YW50X2J1aWxkZXJfYWRkKGJ1aWxkZXIsICJzIiwgd2Via2l0X2h5cGVydGV4dF9pbnRlcmZhY2Uu
bmFtZSk7CiAgICAgaWYgKG1faW50ZXJmYWNlcy5jb250YWlucyhJbnRlcmZhY2U6OkFjdGlvbikp
CiAgICAgICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZChidWlsZGVyLCAicyIsIHdlYmtpdF9hY3Rp
b25faW50ZXJmYWNlLm5hbWUpOworICAgIGlmIChtX2ludGVyZmFjZXMuY29udGFpbnMoSW50ZXJm
YWNlOjpEb2N1bWVudCkpCisgICAgICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZChidWlsZGVyLCAi
cyIsIHdlYmtpdF9kb2N1bWVudF9pbnRlcmZhY2UubmFtZSk7CiB9CiAKIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjpzZXJpYWxpemUoR1ZhcmlhbnRCdWlsZGVyKiBidWlsZGVyKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGkuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkv
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmgKaW5kZXggMDQzYWIyYjI3ZmZmLi40OGQ3NDAxYmEw
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuaApAQCAtNDksNyArNDksOCBAQCBwdWJsaWM6
CiAgICAgICAgIFZhbHVlID0gMSA8PCAzLAogICAgICAgICBIeXBlcmxpbmsgPSAxIDw8IDQsCiAg
ICAgICAgIEh5cGVydGV4dCA9IDEgPDwgNSwKLSAgICAgICAgQWN0aW9uID0gMSA8PCA2CisgICAg
ICAgIEFjdGlvbiA9IDEgPDwgNiwKKyAgICAgICAgRG9jdW1lbnQgPSAxIDw8IDcKICAgICB9Owog
ICAgIGNvbnN0IE9wdGlvblNldDxJbnRlcmZhY2U+JiBpbnRlcmZhY2VzKCkgY29uc3QgeyByZXR1
cm4gbV9pbnRlcmZhY2VzOyB9CiAKQEAgLTc0LDYgKzc1LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBpZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIENTdHJpbmcg
bmFtZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIENTdHJpbmcgZGVzY3JpcHRpb24oKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9jYWxlKCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdW5zaWduZWQgcm9sZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHVu
c2lnbmVkIGNoaWxkQ291bnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaT4+IGNoaWxkcmVuKCkgY29uc3Q7CkBAIC0xMjYs
NiArMTI4LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhY3Rpb25OYW1l
KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkb0FjdGlvbigpIGNvbnN0OwogCisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRvY3VtZW50QXR0cmlidXRlKGNvbnN0IFN0cmluZyYp
IGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aShBWENvcmVPYmplY3QqKTsKIApAQCAtMTY4LDYgKzE3Miw5IEBAIHByaXZhdGU6CiAgICAgU3Ry
aW5nIGxvY2FsaXplZEFjdGlvbk5hbWUoKSBjb25zdDsKICAgICBTdHJpbmcgYWN0aW9uS2V5Qmlu
ZGluZygpIGNvbnN0OwogCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZG9jdW1lbnRBdHRy
aWJ1dGVzKCkgY29uc3Q7CisgICAgU3RyaW5nIGRvY3VtZW50TG9jYWxlKCkgY29uc3Q7CisKICAg
ICBzdGF0aWMgT3B0aW9uU2V0PEludGVyZmFjZT4gaW50ZXJmYWNlc0Zvck9iamVjdChBWENvcmVP
YmplY3QmKTsKIAogICAgIHN0YXRpYyBHREJ1c0ludGVyZmFjZVZUYWJsZSBzX2FjY2Vzc2libGVG
dW5jdGlvbnM7CkBAIC0xNzcsNiArMTg0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgR0RCdXNJ
bnRlcmZhY2VWVGFibGUgc19oeXBlcmxpbmtGdW5jdGlvbnM7CiAgICAgc3RhdGljIEdEQnVzSW50
ZXJmYWNlVlRhYmxlIHNfaHlwZXJ0ZXh0RnVuY3Rpb25zOwogICAgIHN0YXRpYyBHREJ1c0ludGVy
ZmFjZVZUYWJsZSBzX2FjdGlvbkZ1bmN0aW9uczsKKyAgICBzdGF0aWMgR0RCdXNJbnRlcmZhY2VW
VGFibGUgc19kb2N1bWVudEZ1bmN0aW9uczsKIAogICAgIEFYQ29yZU9iamVjdCogbV9heE9iamVj
dCB7IG51bGxwdHIgfTsKICAgICBBWENvcmVPYmplY3QqIG1fY29yZU9iamVjdCB7IG51bGxwdHIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdERvY3VtZW50QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0RG9jdW1lbnRBdHNwaS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YmNkN2E0MGU4ZmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlP
YmplY3REb2N1bWVudEF0c3BpLmNwcApAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpLmgiCisKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYg
VVNFKEFUU1BJKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudElu
bGluZXMuaCIKKyNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGk6OnNfZG9jdW1lbnRGdW5jdGlvbnMgPSB7CisgICAgLy8gbWV0aG9k
X2NhbGwKKyAgICBbXShHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFy
KiwgY29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhciogbWV0aG9kTmFtZSwgR1ZhcmlhbnQqIHBhcmFt
ZXRlcnMsIEdEQnVzTWV0aG9kSW52b2NhdGlvbiogaW52b2NhdGlvbiwgZ3BvaW50ZXIgdXNlckRh
dGEpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAg
YXV0byBhdHNwaU9iamVjdCA9IFJlZiB7ICpzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGkqPih1c2VyRGF0YSkgfTsKKyAgICAgICAgYXRzcGlPYmplY3QtPnVwZGF0ZUJhY2tpbmdT
dG9yZSgpOworCisgICAgICAgIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRBdHRyaWJ1
dGVWYWx1ZSIpKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lOworICAgICAgICAgICAg
Z192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKCZzKSIsICZuYW1lKTsKKyAgICAgICAgICAgIGdf
ZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50
X25ldygiKHMpIiwgYXRzcGlPYmplY3QtPmRvY3VtZW50QXR0cmlidXRlKFN0cmluZzo6ZnJvbVVU
RjgobmFtZSkpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAw
KG1ldGhvZE5hbWUsICJHZXRBdHRyaWJ1dGVzIikpIHsKKyAgICAgICAgICAgIEdWYXJpYW50QnVp
bGRlciBidWlsZGVyID0gR19WQVJJQU5UX0JVSUxERVJfSU5JVChHX1ZBUklBTlRfVFlQRSgiKGF7
c3N9KSIpKTsKKyAgICAgICAgICAgIGdfdmFyaWFudF9idWlsZGVyX29wZW4oJmJ1aWxkZXIsIEdf
VkFSSUFOVF9UWVBFKCJhe3NzfSIpKTsKKyAgICAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IGF0
c3BpT2JqZWN0LT5kb2N1bWVudEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgaXQgOiBhdHRyaWJ1dGVzKQorICAgICAgICAgICAgICAgIGdfdmFyaWFudF9idWlsZGVy
X2FkZCgmYnVpbGRlciwgIntzc30iLCBpdC5rZXkudXRmOCgpLmRhdGEoKSwgaXQudmFsdWUudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9jbG9zZSgmYnVpbGRl
cik7CisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGlu
dm9jYXRpb24sIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcikpOworICAgICAgICB9IGVs
c2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldExvY2FsZSIpKQorICAgICAgICAgICAg
Z19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3Zhcmlh
bnRfbmV3KCIocykiLCBhdHNwaU9iamVjdC0+ZG9jdW1lbnRMb2NhbGUoKS51dGY4KCkuZGF0YSgp
KSk7CisgICAgfSwKKyAgICAvLyBnZXRfcHJvcGVydHkKKyAgICBbXShHREJ1c0Nvbm5lY3Rpb24q
LCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwgY29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhciog
cHJvcGVydHlOYW1lLCBHRXJyb3IqKiBlcnJvciwgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdWYXJp
YW50KiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgICAg
IGF1dG8gYXRzcGlPYmplY3QgPSBSZWYgeyAqc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpKj4odXNlckRhdGEpIH07CisgICAgICAgIGF0c3BpT2JqZWN0LT51cGRhdGVCYWNraW5n
U3RvcmUoKTsKKworICAgICAgICBpZiAoIWdfc3RyY21wMChwcm9wZXJ0eU5hbWUsICJDdXJyZW50
UGFnZU51bWJlciIpKQorICAgICAgICAgICAgcmV0dXJuIGdfdmFyaWFudF9uZXdfaW50MzIoLTEp
OworICAgICAgICBpZiAoIWdfc3RyY21wMChwcm9wZXJ0eU5hbWUsICJQYWdlQ291bnQiKSkKKyAg
ICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2ludDMyKC0xKTsKKworICAgICAgICBnX3Nl
dF9lcnJvcihlcnJvciwgR19JT19FUlJPUiwgR19JT19FUlJPUl9OT1RfU1VQUE9SVEVELCAiVW5r
bm93biBwcm9wZXJ0eSAnJXMnIiwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfSwKKyAgICAvLyBzZXRfcHJvcGVydHksCisgICAgbnVsbHB0ciwKKyAgICAvLyBw
YWRkaW5nCisgICAgbnVsbHB0cgorfTsKKworU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aTo6ZG9jdW1lbnRBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8U3RyaW5nPihb
dGhpcywgbmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCldKCkgLT4gU3RyaW5nIHsKKyAgICAgICAg
aWYgKG1fY29yZU9iamVjdCkKKyAgICAgICAgICAgIG1fY29yZU9iamVjdC0+dXBkYXRlQmFja2lu
Z1N0b3JlKCk7CisKKyAgICAgICAgaWYgKCFtX2NvcmVPYmplY3QpCisgICAgICAgICAgICByZXR1
cm4geyB9OworCisgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gbV9jb3JlT2JqZWN0LT5kb2N1bWVu
dCgpOworICAgICAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgICAgICBpZiAobmFtZSA9PSAiRG9jVHlwZSJfcykKKyAgICAgICAgICAgIHJldHVybiBkb2N1
bWVudC0+ZG9jdHlwZSgpID8gZG9jdW1lbnQtPmRvY3R5cGUoKS0+bmFtZSgpLmlzb2xhdGVkQ29w
eSgpIDogU3RyaW5nKCk7CisgICAgICAgIGlmIChuYW1lID09ICJFbmNvZGluZyJfcykKKyAgICAg
ICAgICAgIHJldHVybiBkb2N1bWVudC0+Y2hhcnNldCgpLmlzb2xhdGVkQ29weSgpOworICAgICAg
ICBpZiAobmFtZSA9PSAiVVJJIl9zKQorICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5kb2N1
bWVudFVSSSgpLmlzb2xhdGVkQ29weSgpOworICAgICAgICBpZiAobmFtZSA9PSAiTWltZVR5cGUi
X3MpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmNvbnRlbnRUeXBlKCkuaXNvbGF0ZWRD
b3B5KCk7CisgICAgICAgIGlmIChuYW1lID09ICJUaXRsZSJfcykKKyAgICAgICAgICAgIHJldHVy
biBkb2N1bWVudC0+dGl0bGUoKS5pc29sYXRlZENvcHkoKTsKKworICAgICAgICByZXR1cm4geyB9
OworICAgIH0pOworfQorCitIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QXRzcGk6OmRvY3VtZW50QXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPj4oW3RoaXNdKCkgLT4gSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4geworICAgICAgICBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiBtYXA7CisgICAgICAgIGlmIChtX2NvcmVPYmplY3QpCisgICAg
ICAgICAgICBtX2NvcmVPYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworCisgICAgICAgIGlm
ICghbV9jb3JlT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIG1hcDsKKworICAgICAgICBhdXRv
KiBkb2N1bWVudCA9IG1fY29yZU9iamVjdC0+ZG9jdW1lbnQoKTsKKyAgICAgICAgaWYgKCFkb2N1
bWVudCkKKyAgICAgICAgICAgIHJldHVybiBtYXA7CisKKyAgICAgICAgaWYgKGF1dG8qIGRvY3R5
cGUgPSBkb2N1bWVudC0+ZG9jdHlwZSgpKQorICAgICAgICAgICAgbWFwLmFkZCgiRG9jVHlwZSJf
cywgZG9jdHlwZS0+bmFtZSgpKTsKKworICAgICAgICBhdXRvIGNoYXJzZXQgPSBkb2N1bWVudC0+
Y2hhcnNldCgpOworICAgICAgICBpZiAoIWNoYXJzZXQuaXNFbXB0eSgpKQorICAgICAgICAgICAg
bWFwLmFkZCgiRW5jb2RpbmciX3MsIFdURk1vdmUoY2hhcnNldCkpOworCisgICAgICAgIGF1dG8g
dXJpID0gZG9jdW1lbnQtPmRvY3VtZW50VVJJKCk7CisgICAgICAgIGlmICghdXJpLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIG1hcC5hZGQoIlVSSSJfcywgV1RGTW92ZSh1cmkpKTsKKworICAgICAg
ICBhdXRvIGNvbnRlbnRUeXBlID0gZG9jdW1lbnQtPmNvbnRlbnRUeXBlKCk7CisgICAgICAgIGlm
ICghY29udGVudFR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgbWFwLmFkZCgiTWltZVR5cGUi
X3MsIFdURk1vdmUoY29udGVudFR5cGUpKTsKKworICAgICAgICBjb25zdCBhdXRvJiB0aXRsZSA9
IGRvY3VtZW50LT50aXRsZSgpOworICAgICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIG1hcC5hZGQoIlRpdGxlIl9zLCB0aXRsZSk7CisKKyAgICAgICAgcmV0dXJuIG1hcDsK
KyAgICB9KTsKK30KKworU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6ZG9jdW1lbnRM
b2NhbGUoKSBjb25zdAoreworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVl
RnJvbU1haW5UaHJlYWQ8U3RyaW5nPihbdGhpc10oKSAtPiBTdHJpbmcgeworICAgICAgICBpZiAo
bV9jb3JlT2JqZWN0KQorICAgICAgICAgICAgbV9jb3JlT2JqZWN0LT51cGRhdGVCYWNraW5nU3Rv
cmUoKTsKKworICAgICAgICBpZiAoIW1fY29yZU9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiB7
IH07CisKKyAgICAgICAgYXV0byogZG9jdW1lbnQgPSBtX2NvcmVPYmplY3QtPmRvY3VtZW50KCk7
CisgICAgICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAg
ICAgIHJldHVybiBkb2N1bWVudC0+Y29udGVudExhbmd1YWdlKCkuaXNvbGF0ZWRDb3B5KCk7Cisg
ICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShB
Q0NFU1NJQklMSVRZKSAmJiBVU0UoQVRTUEkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGQ0ZjRlNjI3OTJiLi43NjRlOGRmNTYxZmIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAyMS0xMS0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGRvY3VtZW50
IGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjc1NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB1bml0IHRlc3QgZm9yIHRoZSBkb2N1bWVu
dCBpbnRlcmZhY2UgYW5kIFdUUiBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcDoKKyAgICAg
ICAgKHRlc3REb2N1bWVudEJhc2ljKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50QXRzcGkuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5n
dWFnZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5j
b2RpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVS
SSk6CisKIDIwMjEtMTEtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBhY3Rpb24g
aW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxp
dHkuY3BwCmluZGV4IGI1NjUwYWQ5NDY1Zi4uZThhYmE1NjkxZGYzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFj
Y2Vzc2liaWxpdHkuY3BwCkBAIC0xODkzLDYgKzE4OTMsNjggQEAgc3RhdGljIHZvaWQgdGVzdEFj
dGlvbkJhc2ljKEFjY2Vzc2liaWxpdHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdf
YXNzZXJ0X2NtcHN0cihrZXlCaW5kaW5nLmdldCgpLCA9PSwgIiIpOwogfQogCitzdGF0aWMgdm9p
ZCB0ZXN0RG9jdW1lbnRCYXNpYyhBY2Nlc3NpYmlsaXR5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKK3sKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coODAwLCA2MDApOworICAgIHRlc3QtPmxvYWRI
dG1sKAorICAgICAgICAiPCFkb2N0eXBlIGh0bWw+IgorICAgICAgICAiPGh0bWw+IgorICAgICAg
ICAiICA8aGVhZD4iCisgICAgICAgICIgICAgPG1ldGEgaHR0cC1lcXVpdj0nY29udGVudC1sYW5n
dWFnZScgY29udGVudD0nZW4tdXMnLz4iCisgICAgICAgICIgICAgPG1ldGEgaHR0cC1lcXVpdj0n
Y29udGVudC10eXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnLz4iCisgICAg
ICAgICIgICAgPHRpdGxlPkRvY3VtZW50IGF0dHJpYnV0ZXM8L3RpdGxlPiIKKyAgICAgICAgIiAg
PC9oZWFkPiIKKyAgICAgICAgIiAgPGJvZHk+IgorICAgICAgICAiICAgIDxwPlRoaXMgaXMgYSBw
YXJhZ3JhcGg8L3A+IgorICAgICAgICAiICAgIDxwIGxhbmc9J2VzJz5TcGFuaXNoPC9wPiIKKyAg
ICAgICAgIiAgPC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4iLAorICAgICAgICAiaHR0cDovL2V4
YW1wbGUub3JnIik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBh
dXRvIHRlc3RBcHAgPSB0ZXN0LT5maW5kVGVzdEFwcGxpY2F0aW9uKCk7CisgICAgZ19hc3NlcnRf
dHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKHRlc3RBcHAuZ2V0KCkpKTsKKworICAgIGF1dG8gZG9j
dW1lbnRXZWIgPSB0ZXN0LT5maW5kRG9jdW1lbnRXZWIodGVzdEFwcC5nZXQoKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZShBVFNQSV9JU19ET0NVTUVOVChkb2N1bWVudFdlYi5nZXQoKSkpOworICAgIGdf
YXNzZXJ0X2NtcGludChhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9jb3VudChkb2N1bWVudFdl
Yi5nZXQoKSwgbnVsbHB0ciksID09LCAyKTsKKworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbGFuZ3Vh
Z2UoYXRzcGlfZG9jdW1lbnRfZ2V0X2xvY2FsZShBVFNQSV9ET0NVTUVOVChkb2N1bWVudFdlYi5n
ZXQoKSksIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIobGFuZ3VhZ2UuZ2V0KCksID09
LCAiZW4tdXMiKTsKKyAgICAvLyBFbGVtZW50cyB3aXRoIG5vIGxhbmd1YWdlIGF0dHJpYnV0ZSBp
bmhld2lyIHRoZSBkb2N1bWVudCBvbmUuCisgICAgYXV0byBwMSA9IGFkb3B0R1JlZihhdHNwaV9h
Y2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChkb2N1bWVudFdlYi5nZXQoKSwgMCwgbnVsbHB0
cikpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShwMS5nZXQoKSkpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cihhdHNwaV9hY2Nlc3NpYmxlX2dldF9vYmplY3RfbG9jYWxlKHAx
LmdldCgpLCBudWxscHRyKSwgPT0sICJlbi11cyIpOworICAgIGF1dG8gcDIgPSBhZG9wdEdSZWYo
YXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgoZG9jdW1lbnRXZWIuZ2V0KCksIDEs
IG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUocDIuZ2V0
KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIoYXRzcGlfYWNjZXNzaWJsZV9nZXRfb2JqZWN0X2xv
Y2FsZShwMi5nZXQoKSwgbnVsbHB0ciksID09LCAiZXMiKTsKKworICAgIEdSZWZQdHI8R0hhc2hU
YWJsZT4gYXR0cmlidXRlcyA9IGFkb3B0R1JlZihhdHNwaV9kb2N1bWVudF9nZXRfYXR0cmlidXRl
cyhBVFNQSV9ET0NVTUVOVChkb2N1bWVudFdlYi5nZXQoKSksIG51bGxwdHIpKTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKGF0dHJpYnV0ZXMuZ2V0KCkpOworI2lmIFVTRShBVFNQSSkKKyAgICBnX2Fz
c2VydF9jbXB1aW50KGdfaGFzaF90YWJsZV9zaXplKGF0dHJpYnV0ZXMuZ2V0KCkpLCA9PSwgNSk7
CisjZWxzZQorICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19oYXNoX3RhYmxlX3NpemUoYXR0cmlidXRl
cy5nZXQoKSksID09LCAzKTsKKyNlbmRpZgorICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oZ19oYXNoX3RhYmxlX2xvb2t1cChhdHRyaWJ1dGVzLmdldCgpLCAiRG9j
VHlwZSIpKSwgPT0sICJodG1sIik7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB2YWx1ZShhdHNwaV9k
b2N1bWVudF9nZXRfZG9jdW1lbnRfYXR0cmlidXRlX3ZhbHVlKEFUU1BJX0RPQ1VNRU5UKGRvY3Vt
ZW50V2ViLmdldCgpKSwgY29uc3RfY2FzdDxjaGFyKj4oIkRvY1R5cGUiKSwgbnVsbHB0cikpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZS5nZXQoKSwgPT0sICJodG1sIik7CisgICAgZ19hc3Nl
cnRfY21wc3RyKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihnX2hhc2hfdGFibGVfbG9va3VwKGF0
dHJpYnV0ZXMuZ2V0KCksICJFbmNvZGluZyIpKSwgPT0sICJVVEYtOCIpOworICAgIHZhbHVlLnJl
c2V0KGF0c3BpX2RvY3VtZW50X2dldF9kb2N1bWVudF9hdHRyaWJ1dGVfdmFsdWUoQVRTUElfRE9D
VU1FTlQoZG9jdW1lbnRXZWIuZ2V0KCkpLCBjb25zdF9jYXN0PGNoYXIqPigiRW5jb2RpbmciKSwg
bnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZS5nZXQoKSwgPT0sICJVVEYtOCIp
OworICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZ19oYXNoX3Rh
YmxlX2xvb2t1cChhdHRyaWJ1dGVzLmdldCgpLCAiVVJJIikpLCA9PSwgImh0dHA6Ly9leGFtcGxl
Lm9yZy8iKTsKKyAgICB2YWx1ZS5yZXNldChhdHNwaV9kb2N1bWVudF9nZXRfZG9jdW1lbnRfYXR0
cmlidXRlX3ZhbHVlKEFUU1BJX0RPQ1VNRU5UKGRvY3VtZW50V2ViLmdldCgpKSwgY29uc3RfY2Fz
dDxjaGFyKj4oIlVSSSIpLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlLmdl
dCgpLCA9PSwgImh0dHA6Ly9leGFtcGxlLm9yZy8iKTsKKyNpZiBVU0UoQVRTUEkpCisgICAgZ19h
c3NlcnRfY21wc3RyKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihnX2hhc2hfdGFibGVfbG9va3Vw
KGF0dHJpYnV0ZXMuZ2V0KCksICJNaW1lVHlwZSIpKSwgPT0sICJ0ZXh0L2h0bWwiKTsKKyAgICB2
YWx1ZS5yZXNldChhdHNwaV9kb2N1bWVudF9nZXRfZG9jdW1lbnRfYXR0cmlidXRlX3ZhbHVlKEFU
U1BJX0RPQ1VNRU5UKGRvY3VtZW50V2ViLmdldCgpKSwgY29uc3RfY2FzdDxjaGFyKj4oIk1pbWVU
eXBlIiksIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWUuZ2V0KCksID09LCAi
dGV4dC9odG1sIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihnX2hhc2hfdGFibGVfbG9va3VwKGF0dHJpYnV0ZXMuZ2V0KCksICJUaXRsZSIpKSwgPT0sICJE
b2N1bWVudCBhdHRyaWJ1dGVzIik7CisgICAgdmFsdWUucmVzZXQoYXRzcGlfZG9jdW1lbnRfZ2V0
X2RvY3VtZW50X2F0dHJpYnV0ZV92YWx1ZShBVFNQSV9ET0NVTUVOVChkb2N1bWVudFdlYi5nZXQo
KSksIGNvbnN0X2Nhc3Q8Y2hhcio+KCJUaXRsZSIpLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHZhbHVlLmdldCgpLCA9PSwgIkRvY3VtZW50IGF0dHJpYnV0ZXMiKTsKKyNlbmRpZgor
fQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2Vi
S2l0QWNjZXNzaWJpbGl0eSIsICJhY2Nlc3NpYmxlL2Jhc2ljLWhpZXJhcmNoeSIsIHRlc3RBY2Nl
c3NpYmxlQmFzaWNIaWVyYXJjaHkpOwpAQCAtMTkxNyw2ICsxOTc5LDcgQEAgdm9pZCBiZWZvcmVB
bGwoKQogICAgIEFjY2Vzc2liaWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAi
aHlwZXJsaW5rL2Jhc2ljIiwgdGVzdEh5cGVybGlua0Jhc2ljKTsKICAgICBBY2Nlc3NpYmlsaXR5
VGVzdDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgImh5cGVydGV4dC9iYXNpYyIsIHRlc3RI
eXBlcnRleHRCYXNpYyk7CiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2ViS2l0QWNjZXNz
aWJpbGl0eSIsICJhY3Rpb24vYmFzaWMiLCB0ZXN0QWN0aW9uQmFzaWMpOworICAgIEFjY2Vzc2li
aWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAiZG9jdW1lbnQvYmFzaWMiLCB0
ZXN0RG9jdW1lbnRCYXNpYyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50QXRzcGkuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCmluZGV4IDhmZWM2MmQzODgzMy4u
ZGNjZTI2OWFiN2EwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNwaS5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50QXRzcGkuY3BwCkBAIC02ODQsNyArNjg0LDEyIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpCiAKIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiB7Ci0gICAgcmV0
dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisgICAgbV9lbGVtZW50LT51
cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICBhdXRvIGxvY2FsZSA9IG1fZWxlbWVudC0+bG9jYWxl
KCk7CisgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0
cnlDcmVhdGUobWFrZVN0cmluZygiQVhMYW5ndWFnZTogIiwgbG9jYWxlKSkubGVha1JlZigpOwog
fQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVs
cFRleHQoKSBjb25zdApAQCAtMTEyMiwxMiArMTEyNywxOCBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eVZhbHVlKCkgY29uc3QK
IAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3Vt
ZW50RW5jb2RpbmcoKQogewotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJz
KDAsIDApOworICAgIGlmICghbV9lbGVtZW50LT5pbnRlcmZhY2VzKCkuY29udGFpbnMoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpJbnRlcmZhY2U6OkRvY3VtZW50KSkKKyAgICAg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisKKyAgICByZXR1
cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1lbnQtPmRvY3VtZW50QXR0cmlidXRl
KCJFbmNvZGluZyIpKS5sZWFrUmVmKCk7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgpCiB7Ci0gICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisgICAgaWYgKCFtX2VsZW1lbnQtPmludGVy
ZmFjZXMoKS5jb250YWlucyhXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OkludGVy
ZmFjZTo6RG9jdW1lbnQpKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycygwLCAwKTsKKworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxl
bWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIlVSSSIpKS5sZWFrUmVmKCk7CiB9CiAKIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQo=
</data>
<flag name="review"
          id="469925"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>