<?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>203654</bug_id>
          
          <creation_ts>2019-10-30 19:01:45 -0700</creation_ts>
          <short_desc>Rename AccessibilityObject::matchedParent as Accessibility::findAncestor and re-implement in a generic way so that can be used with both AccessibilityObjects and AXIsolatedTreeNodes.</short_desc>
          <delta_ts>2019-10-31 13:00:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>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="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-feeder</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>1585716</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-30 19:01:45 -0700</bug_when>
    <thetext>Rename AccessibilityObject::matchedParent as Accessibility::findAncestor and re-implement in a generic way so that can be used with both AccessibilityObjects and AXIsolatedTreeNodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585720</commentid>
    <comment_count>1</comment_count>
      <attachid>382408</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-30 19:12:15 -0700</bug_when>
    <thetext>Created attachment 382408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585808</commentid>
    <comment_count>2</comment_count>
      <attachid>382408</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-10-30 23:46:05 -0700</bug_when>
    <thetext>Comment on attachment 382408
Patch

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

approved pending fixes of minor nits

&gt; Source/WebCore/ChangeLog:12
&gt; +        - Created the namespace Accessibility for implementation deatils that not need to be exposed to client code.

deatils &gt; details

&gt; Source/WebCore/accessibility/AccessibilityObjectInterface.h:1103
&gt; +} // namespace ax

// namespace Accessibility</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585857</commentid>
    <comment_count>3</comment_count>
      <attachid>382453</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-31 05:32:45 -0700</bug_when>
    <thetext>Created attachment 382453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585859</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-10-31 05:36:26 -0700</bug_when>
    <thetext>Fixed the nits you pointed out. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585860</commentid>
    <comment_count>5</comment_count>
      <attachid>382453</attachid>
    <who name="EWS">ews-feeder</who>
    <bug_when>2019-10-31 05:37:53 -0700</bug_when>
    <thetext>Comment on attachment 382453
Patch

Rejecting attachment 382453 from commit-queue.

andresg_22@apple.com does not have committer permissions according to https://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/contributors.json by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586029</commentid>
    <comment_count>6</comment_count>
      <attachid>382453</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-31 12:59:28 -0700</bug_when>
    <thetext>Comment on attachment 382453
Patch

Clearing flags on attachment: 382453

Committed r251870: &lt;https://trac.webkit.org/changeset/251870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586030</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-31 12:59:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586032</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-31 13:00:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/56791932&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382408</attachid>
            <date>2019-10-30 19:12:15 -0700</date>
            <delta_ts>2019-10-31 05:32:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203654-20191030221214.patch</filename>
            <type>text/plain</type>
            <size>24666</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcyZWE4YzVmMTQ3NTZi
ZjQxNDNjMDIxYmM4ZjNiMjA1ZGY5MDdhMy4uNGIwZDg1MjczZGQxNTk3YjgzMjg4OTlkN2JhYzk3
ZmUxYjgwYzMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTEwLTMwICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCBhcyBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5j
ZXN0b3IgYW5kIHJlLWltcGxlbWVudCBpbiBhIGdlbmVyaWMgd2F5IHNvIHRoYXQgY2FuIGJlIHVz
ZWQgd2l0aCBib3RoIEFjY2Vzc2liaWxpdHlPYmplY3RzIGFuZCBBWElzb2xhdGVkVHJlZU5vZGVz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNjU0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIG5lY2Vzc2FyeSBzaW5jZSB0aGlzIGRvZXMgbm90IGNoYW5nZSBmdW5jdGlvbmFsaXR5
LgorCisgICAgICAgIC0gRGVsZXRlZCAgQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVu
dCBhbmQgcmVwbGFjZWQgd2l0aCAgQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yLgorICAgICAg
ICAtIEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvciBpcyBhIHRlbXBsYXRlIGZ1bmN0aW9uIHRo
YXQgY2FuIGJlIHVzZWQgd2l0aCBib3RoIEFjY2Vzc2liaWxpdHlPYmplY3RzIGFuZCBBWElzb2xh
dGVkVHJlZU5vZGVzLgorICAgICAgICAtIENyZWF0ZWQgdGhlIG5hbWVzcGFjZSBBY2Nlc3NpYmls
aXR5IGZvciBpbXBsZW1lbnRhdGlvbiBkZWF0aWxzIHRoYXQgbm90IG5lZWQgdG8gYmUgZXhwb3Nl
ZCB0byBjbGllbnQgY29kZS4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpoZWxwVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6dGV4dFVuZGVyRWxlbWVudCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OnBhcmVudE9iamVjdFVuaWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZlJvbGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xs
VmlldyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoZWFk
aW5nRWxlbWVudEZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEZXNjZW5kYW50T2ZPYmplY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvbkFuY2VzdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRXhwYW5kZWQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBWEhpZGRlbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2FibGVBbmNlc3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjplZGl0YWJsZUFuY2VzdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJhZGlvR3JvdXBBbmNlc3RvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3Rvcik6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc1BvcHVwIGNvbnN0KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojpjb21wdXRlQWNjZXNzaWJp
bGl0eUlzSWdub3JlZCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5VHJlZUFuY2VzdG9yXSk6CisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5TGlzdEFuY2VzdG9y
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmls
aXR5QXJ0aWNsZUFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIF9hY2Nlc3NpYmlsaXR5TGFuZG1hcmtBbmNlc3Rvcl0pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eVRhYmxlQW5jZXN0b3JdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlJ
c0luVGFibGVDZWxsXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IF9hY2Nlc3NpYmlsaXR5RmllbGRzZXRBbmNlc3Rvcl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eUZyYW1lQW5jZXN0b3JdKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGFibGVDZWxsUGFyZW50XSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRhYmxlUGFyZW50XSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlEYXRl
dGltZVZhbHVlXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRl
dGFpbFBhcmVudEZvclN1bW1hcnlPYmplY3Q6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGRldGFpbFBhcmVudEZvck9iamVjdDpdKToKKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdHJlZUl0ZW1QYXJlbnRGb3JPYmplY3Q6XSk6Cisg
ICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKToKKwogMjAxOS0xMC0zMCAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSB0cmFja2luZyBhbmQg
Y29tcHV0YXRpb24gb2YgdGltZXIgaGVhcCBjdXJyZW50IGluc2VydGlvbiBvcmRlciB0byBUaHJl
YWRUaW1lcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggMDMwNGVjNzI1NTBmMmE5YjQ3ZTBhOTFlOWYx
M2Q0ZGYwMDU2YTVjZS4uNjFiN2E0ZWM4M2M2M2Y2OTc4YTliNmQ0OWRmMWNkNTNlYzVmZDkwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmhlbHBUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRPcmRl
cikgY29uCiAgICAgICAgIGF1dG8gbWF0Y2hGdW5jID0gW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCkgewogICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5pc0ZpZWxkc2V0KCkg
JiYgIW9iamVjdC5hcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKS5pc0VtcHR5KCk7CiAgICAgICAg
IH07Ci0gICAgICAgIGlmIChjb25zdCBhdXRvKiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjptYXRjaGVkUGFyZW50KCp0aGlzLCBmYWxzZSwgV1RGTW92ZShtYXRjaEZ1bmMpKSkKKyAgICAg
ICAgaWYgKGNvbnN0IGF1dG8qIHBhcmVudCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PigqdGhpcywgZmFsc2UsIFdURk1vdmUobWF0Y2hGdW5jKSkpCiAg
ICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHBhcmVudC0+YXJp
YURlc2NyaWJlZEJ5QXR0cmlidXRlKCksIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpTdW1tYXJ5
KSk7CiAgICAgfQogCkBAIC0xNzcwLDcgKzE3NzAsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRN
bwogICAgIGlmIChpczxUZXh0Pihub2RlKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFRleHQ+
KCpub2RlKS53aG9sZVRleHQoKTsKIAotICAgIGJvb2wgaXNBcmlhVmlzaWJsZSA9IEFjY2Vzc2li
aWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIHRydWUsIFtdIChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBib29sIGlzQXJpYVZpc2libGUgPSBBY2Nlc3Np
YmlsaXR5OjpmaW5kQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKnRoaXMsIHRydWUsIFtd
IChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG9iamVjdC5nZXRBdHRyaWJ1dGUoYXJpYV9oaWRk
ZW5BdHRyKSwgImZhbHNlIik7CiAgICAgfSkgIT0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggYTM0
YTVmMDk2MjUxZmZmMzc3NjNhZDQxZmU0NjA3MzAzOGQ0NTJiYy4uMWNhODFlNDM5MzI0YzZiY2Fl
MDk1MDgxZDFmYzcxYzM1NGM2ODc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC01MjQsOSArNTI0LDkgQEAgdW5z
aWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YmxvY2txdW90ZUxldmVsKCkgY29uc3QKIAogQVhD
b3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBj
b25zdAogewotICAgIHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nl
c3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Ojpm
aW5kQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKnRoaXMsIGZhbHNlLCBbXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiAhb2JqZWN0LmFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKLSAgICB9KSk7CisgICAgfSk7CiB9CiAKIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnByZXZpb3VzU2libGluZ1VuaWdub3Jl
ZChpbnQgbGltaXQpIGNvbnN0CkBAIC02MjAsNyArNjIwLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3Qg
V1RGOjoKIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZlJvbGUoQWNj
ZXNzaWJpbGl0eVJvbGUgcm9sZSkgY29uc3QKIHsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9i
amVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgZmFsc2UsIFsmcm9sZV0gKGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5j
ZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKnRoaXMsIGZhbHNlLCBbJnJvbGVdIChjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xl
VmFsdWUoKSA9PSByb2xlOwogICAgIH0pICE9IG51bGxwdHI7CiB9CkBAIC0xOTM4LDcgKzE5Mzgs
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAKIGNv
bnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbmNlc3Rv
ckFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KGJvb2wgaW5jbHVkZVNlbGYpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3PihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBpbmNsdWRlU2VsZiwgW10gKGNvbnN0IGF1dG8mIG9i
amVjdCkgeworICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4oQWNj
ZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCBpbmNs
dWRlU2VsZiwgW10gKGNvbnN0IGF1dG8mIG9iamVjdCkgewogICAgICAgICByZXR1cm4gaXM8QWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc+KG9iamVjdCk7CiAgICAgfSkpOwogfQpAQCAtMjAzOCwxOSAr
MjAzOCw5IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRp
bmdFbGVtZW50Rm9yTm9kZShOb2RlKiBub2RlKQogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
YXhPYmplY3QgPSByZW5kZXJPYmplY3QtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRP
ckNyZWF0ZShyZW5kZXJPYmplY3QpOwogCi0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJp
bGl0eU9iamVjdCo+KEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKmF4T2JqZWN0
LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqYXhP
YmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAg
ICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVh
ZGluZzsKLSAgICB9KSk7Ci19Ci0KLWNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2Jq
ZWN0LCBib29sIGluY2x1ZGVTZWxmLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdCYpPiYgbWF0Y2hlcykKLXsKLSAgICBjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnQgPSBpbmNsdWRlU2VsZiA/ICZvYmplY3QgOiBvYmplY3QucGFyZW50T2Jq
ZWN0KCk7Ci0gICAgZm9yICg7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3Qo
KSkgewotICAgICAgICBpZiAobWF0Y2hlcygqcGFyZW50KSkKLSAgICAgICAgICAgIHJldHVybiBw
YXJlbnQ7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOworICAgIH0pOwogfQogCiB2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIHJlc3VsdCkKQEAgLTIzNjUsNyArMjM1NSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0KiBheE9iamVjdCkgY29u
CiAgICAgaWYgKCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmhhc0NoaWxkcmVuKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVk
UGFyZW50KCp0aGlzLCBmYWxzZSwgW2F4T2JqZWN0XSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dCYgb2JqZWN0KSB7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PigqdGhpcywgZmFsc2UsIFtheE9iamVjdF0gKGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gJm9iamVjdCA9PSBheE9iamVj
dDsKICAgICB9KSAhPSBudWxscHRyOwogfQpAQCAtMjczOSw5ICsyNzI5LDkgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0luc2lkZUxpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYpIGNv
bnN0CiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZl
UmVnaW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNo
ZWRQYXJlbnQoKnRoaXMsIHRydWUsIFtleGNsdWRlSWZPZmZdIChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0JiBvYmplY3QpIHsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9y
PEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCB0cnVlLCBbZXhjbHVkZUlmT2ZmXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3Quc3Vw
cG9ydHNMaXZlUmVnaW9uKGV4Y2x1ZGVJZk9mZik7Ci0gICAgfSkpOworICAgIH0pOwogfQogCiBi
b29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBjb25zdApA
QCAtMjk1OCw3ICsyOTQ4LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0V4cGFuZGVk
KCkgY29uc3QKICAgICAKICAgICAvLyBTdW1tYXJ5IGVsZW1lbnQgc2hvdWxkIHVzZSBpdHMgZGV0
YWlscyBwYXJlbnQncyBleHBhbmRlZCBzdGF0dXMuCiAgICAgaWYgKGlzU3VtbWFyeSgpKSB7Ci0g
ICAgICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmls
aXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgICAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlP
YmplY3Q+KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVj
dCkgewogICAgICAgICAgICAgcmV0dXJuIGlzPEhUTUxEZXRhaWxzRWxlbWVudD4ob2JqZWN0Lm5v
ZGUoKSk7CiAgICAgICAgIH0pKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+aXNFeHBhbmRl
ZCgpOwpAQCAtMzQyNSw3ICszNDE1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCkgY29uc3QKIC8vIGh0dHA6Ly93d3cudzMub3Jn
L1RSL3dhaS1hcmlhL3Rlcm1zI2RlZl9oaWRkZW4KIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBWEhpZGRlbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1h
dGNoZWRQYXJlbnQoKnRoaXMsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBv
YmplY3QpIHsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2li
aWxpdHlPYmplY3Q+KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYg
b2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShv
YmplY3QuZ2V0QXR0cmlidXRlKGFyaWFfaGlkZGVuQXR0ciksICJ0cnVlIik7CiAgICAgfSkgIT0g
bnVsbHB0cjsKIH0KQEAgLTM1MzgsMTYgKzM1MjgsMTYgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKGJvb2wgb24pCiAKIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZvY3VzYWJsZUFuY2VzdG9yKCkK
IHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4oQWNjZXNzaWJp
bGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5j
ZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKnRoaXMsIHRydWUsIFtdIChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5jYW5TZXRGb2N1
c0F0dHJpYnV0ZSgpOwotICAgIH0pKTsKKyAgICB9KTsKIH0KIAogQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWRpdGFibGVBbmNlc3RvcigpCiB7Ci0gICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1h
dGNoZWRQYXJlbnQoKnRoaXMsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBv
YmplY3QpIHsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2li
aWxpdHlPYmplY3Q+KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYg
b2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3QuaXNUZXh0Q29udHJvbCgpOwotICAgIH0p
KTsKKyAgICB9KTsKIH0KIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVj
dDo6aGlnaGVzdEVkaXRhYmxlQW5jZXN0b3IoKQpAQCAtMzU3MCw5ICszNTYwLDkgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6aGlnaGVzdEVkaXRhYmxlQW5jZXN0
b3IoKQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYWRpb0dy
b3VwQW5jZXN0b3IoKSBjb25zdAogewotICAgIHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxp
dHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBmYWxz
ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKnRoaXMsIGZh
bHNlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJl
dHVybiBvYmplY3QuaXNSYWRpb0dyb3VwKCk7Ci0gICAgfSkpOworICAgIH0pOwogfQogCiBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4
IDM4M2RkZWM4ZjM4NzAyZGZlNDg5YTA1MWFkNWQzZTg1YjcwMTU3OTYuLmM5NmY1MDhkMGQyZDI0
NjdkYWZiYzcxNTc2YTA2NzVjOGFlOWM4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC03NjEsNyArNzYxLDYgQEAgcHVi
bGljOgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yKCkg
b3ZlcnJpZGU7CiAKICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogYW5jZXN0b3JB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25zdCBvdmVycmlkZTsK
LSAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0Y2hlZFBhcmVudChjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiwgYm9vbCBpbmNsdWRlU2VsZiwgY29uc3QgV1RGOjpGdW5j
dGlvbjxib29sKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmKT4mKTsKIAogICAgIHZvaWQgY2xl
YXJJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpIG92ZXJyaWRlIHsgbV9pc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YSA9IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSgpOyB9CiAgICAg
dm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFYQ29yZU9iamVjdCopIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCAyOTAzZGUxOTg4YzY1ZDUyYjViMjA3
YjAwNjA1MTFlZGY1MzgxNzdjLi4xYmZlY2U0MDg0OTYxMTEwYzc2ZGNlMTQ2YzkzZWU5MTA5MjA4
MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMTA3Nyw0ICsxMDc3LDI4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChB
WENvcmVPYmplY3QqKSA9IDA7CiB9OwogCituYW1lc3BhY2UgQWNjZXNzaWJpbGl0eSB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEY+CitUKiBmaW5kQW5jZXN0b3IoY29uc3QgVCYg
b2JqZWN0LCBib29sIGluY2x1ZGVTZWxmLCBjb25zdCBGJiBtYXRjaGVzKQoreworICAgIFQqIHBh
cmVudDsKKyAgICBpZiAoaW5jbHVkZVNlbGYpCisgICAgICAgIHBhcmVudCA9IGNvbnN0X2Nhc3Q8
VCo+KCZvYmplY3QpOworICAgIGVsc2UgeworICAgICAgICBhdXRvKiBwYXJlbnRQdHIgPSBvYmpl
Y3QucGFyZW50T2JqZWN0KCk7CisgICAgICAgIGlmICghaXM8VD4ocGFyZW50UHRyKSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBwYXJlbnQgPSBwYXJlbnRQdHI7CisgICAg
fQorCisgICAgZm9yICg7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkg
eworICAgICAgICBpZiAobWF0Y2hlcygqcGFyZW50KSkKKyAgICAgICAgICAgIHJldHVybiBwYXJl
bnQ7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIGF4
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA3YzBiZTc0
NzM1NTBiMWY5MjJhZTZjODczZjY1N2U3NGYxNjFhYzFlLi44OTQ5NmJkNjQ3ZTAyMWYzODBmMGU1
OGFlZmI3MGE5MjU1NTE0NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTEwMzMsNyArMTAz
Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzVGV4dEFsdGVybmF0aXZl
KCkgY29uc3QKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzUG9wdXAoKSBjb25z
dAogewogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoaXMgaGFzIHRoZSBhcmlhLWhhc3BvcHVwIGF0
dHJpYnV0ZSwgb3IgaWYgaXQgaGFzIGFuIGFuY2VzdG9yIG9mIHR5cGUgbGluayB3aXRoIHRoZSBh
cmlhLWhhc3BvcHVwIGF0dHJpYnV0ZS4KLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6
bWF0Y2hlZFBhcmVudCgqdGhpcywgdHJ1ZSwgW3RoaXNdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0JiBvYmplY3QpIHsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFj
Y2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCB0cnVlLCBbdGhpc10gKGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gKHRoaXMgPT0gJm9iamVjdCkgPyAh
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uob2JqZWN0LnBvcHVwVmFsdWUoKSwgImZhbHNl
IikKICAgICAgICAgICAgIDogb2JqZWN0LmlzTGluaygpICYmICFlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShvYmplY3QucG9wdXBWYWx1ZSgpLCAiZmFsc2UiKTsKICAgICB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHRWxl
bWVudC5jcHAKaW5kZXggYjA2Njg4NjM1ZTZlZjBlZDc5Y2JkNGM1OWYyM2IzMDhjOTgyYWUyOC4u
YzcxMTQzOTgyNWY0ZTMyZmYyOTk5NDdiYjcwOTQ3MjAxNzc0NmM4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudC5j
cHAKQEAgLTI0OCw3ICsyNDgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojpjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgaWYgKG1fcmVuZGVyZXItPmlz
U1ZHU2hhcGUoKSkgewogICAgICAgICBpZiAoY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSB8fCBlbGVt
ZW50KCktPmhhc0V2ZW50TGlzdGVuZXJzKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGlmIChhdXRvIHN2Z1BhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQ
YXJlbnQoKnRoaXMsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3Qp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHN2Z1BhcmVudCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNl
c3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5oYXNBdHRy
aWJ1dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKSB8fCBvYmplY3QuaXNBY2Nlc3NpYmlsaXR5U1ZH
Um9vdCgpOwogICAgICAgICB9KSkKICAgICAgICAgICAgIHJldHVybiAhc3ZnUGFyZW50LT5oYXNB
dHRyaWJ1dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KaW5kZXggODdiZmI5ZTE5MzA4ZGFlMGNhYTA5OGRhNjY5YWM5NTIwZWNl
MjgzMy4uOThmOTQwMmI4OGNmNDhlYzBkMzBjZDVmZTNiZGU1MWU3NWQzZWYxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTU1NSw3ICs1NTUsNyBAQCBzdGF0
aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNl
c3RvcihBY2Nlc3NpYmlsaXR5TwogICAgICAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VHJlZTsKICAgICB9OwogICAgIAotICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29iamVj
dCwgZmFsc2UsIFdURk1vdmUobWF0Y2hGdW5jKSkpCisgICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBY2Nlc3NpYmls
aXR5T2JqZWN0PigqbV9vYmplY3QsIGZhbHNlLCBXVEZNb3ZlKG1hdGNoRnVuYykpKQogICAgICAg
ICByZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7CiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTU2Nywx
NCArNTY3LDE0IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogQWNjZXNzaWJp
bGl0eVVuaWdub3JlZEFuY2VzdG9yKEFjY2Vzc2liaWxpdHlPCiAgICAgICAgIHJldHVybiByb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
Okxpc3RCb3g7CiAgICAgfTsKICAgICAKLSAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqbV9vYmplY3Qs
IGZhbHNlLCBXVEZNb3ZlKG1hdGNoRnVuYykpKQorICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QWNjZXNzaWJpbGl0
eU9iamVjdD4oKm1fb2JqZWN0LCBmYWxzZSwgV1RGTW92ZShtYXRjaEZ1bmMpKSkKICAgICAgICAg
cmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOwogICAgIHJldHVybiBuaWw7CiB9CiAKIC0gKEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyKilfYWNjZXNzaWJpbGl0eUFydGljbGVBbmNlc3Rvcgogewot
ICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29iamVjdCwgZmFsc2UsIFtdIChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+KCptX29iamVjdCwgZmFsc2UsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmpl
Y3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6RG9jdW1lbnRBcnRpY2xlOwogICAgIH0pKQogICAgICAgICByZXR1cm4gcGFyZW50LT53
cmFwcGVyKCk7CkBAIC01ODMsNyArNTgzLDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNjZXNzaWJpbGl0eU8KIAog
LSAoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKV9hY2Nlc3NpYmlsaXR5TGFuZG1hcmtBbmNl
c3RvcgogewotICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29iamVjdCwgZmFsc2UsIFtzZWxmXSAo
Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAgaWYgKGNvbnN0IEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PigqbV9vYmplY3QsIGZhbHNlLCBbc2VsZl0gKGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gW3NlbGYgX2FjY2Vzc2liaWxp
dHlJc0xhbmRtYXJrUm9sZTpvYmplY3Qucm9sZVZhbHVlKCldOwogICAgIH0pKQogICAgICAgICBy
ZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7CkBAIC01OTIsNyArNTkyLDcgQEAgc3RhdGljIEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNj
ZXNzaWJpbGl0eU8KIAogLSAoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKV9hY2Nlc3NpYmls
aXR5VGFibGVBbmNlc3RvcgogewotICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBw
YXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29iamVjdCwgZmFs
c2UsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBpZiAoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2Vz
dG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCptX29iamVjdCwgZmFsc2UsIFtdIChjb25zdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGU7CiAgICAgfSkpCiAgICAgICAgIHJldHVy
biBwYXJlbnQtPndyYXBwZXIoKTsKQEAgLTYwMSwxNCArNjAxLDE0IEBAIHN0YXRpYyBBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciogQWNjZXNzaWJpbGl0eVVuaWdub3JlZEFuY2VzdG9yKEFjY2Vz
c2liaWxpdHlPCiAKIC0gKEJPT0wpX2FjY2Vzc2liaWxpdHlJc0luVGFibGVDZWxsCiB7Ci0gICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCBmYWxz
ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKm1fb2JqZWN0
LCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAg
ICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsOwog
ICAgIH0pICE9IG51bGxwdHI7CiB9CiAKIC0gKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilf
YWNjZXNzaWJpbGl0eUZpZWxkc2V0QW5jZXN0b3IKIHsKLSAgICBpZiAoY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgq
bV9vYmplY3QsIGZhbHNlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7
CisgICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxp
dHk6OmZpbmRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqbV9vYmplY3QsIGZhbHNlLCBb
XSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBv
YmplY3QuaXNGaWVsZHNldCgpOwogICAgIH0pKQogICAgICAgICByZXR1cm4gcGFyZW50LT53cmFw
cGVyKCk7CkBAIC02MTcsNyArNjE3LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNjZXNzaWJpbGl0eU8KIAogLSAo
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKV9hY2Nlc3NpYmlsaXR5RnJhbWVBbmNlc3Rvcgog
ewotICAgIGF1dG8qIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQo
Km1fb2JqZWN0LCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkg
eworICAgIGF1dG8qIHBhcmVudCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBY2Nlc3Np
YmlsaXR5T2JqZWN0PigqbV9vYmplY3QsIGZhbHNlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3QuaXNXZWJBcmVhKCk7CiAgICAg
fSk7CiAgICAgaWYgKCFwYXJlbnQpCkBAIC0xMTgyLDkgKzExODIsOSBAQCBzdGF0aWMgdm9pZCBh
cHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0
cmluZykKIC0gKEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqKXRhYmxlQ2VsbFBhcmVudAogewogICAg
IC8vIEZpbmQgaWYgdGhpcyBlbGVtZW50IGlzIGluIGEgdGFibGUgY2VsbC4KLSAgICBpZiAoQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0
Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqbV9vYmplY3QsIHRydWUsIFtd
IChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBpZiAoQWNjZXNzaWJp
bGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2li
aWxpdHlPYmplY3Q+KCptX29iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0LmlzVGFibGVDZWxsKCk7Ci0gICAg
fSkpKQorICAgIH0pKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbCo+KHBhcmVudCk7CiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTExOTIsOSArMTE5Miw5
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVz
dWx0LCBOU1N0cmluZyAqc3RyaW5nKQogLSAoQWNjZXNzaWJpbGl0eVRhYmxlKil0YWJsZVBhcmVu
dAogewogICAgIC8vIEZpbmQgaWYgdGhlIHBhcmVudCB0YWJsZSBmb3IgdGhlIHRhYmxlIGNlbGwu
Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IGNvbnN0X2Nhc3Q8QWNjZXNz
aWJpbGl0eU9iamVjdCo+KEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2Jq
ZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAg
aWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNl
c3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqbV9vYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGlzPEFjY2Vzc2liaWxp
dHlUYWJsZT4ob2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KG9iamVjdCku
aXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpOwotICAgIH0pKSkKKyAgICB9KSkKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+KHBhcmVudCk7CiAg
ICAgcmV0dXJuIG5pbDsKIH0KQEAgLTEzOTcsOCArMTM5NywxMCBAQCBzdGF0aWMgdm9pZCBhcHBl
bmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmlu
ZykKIHsKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAg
ICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmIChhdXRvIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdCYgb2JqZWN0KSB7IHJldHVybiBvYmplY3Quc3VwcG9ydHNEYXRldGltZUF0dHJp
YnV0ZSgpOyB9KSkKKworICAgIGlmIChhdXRvKiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5OjpmaW5k
QW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKm1fb2JqZWN0LCB0cnVlLCBbXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAgICAgIHJldHVybiBvYmplY3Quc3Vw
cG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpOworICAgIH0pKQogICAgICAgICByZXR1cm4gcGFyZW50
LT5kYXRldGltZUF0dHJpYnV0ZVZhbHVlKCk7CiAKICAgICByZXR1cm4gbmlsOwpAQCAtMTk3MSw3
ICsxOTczLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcq
IHZpZXcpCiB7CiAgICAgLy8gVXNlIHRoaXMgdG8gY2hlY2sgaWYgYW4gb2JqZWN0IGlzIHRoZSBj
aGlsZCBvZiBhIHN1bW1hcnkgb2JqZWN0LgogICAgIC8vIEFuZCByZXR1cm4gdGhlIHN1bW1hcnkn
cyBwYXJlbnQsIHdoaWNoIGlzIHRoZSBleHBhbmRhYmxlIGRldGFpbHMgb2JqZWN0LgotICAgIGlm
IChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzdW1tYXJ5ID0gQWNjZXNzaWJpbGl0eU9iamVj
dDo6bWF0Y2hlZFBhcmVudCgqb2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdCYgb2JqZWN0KSB7CisgICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHN1bW1h
cnkgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKm9i
amVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAg
ICAgICByZXR1cm4gb2JqZWN0Lmhhc1RhZ05hbWUoc3VtbWFyeVRhZyk7CiAgICAgfSkpCiAgICAg
ICAgIHJldHVybiBzdW1tYXJ5LT5wYXJlbnRPYmplY3QoKTsKQEAgLTE5ODEsNyArMTk4Myw3IEBA
IHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQogLSAo
QWNjZXNzaWJpbGl0eU9iamVjdCopZGV0YWlsUGFyZW50Rm9yT2JqZWN0OihBY2Nlc3NpYmlsaXR5
T2JqZWN0KilvYmplY3QKIHsKICAgICAvLyBVc2UgdGhpcyB0byBjaGVjayBpZiBhbiBvYmplY3Qg
aXMgaW5zaWRlIGEgZGV0YWlscyBvYmplY3QuCi0gICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3QqIGRldGFpbHMgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCpvYmpl
Y3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBp
ZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogZGV0YWlscyA9IEFjY2Vzc2liaWxpdHk6OmZp
bmRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pigqb2JqZWN0LCB0cnVlLCBbXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3QuaGFz
VGFnTmFtZShkZXRhaWxzVGFnKTsKICAgICB9KSkKICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8
QWNjZXNzaWJpbGl0eU9iamVjdCo+KGRldGFpbHMpOwpAQCAtMTk5MSwxMCArMTk5MywxMCBAQCBz
dGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoV0FLVmlldyogdmlldykKIC0gKEFj
Y2Vzc2liaWxpdHlPYmplY3QqKXRyZWVJdGVtUGFyZW50Rm9yT2JqZWN0OihBY2Nlc3NpYmlsaXR5
T2JqZWN0KilvYmplY3QKIHsKICAgICAvLyBVc2UgdGhpcyB0byBjaGVjayBpZiBhbiBvYmplY3Qg
aXMgaW5zaWRlIGEgdHJlZWl0ZW0gb2JqZWN0LgotICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCpvYmpl
Y3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBp
ZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2Vz
dG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCpvYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07CiAgICAgfSkpCi0gICAgICAgIHJldHVy
biBjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihwYXJlbnQpOworICAgICAgICByZXR1
cm4gcGFyZW50OwogICAgIHJldHVybiBuaWw7CiB9CiAKQEAgLTIyMDgsOCArMjIxMCw4IEBAIHN0
YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyogYXR0clN0cmluZywgUmVuCiAgICAgYXV0byBtYXRjaEZ1bmMgPSBbXSAoY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3Qubm9kZSgp
ICYmIG9iamVjdC5ub2RlKCktPmhhc1RhZ05hbWUoY29kZVRhZyk7CiAgICAgfTsKLSAgICAKLSAg
ICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eU9i
amVjdDo6bWF0Y2hlZFBhcmVudCgqYXhPYmplY3QsIHRydWUsIFdURk1vdmUobWF0Y2hGdW5jKSkp
CisKKyAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJp
bGl0eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCpheE9iamVjdCwgdHJ1ZSwg
V1RGTW92ZShtYXRjaEZ1bmMpKSkKICAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJ
QWNjZXNzaWJpbGl0eVRleHRBdHRyaWJ1dGVDb250ZXh0IHZhbHVlOlVJQWNjZXNzaWJpbGl0eVRl
eHR1YWxDb250ZXh0U291cmNlQ29kZSByYW5nZTpyYW5nZV07CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382453</attachid>
            <date>2019-10-31 05:32:45 -0700</date>
            <delta_ts>2019-10-31 12:59:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203654-20191031083244.patch</filename>
            <type>text/plain</type>
            <size>24677</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcyZWE4YzVmMTQ3NTZi
ZjQxNDNjMDIxYmM4ZjNiMjA1ZGY5MDdhMy4uMTBmNjgxYzFhMDE5YjdiZTE1ODAzZGNmZjEwYzYx
YTk5MzdiOWFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTEwLTMwICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCBhcyBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5j
ZXN0b3IgYW5kIHJlLWltcGxlbWVudCBpbiBhIGdlbmVyaWMgd2F5IHNvIHRoYXQgY2FuIGJlIHVz
ZWQgd2l0aCBib3RoIEFjY2Vzc2liaWxpdHlPYmplY3RzIGFuZCBBWElzb2xhdGVkVHJlZU5vZGVz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNjU0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIG5lY2Vzc2FyeSBzaW5jZSB0aGlzIGRvZXMgbm90IGNoYW5nZSBmdW5jdGlvbmFsaXR5
LgorCisgICAgICAgIC0gRGVsZXRlZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50
IGFuZCByZXBsYWNlZCB3aXRoIEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3Rvci4KKyAgICAgICAg
LSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3IgaXMgYSB0ZW1wbGF0ZSBmdW5jdGlvbiB0aGF0
IGNhbiBiZSB1c2VkIHdpdGggYm90aCBBY2Nlc3NpYmlsaXR5T2JqZWN0cyBhbmQgQVhJc29sYXRl
ZFRyZWVOb2Rlcy4KKyAgICAgICAgLSBDcmVhdGVkIHRoZSBuYW1lc3BhY2UgQWNjZXNzaWJpbGl0
eSBmb3IgaW1wbGVtZW50YXRpb24gZGV0YWlscyB0aGF0IG5lZWQgbm90IHRvIGJlIGV4cG9zZWQg
dG8gY2xpZW50IGNvZGUuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
aGVscFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OnRleHRVbmRlckVsZW1lbnQgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpwYXJlbnRPYmplY3RVbmlnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNEZXNjZW5kYW50T2ZSb2xlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2VzdG9yQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVhZGlu
Z0VsZW1lbnRGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzRGVzY2VuZGFudE9mT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmxpdmVSZWdpb25BbmNlc3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0V4cGFuZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVhIaWRkZW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Zm9jdXNhYmxlQW5jZXN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWRpdGFibGVBbmNlc3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYWRpb0dyb3VwQW5jZXN0b3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCk6
IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3IpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNQb3B1cCBjb25zdCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudDo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eVRyZWVBbmNlc3Rvcl0pOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eUxpc3RBbmNlc3Rvcl0p
OgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0
eUFydGljbGVBbmNlc3Rvcl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBfYWNjZXNzaWJpbGl0eUxhbmRtYXJrQW5jZXN0b3JdKToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlUYWJsZUFuY2VzdG9yXSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5SXNJ
blRhYmxlQ2VsbF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBf
YWNjZXNzaWJpbGl0eUZpZWxkc2V0QW5jZXN0b3JdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlGcmFtZUFuY2VzdG9yXSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRhYmxlQ2VsbFBhcmVudF0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0YWJsZVBhcmVudF0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5RGF0ZXRp
bWVWYWx1ZV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBkZXRh
aWxQYXJlbnRGb3JTdW1tYXJ5T2JqZWN0Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBkZXRhaWxQYXJlbnRGb3JPYmplY3Q6XSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRyZWVJdGVtUGFyZW50Rm9yT2JqZWN0Ol0pOgorICAg
ICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZSk6CisKIDIwMTktMTAtMzAgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdHJhY2tpbmcgYW5kIGNv
bXB1dGF0aW9uIG9mIHRpbWVyIGhlYXAgY3VycmVudCBpbnNlcnRpb24gb3JkZXIgdG8gVGhyZWFk
VGltZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDAzMDRlYzcyNTUwZjJhOWI0N2UwYTkxZTlmMTNk
NGRmMDA1NmE1Y2UuLjYxYjdhNGVjODNjNjNmNjk3OGE5YjZkNDlkZjFjZDUzZWM1ZmQ5MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3QuY3BwCkBAIC0xNDY3LDcgKzE0NjcsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpoZWxwVGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0T3JkZXIp
IGNvbgogICAgICAgICBhdXRvIG1hdGNoRnVuYyA9IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0JiBvYmplY3QpIHsKICAgICAgICAgICAgIHJldHVybiBvYmplY3QuaXNGaWVsZHNldCgpICYm
ICFvYmplY3QuYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkuaXNFbXB0eSgpOwogICAgICAgICB9
OwotICAgICAgICBpZiAoY29uc3QgYXV0byogcGFyZW50ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6
bWF0Y2hlZFBhcmVudCgqdGhpcywgZmFsc2UsIFdURk1vdmUobWF0Y2hGdW5jKSkpCisgICAgICAg
IGlmIChjb25zdCBhdXRvKiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QWNj
ZXNzaWJpbGl0eU9iamVjdD4oKnRoaXMsIGZhbHNlLCBXVEZNb3ZlKG1hdGNoRnVuYykpKQogICAg
ICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChwYXJlbnQtPmFyaWFE
ZXNjcmliZWRCeUF0dHJpYnV0ZSgpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkp
OwogICAgIH0KIApAQCAtMTc3MCw3ICsxNzcwLDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW8K
ICAgICBpZiAoaXM8VGV4dD4obm9kZSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxUZXh0Pigq
bm9kZSkud2hvbGVUZXh0KCk7CiAKLSAgICBib29sIGlzQXJpYVZpc2libGUgPSBBY2Nlc3NpYmls
aXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdCYgb2JqZWN0KSB7CisgICAgYm9vbCBpc0FyaWFWaXNpYmxlID0gQWNjZXNzaWJp
bGl0eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCB0cnVlLCBbXSAo
Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShvYmplY3QuZ2V0QXR0cmlidXRlKGFyaWFfaGlkZGVu
QXR0ciksICJmYWxzZSIpOwogICAgIH0pICE9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGEzNGE1
ZjA5NjI1MWZmZjM3NzYzYWQ0MWZlNDYwNzMwMzhkNDUyYmMuLjFjYTgxZTQzOTMyNGM2YmNhZTA5
NTA4MWQxZmM3MWMzNTRjNjg3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNTI0LDkgKzUyNCw5IEBAIHVuc2ln
bmVkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0CiAKIEFYQ29y
ZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4oQWNjZXNz
aWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgZmFsc2UsIFtdIChjb25zdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6Zmlu
ZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gIW9iamVjdC5hY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCk7Ci0gICAgfSkpOworICAgIH0pOwogfQogCiBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwcmV2aW91c1NpYmxpbmdVbmlnbm9yZWQo
aW50IGxpbWl0KSBjb25zdApAQCAtNjIwLDcgKzYyMCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGZpcnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0IFdU
Rjo6CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXNjZW5kYW50T2ZSb2xlKEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNlLCBbJnJvbGVdIChjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2Vz
dG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCBmYWxzZSwgWyZyb2xlXSAoY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZh
bHVlKCkgPT0gcm9sZTsKICAgICB9KSAhPSBudWxscHRyOwogfQpAQCAtMTkzOCw3ICsxOTM4LDcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1cGRhdGVCYWNraW5nU3RvcmUoKQogCiBjb25z
dCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogQWNjZXNzaWJpbGl0eU9iamVjdDo6YW5jZXN0b3JB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhib29sIGluY2x1ZGVTZWxmKSBjb25zdAogewotICAgIHJl
dHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4oQWNjZXNzaWJpbGl0eU9iamVj
dDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgaW5jbHVkZVNlbGYsIFtdIChjb25zdCBhdXRvJiBvYmpl
Y3QpIHsKKyAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc+KEFjY2Vz
c2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqdGhpcywgaW5jbHVk
ZVNlbGYsIFtdIChjb25zdCBhdXRvJiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIGlzPEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3PihvYmplY3QpOwogICAgIH0pKTsKIH0KQEAgLTIwMzgsMTkgKzIw
MzgsOSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoZWFkaW5n
RWxlbWVudEZvck5vZGUoTm9kZSogbm9kZSkKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4
T2JqZWN0ID0gcmVuZGVyT2JqZWN0LT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JD
cmVhdGUocmVuZGVyT2JqZWN0KTsKIAotICAgIHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxp
dHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCpheE9iamVjdCwg
dHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKmF4T2Jq
ZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAg
ICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRp
bmc7Ci0gICAgfSkpOwotfQotCi1jb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVj
dCwgYm9vbCBpbmNsdWRlU2VsZiwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IEFjY2Vz
c2liaWxpdHlPYmplY3QmKT4mIG1hdGNoZXMpCi17Ci0gICAgY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gaW5jbHVkZVNlbGYgPyAmb2JqZWN0IDogb2JqZWN0LnBhcmVudE9iamVj
dCgpOwotICAgIGZvciAoOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkp
IHsKLSAgICAgICAgaWYgKG1hdGNoZXMoKnBhcmVudCkpCi0gICAgICAgICAgICByZXR1cm4gcGFy
ZW50OwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9KTsKIH0KIAogdm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiByZXN1bHQpCkBAIC0yMzY1LDcgKzIzNTUsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0IEFYQ29yZU9iamVjdCogYXhPYmplY3QpIGNvbgog
ICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5oYXNDaGlsZHJlbigpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBh
cmVudCgqdGhpcywgZmFsc2UsIFtheE9iamVjdF0gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9iamVjdCkgeworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QWNjZXNz
aWJpbGl0eU9iamVjdD4oKnRoaXMsIGZhbHNlLCBbYXhPYmplY3RdIChjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuICZvYmplY3QgPT0gYXhPYmplY3Q7
CiAgICAgfSkgIT0gbnVsbHB0cjsKIH0KQEAgLTI3MzksOSArMjcyOSw5IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNJbnNpZGVMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25z
dAogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6bGl2ZVJl
Z2lvbkFuY2VzdG9yKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAogewotICAgIHJldHVybiBjb25z
dF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVk
UGFyZW50KCp0aGlzLCB0cnVlLCBbZXhjbHVkZUlmT2ZmXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdCYgb2JqZWN0KSB7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PigqdGhpcywgdHJ1ZSwgW2V4Y2x1ZGVJZk9mZl0gKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0LnN1cHBv
cnRzTGl2ZVJlZ2lvbihleGNsdWRlSWZPZmYpOwotICAgIH0pKTsKKyAgICB9KTsKIH0KIAogYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3QKQEAg
LTI5NTgsNyArMjk0OCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCgp
IGNvbnN0CiAgICAgCiAgICAgLy8gU3VtbWFyeSBlbGVtZW50IHNob3VsZCB1c2UgaXRzIGRldGFp
bHMgcGFyZW50J3MgZXhwYW5kZWQgc3RhdHVzLgogICAgIGlmIChpc1N1bW1hcnkoKSkgewotICAg
ICAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgZmFsc2UsIFtdIChjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICAgICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0PigqdGhpcywgZmFsc2UsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3Qp
IHsKICAgICAgICAgICAgIHJldHVybiBpczxIVE1MRGV0YWlsc0VsZW1lbnQ+KG9iamVjdC5ub2Rl
KCkpOwogICAgICAgICB9KSkKICAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPmlzRXhwYW5kZWQo
KTsKQEAgLTM0MjUsNyArMzQxNSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNz
aWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0CiAvLyBodHRwOi8vd3d3LnczLm9yZy9U
Ui93YWktYXJpYS90ZXJtcyNkZWZfaGlkZGVuCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QVhIaWRkZW4oKSBjb25zdAogewotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRj
aGVkUGFyZW50KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2Jq
ZWN0KSB7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBY2Nlc3NpYmls
aXR5T2JqZWN0PigqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCkgewogICAgICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uob2Jq
ZWN0LmdldEF0dHJpYnV0ZShhcmlhX2hpZGRlbkF0dHIpLCAidHJ1ZSIpOwogICAgIH0pICE9IG51
bGxwdHI7CiB9CkBAIC0zNTM4LDE2ICszNTI4LDE2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVj
dDo6c2V0UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaChib29sIG9uKQogCiBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpmb2N1c2FibGVBbmNlc3RvcigpCiB7
Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KEFjY2Vzc2liaWxp
dHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmls
aXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2Vz
dG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3QuY2FuU2V0Rm9jdXNB
dHRyaWJ1dGUoKTsKLSAgICB9KSk7CisgICAgfSk7CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVkaXRhYmxlQW5jZXN0b3IoKQogewotICAgIHJldHVybiBj
b25zdF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRj
aGVkUGFyZW50KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2Jq
ZWN0KSB7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBY2Nlc3NpYmls
aXR5T2JqZWN0PigqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0LmlzVGV4dENvbnRyb2woKTsKLSAgICB9KSk7
CisgICAgfSk7CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yKCkKQEAgLTM1NzAsOSArMzU2MCw5IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9y
KCkKIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6cmFkaW9Hcm91
cEFuY2VzdG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgZmFsc2Us
IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCBmYWxz
ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1
cm4gb2JqZWN0LmlzUmFkaW9Hcm91cCgpOwotICAgIH0pKTsKKyAgICB9KTsKIH0KIAogYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCAz
ODNkZGVjOGYzODcwMmRmZTQ4OWEwNTFhZDVkM2U4NWI3MDE1Nzk2Li5jOTZmNTA4ZDBkMmQyNDY3
ZGFmYmM3MTU3NmEwNjc1YzhhZTljODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtNzYxLDcgKzc2MSw2IEBAIHB1Ymxp
YzoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoaWdoZXN0RWRpdGFibGVBbmNlc3RvcigpIG92
ZXJyaWRlOwogCiAgICAgY29uc3QgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcqIGFuY2VzdG9yQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcoYm9vbCBpbmNsdWRlU2VsZikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgc3RhdGljIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGNoZWRQYXJlbnQoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYsIGJvb2wgaW5jbHVkZVNlbGYsIGNvbnN0IFdURjo6RnVuY3Rp
b248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik+Jik7CiAKICAgICB2b2lkIGNsZWFy
SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKSBvdmVycmlkZSB7IG1faXNJZ25vcmVkRnJvbVBhcmVu
dERhdGEgPSBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoKTsgfQogICAgIHZv
aWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBWENvcmVPYmplY3QqKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggMjkwM2RlMTk4OGM2NWQ1MmI1YjIwN2Iw
MDYwNTExZWRmNTM4MTc3Yy4uMDZkMDEyYTM4YzBkYTY4NGY1NTgwYmM3ZTI4ZDU1ZWE1ZTQ1ZGQ2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTEwNzcsNCArMTA3NywyOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoQVhD
b3JlT2JqZWN0KikgPSAwOwogfTsKIAorbmFtZXNwYWNlIEFjY2Vzc2liaWxpdHkgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBGPgorVCogZmluZEFuY2VzdG9yKGNvbnN0IFQmIG9i
amVjdCwgYm9vbCBpbmNsdWRlU2VsZiwgY29uc3QgRiYgbWF0Y2hlcykKK3sKKyAgICBUKiBwYXJl
bnQ7CisgICAgaWYgKGluY2x1ZGVTZWxmKQorICAgICAgICBwYXJlbnQgPSBjb25zdF9jYXN0PFQq
Pigmb2JqZWN0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byogcGFyZW50UHRyID0gb2JqZWN0
LnBhcmVudE9iamVjdCgpOworICAgICAgICBpZiAoIWlzPFQ+KHBhcmVudFB0cikpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcGFyZW50ID0gcGFyZW50UHRyOworICAgIH0K
KworICAgIGZvciAoOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsK
KyAgICAgICAgaWYgKG1hdGNoZXMoKnBhcmVudCkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50
OworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBBY2Nl
c3NpYmlsaXR5CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDdjMGJlNzQ3MzU1MGIxZjkyMmFlNmM4NzNmNjU3ZTc0ZjE2MWFjMWUuLjg5NDk2YmQ2NDdl
MDIxZjM4MGYwZTU4YWVmYjcwYTkyNTU1MTQ3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAt
MTAzMyw3ICsxMDMzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNUZXh0
QWx0ZXJuYXRpdmUoKSBjb25zdAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNQ
b3B1cCgpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBoYXMgdGhlIGFyaWEt
aGFzcG9wdXAgYXR0cmlidXRlLCBvciBpZiBpdCBoYXMgYW4gYW5jZXN0b3Igb2YgdHlwZSBsaW5r
IHdpdGggdGhlIGFyaWEtaGFzcG9wdXAgYXR0cmlidXRlLgotICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCB0cnVlLCBbdGhpc10gKGNvbnN0IEFjY2Vz
c2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpmaW5k
QW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKnRoaXMsIHRydWUsIFt0aGlzXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiAodGhpcyA9PSAm
b2JqZWN0KSA/ICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShvYmplY3QucG9wdXBWYWx1
ZSgpLCAiZmFsc2UiKQogICAgICAgICAgICAgOiBvYmplY3QuaXNMaW5rKCkgJiYgIWVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG9iamVjdC5wb3B1cFZhbHVlKCksICJmYWxzZSIpOwogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTVkdFbGVtZW50LmNwcAppbmRleCBiMDY2ODg2MzVlNmVmMGVkNzljYmQ0YzU5ZjIzYjMw
OGM5ODJhZTI4Li5jNzExNDM5ODI1ZjRlMzJmZjI5OTk0N2JiNzA5NDcyMDE3NzQ2YzhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
VkdFbGVtZW50LmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVNWR0Vs
ZW1lbnQ6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICBpZiAobV9y
ZW5kZXJlci0+aXNTVkdTaGFwZSgpKSB7CiAgICAgICAgIGlmIChjYW5TZXRGb2N1c0F0dHJpYnV0
ZSgpIHx8IGVsZW1lbnQoKS0+aGFzRXZlbnRMaXN0ZW5lcnMoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKGF1dG8gc3ZnUGFyZW50ID0gQWNjZXNzaWJpbGl0eU9iamVj
dDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3QmIG9iamVjdCkgeworICAgICAgICBpZiAoYXV0byogc3ZnUGFyZW50ID0gQWNjZXNzaWJpbGl0
eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCp0aGlzLCB0cnVlLCBbXSAoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgICAgICByZXR1cm4gb2Jq
ZWN0Lmhhc0F0dHJpYnV0ZXNSZXF1aXJlZEZvckluY2x1c2lvbigpIHx8IG9iamVjdC5pc0FjY2Vz
c2liaWxpdHlTVkdSb290KCk7CiAgICAgICAgIH0pKQogICAgICAgICAgICAgcmV0dXJuICFzdmdQ
YXJlbnQtPmhhc0F0dHJpYnV0ZXNSZXF1aXJlZEZvckluY2x1c2lvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA4N2JmYjllMTkzMDhkYWUwY2FhMDk4ZGE2
NjlhYzk1MjBlY2UyODMzLi45OGY5NDAyYjg4Y2Y0OGVjMGQzMGNkNWZlM2JkZTUxZTc1ZDNlZjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtNTU1LDcgKzU1
NSw3IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogQWNjZXNzaWJpbGl0eVVu
aWdub3JlZEFuY2VzdG9yKEFjY2Vzc2liaWxpdHlPCiAgICAgICAgIHJldHVybiByb2xlID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUcmVlOwogICAgIH07CiAgICAgCi0gICAgaWYgKGNvbnN0IEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJl
bnQoKm1fb2JqZWN0LCBmYWxzZSwgV1RGTW92ZShtYXRjaEZ1bmMpKSkKKyAgICBpZiAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9y
PEFjY2Vzc2liaWxpdHlPYmplY3Q+KCptX29iamVjdCwgZmFsc2UsIFdURk1vdmUobWF0Y2hGdW5j
KSkpCiAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIoKTsKICAgICByZXR1cm4gbmlsOwog
fQpAQCAtNTY3LDE0ICs1NjcsMTQgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
KiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNjZXNzaWJpbGl0eU8KICAgICAgICAg
cmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3QgfHwgcm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGlzdEJveDsKICAgICB9OwogICAgIAotICAgIGlmIChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50
KCptX29iamVjdCwgZmFsc2UsIFdURk1vdmUobWF0Y2hGdW5jKSkpCisgICAgaWYgKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PigqbV9vYmplY3QsIGZhbHNlLCBXVEZNb3ZlKG1hdGNoRnVuYykp
KQogICAgICAgICByZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7CiAgICAgcmV0dXJuIG5pbDsKIH0K
IAogLSAoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKV9hY2Nlc3NpYmlsaXR5QXJ0aWNsZUFu
Y2VzdG9yCiB7Ci0gICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCBmYWxzZSwgW10gKGNv
bnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIGlmIChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QWNjZXNz
aWJpbGl0eU9iamVjdD4oKm1fb2JqZWN0LCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGljbGU7CiAgICAgfSkpCiAgICAgICAgIHJldHVy
biBwYXJlbnQtPndyYXBwZXIoKTsKQEAgLTU4Myw3ICs1ODMsNyBAQCBzdGF0aWMgQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3Np
YmlsaXR5TwogCiAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopX2FjY2Vzc2liaWxpdHlM
YW5kbWFya0FuY2VzdG9yCiB7Ci0gICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCBmYWxz
ZSwgW3NlbGZdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBpZiAo
Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFu
Y2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCptX29iamVjdCwgZmFsc2UsIFtzZWxmXSAoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBbc2VsZiBf
YWNjZXNzaWJpbGl0eUlzTGFuZG1hcmtSb2xlOm9iamVjdC5yb2xlVmFsdWUoKV07CiAgICAgfSkp
CiAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIoKTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBz
dGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRB
bmNlc3RvcihBY2Nlc3NpYmlsaXR5TwogCiAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciop
X2FjY2Vzc2liaWxpdHlUYWJsZUFuY2VzdG9yCiB7Ci0gICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1f
b2JqZWN0LCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewor
ICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5
OjpmaW5kQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKm1fb2JqZWN0LCBmYWxzZSwgW10g
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gb2Jq
ZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZTsKICAgICB9KSkKICAg
ICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOwpAQCAtNjAxLDE0ICs2MDEsMTQgQEAgc3Rh
dGljIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5j
ZXN0b3IoQWNjZXNzaWJpbGl0eU8KIAogLSAoQk9PTClfYWNjZXNzaWJpbGl0eUlzSW5UYWJsZUNl
bGwKIHsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqbV9v
YmplY3QsIGZhbHNlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7Cisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PigqbV9vYmplY3QsIGZhbHNlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0
KSB7CiAgICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OkNlbGw7CiAgICAgfSkgIT0gbnVsbHB0cjsKIH0KIAogLSAoQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIqKV9hY2Nlc3NpYmlsaXR5RmllbGRzZXRBbmNlc3RvcgogewotICAgIGlmIChjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRj
aGVkUGFyZW50KCptX29iamVjdCwgZmFsc2UsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
JiBvYmplY3QpIHsKKyAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0g
QWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCptX29iamVj
dCwgZmFsc2UsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAg
ICAgcmV0dXJuIG9iamVjdC5pc0ZpZWxkc2V0KCk7CiAgICAgfSkpCiAgICAgICAgIHJldHVybiBw
YXJlbnQtPndyYXBwZXIoKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmls
aXR5TwogCiAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopX2FjY2Vzc2liaWxpdHlGcmFt
ZUFuY2VzdG9yCiB7Ci0gICAgYXV0byogcGFyZW50ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0
Y2hlZFBhcmVudCgqbV9vYmplY3QsIGZhbHNlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dCYgb2JqZWN0KSB7CisgICAgYXV0byogcGFyZW50ID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2Vz
dG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCptX29iamVjdCwgZmFsc2UsIFtdIChjb25zdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdC5pc1dlYkFy
ZWEoKTsKICAgICB9KTsKICAgICBpZiAoIXBhcmVudCkKQEAgLTExODIsOSArMTE4Miw5IEBAIHN0
YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBO
U1N0cmluZyAqc3RyaW5nKQogLSAoQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCopdGFibGVDZWxsUGFy
ZW50CiB7CiAgICAgLy8gRmluZCBpZiB0aGlzIGVsZW1lbnQgaXMgaW4gYSB0YWJsZSBjZWxsLgot
ICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBjb25zdF9jYXN0PEFjY2Vzc2li
aWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29iamVj
dCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeworICAgIGlm
IChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0
b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKm1fb2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNz
aWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3QuaXNUYWJsZUNl
bGwoKTsKLSAgICB9KSkpCisgICAgfSkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsKj4ocGFyZW50KTsKICAgICByZXR1cm4gbmlsOwogfQpAQCAtMTE5
Miw5ICsxMTkyLDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxl
U3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAtIChBY2Nlc3NpYmlsaXR5VGFibGUq
KXRhYmxlUGFyZW50CiB7CiAgICAgLy8gRmluZCBpZiB0aGUgcGFyZW50IHRhYmxlIGZvciB0aGUg
dGFibGUgY2VsbC4KLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gY29uc3Rf
Y2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBh
cmVudCgqbV9vYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmpl
Y3QpIHsKKyAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0
eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCptX29iamVjdCwgdHJ1ZSwgW10g
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gaXM8
QWNjZXNzaWJpbGl0eVRhYmxlPihvYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZT4ob2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCk7Ci0gICAgfSkpKQor
ICAgIH0pKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4o
cGFyZW50KTsKICAgICByZXR1cm4gbmlsOwogfQpAQCAtMTM5Nyw4ICsxMzk3LDEwIEBAIHN0YXRp
YyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0
cmluZyAqc3RyaW5nKQogewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2Fs
bF0pCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKGF1dG8gcGFyZW50ID0gQWNj
ZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqbV9vYmplY3QsIHRydWUsIFtdIChjb25z
dCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsgcmV0dXJuIG9iamVjdC5zdXBwb3J0c0Rh
dGV0aW1lQXR0cmlidXRlKCk7IH0pKQorCisgICAgaWYgKGF1dG8qIHBhcmVudCA9IEFjY2Vzc2li
aWxpdHk6OmZpbmRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5T2JqZWN0PigqbV9vYmplY3QsIHRydWUs
IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IG9iamVjdC5zdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKCk7CisgICAgfSkpCiAgICAgICAgIHJl
dHVybiBwYXJlbnQtPmRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKTsKIAogICAgIHJldHVybiBuaWw7
CkBAIC0xOTcxLDcgKzE5NzMsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZp
ZXcoV0FLVmlldyogdmlldykKIHsKICAgICAvLyBVc2UgdGhpcyB0byBjaGVjayBpZiBhbiBvYmpl
Y3QgaXMgdGhlIGNoaWxkIG9mIGEgc3VtbWFyeSBvYmplY3QuCiAgICAgLy8gQW5kIHJldHVybiB0
aGUgc3VtbWFyeSdzIHBhcmVudCwgd2hpY2ggaXMgdGhlIGV4cGFuZGFibGUgZGV0YWlscyBvYmpl
Y3QuCi0gICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHN1bW1hcnkgPSBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCpvYmplY3QsIHRydWUsIFtdIChjb25zdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKKyAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdCogc3VtbWFyeSA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBY2Nlc3NpYmlsaXR5
T2JqZWN0Pigqb2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2Jq
ZWN0KSB7CiAgICAgICAgIHJldHVybiBvYmplY3QuaGFzVGFnTmFtZShzdW1tYXJ5VGFnKTsKICAg
ICB9KSkKICAgICAgICAgcmV0dXJuIHN1bW1hcnktPnBhcmVudE9iamVjdCgpOwpAQCAtMTk4MSw3
ICsxOTgzLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1ZpZXcq
IHZpZXcpCiAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0KilkZXRhaWxQYXJlbnRGb3JPYmplY3Q6KEFj
Y2Vzc2liaWxpdHlPYmplY3QqKW9iamVjdAogewogICAgIC8vIFVzZSB0aGlzIHRvIGNoZWNrIGlm
IGFuIG9iamVjdCBpcyBpbnNpZGUgYSBkZXRhaWxzIG9iamVjdC4KLSAgICBpZiAoY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdCogZGV0YWlscyA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQ
YXJlbnQoKm9iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVj
dCkgeworICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBkZXRhaWxzID0gQWNjZXNz
aWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlPYmplY3Q+KCpvYmplY3QsIHRydWUs
IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJu
IG9iamVjdC5oYXNUYWdOYW1lKGRldGFpbHNUYWcpOwogICAgIH0pKQogICAgICAgICByZXR1cm4g
Y29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4oZGV0YWlscyk7CkBAIC0xOTkxLDEwICsx
OTkzLDEwIEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2
aWV3KQogLSAoQWNjZXNzaWJpbGl0eU9iamVjdCopdHJlZUl0ZW1QYXJlbnRGb3JPYmplY3Q6KEFj
Y2Vzc2liaWxpdHlPYmplY3QqKW9iamVjdAogewogICAgIC8vIFVzZSB0aGlzIHRvIGNoZWNrIGlm
IGFuIG9iamVjdCBpcyBpbnNpZGUgYSB0cmVlaXRlbSBvYmplY3QuCi0gICAgaWYgKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQ
YXJlbnQoKm9iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVj
dCkgeworICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5
OjpmaW5kQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKm9iamVjdCwgdHJ1ZSwgW10gKGNv
bnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0
LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsKICAgICB9KSkKLSAg
ICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KHBhcmVudCk7Cisg
ICAgICAgIHJldHVybiBwYXJlbnQ7CiAgICAgcmV0dXJuIG5pbDsKIH0KIApAQCAtMjIwOCw4ICsy
MjEwLDggQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW4KICAgICBhdXRvIG1hdGNoRnVuYyA9IFtd
IChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9i
amVjdC5ub2RlKCkgJiYgb2JqZWN0Lm5vZGUoKS0+aGFzVGFnTmFtZShjb2RlVGFnKTsKICAgICB9
OwotICAgIAotICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCpheE9iamVjdCwgdHJ1ZSwgV1RGTW92ZSht
YXRjaEZ1bmMpKSkKKworICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQg
PSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QWNjZXNzaWJpbGl0eU9iamVjdD4oKmF4T2Jq
ZWN0LCB0cnVlLCBXVEZNb3ZlKG1hdGNoRnVuYykpKQogICAgICAgICBbYXR0clN0cmluZyBhZGRB
dHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VGV4dEF0dHJpYnV0ZUNvbnRleHQgdmFsdWU6VUlBY2Nl
c3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlIHJhbmdlOnJhbmdlXTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>