<?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>45569</bug_id>
          
          <creation_ts>2010-09-10 15:52:39 -0700</creation_ts>
          <short_desc>Move code from WebKit-layer to DocumentLoader</short_desc>
          <delta_ts>2010-09-10 19:15:20 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>29947</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>277491</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-10 15:52:39 -0700</bug_when>
    <thetext>Move code from WebKit-layer to DocumentLoader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277494</commentid>
    <comment_count>1</comment_count>
      <attachid>67252</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-10 15:58:57 -0700</bug_when>
    <thetext>Created attachment 67252
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277509</commentid>
    <comment_count>2</comment_count>
      <attachid>67252</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-10 16:13:50 -0700</bug_when>
    <thetext>Comment on attachment 67252
work in progress

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

&gt; WebKit/chromium/src/WebFrameImpl.cpp:1017
&gt; +    m_frame-&gt;loader()-&gt;documentLoader()-&gt;commitDocumentData(data, length);
I think you meant commitData here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277519</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-10 16:21:39 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 67252 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67252&amp;action=prettypatch
&gt; 
&gt; &gt; WebKit/chromium/src/WebFrameImpl.cpp:1017
&gt; &gt; +    m_frame-&gt;loader()-&gt;documentLoader()-&gt;commitDocumentData(data, length);
&gt; I think you meant commitData here.

Yep.  Thanks.  That was the original name, but the &quot;document&quot; part seemed redundant.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277533</commentid>
    <comment_count>4</comment_count>
      <attachid>67261</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-10 16:34:14 -0700</bug_when>
    <thetext>Created attachment 67261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277537</commentid>
    <comment_count>5</comment_count>
      <attachid>67261</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-10 16:43:58 -0700</bug_when>
    <thetext>Comment on attachment 67261
Patch

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

&gt; WebCore/WebCore.xcodeproj/project.pbxproj:-20630
&gt; -			developmentRegion = English;
not sure about this change.  seems unrelated.

otherwise, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277546</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-10 17:02:05 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 67261 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67261&amp;action=prettypatch
&gt; 
&gt; &gt; WebCore/WebCore.xcodeproj/project.pbxproj:-20630
&gt; &gt; -			developmentRegion = English;
&gt; not sure about this change.  seems unrelated.

This is a commit war between different versions of Xcode.  The consensus last time we discussed it as a community was to just have the commit war and eventually the bug in Xcode will be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277568</commentid>
    <comment_count>7</comment_count>
      <attachid>67261</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-10 17:50:03 -0700</bug_when>
    <thetext>Comment on attachment 67261
Patch

Clearing flags on attachment: 67261

Committed r67253: &lt;http://trac.webkit.org/changeset/67253&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277569</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-10 17:50:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277606</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-10 19:15:20 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67253 might have broken Qt Linux Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/67253
http://trac.webkit.org/changeset/67254
http://trac.webkit.org/changeset/67255</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67252</attachid>
            <date>2010-09-10 15:58:57 -0700</date>
            <delta_ts>2010-09-10 16:34:11 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-45569-20100910155855.patch</filename>
            <type>text/plain</type>
            <size>39451</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmFjZWQwOWFiZTE1ZWRkMjQyYzk3MmZkMThmYTM0N2E3NTc3OGFjOC4uZWZiM2RkNTU1YzAzZTNm
NjU1ZjczNmZkNGE4OTc1NjY0YzE1M2Y1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNCBAQAogMjAxMC0wOS0xMCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY29kZSBmcm9tIFdlYktpdC1sYXllciB0byBEb2N1
bWVudExvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDU1NjkKKworICAgICAgICBUaGVyZSdzIGEgYnVuY2ggb2YgY29kZSB0aGF0J3MgY29weS9w
YXN0ZWQgKHBvb3JseSkgYWNyb3NzIGFsbCB0aGUKKyAgICAgICAgcG9ydHMgdGhhdCByZWFsbHkg
YmVsb25ncyBpbiBXZWJDb3JlLiAgVGhpcyBwYXRjaCBtb3ZlcyB0aGF0IGxvZ2ljIGludG8KKyAg
ICAgICAgRG9jdW1lbnRMb2FkZXIuICBUaGlzIHBhdGNoIGlzIGEgc3RlcCBvbiB0aGUgcGF0aCB0
byBoYXZpbmcKKyAgICAgICAgRG9jdW1lbnRMb2FkZXIgb3duIERvY3VtZW50V3JpdGVyLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpbmlzaGVkTG9hZGlu
Z0RvY3VtZW50KToKKworMjAxMC0wOS0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgorCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKEhUTUwgUGFyc2VyKTogQ05OJ3MgTW9uZXkgc2l0ZSBpcyBub3QgZm9ybWF0dGVkIGNvcnJl
Y3RseSB3aXRoIEFkQmxvY2sgaW5zdGFsbGVkCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAyNjVmNDJkYTI0NjI0NjhkYjAz
ZGFmYzlkN2RmMjg0NTk1NjNhODY3Li4zNDA5Zjk0N2RkNDNjODk2ODllMGM0Y2ViMmQxNTUxZWNm
YTMxZDY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTI5MCw2ICsyOTAsNyBAQCBfX1pON1dlYkNvcmUxM3RvRGV2aWNl
U3BhY2VFUktOU185RmxvYXRSZWN0RVA4TlNXaW5kb3cKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdp
bmRvd0VOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTEycmVtb3Zl
Q2xpZW50RVBOU18yMENhY2hlZFJlc291cmNlQ2xpZW50RQogX19aTjdXZWJDb3JlMTRDYWNoZWRS
ZXNvdXJjZTlhZGRDbGllbnRFUE5TXzIwQ2FjaGVkUmVzb3VyY2VDbGllbnRFCitfX1pON1dlYkNv
cmUxNERvY3VtZW50TG9hZGVyMTBjb21taXREYXRhRVBLY2kKIF9fWk43V2ViQ29yZTE0RG9jdW1l
bnRMb2FkZXIxM2F0dGFjaFRvRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE1
ZGV0YWNoRnJvbUZyYW1lRXYKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxOGFkZEFyY2hp
dmVSZXNvdXJjZUVOM1dURjEwUGFzc1JlZlB0cklOU18xNUFyY2hpdmVSZXNvdXJjZUVFRQpAQCAt
Mjk4LDcgKzI5OSw2IEBAIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIyMWFkZFBsdWdJblN0
cmVhbUxvYWRlckVQTlNfMTRSZXNvdXJjZUxvYWRlckUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRM
b2FkZXIyMmFkZEFsbEFyY2hpdmVSZXNvdXJjZXNFUE5TXzdBcmNoaXZlRQogX19aTjdXZWJDb3Jl
MTREb2N1bWVudExvYWRlcjIyY2FuY2VsTWFpblJlc291cmNlTG9hZEVSS05TXzEzUmVzb3VyY2VF
cnJvckUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIyNHJlbW92ZVBsdWdJblN0cmVhbUxv
YWRlckVQTlNfMTRSZXNvdXJjZUxvYWRlckUKLV9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI3
YWRkRGF0YUVQS2NpCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyN3JlcXVlc3RFdgogX19a
TjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjhzZXRGcmFtZUVQTlNfNUZyYW1lRQogX19aTjdXZWJD
b3JlMTREb2N1bWVudExvYWRlcjhzZXRUaXRsZUVSS04zV1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCBhNTgyNjNlODUwMDFiN2IzYmViYWZlOGQzOWMxMTg3OTk2NGY4
NTRmLi5mMTc0MDExOTFiMmJmZDdiZWUyMmJhNjkzZGM3NDRlY2ViZjAzYmJlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yODYsMTIgKzI4NiwyMSBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgZnJhbWVM
b2FkZXItPmNsaWVudCgpLT5jb21taXR0ZWRMb2FkKHRoaXMsIGRhdGEsIGxlbmd0aCk7CiB9CiAK
LXZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZERhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5n
dGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQogewogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBBU1NF
UlQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2luZygpKTsKLSAgICAvLyBGSVhNRTogRG9jdW1l
bnRXcml0ZXIgc2hvdWxkIG1vdmUgdG8gYmUgb3duZWQgYnkgRG9jdW1lbnRMb2FkZXIuCi0gICAg
ZnJhbWVMb2FkZXIoKS0+d3JpdGVyKCktPmFkZERhdGEoYnl0ZXMsIGxlbmd0aCk7CisKKyAgICAv
LyBTZXQgdGhlIHRleHQgZW5jb2RpbmcuICBUaGlzIGlzIHNhZmUgdG8gY2FsbCBtdWx0aXBsZSB0
aW1lcy4KKyAgICBib29sIHVzZXJDaG9zZW4gPSB0cnVlOworICAgIFN0cmluZyBlbmNvZGluZyA9
IG92ZXJyaWRlRW5jb2RpbmcoKTsKKyAgICBpZiAoZW5jb2RpbmcuaXNOdWxsKCkpIHsKKyAgICAg
ICAgdXNlckNob3NlbiA9IGZhbHNlOworICAgICAgICBlbmNvZGluZyA9IHJlc3BvbnNlKCkudGV4
dEVuY29kaW5nTmFtZSgpOworICAgIH0KKyAgICAvLyBGSVhNRTogRG9jdW1lbnRXcml0ZXIgc2hv
dWxkIGJlIG93bmVkIGJ5IERvY3VtZW50TG9hZGVyLgorICAgIG1fZnJhbWUtPmxvYWRlcigpLT53
cml0ZXIoKS0+c2V0RW5jb2RpbmcoZW5jb2RpbmcsIHVzZXJDaG9zZW4pOworICAgIG1fZnJhbWUt
PmxvYWRlcigpLT53cml0ZXIoKS0+YWRkRGF0YShieXRlcywgbGVuZ3RoKTsKIH0KIAogYm9vbCBE
b2N1bWVudExvYWRlcjo6ZG9lc1Byb2dyZXNzaXZlTG9hZChjb25zdCBTdHJpbmcmIE1JTUVUeXBl
KSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYTdiOGI0MWMwZTZlZDI0MWU2Nzlm
OGIwMDExOTU5YWJmZTM3ZDViMi4uNTA4NzliNzFhYmVmZDU3ZGFmNDRkN2ZmZjMxZTUyOGQxNjRi
M2IzOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0yMTEsNyArMjExLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBEb2N1bWVudExvYWRUaW1pbmcqIHRpbWluZygpIHsgcmV0
dXJuICZtX2RvY3VtZW50TG9hZFRpbWluZzsgfQogICAgICAgICB2b2lkIHJlc2V0VGltaW5nKCkg
eyBtX2RvY3VtZW50TG9hZFRpbWluZyA9IERvY3VtZW50TG9hZFRpbWluZygpOyB9CiAKLSAgICAg
ICAgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKKyAgICAgICAg
Ly8gVGhlIFdlYktpdCBsYXllciBjYWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQncyByZWFkeSBm
b3IgdGhlIGRhdGEgdG8KKyAgICAgICAgLy8gYWN0dWFsbHkgYmUgYWRkZWQgdG8gdGhlIGRvY3Vt
ZW50LgorICAgICAgICB2b2lkIGNvbW1pdERhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5n
dGgpOwogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICAgICAgQXBw
bGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3QgeyByZXR1cm4g
bV9hcHBsaWNhdGlvbkNhY2hlSG9zdC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4
IGZkYzQzMmRmNTgzMWU0NWVhNzY0YTY5NGFiMmM4MmI4MDIxYjgxOGEuLjJlM2FlOWRiM2JjNDA5
MWM1ZjUxMDU5N2VhYmJiODcyMDNkNThlM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTIy
MjYsOCArMjIyNiwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpmaW5pc2hlZExvYWRpbmdEb2N1bWVu
dChEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbG9hZGVyLT5hZGRBbGxBcmNoaXZlUmVzb3VyY2VzKGFyY2hpdmUuZ2V0KCkp
OworICAgIC8vIEZJWE1FOiBUaGUgcmVtYWluZGVyIG9mIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJl
IGluIERvY3VtZW50TG9hZGVyLgogICAgIAorICAgIGxvYWRlci0+YWRkQWxsQXJjaGl2ZVJlc291
cmNlcyhhcmNoaXZlLmdldCgpKTsKKwogICAgIEFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291cmNl
ID0gYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7CiAgICAgbG9hZGVyLT5zZXRQYXJzZWRBcmNoaXZl
RGF0YShtYWluUmVzb3VyY2UtPmRhdGEoKSk7CiAKQEAgLTIyMzYsMTMgKzIyMzgsMTEgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6ZmluaXNoZWRMb2FkaW5nRG9jdW1lbnQoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKICAgICBjbG9zZVVSTCgpOwogICAgIGRpZE9wZW5VUkwobWFpblJlc291cmNlLT51cmwo
KSk7CiAKKyAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHVzZXJD
aG9zZW5FbmNvZGluZyA9IGRvY3VtZW50TG9hZGVyKCktPm92ZXJyaWRlRW5jb2RpbmcoKTsKICAg
ICBib29sIGVuY29kaW5nSXNVc2VyQ2hvc2VuID0gIXVzZXJDaG9zZW5FbmNvZGluZy5pc051bGwo
KTsKICAgICB3cml0ZXIoKS0+c2V0RW5jb2RpbmcoZW5jb2RpbmdJc1VzZXJDaG9zZW4gPyB1c2Vy
Q2hvc2VuRW5jb2RpbmcgOiBtYWluUmVzb3VyY2UtPnRleHRFbmNvZGluZygpLCBlbmNvZGluZ0lz
VXNlckNob3Nlbik7Ci0KLSAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0KLSAgICBs
b2FkZXItPmFkZERhdGEobWFpblJlc291cmNlLT5kYXRhKCktPmRhdGEoKSwgbWFpblJlc291cmNl
LT5kYXRhKCktPnNpemUoKSk7CisgICAgd3JpdGVyKCktPmFkZERhdGEobWFpblJlc291cmNlLT5k
YXRhKCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCktPnNpemUoKSk7CiB9CiAKIGJvb2wg
RnJhbWVMb2FkZXI6OmlzUmVwbGFjaW5nKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGI5YjFhZTA1
MzkyZGFmYjM5NzBkYmUwYzBmNjFhMjkzM2IwMTc3MWEuLjkzZjZkNTE2OTJlMzY2MTUzMDRmZTJi
MGI3Yzk0MGE3MTVhY2Q3MDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDEwLTA5
LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBjb2RlIGZyb20gV2ViS2l0LWxheWVy
IHRvIERvY3VtZW50TG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NTU2OQorCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6Y29tbWl0dGVkTG9h
ZCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lSW1wbDo6Y29tbWl0RG9jdW1lbnREYXRhKToKKworMjAxMC0wOS0xMCAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIENocm9taXVtIGJ1aWxkIGZpeCAob25l
IGhvcGVzISkKIAogICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IGVhNjY4Yzc3MmI3YjQ3
YjE2MTgxYzFhODdmZTFiZjUwYTZkNmFhYzUuLjY0MTQ5MmM1MmNiYmU4YjYwNGE3ZjI4NDE2ZDMx
MWEyYTM2NWY3ODYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAKQEAgLTEwNTMsOCArMTA1Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBs
Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhCiAK
ICAgICAvLyBJZiB3ZSBhcmUgc2VuZGluZyBkYXRhIHRvIE1lZGlhRG9jdW1lbnQsIHdlIHNob3Vs
ZCBzdG9wIGhlcmUKICAgICAvLyBhbmQgY2FuY2VsIHRoZSByZXF1ZXN0LgotICAgIGlmIChtX3dl
YkZyYW1lLT5mcmFtZSgpLT5kb2N1bWVudCgpCi0gICAgICAgICYmIG1fd2ViRnJhbWUtPmZyYW1l
KCktPmRvY3VtZW50KCktPmlzTWVkaWFEb2N1bWVudCgpKQorICAgIGlmIChtX3dlYkZyYW1lLT5m
cmFtZSgpLT5kb2N1bWVudCgpLT5pc01lZGlhRG9jdW1lbnQoKSkKICAgICAgICAgbG9hZGVyLT5j
YW5jZWxNYWluUmVzb3VyY2VMb2FkKHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IobG9hZGVyLT5y
ZXNwb25zZSgpKSk7CiAKICAgICAvLyBUaGUgcGx1Z2luIHdpZGdldCBjb3VsZCBoYXZlIGJlZW4g
Y3JlYXRlZCBpbiB0aGUgbV93ZWJGcmFtZS0+RGlkUmVjZWl2ZURhdGEKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcAppbmRleCBlNjIyZDk5ODBiNWFmNmMyNDJmYjYxMThhYmVjNWE2MWMz
ZDFlMDUxLi5lNWE2YjkxMjBlMzFjZDRmMmU1NjhiNmI4YWIyZWM5ZDI1NjUxZDA1IDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0xMDEyLDIxICsxMDEyLDkgQEAgdm9pZCBX
ZWJGcmFtZUltcGw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KFdlYlVSTFJlcXVlc3QmIHJlcXVl
c3QpCiAgICAgICAgIDAsIDAsIHJlcXVlc3QudG9NdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIHJl
c3BvbnNlKTsKIH0KIAotLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIG1vdmVkIGlu
dG8gV2ViQ29yZS4KIHZvaWQgV2ViRnJhbWVJbXBsOjpjb21taXREb2N1bWVudERhdGEoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBEb2N1bWVudExvYWRlciogZG9jdW1l
bnRMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKLQotICAgIC8v
IFNldCB0aGUgdGV4dCBlbmNvZGluZy4gIFRoaXMgY2FsbHMgYmVnaW4oKSBmb3IgdXMuICBJdCBp
cyBzYWZlIHRvIGNhbGwKLSAgICAvLyB0aGlzIG11bHRpcGxlIHRpbWVzIChNYWMgZG9lczogcGFn
ZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tKS4KLSAgICBib29sIHVzZXJDaG9zZW4gPSB0cnVl
OwotICAgIFN0cmluZyBlbmNvZGluZyA9IGRvY3VtZW50TG9hZGVyLT5vdmVycmlkZUVuY29kaW5n
KCk7Ci0gICAgaWYgKGVuY29kaW5nLmlzTnVsbCgpKSB7Ci0gICAgICAgIHVzZXJDaG9zZW4gPSBm
YWxzZTsKLSAgICAgICAgZW5jb2RpbmcgPSBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS50ZXh0
RW5jb2RpbmdOYW1lKCk7Ci0gICAgfQotICAgIG1fZnJhbWUtPmxvYWRlcigpLT53cml0ZXIoKS0+
c2V0RW5jb2RpbmcoZW5jb2RpbmcsIHVzZXJDaG9zZW4pOwotICAgIG1fZnJhbWUtPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpLT5hZGREYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbV9mcmFtZS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERvY3VtZW50RGF0YShkYXRhLCBsZW5n
dGgpOwogfQogCiB1bnNpZ25lZCBXZWJGcmFtZUltcGw6OnVubG9hZExpc3RlbmVyQ291bnQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9XZWJLaXQvZWZsL0NoYW5n
ZUxvZwppbmRleCBlNDkyYTViMmVhYTc1NjM1OTIyNDI3NWI1Njg3NzkyYjdhYjk3MmZjLi4yY2Zk
NzNkZjJjNDA4NDA0YTE4MDJjMGUzZmJkOTRmZTI2ZDI5ZTNjIDEwMDY0NAotLS0gYS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBA
CiAyMDEwLTA5LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBjb2RlIGZyb20gV2Vi
S2l0LWxheWVyIHRvIERvY3VtZW50TG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NTU2OQorCisgICAgICAgIFRoaXMgY29kZSBkaWRuJ3Qga25v
dyB0aGF0IHNldEVuY29kaW5nIGNvdWxkIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcworICAgICAg
ICBzYWZlbHkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6RnJhbWVMb2Fk
ZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNv
bW1pdHRlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldE1haW5Eb2N1bWVudEVycm9yKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorCisyMDEwLTA5LTEwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCiAKICAgICAgICAgTWFpbiByZXNvdXJjZSBieXRlcyBzaG91bGRuJ3QgYm91bmNlIHRo
cm91Z2ggRnJhbWVMb2FkZXIKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggZjBhYWE1ZjBjYTQ5ZWRkMDYzMTYxZDc2Y2U1NjNh
OTRkYjE0NGI0Yi4uOTQwOTc3NmIwNWNhZDllMjMyZjdjMjY4ODQ4YzZiODFjNzhmZGE1ZCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHAKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHAKQEAgLTY3LDcgKzY3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRnJhbWVMb2FkZXJDbGll
bnRFZmw6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0ICp2aWV3KQogICAgIDogbV92
aWV3KHZpZXcpCiAgICAgLCBtX2ZyYW1lKDApCi0gICAgLCBtX2ZpcnN0RGF0YShmYWxzZSkKICAg
ICAsIG1fdXNlckFnZW50KCIiKQogICAgICwgbV9jdXN0b21Vc2VyQWdlbnQoIiIpCiAgICAgLCBt
X3BsdWdpblZpZXcoMCkKQEAgLTE4MiwyMCArMTgxLDEwIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlv
biwKICAgICBjYWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIFBvbGljeVVzZSk7CiB9CiAKLS8v
IEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBtb3ZlZCBpbnRvIFdlYkNvcmUuCiB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgaWYgKCFtX3BsdWdpblZp
ZXcpIHsKLSAgICAgICAgaWYgKCFtX2ZyYW1lKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIEZyYW1lTG9hZGVyKiBmbCA9IGxvYWRlci0+ZnJhbWVMb2FkZXIoKTsKLSAgICAgICAgaWYg
KG1fZmlyc3REYXRhKSB7Ci0gICAgICAgICAgICBmbC0+d3JpdGVyKCktPnNldEVuY29kaW5nKG1f
cmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBmYWxzZSk7Ci0gICAgICAgICAgICBtX2ZpcnN0
RGF0YSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGZsLT5kb2N1bWVudExvYWRlcigpLT5h
ZGREYXRhKGRhdGEsIGxlbmd0aCk7Ci0gICAgfQorICAgIGlmICghbV9wbHVnaW5WaWV3KQorICAg
ICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKIAogICAgIC8vIFdlIHJlLWNo
ZWNrIGhlcmUgYXMgdGhlIHBsdWdpbiBjYW4gaGF2ZSBiZWVuIGNyZWF0ZWQKICAgICBpZiAobV9w
bHVnaW5WaWV3KSB7CkBAIC0zMjUsNyArMzE0LDYgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVm
bDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBtX3Jlc3BvbnNlID0gcmVz
cG9uc2U7Ci0gICAgbV9maXJzdERhdGEgPSB0cnVlOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKEZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24sIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpCkBAIC03MTksMTcgKzcwNywxMSBAQCBTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRFZmw6Omdl
bmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0CiAKIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9h
ZGVyKQogewotICAgIGlmICghbV9wbHVnaW5WaWV3KSB7Ci0gICAgICAgIGlmIChtX2ZpcnN0RGF0
YSkgewotICAgICAgICAgICAgRnJhbWVMb2FkZXIqIGZsID0gbG9hZGVyLT5mcmFtZUxvYWRlcigp
OwotICAgICAgICAgICAgZmwtPndyaXRlcigpLT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRF
bmNvZGluZ05hbWUoKSwgZmFsc2UpOwotICAgICAgICAgICAgbV9maXJzdERhdGEgPSBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fcGx1Z2luVmlldy0+ZGlkRmluaXNo
TG9hZGluZygpOwotICAgICAgICBtX3BsdWdpblZpZXcgPSAwOwotICAgICAgICBtX2hhc1NlbnRS
ZXNwb25zZVRvUGx1Z2luID0gZmFsc2U7Ci0gICAgfQorICAgIGlmICghbV9wbHVnaW5WaWV3KQor
ICAgICAgICByZXR1cm47CisgICAgbV9wbHVnaW5WaWV3LT5kaWRGaW5pc2hMb2FkaW5nKCk7Cisg
ICAgbV9wbHVnaW5WaWV3ID0gMDsKKyAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gZmFs
c2U7CiB9CiAKIApAQCAtNzY1LDE1ICs3NDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsbwog
CiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyKQogewotICAgIGlmICghc2hvdWxkRmFsbEJhY2soZXJyKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKG1fZmlyc3REYXRhKSB7Ci0gICAgICAgIEZyYW1lTG9hZGVyKiBm
bCA9IGxvYWRlci0+ZnJhbWVMb2FkZXIoKTsKLSAgICAgICAgZmwtPndyaXRlcigpLT5zZXRFbmNv
ZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgZmFsc2UpOwotICAgICAgICBtX2Zp
cnN0RGF0YSA9IGZhbHNlOwotICAgIH0KLQorICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIGJv
b2wgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpCkBAIC05MDQsMTYgKzg3OCwxMSBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0
IFJlc291cmNlRXJyb3ImKQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzZXRNYWluRG9j
dW1lbnRFcnJvcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKLSAgICBpZiAoIW1fcGx1Z2luVmlldykgewotICAgICAgICBpZiAobV9maXJzdERh
dGEpIHsKLSAgICAgICAgICAgIGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+d3JpdGVyKCktPnNldEVu
Y29kaW5nKG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBmYWxzZSk7Ci0gICAgICAgICAg
ICBtX2ZpcnN0RGF0YSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
bV9wbHVnaW5WaWV3LT5kaWRGYWlsKGVycm9yKTsKLSAgICAgICAgbV9wbHVnaW5WaWV3ID0gMDsK
LSAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwotICAgIH0KKyAgICBp
ZiAoIW1fcGx1Z2luVmlldykKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGx1Z2luVmlldy0+ZGlk
RmFpbChlcnJvcik7CisgICAgbV9wbHVnaW5WaWV3ID0gMDsKKyAgICBtX2hhc1NlbnRSZXNwb25z
ZVRvUGx1Z2luID0gZmFsc2U7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnN0YXJ0
RG93bmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaCBiL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAppbmRleCBiZDEwNWNkNTAyOGFhNzM0N2Nk
NDFhYzkyZWYzMGNmNjM1MmZmMjNjLi42YjY2ZWUwZjg3YzA3ZGUzOGMyZDcyZjhhZTE3MWRjYWVh
ODZjZjU1IDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmgKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oCkBAIC0yMDksNyArMjA5LDYgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwg
OiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIEV2YXNfT2JqZWN0ICptX2ZyYW1lOwog
CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIGJvb2wgbV9maXJzdERhdGE7
CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwogICAgIFN0cmluZyBtX2N1c3RvbVVzZXJBZ2VudDsK
IApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCAwMzZjNWNlZTU5ZGNmMTI4OWVhOGQ4ZmQyMDQ2MTBjMWVkOTIxODFiLi4xMTM2MmMz
YmRkMTIxMGQ1MjM2ODM4OThiOGNkZWYyMGI2MDZkYTA3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAy
MDEwLTA5LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBjb2RlIGZyb20gV2ViS2l0
LWxheWVyIHRvIERvY3VtZW50TG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NTU2OQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6
Y29tbWl0dGVkTG9hZCk6CisKKzIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBNYWlu
IHJlc291cmNlIGJ5dGVzIHNob3VsZG4ndCBib3VuY2UgdGhyb3VnaCBGcmFtZUxvYWRlcgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApp
bmRleCA1OTc0Mzk2NGFhMGUyYTk1YjVkN2EzYzQ5M2IyZmM0ZTk4NjUyZmNkLi4xNTZjMGQwZGI4
NDY4NDY1YWM1YTQ1ZWZlODhjMDFiMjk0MmY2ZTU1IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtMjQ1LDI2ICsyNDUsMTUg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBv
bGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW8KICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCkt
PnBvbGljeUNoZWNrZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOwogfQogCi0vLyBG
SVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgbW92ZWQgaW50byBXZWJDb3JlLgogdm9pZCBG
cmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGlmICghbV9wbHVn
aW5WaWV3KSB7CiAgICAgICAgIEFTU0VSVChsb2FkZXItPmZyYW1lKCkpOwotICAgICAgICAvLyBT
ZXR0aW5nIHRoZSBlbmNvZGluZyBvbiB0aGUgZnJhbWUgbG9hZGVyIGlzIG91ciB3YXkgdG8gZ2V0
IHdvcmsgZG9uZSB0aGF0IGlzIG5vcm1hbGx5IGRvbmUKLSAgICAgICAgLy8gd2hlbiB0aGUgZmly
c3QgYml0IG9mIGRhdGEgaXMgcmVjZWl2ZWQsIGV2ZW4gZm9yIHRoZSBjYXNlIG9mIGEgZG9jdW1l
bnQgd2l0aCBubyBkYXRhIChsaWtlIGFib3V0OmJsYW5rKS4KLSAgICAgICAgU3RyaW5nIGVuY29k
aW5nID0gbG9hZGVyLT5vdmVycmlkZUVuY29kaW5nKCk7Ci0gICAgICAgIGJvb2wgdXNlckNob3Nl
biA9ICFlbmNvZGluZy5pc051bGwoKTsKLSAgICAgICAgaWYgKCF1c2VyQ2hvc2VuKQotICAgICAg
ICAgICAgZW5jb2RpbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpOwot
Ci0gICAgICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IGxvYWRlci0+ZnJhbWVMb2FkZXIo
KTsKLSAgICAgICAgZnJhbWVMb2FkZXItPndyaXRlcigpLT5zZXRFbmNvZGluZyhlbmNvZGluZywg
dXNlckNob3Nlbik7Ci0gICAgICAgIGlmIChkYXRhKQotICAgICAgICAgICAgZnJhbWVMb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCktPmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbG9hZGVy
LT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7CiAKICAgICAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGxvYWRlci0+ZnJhbWUoKTsKLSAgICAgICAgaWYgKGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmRv
Y3VtZW50KCkgJiYgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5pc01lZGlhRG9jdW1lbnQoKSkKLSAg
ICAgICAgICAgIGxvYWRlci0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlci0+Y2xp
ZW50KCktPnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IobG9hZGVyLT5yZXNwb25zZSgpKSk7Cisg
ICAgICAgIGlmIChjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5pc01lZGlhRG9j
dW1lbnQoKSkKKyAgICAgICAgICAgIGxvYWRlci0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChjb3Jl
RnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihsb2Fk
ZXItPnJlc3BvbnNlKCkpKTsKICAgICB9CiAKICAgICBpZiAobV9wbHVnaW5WaWV3KSB7CmRpZmYg
LS1naXQgYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpp
bmRleCBkY2IwZjE0MDhmMmNjNTUyMWQ2MDdmMDFlYzlmMjk1YThiMzYwZDNhLi4xZjJlZmVkZDc2
MjE1M2E5ZDE3MWZkYTBlMjRjZjg4NWRkZGZmZTEyIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3Uv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBAQAog
MjAxMC0wOS0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY29kZSBmcm9tIFdlYktp
dC1sYXllciB0byBEb2N1bWVudExvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDU1NjkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6Y29tbWl0dGVkTG9hZCk6CisKKzIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAg
ICAgICBNYWluIHJlc291cmNlIGJ5dGVzIHNob3VsZG4ndCBib3VuY2UgdGhyb3VnaCBGcmFtZUxv
YWRlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50SGFpa3UuY3BwIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50SGFpa3UuY3BwCmluZGV4IGYzZDFmODcwOWRmZGZiZWQ1Njc4MTkyZGE3YzQ3ZTAzZTEx
NDY1ZDQuLmQ2ZjcwOGYwZTdjYzdmYzlhZTA4ZDZiNTI1ODg4MjVhYWQwNmNmZTIgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNw
cAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5jcHAKQEAgLTUwNCwxNSArNTA0LDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpz
ZXRNYWluRG9jdW1lbnRFcnJvcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnMKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi0vLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUg
bW92ZWQgaW50byBXZWJDb3JlLgogdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpjb21taXR0
ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBsb2FkZXItPmZyYW1lTG9hZGVyKCk7Ci0gICAg
ZnJhbWVMb2FkZXItPndyaXRlcigpLT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGlu
Z05hbWUoKSwgZmFsc2UpOwotICAgIGZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hZGRE
YXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7
CiB9CiAKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y2Fu
Y2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCBiZmU4N2ZlMjljZDU3N2E5OGU4NGU5MDQyODc3YTU4YmRmMGUxODY5Li5hMjkyMTAzMTE4M2E3
Yjg1MDcyNWY5Yjk5ZmYwZjc0YmMzNWY1ODQ4IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEwLTA5
LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBjb2RlIGZyb20gV2ViS2l0LWxheWVy
IHRvIERvY3VtZW50TG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NTU2OQorCisgICAgICAgIFRoaXMgY29kZSBpcyB0aGUgbW9zdCBjb25mdXNl
ZCwgYnV0IG5vdyBzaG91bGQgYmUgYSBiaXQgY2xlYW5lci4KKyAgICAgICAgVGhlcmUncyBzdGls
bCBhIG1hZ2ljYWwgZmFrZS1zZXR0aW5nIGZvciBjcmVhdGluZyByZW5kZXJlcnMgdGhhdCBuZWVk
cworICAgICAgICB0byBiZSBjbGVhbmVkIHVwLCBidXQgd2UgY2FuIGRvIHRoYXQgaW4gYSBzZXBh
cmF0ZSBwYXRjaC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgt
W1dlYkZyYW1lIF9jb21taXREYXRhOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVJbnRl
cm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAg
ICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gcmVjZWl2ZWREYXRhOndpdGhEYXRhU291cmNl
Ol0pOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZmluaXNoZWRMb2FkaW5nV2l0
aERhdGFTb3VyY2U6XSk6CisKKzIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBNYWlu
IHJlc291cmNlIGJ5dGVzIHNob3VsZG4ndCBib3VuY2UgdGhyb3VnaCBGcmFtZUxvYWRlcgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCmluZGV4IDlhOTg3YmVhYjE2MGJlM2YwNzM2MWFhMzY3NzA0MzAxMzMw
ZjI4ZmUuLmEyNjk3MzkwNzM3M2MxNTQ4MzQxMTgyODcwZmRkNTYwN2UwM2JmYWYgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KQEAgLTQ4NywxNCArNDg3LDYgQEAgc3RhdGljIGlubGluZSBXZWJEYXRh
U291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgcmV0dXJuIGRh
dGFTb3VyY2UoX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkp
OwogfQogCi0tICh2b2lkKV9hZGREYXRhOihOU0RhdGEgKilkYXRhCi17Ci0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKLQotICAgIGRvY3Vt
ZW50LT5zZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoX3ByaXZhdGUtPnNob3VsZENyZWF0ZVJlbmRl
cmVycyk7Ci0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVy
KCktPmFkZERhdGEoKGNvbnN0IGNoYXIgKilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOwot
fQotCiAtIChOU1N0cmluZyAqKV9zdHJpbmdXaXRoRG9jdW1lbnRUeXBlU3RyaW5nQW5kTWFya3Vw
U3RyaW5nOihOU1N0cmluZyAqKW1hcmt1cFN0cmluZwogewogICAgIHJldHVybiBfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5kb2N1bWVudFR5cGVTdHJpbmcoKSArIG1hcmt1cFN0cmluZzsKQEAgLTkzNSwx
NSArOTI3LDEzIEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1
bWVudExvYWRlciogbG9hZGVyKQogICAgIHJldHVybiBbc2VsZiBfY2FuUHJvdmlkZURvY3VtZW50
U291cmNlXTsKIH0KIAotLSAodm9pZClfcmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhIHRleHRF
bmNvZGluZ05hbWU6KE5TU3RyaW5nICopdGV4dEVuY29kaW5nTmFtZQorLSAodm9pZClfY29tbWl0
RGF0YTooTlNEYXRhICopZGF0YQogewotICAgIC8vIFNldCB0aGUgZW5jb2RpbmcuIFRoaXMgb25s
eSBuZWVkcyB0byBiZSBkb25lIG9uY2UsIGJ1dCBpdCdzIGhhcm1sZXNzIHRvIGRvIGl0IGFnYWlu
IGxhdGVyLgotICAgIFN0cmluZyBlbmNvZGluZyA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLT5vdmVycmlkZUVuY29kaW5nKCk7Ci0gICAgYm9vbCB1c2Vy
Q2hvc2VuID0gIWVuY29kaW5nLmlzTnVsbCgpOwotICAgIGlmIChlbmNvZGluZy5pc051bGwoKSkK
LSAgICAgICAgZW5jb2RpbmcgPSB0ZXh0RW5jb2RpbmdOYW1lOwotICAgIF9wcml2YXRlLT5jb3Jl
RnJhbWUtPmxvYWRlcigpLT53cml0ZXIoKS0+c2V0RW5jb2RpbmcoZW5jb2RpbmcsIHVzZXJDaG9z
ZW4pOwotICAgIFtzZWxmIF9hZGREYXRhOmRhdGFdOworICAgIC8vIEZJWE1FOiBUaGlzIHJlYWxs
eSBzaG91bGQgYmUgYSBzZXR0aW5nLgorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IF9wcml2YXRl
LT5jb3JlRnJhbWUtPmRvY3VtZW50KCk7CisgICAgZG9jdW1lbnQtPnNldFNob3VsZENyZWF0ZVJl
bmRlcmVycyhfcHJpdmF0ZS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKTsKKworICAgIF9wcml2YXRl
LT5jb3JlRnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5jb21taXREYXRhKChjb25z
dCBjaGFyICopW2RhdGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaCBiL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKaW5kZXggZGMzZGUyMTdlOWQ3ZmZmYWRjNzExZmE4
YjdiMWM0MGJkYzI1YTE2Yy4uOGNkYzI3Mjc5ODk3MTEzNmMwNTUwZDIyOTMzZGRlOTAxZWIzOWZh
NyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAorKysg
Yi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCkBAIC0xNjIsNyArMTYyLDcg
QEAgV2ViVmlldyAqZ2V0V2ViVmlldyhXZWJGcmFtZSAqd2ViRnJhbWUpOwogLSAoQk9PTClfY2Fu
UHJvdmlkZURvY3VtZW50U291cmNlOwogLSAoQk9PTClfY2FuU2F2ZUFzV2ViQXJjaGl2ZTsKIAot
LSAodm9pZClfcmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhIHRleHRFbmNvZGluZ05hbWU6KE5T
U3RyaW5nICopdGV4dEVuY29kaW5nTmFtZTsKKy0gKHZvaWQpX2NvbW1pdERhdGE6KE5TRGF0YSAq
KWRhdGE7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbSBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW0KaW5kZXggMTg4NzQ3ZDdkYzZkNGYyNDEyMGZkOTBmODViNDg0YzI1NDBhN2NiYi4uYmMx
MGI4MDY2YzYwZmUwMzA3NjE1OTYwYWJiMmE3NGRmZjdhN2IyNCAxMDA2NDQKLS0tIGEvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0xNjYsMjMgKzE2NiwyNCBAQCBzdGF0
aWMgTlNBcnJheSAqY29uY2F0ZW5hdGVBcnJheXMoTlNBcnJheSAqZmlyc3QsIE5TQXJyYXkgKnNl
Y29uZCkKIC0gKHZvaWQpcmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhIHdpdGhEYXRhU291cmNl
OihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogewogICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9
IFtkYXRhU291cmNlIHdlYkZyYW1lXTsKLSAgICBpZiAod2ViRnJhbWUpIHsKLSAgICAgICAgaWYg
KCFfcHJpdmF0ZS0+cGx1Z2luVmlldykKLSAgICAgICAgICAgIFt3ZWJGcmFtZSBfcmVjZWl2ZWRE
YXRhOmRhdGEgdGV4dEVuY29kaW5nTmFtZTpbW19wcml2YXRlLT5kYXRhU291cmNlIHJlc3BvbnNl
XSB0ZXh0RW5jb2RpbmdOYW1lXV07Ci0gICAgICAgIAotICAgICAgICAvLyBJZiB0aGUgZG9jdW1l
bnQgaXMgYSBzdGFuZC1hbG9uZSBtZWRpYSBkb2N1bWVudCwgbm93IGlzIHRoZSByaWdodCB0aW1l
IHRvIGNhbmNlbCB0aGUgV2ViS2l0IGxvYWQKLSAgICAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUod2ViRnJhbWUpOwotICAgICAgICBpZiAoY29yZUZyYW1lLT5kb2N1bWVudCgpICYmIGNvcmVG
cmFtZS0+ZG9jdW1lbnQoKS0+aXNNZWRpYURvY3VtZW50KCkpCi0gICAgICAgICAgICBjb3JlRnJh
bWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGNv
cmVGcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5wbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNv
cmVGcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkpKTsKLQotICAg
ICAgICBpZiAoX3ByaXZhdGUtPnBsdWdpblZpZXcpIHsKLSAgICAgICAgICAgIGlmICghX3ByaXZh
dGUtPmhhc1NlbnRSZXNwb25zZVRvUGx1Z2luKSB7Ci0gICAgICAgICAgICAgICAgW19wcml2YXRl
LT5tYW51YWxMb2FkZXIgcGx1Z2luVmlldzpfcHJpdmF0ZS0+cGx1Z2luVmlldyByZWNlaXZlZFJl
c3BvbnNlOltkYXRhU291cmNlIHJlc3BvbnNlXV07Ci0gICAgICAgICAgICAgICAgX3ByaXZhdGUt
Pmhhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gWUVTOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBbX3ByaXZhdGUtPm1hbnVhbExvYWRlciBwbHVnaW5WaWV3Ol9wcml2
YXRlLT5wbHVnaW5WaWV3IHJlY2VpdmVkRGF0YTpkYXRhXTsKKyAgICBpZiAoIXdlYkZyYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIV9wcml2YXRlLT5wbHVnaW5WaWV3KQorICAgICAg
ICBbd2ViRnJhbWUgX2NvbW1pdERhdGE6ZGF0YV07CisKKyAgICAvLyBJZiB0aGUgZG9jdW1lbnQg
aXMgYSBzdGFuZC1hbG9uZSBtZWRpYSBkb2N1bWVudCwgbm93IGlzIHRoZSByaWdodCB0aW1lIHRv
IGNhbmNlbCB0aGUgV2ViS2l0IGxvYWQKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJG
cmFtZSk7CisgICAgaWYgKGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+aXNNZWRpYURvY3VtZW50KCkp
CisgICAgICAgIGNvcmVGcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmNhbmNlbE1h
aW5SZXNvdXJjZUxvYWQoY29yZUZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnBsdWdpbldpbGxI
YW5kbGVMb2FkRXJyb3IoY29yZUZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVz
cG9uc2UoKSkpOworCisgICAgaWYgKF9wcml2YXRlLT5wbHVnaW5WaWV3KSB7CisgICAgICAgIGlm
ICghX3ByaXZhdGUtPmhhc1NlbnRSZXNwb25zZVRvUGx1Z2luKSB7CisgICAgICAgICAgICBbX3By
aXZhdGUtPm1hbnVhbExvYWRlciBwbHVnaW5WaWV3Ol9wcml2YXRlLT5wbHVnaW5WaWV3IHJlY2Vp
dmVkUmVzcG9uc2U6W2RhdGFTb3VyY2UgcmVzcG9uc2VdXTsKKyAgICAgICAgICAgIF9wcml2YXRl
LT5oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IFlFUzsKICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgW19wcml2YXRlLT5tYW51YWxMb2FkZXIgcGx1Z2luVmlldzpfcHJpdmF0ZS0+cGx1Z2lu
VmlldyByZWNlaXZlZERhdGE6ZGF0YV07CiAgICAgfQogfQogCkBAIC0xOTUsMjUgKzE5NiwyNiBA
QCBzdGF0aWMgTlNBcnJheSAqY29uY2F0ZW5hdGVBcnJheXMoTlNBcnJheSAqZmlyc3QsIE5TQXJy
YXkgKnNlY29uZCkKIAogLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTooV2Vi
RGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKIHsKLSAgICBXZWJGcmFtZSAqZnJhbWUgPSBbZGF0YVNv
dXJjZSB3ZWJGcmFtZV07CisgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gW2RhdGFTb3VyY2Ugd2Vi
RnJhbWVdOwogCiAgICAgaWYgKF9wcml2YXRlLT5wbHVnaW5WaWV3KSB7CiAgICAgICAgIFtfcHJp
dmF0ZS0+bWFudWFsTG9hZGVyIHBsdWdpblZpZXdGaW5pc2hlZExvYWRpbmc6X3ByaXZhdGUtPnBs
dWdpblZpZXddOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGZyYW1lKSB7Ci0g
ICAgICAgIGlmICghW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7Ci0gICAgICAgICAg
ICAvLyBUZWxsaW5nIHRoZSBmcmFtZSB3ZSByZWNlaXZlZCBzb21lIGRhdGEgYW5kIHBhc3Npbmcg
bmlsIGFzIHRoZSBkYXRhIGlzIG91cgotICAgICAgICAgICAgLy8gd2F5IHRvIGdldCB3b3JrIGRv
bmUgdGhhdCBpcyBub3JtYWxseSBkb25lIHdoZW4gdGhlIGZpcnN0IGJpdCBvZiBkYXRhIGlzCi0g
ICAgICAgICAgICAvLyByZWNlaXZlZCwgZXZlbiBmb3IgdGhlIGNhc2Ugb2YgYSBkb2N1bWVudCB3
aXRoIG5vIGRhdGEgKGxpa2UgYWJvdXQ6YmxhbmspLgotICAgICAgICAgICAgW2ZyYW1lIF9yZWNl
aXZlZERhdGE6bmlsIHRleHRFbmNvZGluZ05hbWU6W1tfcHJpdmF0ZS0+ZGF0YVNvdXJjZSByZXNw
b25zZV0gdGV4dEVuY29kaW5nTmFtZV1dOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBX
ZWJWaWV3ICp3ZWJWaWV3ID0gW2ZyYW1lIHdlYlZpZXddOwotICAgICAgICBpZiAoW3dlYlZpZXcg
aXNFZGl0YWJsZV0pCi0gICAgICAgICAgICBjb3JlKGZyYW1lKS0+ZWRpdG9yKCktPmFwcGx5RWRp
dGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOworICAgIGlmICghd2ViRnJhbWUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7CisgICAg
ICAgIC8vIFRlbGxpbmcgdGhlIGZyYW1lIHdlIHJlY2VpdmVkIHNvbWUgZGF0YSBhbmQgcGFzc2lu
ZyBuaWwgYXMgdGhlIGRhdGEgaXMgb3VyCisgICAgICAgIC8vIHdheSB0byBnZXQgd29yayBkb25l
IHRoYXQgaXMgbm9ybWFsbHkgZG9uZSB3aGVuIHRoZSBmaXJzdCBiaXQgb2YgZGF0YSBpcworICAg
ICAgICAvLyByZWNlaXZlZCwgZXZlbiBmb3IgdGhlIGNhc2Ugb2YgYSBkb2N1bWVudCB3aXRoIG5v
IGRhdGEgKGxpa2UgYWJvdXQ6YmxhbmspLgorICAgICAgICBbd2ViRnJhbWUgX2NvbW1pdERhdGE6
bmlsXTsKICAgICB9CisKKyAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXdd
OworICAgIGlmIChbd2ViVmlldyBpc0VkaXRhYmxlXSkKKyAgICAgICAgY29yZSh3ZWJGcmFtZSkt
PmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKIH0KIAogLSAoQk9P
TCljYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VM
b2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDcxMWFmYjU0YmRlYTI5YTQ3MDhmZGY0NTJj
MDhhMDcwN2Y1M2ExYjAuLjVkZTkyYTBiNmVmMzI2ZjQzMDc4ZjRhZjU5Zjg3OTllYWFjNjFjOTQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEwLTA5LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSBjb2RlIGZyb20gV2ViS2l0LWxheWVyIHRvIERvY3VtZW50TG9hZGVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTU2OQorCisgICAgICAgIFRo
aXMgY29kZSBkaWRuJ3Qga25vdyB0aGF0IHNldEVuY29kaW5nIGNhbiBiZSBjYWxsZWQgbXVsdGlw
bGUgdGltZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZyYW1lTG9hZGVy
Q2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZmluaXNo
ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldE1h
aW5Eb2N1bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDEwLTA5LTEwICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCiAK
ICAgICAgICAgTWFpbiByZXNvdXJjZSBieXRlcyBzaG91bGRuJ3QgYm91bmNlIHRocm91Z2ggRnJh
bWVMb2FkZXIKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcAppbmRleCBjYjE0YjRiZjIxMTk5N2MzYTNjYmQwNTczOGI2NjRlMTczNTIwMTRiLi4x
NjI4NjM0NzJlZDE1NDZmNTI5YTNmOWI4MDBmODg0Mzc4Yjk5NzgyIDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC0xODksNyArMTg5
LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG5hdmlnYXRpb25UeXBlVG9TdHJpbmcoTmF2aWdhdGlv
blR5cGUgdHlwZSkKIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZyYW1lTG9hZGVyQ2xpZW50UXQoKQog
ICAgIDogbV9mcmFtZSgwKQogICAgICwgbV93ZWJGcmFtZSgwKQotICAgICwgbV9maXJzdERhdGEo
ZmFsc2UpCiAgICAgLCBtX3BsdWdpblZpZXcoMCkKICAgICAsIG1faGFzU2VudFJlc3BvbnNlVG9Q
bHVnaW4oZmFsc2UpCiAgICAgLCBtX2xvYWRFcnJvciAoUmVzb3VyY2VFcnJvcigpKQpAQCAtNTgx
LDE5ICs1ODAsMTIgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShE
b2N1bWVudExvYWRlciopCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZmluaXNoZWRMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgaWYgKCFtX3BsdWdpblZpZXcpIHsK
LSAgICAgICAgaWYobV9maXJzdERhdGEpIHsKLSAgICAgICAgICAgIEZyYW1lTG9hZGVyICpmbCA9
IGxvYWRlci0+ZnJhbWVMb2FkZXIoKTsKLSAgICAgICAgICAgIGZsLT53cml0ZXIoKS0+c2V0RW5j
b2RpbmcobV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCksIGZhbHNlKTsKLSAgICAgICAgICAg
IG1fZmlyc3REYXRhID0gZmFsc2U7IAotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAg
ICAgICBpZiAobV9wbHVnaW5WaWV3LT5pc1BsdWdpblZpZXcoKSkKLSAgICAgICAgICAgIG1fcGx1
Z2luVmlldy0+ZGlkRmluaXNoTG9hZGluZygpOwotICAgICAgICBtX3BsdWdpblZpZXcgPSAwOwot
ICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gZmFsc2U7Ci0gICAgfQorICAgIGlm
ICghbV9wbHVnaW5WaWV3KQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcGx1Z2luVmlldy0+
aXNQbHVnaW5WaWV3KCkpCisgICAgICAgIG1fcGx1Z2luVmlldy0+ZGlkRmluaXNoTG9hZGluZygp
OworICAgIG1fcGx1Z2luVmlldyA9IDA7CisgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9
IGZhbHNlOwogfQogCiAKQEAgLTc3NiwzMiArNzY4LDE5IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGll
bnRRdDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpz
ZXRNYWluRG9jdW1lbnRFcnJvcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAoIW1fcGx1Z2luVmll
dykgewotICAgICAgICBpZiAobV9maXJzdERhdGEpIHsKLSAgICAgICAgICAgIGxvYWRlci0+ZnJh
bWVMb2FkZXIoKS0+d3JpdGVyKCktPnNldEVuY29kaW5nKG1fcmVzcG9uc2UudGV4dEVuY29kaW5n
TmFtZSgpLCBmYWxzZSk7Ci0gICAgICAgICAgICBtX2ZpcnN0RGF0YSA9IGZhbHNlOwotICAgICAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG1fcGx1Z2luVmlldy0+aXNQbHVnaW5WaWV3
KCkpCi0gICAgICAgICAgICBtX3BsdWdpblZpZXctPmRpZEZhaWwoZXJyb3IpOwotICAgICAgICBt
X3BsdWdpblZpZXcgPSAwOwotICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gZmFs
c2U7Ci0gICAgfQorICAgIGlmICghbV9wbHVnaW5WaWV3KQorICAgICAgICByZXR1cm47CisgICAg
aWYgKG1fcGx1Z2luVmlldy0+aXNQbHVnaW5WaWV3KCkpCisgICAgICAgIG1fcGx1Z2luVmlldy0+
ZGlkRmFpbChlcnJvcik7CisgICAgbV9wbHVnaW5WaWV3ID0gMDsKKyAgICBtX2hhc1NlbnRSZXNw
b25zZVRvUGx1Z2luID0gZmFsc2U7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3Vs
ZCBiZSBtb3ZlZCBpbnRvIFdlYkNvcmUuCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNvbW1p
dHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkKIHsKLSAgICBpZiAoIW1fcGx1Z2luVmlldykgewotICAgICAgICBpZiAo
IW1fZnJhbWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEZyYW1lTG9hZGVyICpmbCA9
IGxvYWRlci0+ZnJhbWVMb2FkZXIoKTsKLSAgICAgICAgaWYgKG1fZmlyc3REYXRhKSB7Ci0gICAg
ICAgICAgICBmbC0+d3JpdGVyKCktPnNldEVuY29kaW5nKG1fcmVzcG9uc2UudGV4dEVuY29kaW5n
TmFtZSgpLCBmYWxzZSk7Ci0gICAgICAgICAgICBtX2ZpcnN0RGF0YSA9IGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIGZsLT5kb2N1bWVudExvYWRlcigpLT5hZGREYXRhKGRhdGEsIGxlbmd0aCk7
Ci0gICAgfQorICAgIGlmICghbV9wbHVnaW5WaWV3KQorICAgICAgICBsb2FkZXItPmNvbW1pdERh
dGEoZGF0YSwgbGVuZ3RoKTsKICAgICAKICAgICAvLyBXZSByZS1jaGVjayBoZXJlIGFzIHRoZSBw
bHVnaW4gY2FuIGhhdmUgYmVlbiBjcmVhdGVkCiAgICAgaWYgKG1fcGx1Z2luVmlldyAmJiBtX3Bs
dWdpblZpZXctPmlzUGx1Z2luVmlldygpKSB7CkBAIC05NjIsNyArOTQxLDYgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIHUKIHsKIAogICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKLSAgICBtX2Zp
cnN0RGF0YSA9IHRydWU7CiAgICAgaWYgKGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MpCiAgICAg
ICAgIHByaW50ZigiJXMgLSBkaWRSZWNlaXZlUmVzcG9uc2UgJXNcbiIsCiAgICAgICAgICAgICAg
ICBxUHJpbnRhYmxlKGR1bXBBc3NpZ25lZFVybHNbaWRlbnRpZmllcl0pLApAQCAtOTkyLDEyICs5
NzAsNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmco
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlcgogICAgICAgICBwcmludGYoIiVzIC0gZGlk
RmFpbExvYWRpbmdXaXRoRXJyb3I6ICVzXG4iLAogICAgICAgICAgICAgICAgKGR1bXBBc3NpZ25l
ZFVybHMuY29udGFpbnMoaWRlbnRpZmllcikgPyBxUHJpbnRhYmxlKGR1bXBBc3NpZ25lZFVybHNb
aWRlbnRpZmllcl0pIDogIjx1bmtub3duPiIpLAogICAgICAgICAgICAgICAgcVByaW50YWJsZShk
cnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChlcnJvcikpKTsKLQotICAgIGlmICht
X2ZpcnN0RGF0YSkgewotICAgICAgICBGcmFtZUxvYWRlciAqZmwgPSBsb2FkZXItPmZyYW1lTG9h
ZGVyKCk7Ci0gICAgICAgIGZsLT53cml0ZXIoKS0+c2V0RW5jb2RpbmcobV9yZXNwb25zZS50ZXh0
RW5jb2RpbmdOYW1lKCksIGZhbHNlKTsKLSAgICAgICAgbV9maXJzdERhdGEgPSBmYWxzZTsKLSAg
ICB9CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgaW50
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKaW5k
ZXggZTUwNjkwMGQ3ZDU1OTQ4MjRlOWJkZTJmOWRlZTc2YjZhMjFmZDUyYi4uODZjNTdhZmJlNGMx
N2YyYTA3ZTYyMzJhN2MxMWM3ZWY3NjQ5ODBiYiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCkBAIC0yMzIsNyArMjMyLDYgQEAgcHJpdmF0ZToK
ICAgICBGcmFtZSAqbV9mcmFtZTsKICAgICBRV2ViRnJhbWUgKm1fd2ViRnJhbWU7CiAgICAgUmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIGJvb2wgbV9maXJzdERhdGE7CiAKICAgICAv
LyBQbHVnaW4gdmlldyB0byByZWRpcmVjdCBkYXRhIHRvCiAgICAgV2ViQ29yZTo6UGx1Z2luVmll
dyogbV9wbHVnaW5WaWV3OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCBiZmE5Y2NjNTI3NWVhNzg5MTM5MTBmNzA5YTczMDY5ZDc3
ZmFmY2JhLi42MzhiZjcxY2VlZTAzNDZhODNlZjZkNjNhNTMyN2ZiNDg3YTEwZmNhIDEwMDY0NAot
LS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDE2IEBACiAyMDEwLTA5LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBj
b2RlIGZyb20gV2ViS2l0LWxheWVyIHRvIERvY3VtZW50TG9hZGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTU2OQorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisKKzIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBN
YWluIHJlc291cmNlIGJ5dGVzIHNob3VsZG4ndCBib3VuY2UgdGhyb3VnaCBGcmFtZUxvYWRlcgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAppbmRleCA4ODZmMjNjYmQ3ODI0ZDMyOTMzODc3Y2I5N2FkMTI3ZWZhODQ5Y2I5Li4xZmI4Mjdk
YTA2MGE5ODUwZWIxZTVjNTFmZTgwMzExN2E1MTZlZWY5IDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDkxLDExICs0OTEs
OCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlm
aWNhdGlvbigpCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgZ28gdGhyb3VnaCB0aGUgZGF0YSBzb3Vy
Y2UuCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcgPSBsb2FkZXItPnJlc3BvbnNlKCku
dGV4dEVuY29kaW5nTmFtZSgpOwotCiAgICAgaWYgKCFtX21hbnVhbExvYWRlcikKLSAgICAgICAg
cmVjZWl2ZWREYXRhKGRhdGEsIGxlbmd0aCwgdGV4dEVuY29kaW5nKTsKKyAgICAgICAgbG9hZGVy
LT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7CiAKICAgICBpZiAoIW1fbWFudWFsTG9hZGVyKQog
ICAgICAgICByZXR1cm47CkBAIC01MTIsMjIgKzUwOSw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciog
ZGF0CiAgICAgbV9tYW51YWxMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9
CiAKLS8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBtb3ZlZCBpbnRvIFdlYkNvcmUu
Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNlaXZlZERhdGEoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcpCi17Ci0gICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIFNldCB0aGUgZW5jb2RpbmcuIFRoaXMgb25seSBuZWVkcyB0
byBiZSBkb25lIG9uY2UsIGJ1dCBpdCdzIGhhcm1sZXNzIHRvIGRvIGl0IGFnYWluIGxhdGVyLgot
ICAgIFN0cmluZyBlbmNvZGluZyA9IGNvcmVGcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVy
KCktPm92ZXJyaWRlRW5jb2RpbmcoKTsKLSAgICBib29sIHVzZXJDaG9zZW4gPSAhZW5jb2Rpbmcu
aXNOdWxsKCk7Ci0gICAgaWYgKGVuY29kaW5nLmlzTnVsbCgpKQotICAgICAgICBlbmNvZGluZyA9
IHRleHRFbmNvZGluZzsKLSAgICBjb3JlRnJhbWUtPmxvYWRlcigpLT53cml0ZXIoKS0+c2V0RW5j
b2RpbmcoZW5jb2RpbmcsIHVzZXJDaG9zZW4pOwotICAgIGNvcmVGcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKLX0KLQogdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7
CiAgICAgLy8gVGVsbGluZyB0aGUgZnJhbWUgd2UgcmVjZWl2ZWQgc29tZSBkYXRhIGFuZCBwYXNz
aW5nIDAgYXMgdGhlIGRhdGEgaXMgb3VyCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNjQ4YjViZmVlNDU5OTI1OWQyMmEyZTkzMmIz
ZTc3MTYzNmE1NjNmYy4uNmU4ZTM1NDE0MjQ2MWVkNDlhNzlhMGY4YmQyNTBiM2Y1NmRmMTQ3OSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aApAQCAtMTI2LDcgKzEyNiw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBQYXNzUmVm
UHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29u
c3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNv
bnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcik7Ci0gICAgdm9pZCByZWNlaXZlZERhdGEoY29uc3Qg
Y2hhciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICBXZWJIaXN0b3J5KiB3ZWJIaXN0
b3J5KCkgY29uc3Q7CiAKICAgICBXZWJGcmFtZSogbV93ZWJGcmFtZTsKZGlmZiAtLWdpdCBhL1dl
YktpdC93eC9DaGFuZ2VMb2cgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCmluZGV4IDcxOGZkZmNlYTlk
MzFlMzZlNTYzMGQxMDYzZDM0MWRiODA3NTdjMzguLmI4OTBjNjdmMzk0ZDU1NDY4ZGZhZjljMTVk
NzA1ODUxZGRhMjg0ZWMgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L3d4L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDEwLTA5LTEwICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSBjb2RlIGZyb20gV2ViS2l0LWxheWVyIHRvIERvY3VtZW50TG9h
ZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTU2
OQorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmNvbW1pdHRlZExvYWQpOgorCisy
MDEwLTA5LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCiAKICAgICAgICAgTWFpbiByZXNvdXJjZSBieXRlcyBzaG91
bGRuJ3QgYm91bmNlIHRocm91Z2ggRnJhbWVMb2FkZXIKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwIGIvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKaW5kZXggZWFjNWFmMTBkYzQ4NjM4YzU2MWM5
ZWJjZDkzM2I4MmJkYmQ0Y2MzNS4uOTk5ZDJjZGJiOTc3YTdkYmE3OTM3YWFiNDhjZDA3Y2I0YzFh
ZmQxZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5jcHAKQEAgLTYxNywxMiArNjE3LDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojpjb21t
aXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGMKIHsKICAg
ICBpZiAoIW1fd2ViRnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIW1fcGx1Z2luVmll
dykgewotICAgICAgICBGcmFtZUxvYWRlciogZmwgPSBsb2FkZXItPmZyYW1lTG9hZGVyKCk7Ci0g
ICAgICAgIGZsLT53cml0ZXIoKS0+c2V0RW5jb2RpbmcobV9yZXNwb25zZS50ZXh0RW5jb2RpbmdO
YW1lKCksIGZhbHNlKTsKLSAgICAgICAgZmwtPmRvY3VtZW50TG9hZGVyKCktPmFkZERhdGEoZGF0
YSwgbGVuZ3RoKTsKLSAgICB9Ci0gICAgCisgICAgaWYgKCFtX3BsdWdpblZpZXcpCisgICAgICAg
IGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOworCiAgICAgLy8gV2UgcmUtY2hlY2sg
aGVyZSBhcyB0aGUgcGx1Z2luIGNhbiBoYXZlIGJlZW4gY3JlYXRlZAogICAgIGlmIChtX3BsdWdp
blZpZXcpIHsKICAgICAgICAgaWYgKCFtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKSB7CmRpZmYg
LS1naXQgYS9XZWJLaXQyL0NoYW5nZUxvZyBiL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNmY2Fl
NDI3ZTVkNjAwYWI0Y2ViZTg4YWUzMmNmZWJjODc4MzAzYmMuLjlkMjNiYTg0M2E0MTgzN2YxNzM2
MzljMjZkZGU2NjNjNzJlM2I2ZTIgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTAtMDktMTAgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlIGNvZGUgZnJvbSBXZWJLaXQtbGF5ZXIgdG8gRG9jdW1lbnRM
b2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1
NTY5CisKKyAgICAgICAgVGhpcyBjb2RlIGxvb2tzIGNvcHkvcGFzdGVkIGZyb20gTWFjLiAgSXQn
cyB1bmNsZWFyIHdoZXRoZXIgd2hldGhlciBhbGwKKyAgICAgICAgdGhlIGNvbXBsZXhpdHkgaXMg
bmVlZGVkIGhlcmUsIGJ1dCBJIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBmaW5kIG91dC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9h
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oOgorCisyMDEwLTA5LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCiAKICAgICAgICAgTWFpbiByZXNvdXJj
ZSBieXRlcyBzaG91bGRuJ3QgYm91bmNlIHRocm91Z2ggRnJhbWVMb2FkZXIKZGlmZiAtLWdpdCBh
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDE2ODk0OGI2ODcwNGRjZDk2ZTNiZDQyYzhlZTBlODRmMjFiZGFhZTEuLjFi
YzFlZDcwYjMxOTI2ZWI4ODdjMDA3ZGQzMjM3MWQ1ZGJkMzUyNjkgMTAwNjQ0Ci0tLSBhL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtNTk5LDEyICs1OTksMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlk
Q2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCiB7Ci0gICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcgPSBsb2FkZXIt
PnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpOwotICAgIAogICAgIGlmICghbV9wbHVnaW5W
aWV3KQotICAgICAgICByZWNlaXZlZERhdGEoZGF0YSwgbGVuZ3RoLCB0ZXh0RW5jb2RpbmcpOwor
ICAgICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKIAotICAgIC8vIENhbGxp
bmcgcmVjZWl2ZWREYXRhIGRpZCBub3QgY3JlYXRlIHRoZSBwbHVnLWluIHZpZXcuCisgICAgLy8g
Q2FsbGluZyBjb21taXREYXRhIGRpZCBub3QgY3JlYXRlIHRoZSBwbHVnLWluIHZpZXcuCiAgICAg
aWYgKCFtX3BsdWdpblZpZXcpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjIwLDIzICs2MTgsNiBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdAogICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9u
IHNob3VsZCBiZSBtb3ZlZCBpbnRvIFdlYkNvcmUuCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpyZWNlaXZlZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmcpCi17Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IG1fZnJhbWUtPmNvcmVG
cmFtZSgpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
Ly8gU2V0IHRoZSBlbmNvZGluZy4gVGhpcyBvbmx5IG5lZWRzIHRvIGJlIGRvbmUgb25jZSwgYnV0
IGl0J3MgaGFybWxlc3MgdG8gZG8gaXQgYWdhaW4gbGF0ZXIuCi0gICAgU3RyaW5nIGVuY29kaW5n
ID0gY29yZUZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+b3ZlcnJpZGVFbmNvZGlu
ZygpOwotICAgIGJvb2wgdXNlckNob3NlbiA9ICFlbmNvZGluZy5pc051bGwoKTsKLSAgICBpZiAo
ZW5jb2RpbmcuaXNOdWxsKCkpCi0gICAgICAgIGVuY29kaW5nID0gdGV4dEVuY29kaW5nOwotICAg
IGNvcmVGcmFtZS0+bG9hZGVyKCktPndyaXRlcigpLT5zZXRFbmNvZGluZyhlbmNvZGluZywgdXNl
ckNob3Nlbik7Ci0gICAgCi0gICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIo
KS0+YWRkRGF0YShkYXRhLCBsZW5ndGgpOwotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAoIW1f
cGx1Z2luVmlldykgewpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5OGE2NTEyY2Q0YTc2ZmQzM2Y2ODM5
OGFjMzNlOGFkYTU1MDVmZDU3Li5kNjUyYTgxZWFlOTMwOGY5NDYwZWRhMzFjZjZlMjQ0YmY0NmNl
ZGI3IDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjAzLDggKzIwMyw2IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZVBsdWdpbkRvY3VtZW50KGNvbnN0IFdURjo6U3Ry
aW5nJiAvKm1pbWVUeXBlKi8pIGNvbnN0OwogICAgIAotICAgIHZvaWQgcmVjZWl2ZWREYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2Rp
bmcpOwotCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAgICAgCiAgICAgV2ViRnJhbWUqIG1f
ZnJhbWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67261</attachid>
            <date>2010-09-10 16:34:14 -0700</date>
            <delta_ts>2010-09-10 17:50:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45569-20100910163413.patch</filename>
            <type>text/plain</type>
            <size>40032</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmFjZWQwOWFiZTE1ZWRkMjQyYzk3MmZkMThmYTM0N2E3NTc3OGFjOC4uZWZiM2RkNTU1YzAzZTNm
NjU1ZjczNmZkNGE4OTc1NjY0YzE1M2Y1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNCBAQAogMjAxMC0wOS0xMCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY29kZSBmcm9tIFdlYktpdC1sYXllciB0byBEb2N1
bWVudExvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDU1NjkKKworICAgICAgICBUaGVyZSdzIGEgYnVuY2ggb2YgY29kZSB0aGF0J3MgY29weS9w
YXN0ZWQgKHBvb3JseSkgYWNyb3NzIGFsbCB0aGUKKyAgICAgICAgcG9ydHMgdGhhdCByZWFsbHkg
YmVsb25ncyBpbiBXZWJDb3JlLiAgVGhpcyBwYXRjaCBtb3ZlcyB0aGF0IGxvZ2ljIGludG8KKyAg
ICAgICAgRG9jdW1lbnRMb2FkZXIuICBUaGlzIHBhdGNoIGlzIGEgc3RlcCBvbiB0aGUgcGF0aCB0
byBoYXZpbmcKKyAgICAgICAgRG9jdW1lbnRMb2FkZXIgb3duIERvY3VtZW50V3JpdGVyLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpbmlzaGVkTG9hZGlu
Z0RvY3VtZW50KToKKworMjAxMC0wOS0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgorCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKEhUTUwgUGFyc2VyKTogQ05OJ3MgTW9uZXkgc2l0ZSBpcyBub3QgZm9ybWF0dGVkIGNvcnJl
Y3RseSB3aXRoIEFkQmxvY2sgaW5zdGFsbGVkCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAyNjVmNDJkYTI0NjI0NjhkYjAz
ZGFmYzlkN2RmMjg0NTk1NjNhODY3Li4zNDA5Zjk0N2RkNDNjODk2ODllMGM0Y2ViMmQxNTUxZWNm
YTMxZDY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTI5MCw2ICsyOTAsNyBAQCBfX1pON1dlYkNvcmUxM3RvRGV2aWNl
U3BhY2VFUktOU185RmxvYXRSZWN0RVA4TlNXaW5kb3cKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdp
bmRvd0VOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTEycmVtb3Zl
Q2xpZW50RVBOU18yMENhY2hlZFJlc291cmNlQ2xpZW50RQogX19aTjdXZWJDb3JlMTRDYWNoZWRS
ZXNvdXJjZTlhZGRDbGllbnRFUE5TXzIwQ2FjaGVkUmVzb3VyY2VDbGllbnRFCitfX1pON1dlYkNv
cmUxNERvY3VtZW50TG9hZGVyMTBjb21taXREYXRhRVBLY2kKIF9fWk43V2ViQ29yZTE0RG9jdW1l
bnRMb2FkZXIxM2F0dGFjaFRvRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE1
ZGV0YWNoRnJvbUZyYW1lRXYKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxOGFkZEFyY2hp
dmVSZXNvdXJjZUVOM1dURjEwUGFzc1JlZlB0cklOU18xNUFyY2hpdmVSZXNvdXJjZUVFRQpAQCAt
Mjk4LDcgKzI5OSw2IEBAIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIyMWFkZFBsdWdJblN0
cmVhbUxvYWRlckVQTlNfMTRSZXNvdXJjZUxvYWRlckUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRM
b2FkZXIyMmFkZEFsbEFyY2hpdmVSZXNvdXJjZXNFUE5TXzdBcmNoaXZlRQogX19aTjdXZWJDb3Jl
MTREb2N1bWVudExvYWRlcjIyY2FuY2VsTWFpblJlc291cmNlTG9hZEVSS05TXzEzUmVzb3VyY2VF
cnJvckUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIyNHJlbW92ZVBsdWdJblN0cmVhbUxv
YWRlckVQTlNfMTRSZXNvdXJjZUxvYWRlckUKLV9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI3
YWRkRGF0YUVQS2NpCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyN3JlcXVlc3RFdgogX19a
TjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjhzZXRGcmFtZUVQTlNfNUZyYW1lRQogX19aTjdXZWJD
b3JlMTREb2N1bWVudExvYWRlcjhzZXRUaXRsZUVSS04zV1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDU4MGI1ZjNmOThkNDFkOGQ1YzQ0
NWY5ODNjZWYwM2ZjODhhZjI2NC4uNjU5YzJiOWI2ZGZiZGQxMTA3NjFhNTE4NGEyZDk2OTE3NWE5
OGI4YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIw
NjI3LDcgKzIwNjI3LDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVy
c2lvbiA9ICJYY29kZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwogCQkJ
aGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5n
bGlzaCwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBhNTgyNjNlODUwMDFiN2IzYmVi
YWZlOGQzOWMxMTg3OTk2NGY4NTRmLi5iODhjODllMGNjYjk5OGI2MTg3NmY0ZDFjNjI5NzE5ZWM4
MjlmZmU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysr
IGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yODYsMTIgKzI4NiwxOSBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpCiAgICAgZnJhbWVMb2FkZXItPmNsaWVudCgpLT5jb21taXR0ZWRMb2FkKHRoaXMsIGRh
dGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZERhdGEoY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkp
Owordm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50
IGxlbmd0aCkKK3sKKyAgICAvLyBTZXQgdGhlIHRleHQgZW5jb2RpbmcuICBUaGlzIGlzIHNhZmUg
dG8gY2FsbCBtdWx0aXBsZSB0aW1lcy4KKyAgICBib29sIHVzZXJDaG9zZW4gPSB0cnVlOworICAg
IFN0cmluZyBlbmNvZGluZyA9IG92ZXJyaWRlRW5jb2RpbmcoKTsKKyAgICBpZiAoZW5jb2Rpbmcu
aXNOdWxsKCkpIHsKKyAgICAgICAgdXNlckNob3NlbiA9IGZhbHNlOworICAgICAgICBlbmNvZGlu
ZyA9IHJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpOworICAgIH0KKyAgICAvLyBGSVhNRTog
RG9jdW1lbnRXcml0ZXIgc2hvdWxkIGJlIG93bmVkIGJ5IERvY3VtZW50TG9hZGVyLgorICAgIG1f
ZnJhbWUtPmxvYWRlcigpLT53cml0ZXIoKS0+c2V0RW5jb2RpbmcoZW5jb2RpbmcsIHVzZXJDaG9z
ZW4pOwogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzaW5nKCkpOwotICAgIC8v
IEZJWE1FOiBEb2N1bWVudFdyaXRlciBzaG91bGQgbW92ZSB0byBiZSBvd25lZCBieSBEb2N1bWVu
dExvYWRlci4KLSAgICBmcmFtZUxvYWRlcigpLT53cml0ZXIoKS0+YWRkRGF0YShieXRlcywgbGVu
Z3RoKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+d3JpdGVyKCktPmFkZERhdGEoYnl0ZXMsIGxl
bmd0aCk7CiB9CiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmRvZXNQcm9ncmVzc2l2ZUxvYWQoY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmggYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGE3
YjhiNDFjMGU2ZWQyNDFlNjc5ZjhiMDAxMTk1OWFiZmUzN2Q1YjIuLjUwODc5YjcxYWJlZmQ1N2Rh
ZjQ0ZDdmZmYzMWU1MjhkMTY0YjNiMzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMjEx
LDcgKzIxMSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRG9jdW1lbnRMb2FkVGlt
aW5nKiB0aW1pbmcoKSB7IHJldHVybiAmbV9kb2N1bWVudExvYWRUaW1pbmc7IH0KICAgICAgICAg
dm9pZCByZXNldFRpbWluZygpIHsgbV9kb2N1bWVudExvYWRUaW1pbmcgPSBEb2N1bWVudExvYWRU
aW1pbmcoKTsgfQogCi0gICAgICAgIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50
IGxlbmd0aCk7CisgICAgICAgIC8vIFRoZSBXZWJLaXQgbGF5ZXIgY2FsbHMgdGhpcyBmdW5jdGlv
biB3aGVuIGl0J3MgcmVhZHkgZm9yIHRoZSBkYXRhIHRvCisgICAgICAgIC8vIGFjdHVhbGx5IGJl
IGFkZGVkIHRvIHRoZSBkb2N1bWVudC4KKyAgICAgICAgdm9pZCBjb21taXREYXRhKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNhdGlvbkNhY2hlSG9z
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUhvc3QuZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCBmZGM0MzJkZjU4MzFlNDVlYTc2NGE2OTRhYjJjODJiODAyMWI4
MThhLi4yZTNhZTlkYjNiYzQwOTFjNWY1MTA1OTdlYWJiYjg3MjAzZDU4ZTNlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0yMjI2LDggKzIyMjYsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Zmlu
aXNoZWRMb2FkaW5nRG9jdW1lbnQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBpZiAoIWFy
Y2hpdmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGxvYWRlci0+YWRkQWxsQXJjaGl2ZVJlc291
cmNlcyhhcmNoaXZlLmdldCgpKTsKKyAgICAvLyBGSVhNRTogVGhlIHJlbWFpbmRlciBvZiB0aGlz
IGZ1bmN0aW9uIHNob3VsZCBiZSBpbiBEb2N1bWVudExvYWRlci4KICAgICAKKyAgICBsb2FkZXIt
PmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoYXJjaGl2ZS5nZXQoKSk7CisKICAgICBBcmNoaXZlUmVz
b3VyY2UqIG1haW5SZXNvdXJjZSA9IGFyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwogICAgIGxvYWRl
ci0+c2V0UGFyc2VkQXJjaGl2ZURhdGEobWFpblJlc291cmNlLT5kYXRhKCkpOwogCkBAIC0yMjM2
LDEzICsyMjM4LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0RvY3VtZW50
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgY2xvc2VVUkwoKTsKICAgICBkaWRPcGVuVVJM
KG1haW5SZXNvdXJjZS0+dXJsKCkpOwogCisgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkp
OwogICAgIFN0cmluZyB1c2VyQ2hvc2VuRW5jb2RpbmcgPSBkb2N1bWVudExvYWRlcigpLT5vdmVy
cmlkZUVuY29kaW5nKCk7CiAgICAgYm9vbCBlbmNvZGluZ0lzVXNlckNob3NlbiA9ICF1c2VyQ2hv
c2VuRW5jb2RpbmcuaXNOdWxsKCk7CiAgICAgd3JpdGVyKCktPnNldEVuY29kaW5nKGVuY29kaW5n
SXNVc2VyQ2hvc2VuID8gdXNlckNob3NlbkVuY29kaW5nIDogbWFpblJlc291cmNlLT50ZXh0RW5j
b2RpbmcoKSwgZW5jb2RpbmdJc1VzZXJDaG9zZW4pOwotCi0gICAgQVNTRVJUKG1fZnJhbWUtPmRv
Y3VtZW50KCkpOwotCi0gICAgbG9hZGVyLT5hZGREYXRhKG1haW5SZXNvdXJjZS0+ZGF0YSgpLT5k
YXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLT5zaXplKCkpOworICAgIHdyaXRlcigpLT5hZGRE
YXRhKG1haW5SZXNvdXJjZS0+ZGF0YSgpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLT5z
aXplKCkpOwogfQogCiBib29sIEZyYW1lTG9hZGVyOjppc1JlcGxhY2luZygpIGNvbnN0CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBiOWIxYWUwNTM5MmRhZmIzOTcwZGJlMGMwZjYxYTI5MzNiMDE3NzFhLi45M2Y2
ZDUxNjkyZTM2NjE1MzA0ZmUyYjBiN2M5NDBhNzE1YWNkNzAzIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNyBAQAogMjAxMC0wOS0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY29k
ZSBmcm9tIFdlYktpdC1sYXllciB0byBEb2N1bWVudExvYWRlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU1NjkKKworICAgICAgICAqIHNyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVu
dEltcGw6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmNvbW1pdERvY3VtZW50RGF0YSk6CisKKzIw
MTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBDaHJv
bWl1bSBidWlsZCBmaXggKG9uZSBob3BlcyEpCiAKICAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBs
LmNwcDoKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApp
bmRleCBlYTY2OGM3NzJiN2I0N2IxNjE4MWMxYTg3ZmUxYmY1MGE2ZDZhYWM1Li42NDE0OTJjNTJj
YmJlOGI2MDRhN2YyODQxNmQzMTFhMmEzNjVmNzg2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCkBAIC0xMDUzLDggKzEwNTMsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVy
LCBjb25zdCBjaGFyKiBkYQogCiAgICAgLy8gSWYgd2UgYXJlIHNlbmRpbmcgZGF0YSB0byBNZWRp
YURvY3VtZW50LCB3ZSBzaG91bGQgc3RvcCBoZXJlCiAgICAgLy8gYW5kIGNhbmNlbCB0aGUgcmVx
dWVzdC4KLSAgICBpZiAobV93ZWJGcmFtZS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKQotICAgICAgICAm
JiBtX3dlYkZyYW1lLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5pc01lZGlhRG9jdW1lbnQoKSkKKyAg
ICBpZiAobV93ZWJGcmFtZS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNNZWRpYURvY3VtZW50KCkp
CiAgICAgICAgIGxvYWRlci0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChwbHVnaW5XaWxsSGFuZGxl
TG9hZEVycm9yKGxvYWRlci0+cmVzcG9uc2UoKSkpOwogCiAgICAgLy8gVGhlIHBsdWdpbiB3aWRn
ZXQgY291bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgaW4gdGhlIG1fd2ViRnJhbWUtPkRpZFJlY2VpdmVE
YXRhCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggZTYyMmQ5OTgwYjVhZjZj
MjQyZmI2MTE4YWJlYzVhNjFjM2QxZTA1MS4uYjA0ZWY4Zjk1YjFkODI2ZTczZGI0N2YwY2RlOWVl
YThlZjQ4N2JkZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTAxMiwy
MSArMTAxMiw5IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChX
ZWJVUkxSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICAwLCAwLCByZXF1ZXN0LnRvTXV0YWJsZVJl
c291cmNlUmVxdWVzdCgpLCByZXNwb25zZSk7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9u
IHNob3VsZCBiZSBtb3ZlZCBpbnRvIFdlYkNvcmUuCiB2b2lkIFdlYkZyYW1lSW1wbDo6Y29tbWl0
RG9jdW1lbnREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgRG9j
dW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50
TG9hZGVyKCk7Ci0KLSAgICAvLyBTZXQgdGhlIHRleHQgZW5jb2RpbmcuICBUaGlzIGNhbGxzIGJl
Z2luKCkgZm9yIHVzLiAgSXQgaXMgc2FmZSB0byBjYWxsCi0gICAgLy8gdGhpcyBtdWx0aXBsZSB0
aW1lcyAoTWFjIGRvZXM6IHBhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbSkuCi0gICAgYm9v
bCB1c2VyQ2hvc2VuID0gdHJ1ZTsKLSAgICBTdHJpbmcgZW5jb2RpbmcgPSBkb2N1bWVudExvYWRl
ci0+b3ZlcnJpZGVFbmNvZGluZygpOwotICAgIGlmIChlbmNvZGluZy5pc051bGwoKSkgewotICAg
ICAgICB1c2VyQ2hvc2VuID0gZmFsc2U7Ci0gICAgICAgIGVuY29kaW5nID0gZG9jdW1lbnRMb2Fk
ZXItPnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpOwotICAgIH0KLSAgICBtX2ZyYW1lLT5s
b2FkZXIoKS0+d3JpdGVyKCktPnNldEVuY29kaW5nKGVuY29kaW5nLCB1c2VyQ2hvc2VuKTsKLSAg
ICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+YWRkRGF0YShkYXRhLCBsZW5n
dGgpOworICAgIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5jb21taXREYXRh
KGRhdGEsIGxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIFdlYkZyYW1lSW1wbDo6dW5sb2FkTGlzdGVu
ZXJDb3VudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCmluZGV4IGU0OTJhNWIyZWFhNzU2MzU5MjI0Mjc1YjU2ODc3OTJiN2Fi
OTcyZmMuLjJjZmQ3M2RmMmM0MDg0MDRhMTgwMmMwZTNmYmQ5NGZlMjZkMjllM2MgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMjQgQEAKIDIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNv
ZGUgZnJvbSBXZWJLaXQtbGF5ZXIgdG8gRG9jdW1lbnRMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTY5CisKKyAgICAgICAgVGhpcyBjb2Rl
IGRpZG4ndCBrbm93IHRoYXQgc2V0RW5jb2RpbmcgY291bGQgYmUgY2FsbGVkIG11bHRpcGxlIHRp
bWVzCisgICAgICAgIHNhZmVseS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpGcmFtZUxvYWRlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0TWFpbkRvY3VtZW50RXJyb3IpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6CisKKzIwMTAt
MDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBNYWluIHJlc291cmNlIGJ5dGVzIHNob3VsZG4n
dCBib3VuY2UgdGhyb3VnaCBGcmFtZUxvYWRlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAppbmRleCBmMGFhYTVmMGNhNDllZGQwNjMx
NjFkNzZjZTU2M2E5NGRiMTQ0YjRiLi45NDA5Nzc2YjA1Y2FkOWUyMzJmN2MyNjg4NDhjNmI4MWM3
OGZkYTVkIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcApAQCAtNjcsNyArNjcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6RnJhbWVMb2FkZXJDbGllbnRFZmwoRXZhc19PYmplY3QgKnZpZXcp
CiAgICAgOiBtX3ZpZXcodmlldykKICAgICAsIG1fZnJhbWUoMCkKLSAgICAsIG1fZmlyc3REYXRh
KGZhbHNlKQogICAgICwgbV91c2VyQWdlbnQoIiIpCiAgICAgLCBtX2N1c3RvbVVzZXJBZ2VudCgi
IikKICAgICAsIG1fcGx1Z2luVmlldygwKQpAQCAtMTgyLDIwICsxODEsMTAgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0
aW9uIGZ1bmN0aW9uLAogICAgIGNhbGxQb2xpY3lGdW5jdGlvbihmdW5jdGlvbiwgUG9saWN5VXNl
KTsKIH0KIAotLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIG1vdmVkIGludG8gV2Vi
Q29yZS4KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBpZiAo
IW1fcGx1Z2luVmlldykgewotICAgICAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgRnJhbWVMb2FkZXIqIGZsID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOwot
ICAgICAgICBpZiAobV9maXJzdERhdGEpIHsKLSAgICAgICAgICAgIGZsLT53cml0ZXIoKS0+c2V0
RW5jb2RpbmcobV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCksIGZhbHNlKTsKLSAgICAgICAg
ICAgIG1fZmlyc3REYXRhID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZmwtPmRvY3VtZW50
TG9hZGVyKCktPmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKLSAgICB9CisgICAgaWYgKCFtX3BsdWdp
blZpZXcpCisgICAgICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOwogCiAgICAg
Ly8gV2UgcmUtY2hlY2sgaGVyZSBhcyB0aGUgcGx1Z2luIGNhbiBoYXZlIGJlZW4gY3JlYXRlZAog
ICAgIGlmIChtX3BsdWdpblZpZXcpIHsKQEAgLTMyNSw3ICszMTQsNiBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpmcmFtZUxvYWRlckRlc3Ryb3llZCgpCiB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIG1fcmVz
cG9uc2UgPSByZXNwb25zZTsKLSAgICBtX2ZpcnN0RGF0YSA9IHRydWU7CiB9CiAKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQ
b2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikKQEAgLTcxOSwxNyArNzA3LDExIEBAIFN0cmluZyBGcmFtZUxvYWRlckNs
aWVudEVmbDo6Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29u
c3QKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgaWYgKCFtX3BsdWdpblZpZXcpIHsKLSAgICAgICAgaWYg
KG1fZmlyc3REYXRhKSB7Ci0gICAgICAgICAgICBGcmFtZUxvYWRlciogZmwgPSBsb2FkZXItPmZy
YW1lTG9hZGVyKCk7Ci0gICAgICAgICAgICBmbC0+d3JpdGVyKCktPnNldEVuY29kaW5nKG1fcmVz
cG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBmYWxzZSk7Ci0gICAgICAgICAgICBtX2ZpcnN0RGF0
YSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9wbHVnaW5WaWV3
LT5kaWRGaW5pc2hMb2FkaW5nKCk7Ci0gICAgICAgIG1fcGx1Z2luVmlldyA9IDA7Ci0gICAgICAg
IG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsKLSAgICB9CisgICAgaWYgKCFtX3Bs
dWdpblZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BsdWdpblZpZXctPmRpZEZpbmlzaExv
YWRpbmcoKTsKKyAgICBtX3BsdWdpblZpZXcgPSAwOworICAgIG1faGFzU2VudFJlc3BvbnNlVG9Q
bHVnaW4gPSBmYWxzZTsKIH0KIAogCkBAIC03NjUsMTUgKzc0Nyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmFpbExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnIpCiB7Ci0gICAgaWYgKCFzaG91bGRGYWxsQmFjayhlcnIp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9maXJzdERhdGEpIHsKLSAgICAgICAgRnJh
bWVMb2FkZXIqIGZsID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOwotICAgICAgICBmbC0+d3JpdGVy
KCktPnNldEVuY29kaW5nKG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBmYWxzZSk7Ci0g
ICAgICAgIG1fZmlyc3REYXRhID0gZmFsc2U7Ci0gICAgfQotCisgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKQEAgLTkwNCwxNiArODc4LDEx
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQ
b2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OnNldE1haW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmICghbV9wbHVnaW5WaWV3KSB7Ci0gICAgICAgIGlm
IChtX2ZpcnN0RGF0YSkgewotICAgICAgICAgICAgbG9hZGVyLT5mcmFtZUxvYWRlcigpLT53cml0
ZXIoKS0+c2V0RW5jb2RpbmcobV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCksIGZhbHNlKTsK
LSAgICAgICAgICAgIG1fZmlyc3REYXRhID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ug
ewotICAgICAgICBtX3BsdWdpblZpZXctPmRpZEZhaWwoZXJyb3IpOwotICAgICAgICBtX3BsdWdp
blZpZXcgPSAwOwotICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gZmFsc2U7Ci0g
ICAgfQorICAgIGlmICghbV9wbHVnaW5WaWV3KQorICAgICAgICByZXR1cm47CisgICAgbV9wbHVn
aW5WaWV3LT5kaWRGYWlsKGVycm9yKTsKKyAgICBtX3BsdWdpblZpZXcgPSAwOworICAgIG1faGFz
U2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6c3RhcnREb3dubG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oIGIvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCmluZGV4IGJkMTA1Y2Q1
MDI4YWE3MzQ3Y2Q0MWFjOTJlZjMwY2Y2MzUyZmYyM2MuLjZiNjZlZTBmODdjMDdkZTM4YzJkNzJm
OGFlMTcxZGNhZWE4NmNmNTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuaAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmgKQEAgLTIwOSw3ICsyMDksNiBAQCBjbGFzcyBGcmFtZUxvYWRl
ckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgRXZhc19PYmplY3Qg
Km1fZnJhbWU7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgYm9vbCBt
X2ZpcnN0RGF0YTsKICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CiAgICAgU3RyaW5nIG1fY3VzdG9t
VXNlckFnZW50OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCmluZGV4IDAzNmM1Y2VlNTlkY2YxMjg5ZWE4ZDhmZDIwNDYxMGMxZWQ5MjE4
MWIuLjExMzYyYzNiZGQxMjEwZDUyMzY4Mzg5OGI4Y2RlZjIwYjYwNmRhMDcgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMTUgQEAKIDIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNvZGUg
ZnJvbSBXZWJLaXQtbGF5ZXIgdG8gRG9jdW1lbnRMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTY5CisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKworMjAxMC0wOS0xMCAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgogCiAg
ICAgICAgIE1haW4gcmVzb3VyY2UgYnl0ZXMgc2hvdWxkbid0IGJvdW5jZSB0aHJvdWdoIEZyYW1l
TG9hZGVyCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCmluZGV4IDU5NzQzOTY0YWEwZTJhOTViNWQ3YTNjNDkzYjJmYzRlOTg2NTJmY2Qu
LjE1NmMwZDBkYjg0Njg0NjVhYzVhNDVlZmU4OGMwMWIyOTQyZjZlNTUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC0yNDUs
MjYgKzI0NSwxNSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRG
b3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3RpbwogICAgIChjb3JlKG1fZnJhbWUp
LT5sb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeVVzZSk7
CiB9CiAKLS8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBtb3ZlZCBpbnRvIFdlYkNv
cmUuCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAg
aWYgKCFtX3BsdWdpblZpZXcpIHsKICAgICAgICAgQVNTRVJUKGxvYWRlci0+ZnJhbWUoKSk7Ci0g
ICAgICAgIC8vIFNldHRpbmcgdGhlIGVuY29kaW5nIG9uIHRoZSBmcmFtZSBsb2FkZXIgaXMgb3Vy
IHdheSB0byBnZXQgd29yayBkb25lIHRoYXQgaXMgbm9ybWFsbHkgZG9uZQotICAgICAgICAvLyB3
aGVuIHRoZSBmaXJzdCBiaXQgb2YgZGF0YSBpcyByZWNlaXZlZCwgZXZlbiBmb3IgdGhlIGNhc2Ug
b2YgYSBkb2N1bWVudCB3aXRoIG5vIGRhdGEgKGxpa2UgYWJvdXQ6YmxhbmspLgotICAgICAgICBT
dHJpbmcgZW5jb2RpbmcgPSBsb2FkZXItPm92ZXJyaWRlRW5jb2RpbmcoKTsKLSAgICAgICAgYm9v
bCB1c2VyQ2hvc2VuID0gIWVuY29kaW5nLmlzTnVsbCgpOwotICAgICAgICBpZiAoIXVzZXJDaG9z
ZW4pCi0gICAgICAgICAgICBlbmNvZGluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS50ZXh0RW5jb2Rp
bmdOYW1lKCk7Ci0KLSAgICAgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbG9hZGVyLT5m
cmFtZUxvYWRlcigpOwotICAgICAgICBmcmFtZUxvYWRlci0+d3JpdGVyKCktPnNldEVuY29kaW5n
KGVuY29kaW5nLCB1c2VyQ2hvc2VuKTsKLSAgICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICBm
cmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YWRkRGF0YShkYXRhLCBsZW5ndGgpOworICAg
ICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKIAogICAgICAgICBGcmFtZSog
Y29yZUZyYW1lID0gbG9hZGVyLT5mcmFtZSgpOwotICAgICAgICBpZiAoY29yZUZyYW1lICYmIGNv
cmVGcmFtZS0+ZG9jdW1lbnQoKSAmJiBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmlzTWVkaWFEb2N1
bWVudCgpKQotICAgICAgICAgICAgbG9hZGVyLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1l
TG9hZGVyLT5jbGllbnQoKS0+cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihsb2FkZXItPnJlc3Bv
bnNlKCkpKTsKKyAgICAgICAgaWYgKGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmRvY3VtZW50KCkt
PmlzTWVkaWFEb2N1bWVudCgpKQorICAgICAgICAgICAgbG9hZGVyLT5jYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkKGNvcmVGcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5wbHVnaW5XaWxsSGFuZGxlTG9h
ZEVycm9yKGxvYWRlci0+cmVzcG9uc2UoKSkpOwogICAgIH0KIAogICAgIGlmIChtX3BsdWdpblZp
ZXcpIHsKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9XZWJLaXQvaGFpa3Uv
Q2hhbmdlTG9nCmluZGV4IGRjYjBmMTQwOGYyY2M1NTIxZDYwN2YwMWVjOWYyOTVhOGIzNjBkM2Eu
LjFmMmVmZWRkNzYyMTUzYTlkMTcxZmRhMGUyNGNmODg1ZGRkZmZlMTIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9oYWlrdS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE1IEBACiAyMDEwLTA5LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBjb2Rl
IGZyb20gV2ViS2l0LWxheWVyIHRvIERvY3VtZW50TG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTU2OQorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEhhaWt1Ojpjb21taXR0ZWRMb2FkKToKKworMjAxMC0wOS0xMCAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgogCiAgICAgICAgIE1haW4gcmVzb3VyY2UgYnl0ZXMgc2hvdWxkbid0IGJvdW5jZSB0aHJv
dWdoIEZyYW1lTG9hZGVyCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAKaW5kZXggZjNkMWY4NzA5ZGZkZmJlZDU2NzgxOTJk
YTdjNDdlMDNlMTE0NjVkNC4uZDZmNzA4ZjBlN2NjN2ZjOWFlMDhkNmI1MjU4ODgyNWFhZDA2Y2Zl
MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3UuY3BwCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEhhaWt1LmNwcApAQCAtNTA0LDE1ICs1MDQsOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OnNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwg
Y29ucwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9u
IHNob3VsZCBiZSBtb3ZlZCBpbnRvIFdlYkNvcmUuCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFp
a3U6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IGxvYWRlci0+ZnJhbWVMb2Fk
ZXIoKTsKLSAgICBmcmFtZUxvYWRlci0+d3JpdGVyKCktPnNldEVuY29kaW5nKG1fcmVzcG9uc2Uu
dGV4dEVuY29kaW5nTmFtZSgpLCBmYWxzZSk7Ci0gICAgZnJhbWVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCktPmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0
YSwgbGVuZ3RoKTsKIH0KIAogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IGJmZTg3ZmUyOWNkNTc3YTk4ZTg0ZTkwNDI4NzdhNThiZGYwZTE4NjkuLmEy
OTIxMDMxMTgzYTdiODUwNzI1ZjliOTlmZjBmNzRiYzM1ZjU4NDggMTAwNjQ0Ci0tLSBhL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMg
QEAKIDIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNvZGUgZnJvbSBX
ZWJLaXQtbGF5ZXIgdG8gRG9jdW1lbnRMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTY5CisKKyAgICAgICAgVGhpcyBjb2RlIGlzIHRoZSBt
b3N0IGNvbmZ1c2VkLCBidXQgbm93IHNob3VsZCBiZSBhIGJpdCBjbGVhbmVyLgorICAgICAgICBU
aGVyZSdzIHN0aWxsIGEgbWFnaWNhbCBmYWtlLXNldHRpbmcgZm9yIGNyZWF0aW5nIHJlbmRlcmVy
cyB0aGF0IG5lZWRzCisgICAgICAgIHRvIGJlIGNsZWFuZWQgdXAsIGJ1dCB3ZSBjYW4gZG8gdGhh
dCBpbiBhIHNlcGFyYXRlIHBhdGNoLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWUgX2NvbW1pdERhdGE6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJGcmFtZUludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiByZWNlaXZlZERhdGE6d2l0
aERhdGFTb3VyY2U6XSk6CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBmaW5pc2hl
ZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKworMjAxMC0wOS0xMCAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgogCiAg
ICAgICAgIE1haW4gcmVzb3VyY2UgYnl0ZXMgc2hvdWxkbid0IGJvdW5jZSB0aHJvdWdoIEZyYW1l
TG9hZGVyCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggOWE5ODdiZWFiMTYwYmUzZjA3MzYxYWEz
Njc3MDQzMDEzMzBmMjhmZS4uYTI2OTczOTA3MzczYzE1NDgzNDExODI4NzBmZGQ1NjA3ZTAzYmZh
ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNDg3LDE0ICs0ODcsNiBAQCBzdGF0aWMgaW5s
aW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAg
ICByZXR1cm4gZGF0YVNvdXJjZShfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1l
bnRMb2FkZXIoKSk7CiB9CiAKLS0gKHZvaWQpX2FkZERhdGE6KE5TRGF0YSAqKWRhdGEKLXsKLSAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpOwot
Ci0gICAgZG9jdW1lbnQtPnNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhfcHJpdmF0ZS0+c2hvdWxk
Q3JlYXRlUmVuZGVyZXJzKTsKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS0+ZG9j
dW1lbnRMb2FkZXIoKS0+YWRkRGF0YSgoY29uc3QgY2hhciAqKVtkYXRhIGJ5dGVzXSwgW2RhdGEg
bGVuZ3RoXSk7Ci19Ci0KIC0gKE5TU3RyaW5nICopX3N0cmluZ1dpdGhEb2N1bWVudFR5cGVTdHJp
bmdBbmRNYXJrdXBTdHJpbmc6KE5TU3RyaW5nICopbWFya3VwU3RyaW5nCiB7CiAgICAgcmV0dXJu
IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50VHlwZVN0cmluZygpICsgbWFya3VwU3RyaW5n
OwpAQCAtOTM1LDE1ICs5MjcsMTMgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRh
U291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgcmV0dXJuIFtzZWxmIF9jYW5Qcm92
aWRlRG9jdW1lbnRTb3VyY2VdOwogfQogCi0tICh2b2lkKV9yZWNlaXZlZERhdGE6KE5TRGF0YSAq
KWRhdGEgdGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKil0ZXh0RW5jb2RpbmdOYW1lCistICh2
b2lkKV9jb21taXREYXRhOihOU0RhdGEgKilkYXRhCiB7Ci0gICAgLy8gU2V0IHRoZSBlbmNvZGlu
Zy4gVGhpcyBvbmx5IG5lZWRzIHRvIGJlIGRvbmUgb25jZSwgYnV0IGl0J3MgaGFybWxlc3MgdG8g
ZG8gaXQgYWdhaW4gbGF0ZXIuCi0gICAgU3RyaW5nIGVuY29kaW5nID0gX3ByaXZhdGUtPmNvcmVG
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm92ZXJyaWRlRW5jb2RpbmcoKTsKLSAg
ICBib29sIHVzZXJDaG9zZW4gPSAhZW5jb2RpbmcuaXNOdWxsKCk7Ci0gICAgaWYgKGVuY29kaW5n
LmlzTnVsbCgpKQotICAgICAgICBlbmNvZGluZyA9IHRleHRFbmNvZGluZ05hbWU7Ci0gICAgX3By
aXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCktPndyaXRlcigpLT5zZXRFbmNvZGluZyhlbmNvZGlu
ZywgdXNlckNob3Nlbik7Ci0gICAgW3NlbGYgX2FkZERhdGE6ZGF0YV07CisgICAgLy8gRklYTUU6
IFRoaXMgcmVhbGx5IHNob3VsZCBiZSBhIHNldHRpbmcuCisgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBkb2N1bWVudC0+c2V0U2hv
dWxkQ3JlYXRlUmVuZGVyZXJzKF9wcml2YXRlLT5zaG91bGRDcmVhdGVSZW5kZXJlcnMpOworCisg
ICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmNvbW1p
dERhdGEoKGNvbnN0IGNoYXIgKilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oIGIv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAppbmRleCBkYzNkZTIxN2U5ZDdm
ZmZhZGM3MTFmYThiN2IxYzQwYmRjMjVhMTZjLi44Y2RjMjcyNzk4OTcxMTM2YzA1NTBkMjI5MzNk
ZGU5MDFlYjM5ZmE3IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRl
cm5hbC5oCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKQEAgLTE2
Miw3ICsxNjIsNyBAQCBXZWJWaWV3ICpnZXRXZWJWaWV3KFdlYkZyYW1lICp3ZWJGcmFtZSk7CiAt
IChCT09MKV9jYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2U7CiAtIChCT09MKV9jYW5TYXZlQXNXZWJB
cmNoaXZlOwogCi0tICh2b2lkKV9yZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEgdGV4dEVuY29k
aW5nTmFtZTooTlNTdHJpbmcgKil0ZXh0RW5jb2RpbmdOYW1lOworLSAodm9pZClfY29tbWl0RGF0
YTooTlNEYXRhICopZGF0YTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbQppbmRleCAxODg3NDdkN2RjNmQ0ZjI0MTIwZmQ5MGY4NWI0ODRjMjU0
MGE3Y2JiLi5iYzEwYjgwNjZjNjBmZTAzMDc2MTU5NjBhYmIyYTc0ZGZmN2E3YjI0IDEwMDY0NAot
LS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTE2NiwyMyArMTY2
LDI0IEBAIHN0YXRpYyBOU0FycmF5ICpjb25jYXRlbmF0ZUFycmF5cyhOU0FycmF5ICpmaXJzdCwg
TlNBcnJheSAqc2Vjb25kKQogLSAodm9pZClyZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEgd2l0
aERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiB7CiAgICAgV2ViRnJhbWUg
KndlYkZyYW1lID0gW2RhdGFTb3VyY2Ugd2ViRnJhbWVdOwotICAgIGlmICh3ZWJGcmFtZSkgewot
ICAgICAgICBpZiAoIV9wcml2YXRlLT5wbHVnaW5WaWV3KQotICAgICAgICAgICAgW3dlYkZyYW1l
IF9yZWNlaXZlZERhdGE6ZGF0YSB0ZXh0RW5jb2RpbmdOYW1lOltbX3ByaXZhdGUtPmRhdGFTb3Vy
Y2UgcmVzcG9uc2VdIHRleHRFbmNvZGluZ05hbWVdXTsKLSAgICAgICAgCi0gICAgICAgIC8vIElm
IHRoZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cgaXMgdGhl
IHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9hZAotICAgICAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7Ci0gICAgICAgIGlmIChjb3JlRnJhbWUtPmRvY3VtZW50
KCkgJiYgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5pc01lZGlhRG9jdW1lbnQoKSkKLSAgICAgICAg
ICAgIGNvcmVGcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNv
dXJjZUxvYWQoY29yZUZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnBsdWdpbldpbGxIYW5kbGVM
b2FkRXJyb3IoY29yZUZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2Uo
KSkpOwotCi0gICAgICAgIGlmIChfcHJpdmF0ZS0+cGx1Z2luVmlldykgewotICAgICAgICAgICAg
aWYgKCFfcHJpdmF0ZS0+aGFzU2VudFJlc3BvbnNlVG9QbHVnaW4pIHsKLSAgICAgICAgICAgICAg
ICBbX3ByaXZhdGUtPm1hbnVhbExvYWRlciBwbHVnaW5WaWV3Ol9wcml2YXRlLT5wbHVnaW5WaWV3
IHJlY2VpdmVkUmVzcG9uc2U6W2RhdGFTb3VyY2UgcmVzcG9uc2VdXTsKLSAgICAgICAgICAgICAg
ICBfcHJpdmF0ZS0+aGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBZRVM7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFtfcHJpdmF0ZS0+bWFudWFsTG9hZGVyIHBsdWdp
blZpZXc6X3ByaXZhdGUtPnBsdWdpblZpZXcgcmVjZWl2ZWREYXRhOmRhdGFdOworICAgIGlmICgh
d2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghX3ByaXZhdGUtPnBsdWdpblZp
ZXcpCisgICAgICAgIFt3ZWJGcmFtZSBfY29tbWl0RGF0YTpkYXRhXTsKKworICAgIC8vIElmIHRo
ZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJp
Z2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9hZAorICAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBjb3JlKHdlYkZyYW1lKTsKKyAgICBpZiAoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5pc01lZGlh
RG9jdW1lbnQoKSkKKyAgICAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIo
KS0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChjb3JlRnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb3JlRnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExv
YWRlcigpLT5yZXNwb25zZSgpKSk7CisKKyAgICBpZiAoX3ByaXZhdGUtPnBsdWdpblZpZXcpIHsK
KyAgICAgICAgaWYgKCFfcHJpdmF0ZS0+aGFzU2VudFJlc3BvbnNlVG9QbHVnaW4pIHsKKyAgICAg
ICAgICAgIFtfcHJpdmF0ZS0+bWFudWFsTG9hZGVyIHBsdWdpblZpZXc6X3ByaXZhdGUtPnBsdWdp
blZpZXcgcmVjZWl2ZWRSZXNwb25zZTpbZGF0YVNvdXJjZSByZXNwb25zZV1dOworICAgICAgICAg
ICAgX3ByaXZhdGUtPmhhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gWUVTOwogICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBbX3ByaXZhdGUtPm1hbnVhbExvYWRlciBwbHVnaW5WaWV3Ol9wcml2
YXRlLT5wbHVnaW5WaWV3IHJlY2VpdmVkRGF0YTpkYXRhXTsKICAgICB9CiB9CiAKQEAgLTE5NSwy
NSArMTk2LDI2IEBAIHN0YXRpYyBOU0FycmF5ICpjb25jYXRlbmF0ZUFycmF5cyhOU0FycmF5ICpm
aXJzdCwgTlNBcnJheSAqc2Vjb25kKQogCiAtICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRh
U291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQogewotICAgIFdlYkZyYW1lICpmcmFt
ZSA9IFtkYXRhU291cmNlIHdlYkZyYW1lXTsKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBbZGF0
YVNvdXJjZSB3ZWJGcmFtZV07CiAKICAgICBpZiAoX3ByaXZhdGUtPnBsdWdpblZpZXcpIHsKICAg
ICAgICAgW19wcml2YXRlLT5tYW51YWxMb2FkZXIgcGx1Z2luVmlld0ZpbmlzaGVkTG9hZGluZzpf
cHJpdmF0ZS0+cGx1Z2luVmlld107CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
ZnJhbWUpIHsKLSAgICAgICAgaWYgKCFbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsK
LSAgICAgICAgICAgIC8vIFRlbGxpbmcgdGhlIGZyYW1lIHdlIHJlY2VpdmVkIHNvbWUgZGF0YSBh
bmQgcGFzc2luZyBuaWwgYXMgdGhlIGRhdGEgaXMgb3VyCi0gICAgICAgICAgICAvLyB3YXkgdG8g
Z2V0IHdvcmsgZG9uZSB0aGF0IGlzIG5vcm1hbGx5IGRvbmUgd2hlbiB0aGUgZmlyc3QgYml0IG9m
IGRhdGEgaXMKLSAgICAgICAgICAgIC8vIHJlY2VpdmVkLCBldmVuIGZvciB0aGUgY2FzZSBvZiBh
IGRvY3VtZW50IHdpdGggbm8gZGF0YSAobGlrZSBhYm91dDpibGFuaykuCi0gICAgICAgICAgICBb
ZnJhbWUgX3JlY2VpdmVkRGF0YTpuaWwgdGV4dEVuY29kaW5nTmFtZTpbW19wcml2YXRlLT5kYXRh
U291cmNlIHJlc3BvbnNlXSB0ZXh0RW5jb2RpbmdOYW1lXV07Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbZnJhbWUgd2ViVmlld107Ci0gICAgICAgIGlm
IChbd2ViVmlldyBpc0VkaXRhYmxlXSkKLSAgICAgICAgICAgIGNvcmUoZnJhbWUpLT5lZGl0b3Io
KS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CisgICAgaWYgKCF3ZWJGcmFtZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2
ZV0pIHsKKyAgICAgICAgLy8gVGVsbGluZyB0aGUgZnJhbWUgd2UgcmVjZWl2ZWQgc29tZSBkYXRh
IGFuZCBwYXNzaW5nIG5pbCBhcyB0aGUgZGF0YSBpcyBvdXIKKyAgICAgICAgLy8gd2F5IHRvIGdl
dCB3b3JrIGRvbmUgdGhhdCBpcyBub3JtYWxseSBkb25lIHdoZW4gdGhlIGZpcnN0IGJpdCBvZiBk
YXRhIGlzCisgICAgICAgIC8vIHJlY2VpdmVkLCBldmVuIGZvciB0aGUgY2FzZSBvZiBhIGRvY3Vt
ZW50IHdpdGggbm8gZGF0YSAobGlrZSBhYm91dDpibGFuaykuCisgICAgICAgIFt3ZWJGcmFtZSBf
Y29tbWl0RGF0YTpuaWxdOwogICAgIH0KKworICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbd2ViRnJh
bWUgd2ViVmlld107CisgICAgaWYgKFt3ZWJWaWV3IGlzRWRpdGFibGVdKQorICAgICAgICBjb3Jl
KHdlYkZyYW1lKS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwog
fQogCiAtIChCT09MKWNhblByb3ZpZGVEb2N1bWVudFNvdXJjZQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNzExYWZiNTRiZGVhMjlh
NDcwOGZkZjQ1MmMwOGEwNzA3ZjUzYTFiMC4uNWRlOTJhMGI2ZWYzMjZmNDMwNzhmNGFmNTlmODc5
OWVhYWM2MWM5NCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMgQEAKIDIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNb3ZlIGNvZGUgZnJvbSBXZWJLaXQtbGF5ZXIgdG8gRG9jdW1lbnRMb2FkZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTY5CisK
KyAgICAgICAgVGhpcyBjb2RlIGRpZG4ndCBrbm93IHRoYXQgc2V0RW5jb2RpbmcgY2FuIGJlIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
RnJhbWVMb2FkZXJDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6c2V0TWFpbkRvY3VtZW50RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMTAtMDktMTAgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KIAogICAgICAgICBNYWluIHJlc291cmNlIGJ5dGVzIHNob3VsZG4ndCBib3VuY2Ug
dGhyb3VnaCBGcmFtZUxvYWRlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IGNiMTRiNGJmMjExOTk3YzNhM2NiZDA1NzM4YjY2NGUx
NzM1MjAxNGIuLjE2Mjg2MzQ3MmVkMTU0NmY1MjlhM2Y5YjgwMGY4ODQzNzhiOTk3ODIgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAor
KysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAg
LTE4OSw3ICsxODksNiBAQCBzdGF0aWMgY29uc3QgY2hhciogbmF2aWdhdGlvblR5cGVUb1N0cmlu
ZyhOYXZpZ2F0aW9uVHlwZSB0eXBlKQogRnJhbWVMb2FkZXJDbGllbnRRdDo6RnJhbWVMb2FkZXJD
bGllbnRRdCgpCiAgICAgOiBtX2ZyYW1lKDApCiAgICAgLCBtX3dlYkZyYW1lKDApCi0gICAgLCBt
X2ZpcnN0RGF0YShmYWxzZSkKICAgICAsIG1fcGx1Z2luVmlldygwKQogICAgICwgbV9oYXNTZW50
UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkKICAgICAsIG1fbG9hZEVycm9yIChSZXNvdXJjZUVycm9y
KCkpCkBAIC01ODEsMTkgKzU4MCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZENo
YW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpm
aW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICBpZiAoIW1fcGx1
Z2luVmlldykgewotICAgICAgICBpZihtX2ZpcnN0RGF0YSkgewotICAgICAgICAgICAgRnJhbWVM
b2FkZXIgKmZsID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOwotICAgICAgICAgICAgZmwtPndyaXRl
cigpLT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgZmFsc2UpOwot
ICAgICAgICAgICAgbV9maXJzdERhdGEgPSBmYWxzZTsgCi0gICAgICAgIH0KLSAgICB9Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIGlmIChtX3BsdWdpblZpZXctPmlzUGx1Z2luVmlldygpKQotICAgICAg
ICAgICAgbV9wbHVnaW5WaWV3LT5kaWRGaW5pc2hMb2FkaW5nKCk7Ci0gICAgICAgIG1fcGx1Z2lu
VmlldyA9IDA7Ci0gICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsKLSAg
ICB9CisgICAgaWYgKCFtX3BsdWdpblZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9w
bHVnaW5WaWV3LT5pc1BsdWdpblZpZXcoKSkKKyAgICAgICAgbV9wbHVnaW5WaWV3LT5kaWRGaW5p
c2hMb2FkaW5nKCk7CisgICAgbV9wbHVnaW5WaWV3ID0gMDsKKyAgICBtX2hhc1NlbnRSZXNwb25z
ZVRvUGx1Z2luID0gZmFsc2U7CiB9CiAKIApAQCAtNzc2LDMyICs3NjgsMTkgQEAgYm9vbCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpjYW5DYWNoZVBhZ2UoKSBjb25zdAogCiB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OnNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmICgh
bV9wbHVnaW5WaWV3KSB7Ci0gICAgICAgIGlmIChtX2ZpcnN0RGF0YSkgewotICAgICAgICAgICAg
bG9hZGVyLT5mcmFtZUxvYWRlcigpLT53cml0ZXIoKS0+c2V0RW5jb2RpbmcobV9yZXNwb25zZS50
ZXh0RW5jb2RpbmdOYW1lKCksIGZhbHNlKTsKLSAgICAgICAgICAgIG1fZmlyc3REYXRhID0gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAobV9wbHVnaW5WaWV3LT5p
c1BsdWdpblZpZXcoKSkKLSAgICAgICAgICAgIG1fcGx1Z2luVmlldy0+ZGlkRmFpbChlcnJvcik7
Ci0gICAgICAgIG1fcGx1Z2luVmlldyA9IDA7Ci0gICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9Q
bHVnaW4gPSBmYWxzZTsKLSAgICB9CisgICAgaWYgKCFtX3BsdWdpblZpZXcpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAobV9wbHVnaW5WaWV3LT5pc1BsdWdpblZpZXcoKSkKKyAgICAgICAgbV9w
bHVnaW5WaWV3LT5kaWRGYWlsKGVycm9yKTsKKyAgICBtX3BsdWdpblZpZXcgPSAwOworICAgIG1f
aGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsKIH0KIAogLy8gRklYTUU6IFRoaXMgZnVu
Y3Rpb24gc2hvdWxkIGJlIG1vdmVkIGludG8gV2ViQ29yZS4KIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6Y29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIGlmICghbV9wbHVnaW5WaWV3KSB7Ci0g
ICAgICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgRnJhbWVM
b2FkZXIgKmZsID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOwotICAgICAgICBpZiAobV9maXJzdERh
dGEpIHsKLSAgICAgICAgICAgIGZsLT53cml0ZXIoKS0+c2V0RW5jb2RpbmcobV9yZXNwb25zZS50
ZXh0RW5jb2RpbmdOYW1lKCksIGZhbHNlKTsKLSAgICAgICAgICAgIG1fZmlyc3REYXRhID0gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICAgICAgZmwtPmRvY3VtZW50TG9hZGVyKCktPmFkZERhdGEoZGF0
YSwgbGVuZ3RoKTsKLSAgICB9CisgICAgaWYgKCFtX3BsdWdpblZpZXcpCisgICAgICAgIGxvYWRl
ci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOwogICAgIAogICAgIC8vIFdlIHJlLWNoZWNrIGhl
cmUgYXMgdGhlIHBsdWdpbiBjYW4gaGF2ZSBiZWVuIGNyZWF0ZWQKICAgICBpZiAobV9wbHVnaW5W
aWV3ICYmIG1fcGx1Z2luVmlldy0+aXNQbHVnaW5WaWV3KCkpIHsKQEAgLTk2Miw3ICs5NDEsNiBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdQogewogCiAgICAgbV9yZXNwb25zZSA9IHJlc3BvbnNl
OwotICAgIG1fZmlyc3REYXRhID0gdHJ1ZTsKICAgICBpZiAoZHVtcFJlc291cmNlTG9hZENhbGxi
YWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFJlY2VpdmVSZXNwb25zZSAlc1xuIiwKICAg
ICAgICAgICAgICAgIHFQcmludGFibGUoZHVtcEFzc2lnbmVkVXJsc1tpZGVudGlmaWVyXSksCkBA
IC05OTIsMTIgKzk3MCw2IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRG
YWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyCiAgICAgICAgIHByaW50
ZigiJXMgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogJXNcbiIsCiAgICAgICAgICAgICAgICAo
ZHVtcEFzc2lnbmVkVXJscy5jb250YWlucyhpZGVudGlmaWVyKSA/IHFQcmludGFibGUoZHVtcEFz
c2lnbmVkVXJsc1tpZGVudGlmaWVyXSkgOiAiPHVua25vd24+IiksCiAgICAgICAgICAgICAgICBx
UHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGVycm9yKSkpOwot
Ci0gICAgaWYgKG1fZmlyc3REYXRhKSB7Ci0gICAgICAgIEZyYW1lTG9hZGVyICpmbCA9IGxvYWRl
ci0+ZnJhbWVMb2FkZXIoKTsKLSAgICAgICAgZmwtPndyaXRlcigpLT5zZXRFbmNvZGluZyhtX3Jl
c3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgZmFsc2UpOwotICAgICAgICBtX2ZpcnN0RGF0YSA9
IGZhbHNlOwotICAgIH0KIH0KIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBpbnQpCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuaAppbmRleCBlNTA2OTAwZDdkNTU5NDgyNGU5YmRlMmY5ZGVlNzZiNmEyMWZkNTJiLi44
NmM1N2FmYmU0YzE3ZjJhMDdlNjIzMmE3YzExYzdlZjc2NDk4MGJiIDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCisrKyBiL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKQEAgLTIzMiw3ICsyMzIsNiBA
QCBwcml2YXRlOgogICAgIEZyYW1lICptX2ZyYW1lOwogICAgIFFXZWJGcmFtZSAqbV93ZWJGcmFt
ZTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgYm9vbCBtX2ZpcnN0RGF0
YTsKIAogICAgIC8vIFBsdWdpbiB2aWV3IHRvIHJlZGlyZWN0IGRhdGEgdG8KICAgICBXZWJDb3Jl
OjpQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5n
ZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGJmYTljY2M1Mjc1ZWE3ODkxMzkxMGY3
MDlhNzMwNjlkNzdmYWZjYmEuLjYzOGJmNzFjZWVlMDM0NmE4M2VmNmQ2M2E1MzI3ZmI0ODdhMTBm
Y2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAKIDIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb3ZlIGNvZGUgZnJvbSBXZWJLaXQtbGF5ZXIgdG8gRG9jdW1lbnRMb2FkZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTY5CisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKworMjAxMC0wOS0xMCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgog
CiAgICAgICAgIE1haW4gcmVzb3VyY2UgYnl0ZXMgc2hvdWxkbid0IGJvdW5jZSB0aHJvdWdoIEZy
YW1lTG9hZGVyCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDg4NmYyM2NiZDc4MjRkMzI5MzM4NzdjYjk3YWQxMjdlZmE4NDlj
YjkuLjFmYjgyN2RhMDYwYTk4NTBlYjFlNWM1MWZlODAzMTE3YTUxNmVlZjkgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC00
OTEsMTEgKzQ5MSw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQcm9ncmVzc0Zp
bmlzaGVkTm90aWZpY2F0aW9uKCkKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0
dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQogewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBnbyB0aHJvdWdoIHRo
ZSBkYXRhIHNvdXJjZS4KLSAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyA9IGxvYWRlci0+
cmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCk7Ci0KICAgICBpZiAoIW1fbWFudWFsTG9hZGVy
KQotICAgICAgICByZWNlaXZlZERhdGEoZGF0YSwgbGVuZ3RoLCB0ZXh0RW5jb2RpbmcpOworICAg
ICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKIAogICAgIGlmICghbV9tYW51
YWxMb2FkZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTUxMiwyMiArNTA5LDYgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBjaGFyKiBkYXQKICAgICBtX21hbnVhbExvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwg
bGVuZ3RoKTsKIH0KIAotLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIG1vdmVkIGlu
dG8gV2ViQ29yZS4KLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY2VpdmVkRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZykKLXsK
LSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBpZiAoIWNvcmVG
cmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gU2V0IHRoZSBlbmNvZGluZy4gVGhpcyBv
bmx5IG5lZWRzIHRvIGJlIGRvbmUgb25jZSwgYnV0IGl0J3MgaGFybWxlc3MgdG8gZG8gaXQgYWdh
aW4gbGF0ZXIuCi0gICAgU3RyaW5nIGVuY29kaW5nID0gY29yZUZyYW1lLT5sb2FkZXIoKS0+ZG9j
dW1lbnRMb2FkZXIoKS0+b3ZlcnJpZGVFbmNvZGluZygpOwotICAgIGJvb2wgdXNlckNob3NlbiA9
ICFlbmNvZGluZy5pc051bGwoKTsKLSAgICBpZiAoZW5jb2RpbmcuaXNOdWxsKCkpCi0gICAgICAg
IGVuY29kaW5nID0gdGV4dEVuY29kaW5nOwotICAgIGNvcmVGcmFtZS0+bG9hZGVyKCktPndyaXRl
cigpLT5zZXRFbmNvZGluZyhlbmNvZGluZywgdXNlckNob3Nlbik7Ci0gICAgY29yZUZyYW1lLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+YWRkRGF0YShkYXRhLCBsZW5ndGgpOwotfQotCiB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKIHsKICAgICAvLyBUZWxsaW5nIHRoZSBmcmFtZSB3ZSByZWNlaXZlZCBzb21lIGRh
dGEgYW5kIHBhc3NpbmcgMCBhcyB0aGUgZGF0YSBpcyBvdXIKZGlmZiAtLWdpdCBhL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA2NDhiNWJmZWU0NTk5MjU5
ZDIyYTJlOTMyYjNlNzcxNjM2YTU2M2ZjLi42ZThlMzU0MTQyNDYxZWQ0OWE3OWEwZjhiZDI1MGIz
ZjU2ZGYxNDc5IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC0xMjYsNyArMTI2LDYgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgog
ICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50KiwgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyKTsKLSAgICB2b2lkIHJlY2VpdmVk
RGF0YShjb25zdCBjaGFyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIFdlYkhpc3Rv
cnkqIHdlYkhpc3RvcnkoKSBjb25zdDsKIAogICAgIFdlYkZyYW1lKiBtX3dlYkZyYW1lOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXgg
NzE4ZmRmY2VhOWQzMWUzNmU1NjMwZDEwNjNkMzQxZGI4MDc1N2MzOC4uYjg5MGM2N2YzOTRkNTU0
NjhkZmFmOWMxNWQ3MDU4NTFkZGEyODRlYyAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTAtMDktMTAg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNvZGUgZnJvbSBXZWJLaXQtbGF5ZXIgdG8g
RG9jdW1lbnRMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ1NTY5CisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6Y29tbWl0dGVk
TG9hZCk6CisKKzIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBNYWluIHJlc291cmNl
IGJ5dGVzIHNob3VsZG4ndCBib3VuY2UgdGhyb3VnaCBGcmFtZUxvYWRlcgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAgYi9XZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAppbmRleCBlYWM1YWYxMGRj
NDg2MzhjNTYxYzllYmNkOTMzYjgyYmRiZDRjYzM1Li45OTlkMmNkYmI5NzdhN2RiYTc5MzdhYWI0
OGNkMDdjYjRjMWFmZDFlIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4LmNwcAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4LmNwcApAQCAtNjE3LDEyICs2MTcsOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V3g6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29u
c3QgYwogewogICAgIGlmICghbV93ZWJGcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
bV9wbHVnaW5WaWV3KSB7Ci0gICAgICAgIEZyYW1lTG9hZGVyKiBmbCA9IGxvYWRlci0+ZnJhbWVM
b2FkZXIoKTsKLSAgICAgICAgZmwtPndyaXRlcigpLT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRl
eHRFbmNvZGluZ05hbWUoKSwgZmFsc2UpOwotICAgICAgICBmbC0+ZG9jdW1lbnRMb2FkZXIoKS0+
YWRkRGF0YShkYXRhLCBsZW5ndGgpOwotICAgIH0KLSAgICAKKyAgICBpZiAoIW1fcGx1Z2luVmll
dykKKyAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxlbmd0aCk7CisKICAgICAvLyBX
ZSByZS1jaGVjayBoZXJlIGFzIHRoZSBwbHVnaW4gY2FuIGhhdmUgYmVlbiBjcmVhdGVkCiAgICAg
aWYgKG1fcGx1Z2luVmlldykgewogICAgICAgICBpZiAoIW1faGFzU2VudFJlc3BvbnNlVG9QbHVn
aW4pIHsKZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggY2ZjYWU0MjdlNWQ2MDBhYjRjZWJlODhhZTMyY2ZlYmM4NzgzMDNiYy4uOWQyM2JhODQz
YTQxODM3ZjE3MzYzOWMyNmRkZTY2M2M3MmUzYjZlMiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOSBAQAogMjAxMC0wOS0x
MCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY29kZSBmcm9tIFdlYktpdC1sYXllciB0
byBEb2N1bWVudExvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDU1NjkKKworICAgICAgICBUaGlzIGNvZGUgbG9va3MgY29weS9wYXN0ZWQgZnJv
bSBNYWMuICBJdCdzIHVuY2xlYXIgd2hldGhlciB3aGV0aGVyIGFsbAorICAgICAgICB0aGUgY29t
cGxleGl0eSBpcyBuZWVkZWQgaGVyZSwgYnV0IEkgZG9uJ3QgaGF2ZSBhIGdvb2Qgd2F5IHRvIGZp
bmQgb3V0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
b21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisKKzIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBN
YWluIHJlc291cmNlIGJ5dGVzIHNob3VsZG4ndCBib3VuY2UgdGhyb3VnaCBGcmFtZUxvYWRlcgpk
aWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTY4OTQ4YjY4NzA0ZGNkOTZlM2JkNDJjOGVlMGU4NGYy
MWJkYWFlMS4uMWJjMWVkNzBiMzE5MjZlYjg4N2MwMDdkZDMyMzcxZDVkYmQzNTI2OSAxMDA2NDQK
LS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC01OTksMTIgKzU5OSwxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiAKIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
ZyA9IGxvYWRlci0+cmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCk7Ci0gICAgCiAgICAgaWYg
KCFtX3BsdWdpblZpZXcpCi0gICAgICAgIHJlY2VpdmVkRGF0YShkYXRhLCBsZW5ndGgsIHRleHRF
bmNvZGluZyk7CisgICAgICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOwogCi0g
ICAgLy8gQ2FsbGluZyByZWNlaXZlZERhdGEgZGlkIG5vdCBjcmVhdGUgdGhlIHBsdWctaW4gdmll
dy4KKyAgICAvLyBDYWxsaW5nIGNvbW1pdERhdGEgZGlkIG5vdCBjcmVhdGUgdGhlIHBsdWctaW4g
dmlldy4KICAgICBpZiAoIW1fcGx1Z2luVmlldykKICAgICAgICAgcmV0dXJuOwogCkBAIC02MjAs
MjMgKzYxOCw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0CiAgICAgbV9wbHVnaW5WaWV3LT5t
YW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotLy8gRklYTUU6IFRo
aXMgZnVuY3Rpb24gc2hvdWxkIGJlIG1vdmVkIGludG8gV2ViQ29yZS4KLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnJlY2VpdmVkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZykKLXsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gbV9m
cmFtZS0+Y29yZUZyYW1lKCk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICAvLyBTZXQgdGhlIGVuY29kaW5nLiBUaGlzIG9ubHkgbmVlZHMgdG8gYmUgZG9u
ZSBvbmNlLCBidXQgaXQncyBoYXJtbGVzcyB0byBkbyBpdCBhZ2FpbiBsYXRlci4KLSAgICBTdHJp
bmcgZW5jb2RpbmcgPSBjb3JlRnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5vdmVy
cmlkZUVuY29kaW5nKCk7Ci0gICAgYm9vbCB1c2VyQ2hvc2VuID0gIWVuY29kaW5nLmlzTnVsbCgp
OwotICAgIGlmIChlbmNvZGluZy5pc051bGwoKSkKLSAgICAgICAgZW5jb2RpbmcgPSB0ZXh0RW5j
b2Rpbmc7Ci0gICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+d3JpdGVyKCktPnNldEVuY29kaW5nKGVu
Y29kaW5nLCB1c2VyQ2hvc2VuKTsKLSAgICAKLSAgICBjb3JlRnJhbWUtPmxvYWRlcigpLT5kb2N1
bWVudExvYWRlcigpLT5hZGREYXRhKGRhdGEsIGxlbmd0aCk7Ci19Ci0KIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogewog
ICAgIGlmICghbV9wbHVnaW5WaWV3KSB7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDk4YTY1MTJjZDRh
NzZmZDMzZjY4Mzk4YWMzM2U4YWRhNTUwNWZkNTcuLmQ2NTJhODFlYWU5MzA4Zjk0NjBlZGEzMWNm
NmUyNDRiZjQ2Y2VkYjcgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yMDMsOCArMjAzLDYgQEAgcHJp
dmF0ZToKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQoY29u
c3QgV1RGOjpTdHJpbmcmIC8qbWltZVR5cGUqLykgY29uc3Q7CiAgICAgCi0gICAgdm9pZCByZWNl
aXZlZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgY29uc3QgV1RGOjpTdHJpbmcm
IHRleHRFbmNvZGluZyk7Ci0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVO
ZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKICAgICAKICAgICBX
ZWJGcmFtZSogbV9mcmFtZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>