<?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>133295</bug_id>
          
          <creation_ts>2014-05-26 20:23:03 -0700</creation_ts>
          <short_desc>CSS JIT: add support for the pseudo classes :hover and :active</short_desc>
          <delta_ts>2014-06-01 02:14:35 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133314</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1011868</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-26 20:23:03 -0700</bug_when>
    <thetext>CSS JIT: add support for the pseudo classes :hover and :active</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011870</commentid>
    <comment_count>1</comment_count>
      <attachid>232104</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-26 20:31:17 -0700</bug_when>
    <thetext>Created attachment 232104
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012009</commentid>
    <comment_count>2</comment_count>
      <attachid>232104</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-05-27 10:22:39 -0700</bug_when>
    <thetext>Comment on attachment 232104
Patch

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

&gt; Source/WebCore/dom/Document.cpp:767
&gt; +void Document::setCompatibilityMode(DocumentCompatibilityMode mode)

Does this function need to do any additional invalidation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012074</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-27 15:47:31 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 232104 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=232104&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:767
&gt; &gt; +void Document::setCompatibilityMode(DocumentCompatibilityMode mode)
&gt; 
&gt; Does this function need to do any additional invalidation?

That should not be needed. With compiled selectors we don&apos;t even need the clearSelectorQueryCache(), it is just there for the old code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012513</commentid>
    <comment_count>4</comment_count>
      <attachid>232104</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-05-29 15:37:55 -0700</bug_when>
    <thetext>Comment on attachment 232104
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012536</commentid>
    <comment_count>5</comment_count>
      <attachid>232104</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-29 17:15:44 -0700</bug_when>
    <thetext>Comment on attachment 232104
Patch

Clearing flags on attachment: 232104

Committed r169478: &lt;http://trac.webkit.org/changeset/169478&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012537</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-29 17:15:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012817</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-06-01 02:03:43 -0700</bug_when>
    <thetext>Looks like this was 0.88% improvement on DYEBench:
https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%2C%5B%22mac-mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%5D&amp;zoom=%5B1401260360227.201%2C1401458178404.44%5D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012818</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-01 02:14:35 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Looks like this was 0.88% improvement on DYEBench:
&gt; https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%2C%5B%22mac-mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%5D&amp;zoom=%5B1401260360227.201%2C1401458178404.44%5D

Nice!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232104</attachid>
            <date>2014-05-26 20:31:17 -0700</date>
            <delta_ts>2014-05-29 17:15:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133295-20140526203050.patch</filename>
            <type>text/plain</type>
            <size>38983</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5MzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmEzM2QyZTIwODg0N2Nj
ZjBmMGFhZmJlNDBlYTAzN2Y2NDQzYzk4ZS4uYWE0MjYxMjM4OTQ4ZjNhZjk3ZjNmNDlmNDEzZmM4
NGViZGI0ZmMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE0LTA1LTI2ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBDU1MgSklUOiBh
ZGQgc3VwcG9ydCBmb3IgdGhlIHBzZXVkbyBjbGFzc2VzIDpob3ZlciBhbmQgOmFjdGl2ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMjk1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGNvbXBpbGF0aW9uIHN1cHBvcnQgZm9yIDpob3ZlciBhbmQgOmFjdGl2ZS4gVGhlIGNvZGUg
Z2VuZXJhdGlvbiBvZiBib3RoIG9mIHRoZW0gaXMgdHJpdmlhbCwKKyAgICAgICAgbW9zdCBvZiB0
aGUgcGF0Y2ggaXMgaW1wcm92aW5nIHRoZSBpbmZyYXN0cnVjdHVyZSBhbmQgc2FmZXR5LgorCisg
ICAgICAgIFRoZSBkb2N1bWVudCBjb21wYXRpYmlsaXR5IG1vZGUgaXMgbW92ZWQgdG8gaXRzIG93
biB0eXBlZCBlbnVtLiBUaGlzIGVuc3VyZSB0aGUgdmFsdWVzIGFyZSBleGNsdXNpdmVzIGFuZAor
ICAgICAgICB0aGUgbmF0aXZlIHR5cGUgaXMga25vd24gKHVuc2lnbmVkIGNoYXIgaGVyZSkuIFRo
ZSB2YWx1ZXMgYXJlIGNoYW5nZXMgdG8gYmluYXJ5IGZsYWdzIHRvIHRha2UgYWR2YW50YWdlIG9m
CisgICAgICAgIHRlc3QtYW5kLWJyYW5jaCBvbiBBUk02NCAobm90IHVzZWQgZXhwbGljaXRlbHks
IGl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBNYWNyb0Fzc2VtYmxlcikuCisK
KyAgICAgICAgVGhlIG90aGVyIGltcG9ydGFudCByZWZhY3RvcmluZyBpcyB0aGUgY29kZSB1cGRh
dGluZyB0aGUgZmxhZ3Mgb24gUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzLgorICAgICAg
ICBUaGUgY29kZSB3YXMgZHVwbGljYXRlZCBpbiBzb21lIHBsYWNlcyBzbyBpdCBpcyBtb3ZlIGlu
dG8gaXRzIG93biBmdW5jdGlvbiBhZGRGbGFnVG9FbGVtZW50U3R5bGVGcm9tQ29udGV4dCgpLgor
CisgICAgICAgIFRoZSBnZW5lcmF0b3JzIHRoZW1zZWxmIGFyZSB2ZXJ5IHNpbXBsZS4gRmlyc3Qg
d2UgY2hlY2sgdGhlIHF1aXJrcy1tb2RlIGV4Y2VwdGlvbnMsIHRoYXQgaXMgZ2VuZXJhbGx5IGV4
Y2x1ZGVkCisgICAgICAgIGF0IGNvbXBpbGUgdGltZSBiZWNhdXNlIHRoZSBjb25kaXRpb25zIGFy
ZSBhbG1vc3QgbmV2ZXIgbWV0LCBldmVuIGluIHN0cmljdCBtb2RlLgorICAgICAgICBUaGVuIHdl
IGhhdmUgdHdvIGNhc2VzOiBzdHlsZSByZXNvbHV0aW9uIGFuZCBxdWVyeSBzZWxlY3Rvci4gQWxt
b3N0IGV2ZXJ5dGhpbmcgaXMganVzdCBmdW5jdGlvbiBjYWxscy4KKworICAgICAgICAqIGNzc2pp
dC9TZWxlY3RvckNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGls
ZXI6OlNlbGVjdG9yRnJhZ21lbnQ6OlNlbGVjdG9yRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDb21waWxlcjo6YWRkUHNldWRvQ2xhc3NUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6YWRkRmxhZ1RvRWxl
bWVudFN0eWxlRnJvbUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxl
cjo6ZnJhZ21lbnRPbmx5TWF0Y2hlc0xpbmtzSW5RdWlya3NNb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdG9yQ29tcGlsZXI6OmdldERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTcGVjaWFsRmFp
bHVyZUluUXVpcmtzTW9kZUZvckFjdGl2ZUFuZEhvdmVySWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVs
ZW1lbnRNYXRjaGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjplbGVt
ZW50SXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6ZWxlbWVu
dElzQWN0aXZlRm9yU3R5bGVSZXNvbHV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SXNBY3RpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUVsZW1lbnRJc0ZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6ZWxlbWVudElzSG92ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNvbXBpbGVyOjplbGVtZW50SXNIb3ZlcmVkRm9yU3R5bGVSZXNvbHV0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGVFbGVtZW50SXNIb3ZlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGls
ZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SXNMYXN0Q2hpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZUVsZW1lbnRJc09ubHlDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudElzTnRoQ2hp
bGQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvbXBhdGli
aWxpdHlNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbXBsaWNpdE9wZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNsb25lRGF0YUZyb21Eb2N1bWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29tcGF0
aWJpbGl0eU1vZGVNZW1vcnlPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omlu
UXVpcmtzTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5MaW1pdGVkUXVpcmtz
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5Ob1F1aXJrc01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbXBhdGliaWxpdHlNb2RlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
b2N1bWVudDo6SW1hZ2VEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9NZWRpYURvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRG9jdW1lbnQ6Ok1lZGlhRG9jdW1lbnQpOgorICAg
ICAgICAqIGh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2lu
RG9jdW1lbnQ6OlBsdWdpbkRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL1RleHREb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RG9jdW1lbnQ6OlRleHREb2N1bWVudCk6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6OnNldERlZmF1bHRDb21wYXRpYmlsaXR5TW9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6c2V0Q29tcGF0aWJpbGl0
eU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6OnNldENvbXBh
dGliaWxpdHlNb2RlRnJvbURvY3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVj
dGlvblNpdGU6Omluc2VydERvY3R5cGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25z
dHJ1Y3Rpb25TaXRlLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQpOgorICAgICAg
ICAqIGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2lua0RvY3Vt
ZW50OjpTaW5rRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKwogMjAxNC0wNS0yNiAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBDU1MgSklUOiBGaXgg
YnVpbGQgZXJyb3IgcmFpc2VkIHdoZW4gQ1NTX1NFTEVDVE9SX0pJVF9ERUJVR0dJTkcgaXMgMQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCmluZGV4IGQzYzAzZjcx
NjZkOTBkMzQ3NzE0NjgwY2YxZWY0NDI3YTIwMzI4OGMuLmQ3NzFhNGU4M2NiOGI3MDQyOWQ5MDM1
YjNlNTViMjAwYWRiODU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21w
aWxlci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGdW5jdGlvbkNhbGwuaCIKICNp
bmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUu
aCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJBbGxvY2F0
b3IuaCIKQEAgLTEzMCw2ICsxMzEsNyBAQCBzdHJ1Y3QgU2VsZWN0b3JGcmFnbWVudCB7CiAgICAg
ICAgICwgd2lkdGhGcm9tSW5kaXJlY3RBZGphY2VudCgwKQogICAgICAgICAsIHRhZ05hbWUobnVs
bHB0cikKICAgICAgICAgLCBpZChudWxscHRyKQorICAgICAgICAsIGluRnVuY3Rpb25hbFBzZXVk
b0NsYXNzKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgRnJhZ21lbnRSZWxhdGlvbiByZWxhdGlv
blRvTGVmdEZyYWdtZW50OwpAQCAtMTUzLDYgKzE1NSw4IEBAIHN0cnVjdCBTZWxlY3RvckZyYWdt
ZW50IHsKICAgICBWZWN0b3I8SlNDOjpGdW5jdGlvblB0cj4gdW5vcHRpbWl6ZWRQc2V1ZG9DbGFz
c2VzOwogICAgIFZlY3RvcjxBdHRyaWJ1dGVNYXRjaGluZ0luZm8+IGF0dHJpYnV0ZXM7CiAgICAg
VmVjdG9yPHN0ZDo6cGFpcjxpbnQsIGludD4+IG50aENoaWxkZmlsdGVyczsKKworICAgIGJvb2wg
aW5GdW5jdGlvbmFsUHNldWRvQ2xhc3M7CiB9OwogCiBzdHJ1Y3QgVGFnTmFtZVBhdHRlcm4gewpA
QCAtMjA3LDcgKzIxMSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnREYXRh
TWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3Rv
ckZyYWdtZW50Jik7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRGdW5jdGlvbkNhbGxUZXN0KEFz
c2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgSlNDOjpGdW5jdGlvblB0cik7CiAgICAg
QXNzZW1ibGVyOjpKdW1wTGlzdCBqdW1wSWZOb1ByZXZpb3VzQWRqYWNlbnRFbGVtZW50KCk7Cisg
ICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRJc0FjdGl2ZShBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWls
dXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmKTsKICAgICB2b2lkIGdlbmVyYXRlRWxl
bWVudElzRmlyc3RDaGlsZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0
IFNlbGVjdG9yRnJhZ21lbnQmKTsKKyAgICB2b2lkIGdlbmVyYXRlRWxlbWVudElzSG92ZXJlZChB
c3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQm
KTsKICAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IGp1bXBJZk5vTmV4dEFkamFjZW50RWxlbWVudCgp
OwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNMYXN0Q2hpbGQoQXNzZW1ibGVyOjpKdW1wTGlz
dCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50Jik7CiAgICAgdm9pZCBnZW5l
cmF0ZUVsZW1lbnRJc09ubHlDaGlsZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMs
IGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmKTsKQEAgLTIyNyw3ICsyMzMsOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNUYXJnZXQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFp
bHVyZUNhc2VzKTsKIAogICAgIC8vIEhlbHBlcnMuCisgICAgdm9pZCBhZGRGbGFnc1RvRWxlbWVu
dFN0eWxlRnJvbUNvbnRleHQoQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29udGV4dCwg
aW50NjRfdCk7CiAgICAgQXNzZW1ibGVyOjpKdW1wIGp1bXBJZk5vdFJlc29sdmluZ1N0eWxlKEFz
c2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHRSZWdpc3Rlcik7CisgICAgdm9pZCBn
ZW5lcmF0ZVNwZWNpYWxGYWlsdXJlSW5RdWlya3NNb2RlRm9yQWN0aXZlQW5kSG92ZXJJZk5lZWRl
ZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21l
bnQmKTsKICAgICBBc3NlbWJsZXI6Okp1bXAgbW9kdWxvKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJl
c3VsdENvbmRpdGlvbiwgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGlucHV0RGl2aWRlbmQsIGludCBk
aXZpc29yKTsKICAgICB2b2lkIG1vZHVsb0lzWmVybyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWls
dXJlQ2FzZXMsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBpbnB1dERpdmlkZW5kLCBpbnQgZGl2aXNv
cik7CiAKQEAgLTM2Nyw3ICszNzUsOSBAQCBzdGF0aWMgaW5saW5lIEZ1bmN0aW9uVHlwZSBhZGRQ
c2V1ZG9DbGFzc1R5cGUoY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yLCBTZWxlYwogICAgICAg
ICBmcmFnbWVudC5wc2V1ZG9DbGFzc2VzLmFkZCh0eXBlKTsKICAgICAgICAgcmV0dXJuIEZ1bmN0
aW9uVHlwZTo6U2ltcGxlU2VsZWN0b3JDaGVja2VyOwogCisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NBY3RpdmU6CiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGaXJz
dENoaWxkOgorICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXI6CiAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NMYXN0Q2hpbGQ6CiAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NPbmx5Q2hpbGQ6CiAgICAgICAgIGZyYWdtZW50LnBzZXVkb0NsYXNzZXMu
YWRkKHR5cGUpOwpAQCAtMTIwOCw2ICsxMjE4LDIyIEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUluZGlyZWN0QWRqYWNlbnRUcmVlV2Fsa2VyKEFzc2VtYmxlcjo6SnVtcExp
CiAgICAgbG9jYWxGYWlsdXJlQ2FzZXMubGlua1RvKGxvb3BTdGFydCwgJm1fYXNzZW1ibGVyKTsK
IH0KIAorCit2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6YWRkRmxhZ3NUb0VsZW1lbnRTdHls
ZUZyb21Db250ZXh0KEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQsIGludDY0
X3QgbmV3RmxhZykKK3sKKyAgICBMb2NhbFJlZ2lzdGVyIGNoaWxkU3R5bGUobV9yZWdpc3RlckFs
bG9jYXRvcik7CisgICAgbV9hc3NlbWJsZXIubG9hZFB0cihBc3NlbWJsZXI6OkFkZHJlc3MoY2hl
Y2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoQ2hlY2tpbmdDb250ZXh0LCBlbGVtZW50U3R5
bGUpKSwgY2hpbGRTdHlsZSk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sgaW50byBk
b2luZyBzb21ldGhpbmcgc21hcnQgaW4gTWFjcm9Bc3NlbWJsZXIgaW5zdGVhZC4KKyAgICBMb2Nh
bFJlZ2lzdGVyIGZsYWdzKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOworICAgIEFzc2VtYmxlcjo6QWRk
cmVzcyBmbGFnQWRkcmVzcyhjaGlsZFN0eWxlLCBSZW5kZXJTdHlsZTo6bm9uaW5oZXJpdGVkRmxh
Z3NNZW1vcnlPZmZzZXQoKSArIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6ZmxhZ3NN
ZW1vcnlPZmZzZXQoKSk7CisgICAgbV9hc3NlbWJsZXIubG9hZDY0KGZsYWdBZGRyZXNzLCBmbGFn
cyk7CisgICAgTG9jYWxSZWdpc3RlciBpc0ZpcnN0Q2hpbGRTdGF0ZUZsYWdJbW1lZGlhdGUobV9y
ZWdpc3RlckFsbG9jYXRvcik7CisgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0
ZWRJbW02NChuZXdGbGFnKSwgaXNGaXJzdENoaWxkU3RhdGVGbGFnSW1tZWRpYXRlKTsKKyAgICBt
X2Fzc2VtYmxlci5vcjY0KGlzRmlyc3RDaGlsZFN0YXRlRmxhZ0ltbWVkaWF0ZSwgZmxhZ3MpOwor
ICAgIG1fYXNzZW1ibGVyLnN0b3JlNjQoZmxhZ3MsIGZsYWdBZGRyZXNzKTsKK30KKwogQXNzZW1i
bGVyOjpKdW1wIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6anVtcElmTm90UmVzb2x2aW5nU3R5bGUo
QXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29udGV4dCkKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChtX3NlbGVjdG9yQ29udGV4dCA9PSBTZWxlY3RvckNvbnRleHQ6OlJ1bGVDb2xsZWN0b3Ip
OwpAQCAtMTIyMCw2ICsxMjQ2LDY3IEBAIEFzc2VtYmxlcjo6SnVtcCBTZWxlY3RvckNvZGVHZW5l
cmF0b3I6Omp1bXBJZk5vdFJlc29sdmluZ1N0eWxlKEFzc2VtYmxlcjo6UmVnaXN0CiAgICAgcmV0
dXJuIG1fYXNzZW1ibGVyLmJyYW5jaDgoQXNzZW1ibGVyOjpOb3RFcXVhbCwgQXNzZW1ibGVyOjpB
ZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9GKENoZWNraW5nQ29udGV4dCwg
cmVzb2x2aW5nTW9kZSkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihTZWxlY3RvckNoZWNrZXI6
OlJlc29sdmluZ1N0eWxlKSk7CiB9CiAKK3N0YXRpYyBib29sIGZyYWdtZW50T25seU1hdGNoZXNM
aW5rc0luUXVpcmtzTW9kZShjb25zdCBTZWxlY3RvckZyYWdtZW50JiBmcmFnbWVudCkKK3sKKyAg
ICAvLyBGb3IgcXVpcmtzIG1vZGUsIGZvbGxvdyB0aGlzOiBodHRwOi8vcXVpcmtzLnNwZWMud2hh
dHdnLm9yZy8jdGhlLTphY3RpdmUtYW5kLTpob3Zlci1xdWlyaworICAgIC8vIEluIHF1aXJrcyBt
b2RlLCBhIGNvbXBvdW5kIHNlbGVjdG9yICdzZWxlY3RvcicgdGhhdCBtYXRjaGVzIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBtdXN0IG5vdCBtYXRjaCBlbGVtZW50cyB0aGF0IHdvdWxkIG5vdCBh
bHNvIG1hdGNoIHRoZSAnOmFueS1saW5rJyBzZWxlY3Rvci4KKyAgICAvLworICAgIC8vICAgIHNl
bGVjdG9yIHVzZXMgdGhlICc6YWN0aXZlJyBvciAnOmhvdmVyJyBwc2V1ZG8tY2xhc3Nlcy4KKyAg
ICAvLyAgICBzZWxlY3RvciBkb2VzIG5vdCB1c2UgYSB0eXBlIHNlbGVjdG9yLgorICAgIC8vICAg
IHNlbGVjdG9yIGRvZXMgbm90IHVzZSBhbiBhdHRyaWJ1dGUgc2VsZWN0b3IuCisgICAgLy8gICAg
c2VsZWN0b3IgZG9lcyBub3QgdXNlIGFuIElEIHNlbGVjdG9yLgorICAgIC8vICAgIHNlbGVjdG9y
IGRvZXMgbm90IHVzZSBhIGNsYXNzIHNlbGVjdG9yLgorICAgIC8vICAgIHNlbGVjdG9yIGRvZXMg
bm90IHVzZSBhIHBzZXVkby1jbGFzcyBzZWxlY3RvciBvdGhlciB0aGFuICc6YWN0aXZlJyBhbmQg
Jzpob3ZlcicuCisgICAgLy8gICAgc2VsZWN0b3IgZG9lcyBub3QgdXNlIGEgcHNldWRvLWVsZW1l
bnQgc2VsZWN0b3IuCisgICAgLy8gICAgc2VsZWN0b3IgaXMgbm90IHBhcnQgb2YgYW4gYXJndW1l
bnQgdG8gYSBmdW5jdGlvbmFsIHBzZXVkby1jbGFzcyBvciBwc2V1ZG8tZWxlbWVudC4KKyAgICBp
ZiAoZnJhZ21lbnQudGFnTmFtZSAmJiAqZnJhZ21lbnQudGFnTmFtZSAhPSBhbnlRTmFtZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWZyYWdtZW50LmF0dHJpYnV0ZXMuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZnJhZ21lbnQuaWQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZnJhZ21lbnQuY2xhc3NOYW1lcy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZnJhZ21lbnQudW5vcHRp
bWl6ZWRQc2V1ZG9DbGFzc2VzLmlzRW1wdHkoKSB8fCAhZnJhZ21lbnQubnRoQ2hpbGRmaWx0ZXJz
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yICh1bnNpZ25lZCBw
c2V1ZG9DbGFzc1R5cGUgOiBmcmFnbWVudC5wc2V1ZG9DbGFzc2VzKSB7CisgICAgICAgIGlmIChw
c2V1ZG9DbGFzc1R5cGUgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIgJiYgcHNldWRv
Q2xhc3NUeXBlICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FjdGl2ZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnQuaW5GdW5jdGlvbmFsUHNl
dWRvQ2xhc3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgdm9pZCBnZXREb2N1bWVudChBc3NlbWJsZXImIGFzc2VtYmxlciwgQXNzZW1ibGVy
OjpSZWdpc3RlcklEIGVsZW1lbnQsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBvdXRwdXQpCit7Cisg
ICAgYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKGVsZW1lbnQsIE5vZGU6OnRy
ZWVTY29wZU1lbW9yeU9mZnNldCgpKSwgb3V0cHV0KTsKKyAgICBhc3NlbWJsZXIubG9hZFB0cihB
c3NlbWJsZXI6OkFkZHJlc3Mob3V0cHV0LCBUcmVlU2NvcGU6OmRvY3VtZW50U2NvcGVNZW1vcnlP
ZmZzZXQoKSksIG91dHB1dCk7Cit9CisKK3ZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZVNwZWNpYWxGYWlsdXJlSW5RdWlya3NNb2RlRm9yQWN0aXZlQW5kSG92ZXJJZk5lZWRlZChB
c3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQm
IGZyYWdtZW50KQoreworICAgIGlmIChmcmFnbWVudE9ubHlNYXRjaGVzTGlua3NJblF1aXJrc01v
ZGUoZnJhZ21lbnQpKSB7CisgICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGEgbGluaywgaXQg
Y2FuIGFsd2F5cyBtYXRjaCA6aG92ZXIgb3IgOmFjdGl2ZS4KKyAgICAgICAgQXNzZW1ibGVyOjpK
dW1wIGlzTGluayA9IG1fYXNzZW1ibGVyLmJyYW5jaFRlc3QzMihBc3NlbWJsZXI6Ok5vblplcm8s
IEFzc2VtYmxlcjo6QWRkcmVzcyhlbGVtZW50QWRkcmVzc1JlZ2lzdGVyLCBOb2RlOjpub2RlRmxh
Z3NNZW1vcnlPZmZzZXQoKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE5vZGU6OmZsYWdJc0xp
bmsoKSkpOworCisgICAgICAgIC8vIE9ubHkgcXVpcmtzIG1vZGUgcmVzdHJpY3QgOmhvdmVyIGFu
ZCA6YWN0aXZlLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihEb2N1bWVudENvbXBhdGli
aWxpdHlNb2RlKSA9PSAxLCAiV2UgZ2VuZXJhdGUgYSBieXRlIGxvYWQvdGVzdCBmb3IgdGhlIGNv
bXBhdGliaWxpdHkgbW9kZS4iKTsKKyAgICAgICAgTG9jYWxSZWdpc3RlciBkb2N1bWVudEFkZHJl
c3MobV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAgICAgIGdldERvY3VtZW50KG1fYXNzZW1ibGVy
LCBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyLCBkb2N1bWVudEFkZHJlc3MpOworICAgICAgICBmYWls
dXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFRlc3Q4KEFzc2VtYmxlcjo6Tm9uWmVy
bywgQXNzZW1ibGVyOjpBZGRyZXNzKGRvY3VtZW50QWRkcmVzcywgRG9jdW1lbnQ6OmNvbXBhdGli
aWxpdHlNb2RlTWVtb3J5T2Zmc2V0KCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzdGF0aWNf
Y2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlPjo6dHlw
ZT4oRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6UXVpcmtzTW9kZSkpKSk7CisKKyAgICAgICAg
aXNMaW5rLmxpbmsoJm1fYXNzZW1ibGVyKTsKKyAgICB9Cit9CisKIC8vIFRoZSB2YWx1ZSBpbiBp
bnB1dERpdmlkZW5kIGlzIGRlc3Ryb3llZCBieSB0aGUgbW9kdWxvIG9wZXJhdGlvbi4KIEFzc2Vt
Ymxlcjo6SnVtcCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6Om1vZHVsbyhBc3NlbWJsZXI6OlJlc3Vs
dENvbmRpdGlvbiBjb25kaXRpb24sIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBpbnB1dERpdmlkZW5k
LCBpbnQgZGl2aXNvcikKIHsKQEAgLTE0NzUsNiArMTU2MiwxMCBAQCB2b2lkIFNlbGVjdG9yQ29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50TWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYg
bWF0Y2hpbgogCiAgICAgZ2VuZXJhdGVFbGVtZW50RGF0YU1hdGNoaW5nKG1hdGNoaW5nUG9zdFRh
Z05hbWVGYWlsdXJlQ2FzZXMsIGZyYWdtZW50KTsKIAorICAgIGlmIChmcmFnbWVudC5wc2V1ZG9D
bGFzc2VzLmNvbnRhaW5zKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FjdGl2ZSkpCisgICAgICAg
IGdlbmVyYXRlRWxlbWVudElzQWN0aXZlKG1hdGNoaW5nUG9zdFRhZ05hbWVGYWlsdXJlQ2FzZXMs
IGZyYWdtZW50KTsKKyAgICBpZiAoZnJhZ21lbnQucHNldWRvQ2xhc3Nlcy5jb250YWlucyhDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3ZlcikpCisgICAgICAgIGdlbmVyYXRlRWxlbWVudElzSG92
ZXJlZChtYXRjaGluZ1Bvc3RUYWdOYW1lRmFpbHVyZUNhc2VzLCBmcmFnbWVudCk7CiAgICAgaWYg
KGZyYWdtZW50LnBzZXVkb0NsYXNzZXMuY29udGFpbnMoQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
T25seUNoaWxkKSkKICAgICAgICAgZ2VuZXJhdGVFbGVtZW50SXNPbmx5Q2hpbGQobWF0Y2hpbmdQ
b3N0VGFnTmFtZUZhaWx1cmVDYXNlcywgZnJhZ21lbnQpOwogICAgIGlmIChmcmFnbWVudC5wc2V1
ZG9DbGFzc2VzLmNvbnRhaW5zKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ZpcnN0Q2hpbGQpKQpA
QCAtMTgxMywxMiArMTkwNCw2IEBAIHN0YXRpYyBpbmxpbmUgQXNzZW1ibGVyOjpKdW1wIHRlc3RJ
c0hUTUxDbGFzc09uRG9jdW1lbnQoQXNzZW1ibGVyOjpSZXN1bHRDb25kaXRpCiAgICAgcmV0dXJu
IGFzc2VtYmxlci5icmFuY2hUZXN0MzIoY29uZGl0aW9uLCBBc3NlbWJsZXI6OkFkZHJlc3MoZG9j
dW1lbnRBZGRyZXNzLCBEb2N1bWVudDo6ZG9jdW1lbnRDbGFzc2VzTWVtb3J5T2Zmc2V0KCkpLCBB
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihEb2N1bWVudDo6aXNIVE1MRG9jdW1lbnRDbGFzc0ZsYWco
KSkpOwogfQogCi1zdGF0aWMgdm9pZCBnZXREb2N1bWVudChBc3NlbWJsZXImIGFzc2VtYmxlciwg
QXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnQsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBvdXRw
dXQpCi17Ci0gICAgYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKGVsZW1lbnQs
IE5vZGU6OnRyZWVTY29wZU1lbW9yeU9mZnNldCgpKSwgb3V0cHV0KTsKLSAgICBhc3NlbWJsZXIu
bG9hZFB0cihBc3NlbWJsZXI6OkFkZHJlc3Mob3V0cHV0LCBUcmVlU2NvcGU6OmRvY3VtZW50U2Nv
cGVNZW1vcnlPZmZzZXQoKSksIG91dHB1dCk7Ci19Ci0KIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hpbmcoQXNzZW1ibGVy
OjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY3VycmVudEF0
dHJpYnV0ZUFkZHJlc3MsIGNvbnN0IEF0b21pY1N0cmluZyYgZXhwZWN0ZWRWYWx1ZSwgYm9vbCBj
YW5EZWZhdWx0VG9DYXNlU2Vuc2l0aXZlVmFsdWVNYXRjaCkKIHsKICAgICBMb2NhbFJlZ2lzdGVy
IGV4cGVjdGVkVmFsdWVSZWdpc3RlcihtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKQEAgLTE5MTksNiAr
MjAwNCw1MSBAQCBpbmxpbmUgQXNzZW1ibGVyOjpKdW1wTGlzdCBTZWxlY3RvckNvZGVHZW5lcmF0
b3I6Omp1bXBJZk5vUHJldmlvdXNBZGphY2VudEVsZW1lbgogICAgIHJldHVybiBzdWNjZXNzQ2Fz
ZTsKIH0KIAorc3RhdGljIGJvb2wgZWxlbWVudElzQWN0aXZlKEVsZW1lbnQqIGVsZW1lbnQpCit7
CisgICAgcmV0dXJuIGVsZW1lbnQtPmFjdGl2ZSgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Zm9yY2VQc2V1ZG9TdGF0ZShlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3Rp
dmUpOworfQorCitzdGF0aWMgYm9vbCBlbGVtZW50SXNBY3RpdmVGb3JTdHlsZVJlc29sdXRpb24o
RWxlbWVudCogZWxlbWVudCwgY29uc3QgQ2hlY2tpbmdDb250ZXh0KiBjaGVja2luZ0NvbnRleHQp
Cit7CisgICAgaWYgKGNoZWNraW5nQ29udGV4dC0+cmVzb2x2aW5nTW9kZSA9PSBTZWxlY3RvckNo
ZWNrZXI6OlJlc29sdmluZ1N0eWxlKQorICAgICAgICBlbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVj
dGVkQnlBY3RpdmUoKTsKKyAgICByZXR1cm4gZWxlbWVudC0+YWN0aXZlKCkgfHwgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0FjdGl2ZSk7Cit9CisKK3ZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZUVsZW1lbnRJc0FjdGl2ZShBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNv
bnN0IFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50KQoreworICAgIGdlbmVyYXRlU3BlY2lhbEZh
aWx1cmVJblF1aXJrc01vZGVGb3JBY3RpdmVBbmRIb3ZlcklmTmVlZGVkKGZhaWx1cmVDYXNlcywg
ZnJhZ21lbnQpOworICAgIGlmIChtX3NlbGVjdG9yQ29udGV4dCA9PSBTZWxlY3RvckNvbnRleHQ6
OlF1ZXJ5U2VsZWN0b3IpIHsKKyAgICAgICAgRnVuY3Rpb25DYWxsIGZ1bmN0aW9uQ2FsbChtX2Fz
c2VtYmxlciwgbV9yZWdpc3RlckFsbG9jYXRvciwgbV9zdGFja0FsbG9jYXRvciwgbV9mdW5jdGlv
bkNhbGxzKTsKKyAgICAgICAgZnVuY3Rpb25DYWxsLnNldEZ1bmN0aW9uQWRkcmVzcyhlbGVtZW50
SXNBY3RpdmUpOworICAgICAgICBmdW5jdGlvbkNhbGwuc2V0T25lQXJndW1lbnQoZWxlbWVudEFk
ZHJlc3NSZWdpc3Rlcik7CisgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoZnVuY3Rpb25DYWxs
LmNhbGxBbmRCcmFuY2hPbkNvbmRpdGlvbihBc3NlbWJsZXI6Olplcm8pKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiAoZnJhZ21lbnQucmVsYXRpb25Ub1JpZ2h0RnJhZ21lbnQgPT0gRnJhZ21l
bnRSZWxhdGlvbjo6UmlnaHRtb3N0KSB7CisgICAgICAgICAgICBMb2NhbFJlZ2lzdGVyIGNoZWNr
aW5nQ29udGV4dChtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAgICAgICAgICAgIEFzc2VtYmxlcjo6
SnVtcCBub3RSZXNvbHZpbmdTdHlsZSA9IGp1bXBJZk5vdFJlc29sdmluZ1N0eWxlKGNoZWNraW5n
Q29udGV4dCk7CisgICAgICAgICAgICBhZGRGbGFnc1RvRWxlbWVudFN0eWxlRnJvbUNvbnRleHQo
Y2hlY2tpbmdDb250ZXh0LCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmZsYWdJc2Fm
ZmVjdGVkQnlBY3RpdmUoKSk7CisgICAgICAgICAgICBub3RSZXNvbHZpbmdTdHlsZS5saW5rKCZt
X2Fzc2VtYmxlcik7CisKKyAgICAgICAgICAgIEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbkNhbGwobV9h
c3NlbWJsZXIsIG1fcmVnaXN0ZXJBbGxvY2F0b3IsIG1fc3RhY2tBbGxvY2F0b3IsIG1fZnVuY3Rp
b25DYWxscyk7CisgICAgICAgICAgICBmdW5jdGlvbkNhbGwuc2V0RnVuY3Rpb25BZGRyZXNzKGVs
ZW1lbnRJc0FjdGl2ZSk7CisgICAgICAgICAgICBmdW5jdGlvbkNhbGwuc2V0T25lQXJndW1lbnQo
ZWxlbWVudEFkZHJlc3NSZWdpc3Rlcik7CisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5k
KGZ1bmN0aW9uQ2FsbC5jYWxsQW5kQnJhbmNoT25Db25kaXRpb24oQXNzZW1ibGVyOjpaZXJvKSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXRUb0NoZWNraW5n
Q29udGV4dCA9IG1fc3RhY2tBbGxvY2F0b3Iub2Zmc2V0VG9TdGFja1JlZmVyZW5jZShtX2NoZWNr
aW5nQ29udGV4dFN0YWNrUmVmZXJlbmNlKTsKKyAgICAgICAgICAgIEFzc2VtYmxlcjo6UmVnaXN0
ZXJJRCBjaGVja2luZ0NvbnRleHQgPSBtX3JlZ2lzdGVyQWxsb2NhdG9yLmFsbG9jYXRlUmVnaXN0
ZXIoKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNz
KEFzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIG9mZnNldFRvQ2hlY2tpbmdDb250ZXh0
KSwgY2hlY2tpbmdDb250ZXh0KTsKKyAgICAgICAgICAgIG1fcmVnaXN0ZXJBbGxvY2F0b3IuZGVh
bGxvY2F0ZVJlZ2lzdGVyKGNoZWNraW5nQ29udGV4dCk7CisKKyAgICAgICAgICAgIEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbkNhbGwobV9hc3NlbWJsZXIsIG1fcmVnaXN0ZXJBbGxvY2F0b3IsIG1fc3Rh
Y2tBbGxvY2F0b3IsIG1fZnVuY3Rpb25DYWxscyk7CisgICAgICAgICAgICBmdW5jdGlvbkNhbGwu
c2V0RnVuY3Rpb25BZGRyZXNzKGVsZW1lbnRJc0FjdGl2ZUZvclN0eWxlUmVzb2x1dGlvbik7Cisg
ICAgICAgICAgICBmdW5jdGlvbkNhbGwuc2V0VHdvQXJndW1lbnRzKGVsZW1lbnRBZGRyZXNzUmVn
aXN0ZXIsIGNoZWNraW5nQ29udGV4dCk7CisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5k
KGZ1bmN0aW9uQ2FsbC5jYWxsQW5kQnJhbmNoT25Db25kaXRpb24oQXNzZW1ibGVyOjpaZXJvKSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZUVsZW1lbnRJc0ZpcnN0Q2hpbGQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2Vz
LCBjb25zdCBTZWxlY3RvckZyYWdtZW50JiBmcmFnbWVudCkKIHsKICAgICBpZiAobV9zZWxlY3Rv
ckNvbnRleHQgPT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yKSB7CkBAIC0xOTU2LDE5
ICsyMDg2LDkgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudElz
Rmlyc3RDaGlsZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWkKICAgICAvLyBPdGhlcndpc2Ugd2Ug
bmVlZCB0byBhcHBseSBzZXRGaXJzdENoaWxkU3RhdGUoKSBvbiB0aGUgUmVuZGVyU3R5bGUuCiAg
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hUZXN0MzIoQXNzZW1ibGVy
OjpOb25aZXJvLCBpc0ZpcnN0Q2hpbGRSZWdpc3RlcikpOwogCi0gICAgaWYgKGZyYWdtZW50LnJl
bGF0aW9uVG9SaWdodEZyYWdtZW50ID09IEZyYWdtZW50UmVsYXRpb246OlJpZ2h0bW9zdCkgewot
ICAgICAgICBMb2NhbFJlZ2lzdGVyIGNoaWxkU3R5bGUobV9yZWdpc3RlckFsbG9jYXRvcik7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKGNoZWNraW5nQ29u
dGV4dCwgT0JKRUNUX09GRlNFVE9GKENoZWNraW5nQ29udGV4dCwgZWxlbWVudFN0eWxlKSksIGNo
aWxkU3R5bGUpOwotCi0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayBpbnRvIGRvaW5n
IHNvbWV0aGluZyBzbWFydCBpbiBNYWNyb0Fzc2VtYmxlciBpbnN0ZWFkLgotICAgICAgICBMb2Nh
bFJlZ2lzdGVyIGZsYWdzKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwotICAgICAgICBBc3NlbWJsZXI6
OkFkZHJlc3MgZmxhZ0FkZHJlc3MoY2hpbGRTdHlsZSwgUmVuZGVyU3R5bGU6Om5vbmluaGVyaXRl
ZEZsYWdzTWVtb3J5T2Zmc2V0KCkgKyBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmZs
YWdzTWVtb3J5T2Zmc2V0KCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkNjQoZmxhZ0FkZHJl
c3MsIGZsYWdzKTsKLSAgICAgICAgTG9jYWxSZWdpc3RlciBpc0ZpcnN0Q2hpbGRTdGF0ZUZsYWdJ
bW1lZGlhdGUobV9yZWdpc3RlckFsbG9jYXRvcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmUo
QXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpz
ZXRGaXJzdENoaWxkU3RhdGVGbGFncygpKSwgaXNGaXJzdENoaWxkU3RhdGVGbGFnSW1tZWRpYXRl
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIub3I2NChpc0ZpcnN0Q2hpbGRTdGF0ZUZsYWdJbW1lZGlh
dGUsIGZsYWdzKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3RvcmU2NChmbGFncywgZmxhZ0FkZHJl
c3MpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKGZyYWdtZW50LnJlbGF0aW9uVG9SaWdodEZyYWdt
ZW50ID09IEZyYWdtZW50UmVsYXRpb246OlJpZ2h0bW9zdCkKKyAgICAgICAgYWRkRmxhZ3NUb0Vs
ZW1lbnRTdHlsZUZyb21Db250ZXh0KGNoZWNraW5nQ29udGV4dCwgUmVuZGVyU3R5bGU6Ok5vbklu
aGVyaXRlZEZsYWdzOjpzZXRGaXJzdENoaWxkU3RhdGVGbGFncygpKTsKKyAgICBlbHNlIHsKICAg
ICAgICAgRnVuY3Rpb25DYWxsIGZ1bmN0aW9uQ2FsbChtX2Fzc2VtYmxlciwgbV9yZWdpc3RlckFs
bG9jYXRvciwgbV9zdGFja0FsbG9jYXRvciwgbV9mdW5jdGlvbkNhbGxzKTsKICAgICAgICAgZnVu
Y3Rpb25DYWxsLnNldEZ1bmN0aW9uQWRkcmVzcyhzZXRGaXJzdENoaWxkU3RhdGUpOwogICAgICAg
ICBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudEFkZHJlc3MgPSBlbGVtZW50QWRkcmVzc1Jl
Z2lzdGVyOwpAQCAtMTk4MCw2ICsyMTAwLDUxIEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZUVsZW1lbnRJc0ZpcnN0Q2hpbGQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpCiAg
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hUZXN0MzIoQXNzZW1ibGVy
OjpOb25aZXJvLCBpc0ZpcnN0Q2hpbGRSZWdpc3RlcikpOwogfQogCitzdGF0aWMgYm9vbCBlbGVt
ZW50SXNIb3ZlcmVkKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhv
dmVyZWQoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGUoZWxl
bWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIpOworfQorCitzdGF0aWMgYm9vbCBl
bGVtZW50SXNIb3ZlcmVkRm9yU3R5bGVSZXNvbHV0aW9uKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IENoZWNraW5nQ29udGV4dCogY2hlY2tpbmdDb250ZXh0KQoreworICAgIGlmIChjaGVja2luZ0Nv
bnRleHQtPnJlc29sdmluZ01vZGUgPT0gU2VsZWN0b3JDaGVja2VyOjpSZXNvbHZpbmdTdHlsZSkK
KyAgICAgICAgZWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKTsKKyAgICByZXR1
cm4gZWxlbWVudC0+aG92ZXJlZCgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQ
c2V1ZG9TdGF0ZShlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3Zlcik7Cit9CisK
K3ZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc0hvdmVyZWQoQXNz
ZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50JiBm
cmFnbWVudCkKK3sKKyAgICBnZW5lcmF0ZVNwZWNpYWxGYWlsdXJlSW5RdWlya3NNb2RlRm9yQWN0
aXZlQW5kSG92ZXJJZk5lZWRlZChmYWlsdXJlQ2FzZXMsIGZyYWdtZW50KTsKKyAgICBpZiAobV9z
ZWxlY3RvckNvbnRleHQgPT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yKSB7CisgICAg
ICAgIEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbkNhbGwobV9hc3NlbWJsZXIsIG1fcmVnaXN0ZXJBbGxv
Y2F0b3IsIG1fc3RhY2tBbGxvY2F0b3IsIG1fZnVuY3Rpb25DYWxscyk7CisgICAgICAgIGZ1bmN0
aW9uQ2FsbC5zZXRGdW5jdGlvbkFkZHJlc3MoZWxlbWVudElzSG92ZXJlZCk7CisgICAgICAgIGZ1
bmN0aW9uQ2FsbC5zZXRPbmVBcmd1bWVudChlbGVtZW50QWRkcmVzc1JlZ2lzdGVyKTsKKyAgICAg
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZChmdW5jdGlvbkNhbGwuY2FsbEFuZEJyYW5jaE9uQ29uZGl0
aW9uKEFzc2VtYmxlcjo6WmVybykpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChmcmFnbWVu
dC5yZWxhdGlvblRvUmlnaHRGcmFnbWVudCA9PSBGcmFnbWVudFJlbGF0aW9uOjpSaWdodG1vc3Qp
IHsKKyAgICAgICAgICAgIExvY2FsUmVnaXN0ZXIgY2hlY2tpbmdDb250ZXh0KG1fcmVnaXN0ZXJB
bGxvY2F0b3IpOworICAgICAgICAgICAgQXNzZW1ibGVyOjpKdW1wIG5vdFJlc29sdmluZ1N0eWxl
ID0ganVtcElmTm90UmVzb2x2aW5nU3R5bGUoY2hlY2tpbmdDb250ZXh0KTsKKyAgICAgICAgICAg
IGFkZEZsYWdzVG9FbGVtZW50U3R5bGVGcm9tQ29udGV4dChjaGVja2luZ0NvbnRleHQsIFJlbmRl
clN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6ZmxhZ0lzYWZmZWN0ZWRCeUhvdmVyKCkpOworICAg
ICAgICAgICAgbm90UmVzb2x2aW5nU3R5bGUubGluaygmbV9hc3NlbWJsZXIpOworCisgICAgICAg
ICAgICBGdW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNzZW1ibGVyLCBtX3JlZ2lzdGVyQWxs
b2NhdG9yLCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9uQ2FsbHMpOworICAgICAgICAgICAg
ZnVuY3Rpb25DYWxsLnNldEZ1bmN0aW9uQWRkcmVzcyhlbGVtZW50SXNIb3ZlcmVkKTsKKyAgICAg
ICAgICAgIGZ1bmN0aW9uQ2FsbC5zZXRPbmVBcmd1bWVudChlbGVtZW50QWRkcmVzc1JlZ2lzdGVy
KTsKKyAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoZnVuY3Rpb25DYWxsLmNhbGxBbmRC
cmFuY2hPbkNvbmRpdGlvbihBc3NlbWJsZXI6Olplcm8pKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIG9mZnNldFRvQ2hlY2tpbmdDb250ZXh0ID0gbV9zdGFja0FsbG9j
YXRvci5vZmZzZXRUb1N0YWNrUmVmZXJlbmNlKG1fY2hlY2tpbmdDb250ZXh0U3RhY2tSZWZlcmVu
Y2UpOworICAgICAgICAgICAgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29udGV4dCA9
IG1fcmVnaXN0ZXJBbGxvY2F0b3IuYWxsb2NhdGVSZWdpc3RlcigpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIubG9hZFB0cihBc3NlbWJsZXI6OkFkZHJlc3MoQXNzZW1ibGVyOjpzdGFja1BvaW50
ZXJSZWdpc3Rlciwgb2Zmc2V0VG9DaGVja2luZ0NvbnRleHQpLCBjaGVja2luZ0NvbnRleHQpOwor
ICAgICAgICAgICAgbV9yZWdpc3RlckFsbG9jYXRvci5kZWFsbG9jYXRlUmVnaXN0ZXIoY2hlY2tp
bmdDb250ZXh0KTsKKworICAgICAgICAgICAgRnVuY3Rpb25DYWxsIGZ1bmN0aW9uQ2FsbChtX2Fz
c2VtYmxlciwgbV9yZWdpc3RlckFsbG9jYXRvciwgbV9zdGFja0FsbG9jYXRvciwgbV9mdW5jdGlv
bkNhbGxzKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uQ2FsbC5zZXRGdW5jdGlvbkFkZHJlc3MoZWxl
bWVudElzSG92ZXJlZEZvclN0eWxlUmVzb2x1dGlvbik7CisgICAgICAgICAgICBmdW5jdGlvbkNh
bGwuc2V0VHdvQXJndW1lbnRzKGVsZW1lbnRBZGRyZXNzUmVnaXN0ZXIsIGNoZWNraW5nQ29udGV4
dCk7CisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGZ1bmN0aW9uQ2FsbC5jYWxsQW5k
QnJhbmNoT25Db25kaXRpb24oQXNzZW1ibGVyOjpaZXJvKSk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKIEFzc2VtYmxlcjo6SnVtcExpc3QgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpqdW1wSWZOb05l
eHRBZGphY2VudEVsZW1lbnQoKQogewogICAgIEFzc2VtYmxlcjo6SnVtcExpc3Qgc3VjY2Vzc0Nh
c2U7CkBAIC0yMDM4LDE5ICsyMjAzLDkgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlRWxlbWVudElzTGFzdENoaWxkKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWwKICAgICAv
LyBPdGhlcndpc2Ugd2UgbmVlZCB0byBhcHBseSBzZXRMYXN0Q2hpbGRTdGF0ZSgpIG9uIHRoZSBS
ZW5kZXJTdHlsZS4KICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFRl
c3QzMihBc3NlbWJsZXI6Ok5vblplcm8sIGlzTGFzdENoaWxkUmVnaXN0ZXIpKTsKIAotICAgIGlm
IChmcmFnbWVudC5yZWxhdGlvblRvUmlnaHRGcmFnbWVudCA9PSBGcmFnbWVudFJlbGF0aW9uOjpS
aWdodG1vc3QpIHsKLSAgICAgICAgTG9jYWxSZWdpc3RlciBjaGlsZFN0eWxlKG1fcmVnaXN0ZXJB
bGxvY2F0b3IpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkUHRyKEFzc2VtYmxlcjo6QWRkcmVz
cyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihDaGVja2luZ0NvbnRleHQsIGVsZW1l
bnRTdHlsZSkpLCBjaGlsZFN0eWxlKTsKLQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGxv
b2sgaW50byBkb2luZyBzb21ldGhpbmcgc21hcnQgaW4gTWFjcm9Bc3NlbWJsZXIgaW5zdGVhZC4K
LSAgICAgICAgTG9jYWxSZWdpc3RlciBmbGFncyhtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKLSAgICAg
ICAgQXNzZW1ibGVyOjpBZGRyZXNzIGZsYWdBZGRyZXNzKGNoaWxkU3R5bGUsIFJlbmRlclN0eWxl
Ojpub25pbmhlcml0ZWRGbGFnc01lbW9yeU9mZnNldCgpICsgUmVuZGVyU3R5bGU6Ok5vbkluaGVy
aXRlZEZsYWdzOjpmbGFnc01lbW9yeU9mZnNldCgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9h
ZDY0KGZsYWdBZGRyZXNzLCBmbGFncyk7Ci0gICAgICAgIExvY2FsUmVnaXN0ZXIgaXNMYXN0Q2hp
bGRTdGF0ZUZsYWdJbW1lZGlhdGUobV9yZWdpc3RlckFsbG9jYXRvcik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoUmVuZGVyU3R5bGU6Ok5vbkluaGVy
aXRlZEZsYWdzOjpzZXRMYXN0Q2hpbGRTdGF0ZUZsYWdzKCkpLCBpc0xhc3RDaGlsZFN0YXRlRmxh
Z0ltbWVkaWF0ZSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm9yNjQoaXNMYXN0Q2hpbGRTdGF0ZUZs
YWdJbW1lZGlhdGUsIGZsYWdzKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3RvcmU2NChmbGFncywg
ZmxhZ0FkZHJlc3MpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKGZyYWdtZW50LnJlbGF0aW9uVG9S
aWdodEZyYWdtZW50ID09IEZyYWdtZW50UmVsYXRpb246OlJpZ2h0bW9zdCkKKyAgICAgICAgYWRk
RmxhZ3NUb0VsZW1lbnRTdHlsZUZyb21Db250ZXh0KGNoZWNraW5nQ29udGV4dCwgUmVuZGVyU3R5
bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpzZXRMYXN0Q2hpbGRTdGF0ZUZsYWdzKCkpOworICAgIGVs
c2UgewogICAgICAgICBGdW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNzZW1ibGVyLCBtX3Jl
Z2lzdGVyQWxsb2NhdG9yLCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9uQ2FsbHMpOwogICAg
ICAgICBmdW5jdGlvbkNhbGwuc2V0RnVuY3Rpb25BZGRyZXNzKHNldExhc3RDaGlsZFN0YXRlKTsK
ICAgICAgICAgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnRBZGRyZXNzID0gZWxlbWVudEFk
ZHJlc3NSZWdpc3RlcjsKQEAgLTIxMjMsMTkgKzIyNzgsOSBAQCB2b2lkIFNlbGVjdG9yQ29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SXNPbmx5Q2hpbGQoQXNzZW1ibGVyOjpKdW1wTGlzdCYg
ZmFpbAogICAgIC8vIE90aGVyd2lzZSB3ZSBuZWVkIHRvIGFwcGx5IHNldExhc3RDaGlsZFN0YXRl
KCkgb24gdGhlIFJlbmRlclN0eWxlLgogICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJs
ZXIuYnJhbmNoVGVzdDMyKEFzc2VtYmxlcjo6Tm9uWmVybywgaXNPbmx5Q2hpbGRSZWdpc3Rlcikp
OwogCi0gICAgaWYgKGZyYWdtZW50LnJlbGF0aW9uVG9SaWdodEZyYWdtZW50ID09IEZyYWdtZW50
UmVsYXRpb246OlJpZ2h0bW9zdCkgewotICAgICAgICBMb2NhbFJlZ2lzdGVyIGNoaWxkU3R5bGUo
bV9yZWdpc3RlckFsbG9jYXRvcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1i
bGVyOjpBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9GKENoZWNraW5nQ29u
dGV4dCwgZWxlbWVudFN0eWxlKSksIGNoaWxkU3R5bGUpOwotCi0gICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbG9vayBpbnRvIGRvaW5nIHNvbWV0aGluZyBzbWFydCBpbiBNYWNyb0Fzc2VtYmxl
ciBpbnN0ZWFkLgotICAgICAgICBMb2NhbFJlZ2lzdGVyIGZsYWdzKG1fcmVnaXN0ZXJBbGxvY2F0
b3IpOwotICAgICAgICBBc3NlbWJsZXI6OkFkZHJlc3MgZmxhZ0FkZHJlc3MoY2hpbGRTdHlsZSwg
UmVuZGVyU3R5bGU6Om5vbmluaGVyaXRlZEZsYWdzTWVtb3J5T2Zmc2V0KCkgKyBSZW5kZXJTdHls
ZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmZsYWdzTWVtb3J5T2Zmc2V0KCkpOwotICAgICAgICBtX2Fz
c2VtYmxlci5sb2FkNjQoZmxhZ0FkZHJlc3MsIGZsYWdzKTsKLSAgICAgICAgTG9jYWxSZWdpc3Rl
ciBpc0xhc3RDaGlsZFN0YXRlRmxhZ0ltbWVkaWF0ZShtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW02NChSZW5kZXJTdHls
ZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldEZpcnN0Q2hpbGRTdGF0ZUZsYWdzKCkgfCBSZW5kZXJT
dHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldExhc3RDaGlsZFN0YXRlRmxhZ3MoKSksIGlzTGFz
dENoaWxkU3RhdGVGbGFnSW1tZWRpYXRlKTsKLSAgICAgICAgbV9hc3NlbWJsZXIub3I2NChpc0xh
c3RDaGlsZFN0YXRlRmxhZ0ltbWVkaWF0ZSwgZmxhZ3MpOwotICAgICAgICBtX2Fzc2VtYmxlci5z
dG9yZTY0KGZsYWdzLCBmbGFnQWRkcmVzcyk7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoZnJhZ21l
bnQucmVsYXRpb25Ub1JpZ2h0RnJhZ21lbnQgPT0gRnJhZ21lbnRSZWxhdGlvbjo6UmlnaHRtb3N0
KQorICAgICAgICBhZGRGbGFnc1RvRWxlbWVudFN0eWxlRnJvbUNvbnRleHQoY2hlY2tpbmdDb250
ZXh0LCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldEZpcnN0Q2hpbGRTdGF0ZUZs
YWdzKCkgfCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldExhc3RDaGlsZFN0YXRl
RmxhZ3MoKSk7CisgICAgZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbkNhbGwo
bV9hc3NlbWJsZXIsIG1fcmVnaXN0ZXJBbGxvY2F0b3IsIG1fc3RhY2tBbGxvY2F0b3IsIG1fZnVu
Y3Rpb25DYWxscyk7CiAgICAgICAgIGZ1bmN0aW9uQ2FsbC5zZXRGdW5jdGlvbkFkZHJlc3Moc2V0
T25seUNoaWxkU3RhdGUpOwogICAgICAgICBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudEFk
ZHJlc3MgPSBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyOwpAQCAtMjMwNCwxNiArMjQ0OSw3IEBAIHZv
aWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc050aENoaWxkKEFzc2Vt
Ymxlcjo6SnVtcExpc3QmIGZhaWx1CiAgICAgICAgIGZ1bmN0aW9uQ2FsbC5jYWxsKCk7CiAKICAg
ICAgICAgaWYgKGZyYWdtZW50LnJlbGF0aW9uVG9SaWdodEZyYWdtZW50ID09IEZyYWdtZW50UmVs
YXRpb246OlJpZ2h0bW9zdCkgewotICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBjaGlsZFN0eWxl
KG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZFB0cihB
c3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoQ2hlY2tp
bmdDb250ZXh0LCBlbGVtZW50U3R5bGUpKSwgY2hpbGRTdHlsZSk7Ci0KLSAgICAgICAgICAgIExv
Y2FsUmVnaXN0ZXIgZmxhZ3MobV9yZWdpc3RlckFsbG9jYXRvcik7Ci0gICAgICAgICAgICBBc3Nl
bWJsZXI6OkFkZHJlc3MgZmxhZ0FkZHJlc3MoY2hpbGRTdHlsZSwgUmVuZGVyU3R5bGU6Om5vbmlu
aGVyaXRlZEZsYWdzTWVtb3J5T2Zmc2V0KCkgKyBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxh
Z3M6OmZsYWdzTWVtb3J5T2Zmc2V0KCkpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZDY0
KGZsYWdBZGRyZXNzLCBmbGFncyk7Ci0gICAgICAgICAgICBMb2NhbFJlZ2lzdGVyIGlzVW5pcXVl
RmxhZ0ltbWVkaWF0ZShtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRl
ZEZsYWdzOjpmbGFnSXNVbmlxdWUoKSksIGlzVW5pcXVlRmxhZ0ltbWVkaWF0ZSk7Ci0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5vcjY0KGlzVW5pcXVlRmxhZ0ltbWVkaWF0ZSwgZmxhZ3MpOwotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc3RvcmU2NChmbGFncywgZmxhZ0FkZHJlc3MpOworICAgICAg
ICAgICAgYWRkRmxhZ3NUb0VsZW1lbnRTdHlsZUZyb21Db250ZXh0KGNoZWNraW5nQ29udGV4dCwg
UmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpmbGFnSXNVbmlxdWUoKSk7CiAKICAgICAg
ICAgICAgIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50QWRkcmVzcyA9IGVsZW1lbnRBZGRy
ZXNzUmVnaXN0ZXI7CiAgICAgICAgICAgICBGdW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNz
ZW1ibGVyLCBtX3JlZ2lzdGVyQWxsb2NhdG9yLCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9u
Q2FsbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzdhZTVmZTAxZmZmNGJlN2M1NDI1
MjRlZTFjOTk4NWU2NmQzOWUzNi4uM2M3NTRkN2Q1ZGM1ZmJkZTBmMjQ3YjU5YTE2ZTM0NDFkMTJi
MjQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MTgsNyArNDE4LDcgQEAgRG9jdW1l
bnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3Vt
ZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1fcHJpbnRpbmcoZmFsc2UpCiAgICAgLCBtX3BhZ2lu
YXRlZEZvclNjcmVlbihmYWxzZSkKICAgICAsIG1faWdub3JlQXV0b2ZvY3VzKGZhbHNlKQotICAg
ICwgbV9jb21wYXRpYmlsaXR5TW9kZShOb1F1aXJrc01vZGUpCisgICAgLCBtX2NvbXBhdGliaWxp
dHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6Ok5vUXVpcmtzTW9kZSkKICAgICAsIG1f
Y29tcGF0aWJpbGl0eU1vZGVMb2NrZWQoZmFsc2UpCiAgICAgLCBtX3RleHRDb2xvcihDb2xvcjo6
YmxhY2spCiAgICAgLCBtX2RvbVRyZWVWZXJzaW9uKCsrc19nbG9iYWxUcmVlVmVyc2lvbikKQEAg
LTc2NCw3ICs3NjQsNyBAQCBNZWRpYVF1ZXJ5TWF0Y2hlciYgRG9jdW1lbnQ6Om1lZGlhUXVlcnlN
YXRjaGVyKCkKICAgICByZXR1cm4gKm1fbWVkaWFRdWVyeU1hdGNoZXI7CiB9CiAKLXZvaWQgRG9j
dW1lbnQ6OnNldENvbXBhdGliaWxpdHlNb2RlKENvbXBhdGliaWxpdHlNb2RlIG1vZGUpCit2b2lk
IERvY3VtZW50OjpzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2Rl
IG1vZGUpCiB7CiAgICAgaWYgKG1fY29tcGF0aWJpbGl0eU1vZGVMb2NrZWQgfHwgbW9kZSA9PSBt
X2NvbXBhdGliaWxpdHlNb2RlKQogICAgICAgICByZXR1cm47CkBAIC0yMjU3LDcgKzIyNTcsNyBA
QCB2b2lkIERvY3VtZW50OjppbXBsaWNpdE9wZW4oKQogCiAgICAgcmVtb3ZlQ2hpbGRyZW4oKTsK
IAotICAgIHNldENvbXBhdGliaWxpdHlNb2RlKE5vUXVpcmtzTW9kZSk7CisgICAgc2V0Q29tcGF0
aWJpbGl0eU1vZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6Tm9RdWlya3NNb2RlKTsKIAog
ICAgIG1fcGFyc2VyID0gY3JlYXRlUGFyc2VyKCk7CiAgICAgc2V0UGFyc2luZyh0cnVlKTsKQEAg
LTMxMjUsNyArMzEyNSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmNsb25lRGF0YUZyb21Eb2N1bWVudChj
b25zdCBEb2N1bWVudCYgb3RoZXIpCiAgICAgbV9iYXNlVVJMT3ZlcnJpZGUgPSBvdGhlci5iYXNl
VVJMT3ZlcnJpZGUoKTsKICAgICBtX2RvY3VtZW50VVJJID0gb3RoZXIuZG9jdW1lbnRVUkkoKTsK
IAotICAgIHNldENvbXBhdGliaWxpdHlNb2RlKG90aGVyLmNvbXBhdGliaWxpdHlNb2RlKCkpOwor
ICAgIHNldENvbXBhdGliaWxpdHlNb2RlKG90aGVyLm1fY29tcGF0aWJpbGl0eU1vZGUpOwogICAg
IHNldFNlY3VyaXR5T3JpZ2luKG90aGVyLnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIHNldERlY29k
ZXIob3RoZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYjA3YjUwMWI1
NDE5Njk0ZTk5YzRiYWZhMDA5OWQ1YzhhZTY2Njc2Zi4uYzYxNjExNGI2NjM4NTI4NWFhOGU1ZTI4
ZDlhZTYyMzI3YTk5YzU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTI0OCw2ICsyNDgsMTIg
QEAgZW51bSBEb2N1bWVudENsYXNzIHsKIAogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIERvY3VtZW50
Q2xhc3NGbGFnczsKIAorZW51bSBjbGFzcyBEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlIDogdW5z
aWduZWQgY2hhciB7CisgICAgTm9RdWlya3NNb2RlID0gMSwKKyAgICBRdWlya3NNb2RlID0gMSA8
PCAxLAorICAgIExpbWl0ZWRRdWlya3NNb2RlID0gMSA8PCAyCit9OworCiBjbGFzcyBEb2N1bWVu
dCA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1l
bnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQpAQCAtNjgyLDE3ICs2ODgs
MTUgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcGFnaW5hdGVkKCkgY29uc3QgeyByZXR1cm4g
cHJpbnRpbmcoKSB8fCBwYWdpbmF0ZWRGb3JTY3JlZW4oKTsgfQogCi0gICAgZW51bSBDb21wYXRp
YmlsaXR5TW9kZSB7IFF1aXJrc01vZGUsIExpbWl0ZWRRdWlya3NNb2RlLCBOb1F1aXJrc01vZGUg
fTsKLQotICAgIHZvaWQgc2V0Q29tcGF0aWJpbGl0eU1vZGUoQ29tcGF0aWJpbGl0eU1vZGUgbSk7
CisgICAgdm9pZCBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2Rl
KTsKICAgICB2b2lkIGxvY2tDb21wYXRpYmlsaXR5TW9kZSgpIHsgbV9jb21wYXRpYmlsaXR5TW9k
ZUxvY2tlZCA9IHRydWU7IH0KLSAgICBDb21wYXRpYmlsaXR5TW9kZSBjb21wYXRpYmlsaXR5TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcGF0aWJpbGl0eU1vZGU7IH0KKyAgICBzdGF0aWMgcHRy
ZGlmZl90IGNvbXBhdGliaWxpdHlNb2RlTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKERvY3VtZW50LCBtX2NvbXBhdGliaWxpdHlNb2RlKTsgfQogCiAgICAgU3RyaW5nIGNv
bXBhdE1vZGUoKSBjb25zdDsKIAotICAgIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9jb21wYXRpYmlsaXR5TW9kZSA9PSBRdWlya3NNb2RlOyB9Ci0gICAgYm9vbCBpbkxpbWl0
ZWRRdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb21wYXRpYmlsaXR5TW9kZSA9PSBMaW1p
dGVkUXVpcmtzTW9kZTsgfQotICAgIGJvb2wgaW5Ob1F1aXJrc01vZGUoKSBjb25zdCB7IHJldHVy
biBtX2NvbXBhdGliaWxpdHlNb2RlID09IE5vUXVpcmtzTW9kZTsgfQorICAgIGJvb2wgaW5RdWly
a3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb21wYXRpYmlsaXR5TW9kZSA9PSBEb2N1bWVudENv
bXBhdGliaWxpdHlNb2RlOjpRdWlya3NNb2RlOyB9CisgICAgYm9vbCBpbkxpbWl0ZWRRdWlya3NN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb21wYXRpYmlsaXR5TW9kZSA9PSBEb2N1bWVudENvbXBh
dGliaWxpdHlNb2RlOjpMaW1pdGVkUXVpcmtzTW9kZTsgfQorICAgIGJvb2wgaW5Ob1F1aXJrc01v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbXBhdGliaWxpdHlNb2RlID09IERvY3VtZW50Q29tcGF0
aWJpbGl0eU1vZGU6Ok5vUXVpcmtzTW9kZTsgfQogCiAgICAgZW51bSBSZWFkeVN0YXRlIHsKICAg
ICAgICAgTG9hZGluZywKQEAgLTE0MDQsNyArMTQwOCw3IEBAIHByaXZhdGU6CiAKICAgICBib29s
IG1faWdub3JlQXV0b2ZvY3VzOwogCi0gICAgQ29tcGF0aWJpbGl0eU1vZGUgbV9jb21wYXRpYmls
aXR5TW9kZTsKKyAgICBEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlIG1fY29tcGF0aWJpbGl0eU1v
ZGU7CiAgICAgYm9vbCBtX2NvbXBhdGliaWxpdHlNb2RlTG9ja2VkOyAvLyBUaGlzIGlzIGNoZWFw
ZXIgdGhhbiBtYWtpbmcgc2V0Q29tcGF0aWJpbGl0eU1vZGUgdmlydHVhbC4KIAogICAgIENvbG9y
IG1fdGV4dENvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggOGFi
YmY1YjBiNWM1ODIxOTNhNjQzMWY3Y2EzYjNiY2RmODM1NjcxYS4uYjljOGE5OTUyZTJkNDAwMGMy
NGQyYmM5M2QwNjViYjNhOTJjMmNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQu
Y3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgSW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFt
ZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogI2VuZGlmCiAgICAgLCBtX3Nob3VsZFNocmlua0lt
YWdlKGZyYW1lLnNldHRpbmdzKCkuc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdCgpICYmIGZy
YW1lLmlzTWFpbkZyYW1lKCkpCiB7Ci0gICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoUXVpcmtzTW9k
ZSk7CisgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6
UXVpcmtzTW9kZSk7CiAgICAgbG9ja0NvbXBhdGliaWxpdHlNb2RlKCk7CiB9CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAppbmRleCBmMjJmYzViZjU4MDAzYzQ3MjQzMTFl
OTBiZGZjMGI0NmMyYjcxNzQ2Li41YjZhYWEyZDJkYzNlNmQ3M2IxMTU5OTdlNjhhNTkwZDNmNGU0
NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTEyOSw3ICsxMjks
NyBAQCBNZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJM
JiB1cmwpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgTWVkaWFEb2N1bWVudENsYXNz
KQogICAgICwgbV9yZXBsYWNlTWVkaWFFbGVtZW50VGltZXIodGhpcywgJk1lZGlhRG9jdW1lbnQ6
OnJlcGxhY2VNZWRpYUVsZW1lbnRUaW1lckZpcmVkKQogewotICAgIHNldENvbXBhdGliaWxpdHlN
b2RlKFF1aXJrc01vZGUpOworICAgIHNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0
aWJpbGl0eU1vZGU6OlF1aXJrc01vZGUpOwogICAgIGxvY2tDb21wYXRpYmlsaXR5TW9kZSgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IDczZTZlZDRkMDdl
NWE0OTRkNzhhMmFlMjAyYjlkMWE4OTJlZjJlMmMuLmY3MTZiMjc5OTQ3NWQxOTgwZTNmY2VjODdk
ODQ5OTU5ZWVkMjk4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBA
IC0xNDQsNyArMTQ0LDcgQEAgUGx1Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3VtZW50KEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgUGx1
Z2luRG9jdW1lbnRDbGFzcykKICAgICAsIG1fc2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5KHRydWUp
CiB7Ci0gICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoUXVpcmtzTW9kZSk7CisgICAgc2V0Q29tcGF0
aWJpbGl0eU1vZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6UXVpcmtzTW9kZSk7CiAgICAg
bG9ja0NvbXBhdGliaWxpdHlNb2RlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50
LmNwcAppbmRleCAwOTIzZjIxYTBmMTY2NWRkNWU4MjAzYTFmODBiYzI3NmI2OTUwYjQ5Li40N2I2
OWM3ZGI2M2UyODU1MzM2MjdjNzNmYWE5NTIwOWU3ZWE1ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0RG9jdW1lbnQuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFRl
eHREb2N1bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAg
ICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgVGV4dERvY3VtZW50Q2xhc3MpCiB7Ci0gICAg
c2V0Q29tcGF0aWJpbGl0eU1vZGUoUXVpcmtzTW9kZSk7CisgICAgc2V0Q29tcGF0aWJpbGl0eU1v
ZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6UXVpcmtzTW9kZSk7CiAgICAgbG9ja0NvbXBh
dGliaWxpdHlNb2RlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCAwY2ZlNjAyN2YzNTNlZWNhYzNlZTk5Yzhl
ODMwZDBjOTdlZDE2ZDQ5Li5jYmE2YTVmZGEwOWRmZjQwMmYyY2RjMzE2ZjVlZmQ1M2M4NWNhZjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCkBAIC0yOTMsMTIgKzI5MywxMiBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjpzZXREZWZhdWx0Q29tcGF0aWJpbGl0eU1vZGUoKQogICAgICAgICByZXR1cm47CiAgICAgaWYg
KG1fZG9jdW1lbnQtPmlzU3JjZG9jRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNl
dENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50OjpRdWlya3NNb2RlKTsKKyAgICBzZXRDb21wYXRp
YmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlOjpRdWlya3NNb2RlKTsKIH0KIAot
dm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6c2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnQ6
OkNvbXBhdGliaWxpdHlNb2RlIG1vZGUpCit2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpzZXRD
b21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlIG1vZGUpCiB7Ci0gICAg
bV9pblF1aXJrc01vZGUgPSAobW9kZSA9PSBEb2N1bWVudDo6UXVpcmtzTW9kZSk7CisgICAgbV9p
blF1aXJrc01vZGUgPSAobW9kZSA9PSBEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlOjpRdWlya3NN
b2RlKTsKICAgICBtX2RvY3VtZW50LT5zZXRDb21wYXRpYmlsaXR5TW9kZShtb2RlKTsKIH0KIApA
QCAtMzczLDcgKzM3Myw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6OnNldENvbXBhdGli
aWxpdHlNb2RlRnJvbURvY3R5cGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjCiAgICAgICAgIHx8IGVx
dWFsSWdub3JpbmdDYXNlKHN5c3RlbUlkLCAiaHR0cDovL3d3dy5pYm0uY29tL2RhdGEvZHRkL3Yx
MS9pYm14aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCIpCiAgICAgICAgIHx8IChzeXN0ZW1JZC5pc0Vt
cHR5KCkgJiYgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIEZyYW1l
c2V0Ly8iLCBmYWxzZSkpCiAgICAgICAgIHx8IChzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgcHVibGlj
SWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vIiwgZmFs
c2UpKSkgewotICAgICAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudDo6UXVpcmtzTW9k
ZSk7CisgICAgICAgIHNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1v
ZGU6OlF1aXJrc01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zODIsMTIgKzM4
MiwxMiBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpzZXRDb21wYXRpYmlsaXR5TW9kZUZy
b21Eb2N0eXBlKGNvbnN0IFN0cmluZyYgbmFtZSwgYwogICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy8iLCBmYWxzZSkKICAg
ICAgICAgfHwgKCFzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
VzNDLy9EVEQgSFRNTCA0LjAxIEZyYW1lc2V0Ly8iLCBmYWxzZSkpCiAgICAgICAgIHx8ICghc3lz
dGVtSWQuaXNFbXB0eSgpICYmIHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwg
NC4wMSBUcmFuc2l0aW9uYWwvLyIsIGZhbHNlKSkpIHsKLSAgICAgICAgc2V0Q29tcGF0aWJpbGl0
eU1vZGUoRG9jdW1lbnQ6OkxpbWl0ZWRRdWlya3NNb2RlKTsKKyAgICAgICAgc2V0Q29tcGF0aWJp
bGl0eU1vZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6TGltaXRlZFF1aXJrc01vZGUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gT3RoZXJ3aXNlIHdlIGFyZSBObyBRdWly
a3MgTW9kZS4KLSAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudDo6Tm9RdWlya3NNb2Rl
KTsKKyAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlOjpO
b1F1aXJrc01vZGUpOwogfQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpmaW5pc2hlZFBh
cnNpbmcoKQpAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omlu
c2VydERvY3R5cGUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKHRva2VuLT5mb3JjZVF1aXJrcygpKQotICAgICAgICBzZXRDb21wYXRpYmlsaXR5TW9k
ZShEb2N1bWVudDo6UXVpcmtzTW9kZSk7CisgICAgICAgIHNldENvbXBhdGliaWxpdHlNb2RlKERv
Y3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OlF1aXJrc01vZGUpOwogICAgIGVsc2UgewogICAgICAg
ICBzZXRDb21wYXRpYmlsaXR5TW9kZUZyb21Eb2N0eXBlKHRva2VuLT5uYW1lKCksIHB1YmxpY0lk
LCBzeXN0ZW1JZCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmgKaW5kZXggODcwOWZjMWNjYmI3NWQyYzNhZmE2NGU1YTU0MGVh
YWJmMWJkYTdlYy4uMWJjZmY4ZDRmMmY5MmU2N2M4YWI2NDU2Zjg1ZWRhMzgxNGI1OThmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5o
CkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICAvLyB0b2tlbnMgcHJvZHVjZSBvbmx5
IG9uZSBET00gbXV0YXRpb24uCiAgICAgdHlwZWRlZiBWZWN0b3I8SFRNTENvbnN0cnVjdGlvblNp
dGVUYXNrLCAxPiBUYXNrUXVldWU7CiAKLSAgICB2b2lkIHNldENvbXBhdGliaWxpdHlNb2RlKERv
Y3VtZW50OjpDb21wYXRpYmlsaXR5TW9kZSk7CisgICAgdm9pZCBzZXRDb21wYXRpYmlsaXR5TW9k
ZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlKTsKICAgICB2b2lkIHNldENvbXBhdGliaWxpdHlN
b2RlRnJvbURvY3R5cGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHB1YmxpY0lk
LCBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKTsKIAogICAgIHZvaWQgYXR0YWNoTGF0ZXIoQ29udGFp
bmVyTm9kZSogcGFyZW50LCBQYXNzUmVmUHRyPE5vZGU+IGNoaWxkLCBib29sIHNlbGZDbG9zaW5n
ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3Jp
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKaW5kZXgg
ZmFmNzlhZjdmZWE5OGQ1Y2QzNmI5NjdlZTc0YTJhZDQxMjliMzFhNC4uNGQxMGQzNzkxNGJkNjU4
Y2E2YTYwNzc4MTIzZmU3Y2QwOTdiNmJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRXcml0ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OnJlcGxh
Y2VEb2N1bWVudChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1lCiAg
ICAgaWYgKCFzb3VyY2UuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKCFtX2hhc1JlY2VpdmVkU29t
ZURhdGEpIHsKICAgICAgICAgICAgIG1faGFzUmVjZWl2ZWRTb21lRGF0YSA9IHRydWU7Ci0gICAg
ICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVu
dDo6Tm9RdWlya3NNb2RlKTsKKyAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNldENv
bXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6Ok5vUXVpcmtzTW9kZSk7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgY2FsbCBEb2N1bWVu
dFBhcnNlcjo6YXBwZW5kQnl0ZXMgaW5zdGVhZCBvZiBhcHBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1NpbmtEb2N1bWVudC5jcHAKaW5kZXggNzE1MzRlY2JlNDMyNWFlOTc0YWE0ZmRiMTQ3Yzk3MjYw
MDEwY2M2NC4uNmM1NTAzMjA0ZmQyZWEzY2I3YWM2MTI4NjI4YjkyMGI1YTRlNWY5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0
ZToKIFNpbmtEb2N1bWVudDo6U2lua0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKIHsKLSAgICBzZXRDb21wYXRpYmls
aXR5TW9kZShRdWlya3NNb2RlKTsKKyAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENv
bXBhdGliaWxpdHlNb2RlOjpRdWlya3NNb2RlKTsKICAgICBsb2NrQ29tcGF0aWJpbGl0eU1vZGUo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCA3NzZhZjE3OTU2NDI5
Y2FkNjE4YjE2YzQ2NTA2M2M5ZTVmN2VkZjRjLi4yNDVhOTk5MjMyZmM0MzU3NWMyYjMyZTEzYjk4
Yjg5ZDcyZTFhODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtODQsNyAr
ODQsNyBAQCB2b2lkIEZyYW1lOjppbml0V2l0aFNpbXBsZUhUTUxEb2N1bWVudChjb25zdCBTdHJp
bmcmIHN0eWxlLCBjb25zdCBVUkwmIHVybCkKICAgICBtX2xvYWRlci5pbml0Rm9yU3ludGhlc2l6
ZWREb2N1bWVudCh1cmwpOwogCiAgICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZG9jdW1lbnQgPSBI
VE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQodGhpcywgdXJsKTsKLSAgICBk
b2N1bWVudC0+c2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnQ6OkxpbWl0ZWRRdWlya3NNb2Rl
KTsKKyAgICBkb2N1bWVudC0+c2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRDb21wYXRpYmls
aXR5TW9kZTo6TGltaXRlZFF1aXJrc01vZGUpOwogICAgIGRvY3VtZW50LT5jcmVhdGVET01XaW5k
b3coKTsKICAgICBzZXREb2N1bWVudChkb2N1bWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggMTliYTI4NTEzM2U1YzNjZjQwMGU5MjY3
ZTQ4MjA3YjFmYzgwMjEzNS4uZTc0MWVmMmU2MjZiYTg1ZjRjOTBlNTJkMTIzYTIwZTk2MGVjM2Ez
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAg
LTI3OSw2ICsyNzksOCBAQCBwdWJsaWM6CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBmbGFn
c01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb25Jbmhlcml0ZWRGbGFn
cywgbV9mbGFncyk7IH0KICAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdJc1VuaXF1ZSgpIHsg
cmV0dXJuIG9uZUJpdE1hc2sgPDwgaXNVbmlxdWVPZmZzZXQ7IH0KKyAgICAgICAgc3RhdGljIHVp
bnQ2NF90IGZsYWdJc2FmZmVjdGVkQnlBY3RpdmUoKSB7IHJldHVybiBvbmVCaXRNYXNrIDw8IGFm
ZmVjdGVkQnlBY3RpdmVPZmZzZXQ7IH0KKyAgICAgICAgc3RhdGljIHVpbnQ2NF90IGZsYWdJc2Fm
ZmVjdGVkQnlIb3ZlcigpIHsgcmV0dXJuIG9uZUJpdE1hc2sgPDwgYWZmZWN0ZWRCeUhvdmVyT2Zm
c2V0OyB9CiAgICAgICAgIHN0YXRpYyB1aW50NjRfdCBzZXRGaXJzdENoaWxkU3RhdGVGbGFncygp
IHsgcmV0dXJuIGZsYWdGaXJzdENoaWxkU3RhdGUoKSB8IGZsYWdJc1VuaXF1ZSgpOyB9CiAgICAg
ICAgIHN0YXRpYyB1aW50NjRfdCBzZXRMYXN0Q2hpbGRTdGF0ZUZsYWdzKCkgeyByZXR1cm4gZmxh
Z0xhc3RDaGlsZFN0YXRlKCkgfCBmbGFnSXNVbmlxdWUoKTsgfQogICAgIHByaXZhdGU6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>