<?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>182627</bug_id>
          
          <creation_ts>2018-02-08 14:53:25 -0800</creation_ts>
          <short_desc>[RenderTreeBuilder] Move multicolumn spanner mutation logic to RenderTreeBuilder</short_desc>
          <delta_ts>2018-02-09 07:05:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1397733</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-02-08 14:53:25 -0800</bug_when>
    <thetext>move all mutations to RenderTreeBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397734</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-08 14:53:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/37367284&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397737</commentid>
    <comment_count>2</comment_count>
      <attachid>333427</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-02-08 15:01:38 -0800</bug_when>
    <thetext>Created attachment 333427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397892</commentid>
    <comment_count>3</comment_count>
      <attachid>333427</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-02-09 02:35:51 -0800</bug_when>
    <thetext>Comment on attachment 333427
Patch

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

&gt; Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp:255
&gt; +static bool gShiftingSpanner = false;

Since the builder is stateful this can be later made a member variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397926</commentid>
    <comment_count>4</comment_count>
      <attachid>333427</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-09 07:05:19 -0800</bug_when>
    <thetext>Comment on attachment 333427
Patch

Clearing flags on attachment: 333427

Committed r228320: &lt;https://trac.webkit.org/changeset/228320&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397927</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-09 07:05:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333427</attachid>
            <date>2018-02-08 15:01:38 -0800</date>
            <delta_ts>2018-02-09 07:05:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182627-20180208150137.patch</filename>
            <type>text/plain</type>
            <size>31949</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4Mjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRmYjdkMDQxMWFkYmE0
OWZjMmJlYjVkMzUyM2QzZTc4MjlmNmU5NS4uYTRmMzMyODQ0YWQ4ZmYyYmMyYjA4ZDNjMGU0Y2Iz
ODg1NTZmNmUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE4LTAyLTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlbmRlclRyZWVCdWlsZGVy
XSBNb3ZlIG11bHRpY29sdW1uIHNwYW5uZXIgbXV0YXRpb24gbG9naWMgdG8gUmVuZGVyVHJlZUJ1
aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MjYyNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzczNjcyODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBzcGFubmVyIHRyaWdnZXJlZCBt
dXRhdGlvbiBsb2dpYyB0byBSZW5kZXJUcmVlQnVpbGRlci4KKworICAgICAgICBObyBjaGFuZ2Ug
aW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVk
Rmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5GbG93Ojppc0NvbHVtblNwYW5uaW5n
RGVzY2VuZGFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kU2V0UmVuZGVyaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRDb2x1bW5TcGFubmVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnNwYW5uZXJQbGFjZWhvZGVyQ2FuZGlkYXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uRmxvdzo6cHJvY2Vzc1Bvc3Np
YmxlU3Bhbm5lckRlc2NlbmRhbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TXVsdGlDb2x1bW5GbG93OjpmcmFnbWVudGVkRmxvd0Rlc2NlbmRhbnRJbnNlcnRlZCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjppbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxk
ZXI6Om11bHRpQ29sdW1uRGVzY2VuZGFudEluc2VydGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpm
aW5kU2V0UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnNwYW5uZXJQbGFjZWhvZGVyQ2Fu
ZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRDb2x1bW5TcGFubmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6bXVsdGlDb2x1bW5E
ZXNjZW5kYW50SW5zZXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6
Ok11bHRpQ29sdW1uOjpwcm9jZXNzUG9zc2libGVTcGFubmVyRGVzY2VuZGFudCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uaDoKKwog
MjAxOC0wMi0wOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
VXNlIGludmFsaWRhdGlvbiBydWxlc2V0cyBmb3IgYXR0cmlidXRlIHNlbGVjdG9ycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuaAppbmRleCBjZGQ0
M2NjZTFhZWQyYzAxMGFkNGRmYTg2YmIzZjk0ZmZlMWRlYTgwLi5mNGIzNTgzYTZhNjU2MDExZWVi
ZGExZDJiMGQyMzY3ZGE2ZDZkMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhZ21lbnRlZEZsb3cuaApAQCAtODYsOCArODYsNiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgc2luZ2xlRnJhZ21lbnRIYXNVbmlmb3JtTG9naWNhbEhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICAvLyBDYWxsZWQgd2hlbiBhIGRlc2NlbmRhbnQg
b2YgdGhlIGZsb3cgdGhyZWFkIGhhcyBiZWVuIGluc2VydGVkLgotICAgIHZpcnR1YWwgdm9pZCBm
cmFnbWVudGVkRmxvd0Rlc2NlbmRhbnRJbnNlcnRlZChSZW5kZXJPYmplY3QmKSB7IH0KICAgICAv
LyBDYWxsZWQgd2hlbiBhIHNpYmxpbmcgb3IgZGVzY2VuZGFudCBvZiB0aGUgZmxvdyB0aHJlYWQg
aXMgYWJvdXQgdG8gYmUgcmVtb3ZlZC4KICAgICB2aXJ0dWFsIHZvaWQgZnJhZ21lbnRlZEZsb3dS
ZWxhdGl2ZVdpbGxCZVJlbW92ZWQoUmVuZGVyT2JqZWN0JikgeyB9CiAgICAgLy8gQ2FsbGVkIHdo
ZW4gYSBkZXNjZW5kYW50IGJveCdzIGxheW91dCBpcyBmaW5pc2hlZCBhbmQgaXQgaGFzIGJlZW4g
cG9zaXRpb25lZCB3aXRoaW4gaXRzIGNvbnRhaW5lci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHAKaW5kZXggZjRkMGEzNWIyNmZhMWU3
ZjI0YmYxZWRiYWQ1NWI2ZTQ1ZjAyYmM5Ny4uYTIzNDU2MmVjNjJiYzNhZmFkZmQ4M2M1NWIyMGVl
MjgxMzllODY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvdy5jcHAKQEAgLTQwLDggKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyTXVsdGlDb2x1bW5GbG93KTsKIAot
Ym9vbCBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OmdTaGlmdGluZ1NwYW5uZXIgPSBmYWxzZTsKLQog
UmVuZGVyTXVsdGlDb2x1bW5GbG93OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3coRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhZ21lbnRlZEZsb3co
ZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9zcGFubmVyTWFwKHN0ZDo6bWFrZV91
bmlxdWU8U3Bhbm5lck1hcD4oKSkKQEAgLTEzNSwxNCArMTMzLDkgQEAgdm9pZCBSZW5kZXJNdWx0
aUNvbHVtbkZsb3c6OmxheW91dCgpCiAgICAgbV9sYXN0U2V0V29ya2VkT24gPSBudWxscHRyOwog
fQogCi1zdGF0aWMgUmVuZGVyTXVsdGlDb2x1bW5TZXQqIGZpbmRTZXRSZW5kZXJpbmcoY29uc3Qg
UmVuZGVyTXVsdGlDb2x1bW5GbG93JiBmcmFnbWVudGVkRmxvdywgY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlcikKK2Jvb2wgUmVuZGVyTXVsdGlDb2x1bW5GbG93Ojppc0NvbHVtblNwYW5uaW5n
RGVzY2VuZGFudChjb25zdCBSZW5kZXJCb3gmIGRlc2NlbmRhbnRCb3gpIGNvbnN0CiB7Ci0gICAg
Ly8gRmluZCB0aGUgc2V0IGluc2lkZSB3aGljaCB0aGUgc3BlY2lmaWVkIHJlbmRlcmVyIHdvdWxk
IGJlIHJlbmRlcmVkLgotICAgIGZvciAoYXV0byogbXVsdGljb2xTZXQgPSBmcmFnbWVudGVkRmxv
dy5maXJzdE11bHRpQ29sdW1uU2V0KCk7IG11bHRpY29sU2V0OyBtdWx0aWNvbFNldCA9IG11bHRp
Y29sU2V0LT5uZXh0U2libGluZ011bHRpQ29sdW1uU2V0KCkpIHsKLSAgICAgICAgaWYgKG11bHRp
Y29sU2V0LT5jb250YWluc1JlbmRlcmVySW5GcmFnbWVudGVkRmxvdyhyZW5kZXJlcikpCi0gICAg
ICAgICAgICByZXR1cm4gbXVsdGljb2xTZXQ7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBkZXNjZW5kYW50Qm94LnN0eWxlKCkuY29sdW1uU3BhbigpID09IENvbHVtblNw
YW5BbGw7CiB9CiAKIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93OjphZGRGcmFnbWVudFRvVGhy
ZWFkKFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBSZW5kZXJGcmFnbWVudENvbnRhaW5lcikKQEAg
LTE2NywxOTggKzE2MCwxMSBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uRmxvdzo6d2lsbEJlUmVt
b3ZlZEZyb21UcmVlKCkKICAgICBSZW5kZXJGcmFnbWVudGVkRmxvdzo6d2lsbEJlUmVtb3ZlZEZy
b21UcmVlKCk7CiB9CiAKLWJvb2wgUmVuZGVyTXVsdGlDb2x1bW5GbG93Ojppc0NvbHVtblNwYW5u
aW5nRGVzY2VuZGFudChjb25zdCBSZW5kZXJCb3gmIGRlc2NlbmRhbnRCb3gpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGRlc2NlbmRhbnRCb3guc3R5bGUoKS5jb2x1bW5TcGFuKCkgPT0gQ29sdW1uU3Bh
bkFsbDsKLX0KLQotc3RhdGljIGJvb2wgaXNWYWxpZENvbHVtblNwYW5uZXIoY29uc3QgUmVuZGVy
TXVsdGlDb2x1bW5GbG93JiBmcmFnbWVudGVkRmxvdywgY29uc3QgUmVuZGVyT2JqZWN0JiBkZXNj
ZW5kYW50KQotewotICAgIC8vIFdlIGFzc3VtZSB0aGF0IHdlJ3JlIGluc2lkZSB0aGUgZmxvdyB0
aHJlYWQuIFRoaXMgZnVuY3Rpb24gaXMgbm90IHRvIGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAg
QVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YoJmZyYWdtZW50ZWRGbG93KSk7Ci0gICAg
Ly8gRmlyc3QgbWFrZSBzdXJlIHRoYXQgdGhlIHJlbmRlcmVyIGl0c2VsZiBoYXMgdGhlIHJpZ2h0
IHByb3BlcnRpZXMgZm9yIGJlY29taW5nIGEgc3Bhbm5lci4KLSAgICBpZiAoIWlzPFJlbmRlckJv
eD4oZGVzY2VuZGFudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIGRlc2Nl
bmRhbnRCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KGRlc2NlbmRhbnQpOwotICAgIGlmIChkZXNj
ZW5kYW50Qm94LmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKCFmcmFnbWVudGVkRmxvdy5pc0NvbHVtblNwYW5uaW5nRGVz
Y2VuZGFudChkZXNjZW5kYW50Qm94KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0
byogcGFyZW50ID0gZGVzY2VuZGFudEJveC5wYXJlbnQoKTsKLSAgICBpZiAoIWlzPFJlbmRlckJs
b2NrRmxvdz4oKnBhcmVudCkgfHwgcGFyZW50LT5jaGlsZHJlbklubGluZSgpKSB7Ci0gICAgICAg
IC8vIE5lZWRzIHRvIGJlIGJsb2NrLWxldmVsLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIAotICAgIC8vIFdlIG5lZWQgdG8gaGF2ZSB0aGUgZmxvdyB0aHJlYWQgYXMgdGhlIGNv
bnRhaW5pbmcgYmxvY2suIEEgc3Bhbm5lciBjYW5ub3QgYnJlYWsgb3V0IG9mIHRoZSBmbG93IHRo
cmVhZC4KLSAgICBhdXRvKiBlbmNsb3NpbmdGcmFnbWVudGVkRmxvdyA9IGRlc2NlbmRhbnRCb3gu
ZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKTsKLSAgICBpZiAoZW5jbG9zaW5nRnJhZ21lbnRlZEZs
b3cgIT0gJmZyYWdtZW50ZWRGbG93KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBU
aGlzIGxvb2tzIGxpa2UgYSBzcGFubmVyLCBidXQgaWYgd2UncmUgaW5zaWRlIHNvbWV0aGluZyB1
bmJyZWFrYWJsZSwgaXQncyBub3QgdG8gYmUgdHJlYXRlZCBhcyBvbmUuCi0gICAgZm9yIChhdXRv
KiBhbmNlc3RvciA9IGRlc2NlbmRhbnRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9yOyBh
bmNlc3RvciA9IGFuY2VzdG9yLT5jb250YWluaW5nQmxvY2soKSkgewotICAgICAgICBpZiAoaXM8
UmVuZGVyVmlldz4oKmFuY2VzdG9yKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgaWYgKGlzPFJlbmRlckZyYWdtZW50ZWRGbG93PigqYW5jZXN0b3IpKSB7Ci0gICAgICAgICAg
ICAvLyBEb24ndCBhbGxvdyBhbnkgaW50ZXJ2ZW5pbmcgbm9uLW11bHRpY29sIGZyYWdtZW50YXRp
b24gY29udGV4dHMuIFRoZSBzcGVjIGRvZXNuJ3Qgc2F5Ci0gICAgICAgICAgICAvLyBhbnl0aGlu
ZyBhYm91dCBkaXNhbGxvd2luZyB0aGlzLCBidXQgaXQncyBqdXN0IGdvaW5nIHRvIGJlIHRvbyBj
b21wbGljYXRlZCB0bwotICAgICAgICAgICAgLy8gaW1wbGVtZW50IChub3QgdG8gbWVudGlvbiBz
cGVjaWZ5IGJlaGF2aW9yKS4KLSAgICAgICAgICAgIHJldHVybiBhbmNlc3RvciA9PSAmZnJhZ21l
bnRlZEZsb3c7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gVGhpcyBhbmNlc3RvciAoZGVzY2VuZGVu
dCBvZiB0aGUgZnJhZ21lbnRlZEZsb3cpIHdpbGwgY3JlYXRlIGNvbHVtbnMgbGF0ZXIuIFRoZSBz
cGFubmVyIGJlbG9uZ3MgdG8gaXQuCi0gICAgICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+KCph
bmNlc3RvcikgJiYgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqYW5jZXN0b3IpLndpbGxDcmVh
dGVDb2x1bW5zKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIEFTU0VSVChh
bmNlc3Rvci0+c3R5bGUoKS5jb2x1bW5TcGFuKCkgIT0gQ29sdW1uU3BhbkFsbCB8fCAhaXNWYWxp
ZENvbHVtblNwYW5uZXIoZnJhZ21lbnRlZEZsb3csICphbmNlc3RvcikpOwotICAgICAgICBpZiAo
YW5jZXN0b3ItPmlzVW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLXN0YXRpYyBSZW5kZXJPYmplY3QqIHNwYW5uZXJQbGFjZWhvZGVyQ2FuZGlk
YXRlKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlck11bHRpQ29sdW1u
RmxvdyYgc3RheVdpdGhpbikKLXsKLSAgICAvLyBTcGFubmVyIGNhbmRpZGF0ZSBpcyBhIG5leHQg
c2libGluZy9hbmNlc3RvcidzIG5leHQgY2hpbGQgd2l0aGluIHRoZSBmbG93IHRocmVhZCBhbmQK
LSAgICAvLyBpdCBpcyBpbiB0aGUgc2FtZSBpbmZsb3cvb3V0LW9mLWZsb3cgbGF5b3V0IGNvbnRl
eHQuCi0gICAgaWYgKHJlbmRlcmVyLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIEFTU0VSVChyZW5kZXJlci5pc0Rlc2NlbmRhbnRPZigmc3Rh
eVdpdGhpbikpOwotICAgIGF1dG8qIGN1cnJlbnQgPSAmcmVuZGVyZXI7Ci0gICAgd2hpbGUgKHRy
dWUpIHsKLSAgICAgICAgLy8gU2tpcCB0byB0aGUgZmlyc3QgaW4tZmxvdyBzaWJsaW5nLgotICAg
ICAgICBhdXRvKiBuZXh0U2libGluZyA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAg
IHdoaWxlIChuZXh0U2libGluZyAmJiBuZXh0U2libGluZy0+aXNPdXRPZkZsb3dQb3NpdGlvbmVk
KCkpCi0gICAgICAgICAgICBuZXh0U2libGluZyA9IG5leHRTaWJsaW5nLT5uZXh0U2libGluZygp
OwotICAgICAgICBpZiAobmV4dFNpYmxpbmcpCi0gICAgICAgICAgICByZXR1cm4gbmV4dFNpYmxp
bmc7Ci0gICAgICAgIC8vIE5vIHNpYmxpbmcgY2FuZGlkYXRlLCBqdW1wIHRvIHRoZSBwYXJlbnQg
YW5kIGNoZWNrIGl0cyBzaWJsaW5ncy4KLSAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVu
dCgpOwotICAgICAgICBpZiAoIWN1cnJlbnQgfHwgY3VycmVudCA9PSAmc3RheVdpdGhpbiB8fCBj
dXJyZW50LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotUmVuZGVyT2JqZWN0KiBSZW5k
ZXJNdWx0aUNvbHVtbkZsb3c6OnByb2Nlc3NQb3NzaWJsZVNwYW5uZXJEZXNjZW5kYW50KFJlbmRl
ck9iamVjdComIHN1YnRyZWVSb290LCBSZW5kZXJPYmplY3QmIGRlc2NlbmRhbnQpCi17Ci0gICAg
UmVuZGVyQmxvY2tGbG93KiBtdWx0aWNvbENvbnRhaW5lciA9IG11bHRpQ29sdW1uQmxvY2tGbG93
KCk7Ci0gICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXJJbkZyYWdtZW50ZWRGbG93ID0gc3Bh
bm5lclBsYWNlaG9kZXJDYW5kaWRhdGUoZGVzY2VuZGFudCwgKnRoaXMpOwotICAgIFJlbmRlck9i
amVjdCogaW5zZXJ0QmVmb3JlTXVsdGljb2xDaGlsZCA9IG51bGxwdHI7Ci0gICAgUmVuZGVyT2Jq
ZWN0KiBuZXh0RGVzY2VuZGFudCA9ICZkZXNjZW5kYW50OwotCi0gICAgaWYgKGlzVmFsaWRDb2x1
bW5TcGFubmVyKCp0aGlzLCBkZXNjZW5kYW50KSkgewotICAgICAgICAvLyBUaGlzIGlzIGEgc3Bh
bm5lciAoY29sdW1uLXNwYW46YWxsKS4gU3VjaCByZW5kZXJlcnMgYXJlIG1vdmVkIGZyb20gd2hl
cmUgdGhleSB3b3VsZAotICAgICAgICAvLyBvdGhlcndpc2Ugb2NjdXIgaW4gdGhlIHJlbmRlciB0
cmVlIHRvIGJlY29taW5nIGEgZGlyZWN0IGNoaWxkIG9mIHRoZSBtdWx0aWNvbCBjb250YWluZXIs
Ci0gICAgICAgIC8vIHNvIHRoYXQgdGhleSBsaXZlIGFtb25nIHRoZSBjb2x1bW4gc2V0cy4gVGhp
cyBzaW1wbGlmaWVzIHRoZSBsYXlvdXQgaW1wbGVtZW50YXRpb24sIGFuZAotICAgICAgICAvLyBi
YXNpY2FsbHkganVzdCByZWxpZXMgb24gcmVndWxhciBibG9jayBsYXlvdXQgZG9uZSBieSB0aGUg
UmVuZGVyQmxvY2tGbG93IHRoYXQKLSAgICAgICAgLy8gZXN0YWJsaXNoZXMgdGhlIG11bHRpY29s
IGNvbnRhaW5lci4KLSAgICAgICAgUmVuZGVyQmxvY2tGbG93KiBjb250YWluZXIgPSBkb3duY2Fz
dDxSZW5kZXJCbG9ja0Zsb3c+KGRlc2NlbmRhbnQucGFyZW50KCkpOwotICAgICAgICBSZW5kZXJN
dWx0aUNvbHVtblNldCogc2V0VG9TcGxpdCA9IG51bGxwdHI7Ci0gICAgICAgIGlmIChuZXh0UmVu
ZGVyZXJJbkZyYWdtZW50ZWRGbG93KSB7Ci0gICAgICAgICAgICBzZXRUb1NwbGl0ID0gZmluZFNl
dFJlbmRlcmluZygqdGhpcywgZGVzY2VuZGFudCk7Ci0gICAgICAgICAgICBpZiAoc2V0VG9TcGxp
dCkgewotICAgICAgICAgICAgICAgIHNldFRvU3BsaXQtPnNldE5lZWRzTGF5b3V0KCk7Ci0gICAg
ICAgICAgICAgICAgaW5zZXJ0QmVmb3JlTXVsdGljb2xDaGlsZCA9IHNldFRvU3BsaXQtPm5leHRT
aWJsaW5nKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gTW92aW5nIGEg
c3Bhbm5lcidzIHJlbmRlcmVyIHNvIHRoYXQgaXQgYmVjb21lcyBhIHNpYmxpbmcgb2YgdGhlIGNv
bHVtbiBzZXRzIHJlcXVpcmVzIHVzCi0gICAgICAgIC8vIHRvIGluc2VydCBhbiBhbm9ueW1vdXMg
cGxhY2Vob2xkZXIgaW4gdGhlIHRyZWUgd2hlcmUgdGhlIHNwYW5uZXIncyByZW5kZXJlciBvdGhl
cndpc2UKLSAgICAgICAgLy8gd291bGQgaGF2ZSBiZWVuLiBUaGlzIGlzIG5lZWRlZCBmb3IgYSB0
d28gcmVhc29uczogV2UgbmVlZCBhIHdheSBvZiBzZXBhcmF0aW5nIGlubGluZQotICAgICAgICAv
LyBjb250ZW50IGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNwYW5uZXIsIHNvIHRoYXQgaXQgYmVjb21l
cyBzZXBhcmF0ZSBsaW5lIGJveGVzLiBTZWNvbmRseSwKLSAgICAgICAgLy8gdGhpcyBwbGFjZWhv
bGRlciBzZXJ2ZXMgYXMgYSBicmVhayBwb2ludCBmb3IgY29sdW1uIHNldHMsIHNvIHRoYXQsIHdo
ZW4gZW5jb3VudGVyZWQsIHdlCi0gICAgICAgIC8vIGVuZCBmbG93aW5nIG9uZSBjb2x1bW4gc2V0
IGFuZCBtb3ZlIHRvIHRoZSBuZXh0IG9uZS4KLSAgICAgICAgYXV0byBuZXdQbGFjZWhvbGRlciA9
IFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpjcmVhdGVBbm9ueW1vdXMoKnRo
aXMsIGRvd25jYXN0PFJlbmRlckJveD4oZGVzY2VuZGFudCksIGNvbnRhaW5lci0+c3R5bGUoKSk7
Ci0gICAgICAgIGF1dG8mIHBsYWNlaG9sZGVyID0gKm5ld1BsYWNlaG9sZGVyOwotICAgICAgICBS
ZW5kZXJUcmVlQnVpbGRlcjo6Y3VycmVudCgpLT5pbnNlcnRDaGlsZCgqY29udGFpbmVyLCBXVEZN
b3ZlKG5ld1BsYWNlaG9sZGVyKSwgZGVzY2VuZGFudC5uZXh0U2libGluZygpKTsKLSAgICAgICAg
YXV0byB0YWtlbkRlc2NlbmRhbnQgPSBjb250YWluZXItPnRha2VDaGlsZCgqUmVuZGVyVHJlZUJ1
aWxkZXI6OmN1cnJlbnQoKSwgZGVzY2VuZGFudCk7Ci0gICAgICAgIAotICAgICAgICAvLyBUaGlz
IGlzIGEgZ3VhcmQgdG8gc3RvcCBhbiBhbmNlc3RvciBmbG93IHRocmVhZCBmcm9tIHByb2Nlc3Np
bmcgdGhlIHNwYW5uZXIuCi0gICAgICAgIGdTaGlmdGluZ1NwYW5uZXIgPSB0cnVlOwotICAgICAg
ICBSZW5kZXJUcmVlQnVpbGRlcjo6Y3VycmVudCgpLT5pbnNlcnRDaGlsZFRvUmVuZGVyQmxvY2so
Km11bHRpY29sQ29udGFpbmVyLCBXVEZNb3ZlKHRha2VuRGVzY2VuZGFudCksIGluc2VydEJlZm9y
ZU11bHRpY29sQ2hpbGQpOwotICAgICAgICBnU2hpZnRpbmdTcGFubmVyID0gZmFsc2U7Ci0gICAg
ICAgIAotICAgICAgICAvLyBUaGUgc3Bhbm5lciBoYXMgbm93IGJlZW4gbW92ZWQgb3V0IGZyb20g
dGhlIGZsb3cgdGhyZWFkLCBidXQgd2UgZG9uJ3Qgd2FudCB0bwotICAgICAgICAvLyBleGFtaW5l
IGl0cyBjaGlsZHJlbiBhbnl3YXkuIFRoZXkgYXJlIGFsbCBwYXJ0IG9mIHRoZSBzcGFubmVyIGFu
ZCBzaG91bGRuJ3QgdHJpZ2dlcgotICAgICAgICAvLyBjcmVhdGlvbiBvZiBjb2x1bW4gc2V0cyBv
ciBhbnl0aGluZyBsaWtlIHRoYXQuIENvbnRpbnVlIGF0IGl0cyBvcmlnaW5hbCBwb3NpdGlvbiBp
bgotICAgICAgICAvLyB0aGUgdHJlZSwgaS5lLiB3aGVyZSB0aGUgcGxhY2Vob2xkZXIgd2FzIGp1
c3QgcHV0LgotICAgICAgICBpZiAoc3VidHJlZVJvb3QgPT0gJmRlc2NlbmRhbnQpCi0gICAgICAg
ICAgICBzdWJ0cmVlUm9vdCA9ICZwbGFjZWhvbGRlcjsKLSAgICAgICAgbmV4dERlc2NlbmRhbnQg
PSAmcGxhY2Vob2xkZXI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gVGhpcyBpcyByZWd1bGFy
IG11bHRpY29sIGNvbnRlbnQsIGkuZS4gbm90IHBhcnQgb2YgYSBzcGFubmVyLgotICAgICAgICBp
ZiAoaXM8UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI+KG5leHRSZW5kZXJlcklu
RnJhZ21lbnRlZEZsb3cpKSB7Ci0gICAgICAgICAgICAvLyBJbnNlcnRlZCByaWdodCBiZWZvcmUg
YSBzcGFubmVyLiBJcyB0aGVyZSBhIHNldCBmb3IgdXMgdGhlcmU/Ci0gICAgICAgICAgICBSZW5k
ZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciYgcGxhY2Vob2xkZXIgPSBkb3duY2FzdDxS
ZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcj4oKm5leHRSZW5kZXJlckluRnJhZ21l
bnRlZEZsb3cpOwotICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcHJldmlvdXMgPSBwbGFj
ZWhvbGRlci5zcGFubmVyKCktPnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGlzPFJlbmRlck11bHRpQ29sdW1uU2V0PigqcHJldmlvdXMpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV4dERlc2NlbmRhbnQ7IC8vIFRoZXJlJ3MgYWxyZWFkeSBhIHNldCB0aGVy
ZS4gTm90aGluZyB0byBkby4KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluc2VydEJlZm9y
ZU11bHRpY29sQ2hpbGQgPSBwbGFjZWhvbGRlci5zcGFubmVyKCk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoUmVuZGVyTXVsdGlDb2x1bW5TZXQqIGxhc3RTZXQgPSBsYXN0TXVsdGlDb2x1bW5TZXQoKSkg
ewotICAgICAgICAgICAgLy8gVGhpcyBjaGlsZCBpcyBub3QgYW4gaW1tZWRpYXRlIHByZWRlY2Vz
c29yIG9mIGEgc3Bhbm5lciwgd2hpY2ggbWVhbnMgdGhhdCBpZiB0aGlzCi0gICAgICAgICAgICAv
LyBjaGlsZCBwcmVjZWRlcyBhIHNwYW5uZXIgYXQgYWxsLCB0aGVyZSBoYXMgdG8gYmUgYSBjb2x1
bW4gc2V0IGNyZWF0ZWQgZm9yIHVzIHRoZXJlCi0gICAgICAgICAgICAvLyBhbHJlYWR5LiBJZiBp
dCBkb2Vzbid0IHByZWNlZGUgYW55IHNwYW5uZXIgYXQgYWxsLCBvbiB0aGUgb3RoZXIgaGFuZCwg
d2UgbmVlZCBhCi0gICAgICAgICAgICAvLyBjb2x1bW4gc2V0IGF0IHRoZSBlbmQgb2YgdGhlIG11
bHRpY29sIGNvbnRhaW5lci4gV2UgZG9uJ3QgcmVhbGx5IGNoZWNrIGhlcmUgaWYgdGhlCi0gICAg
ICAgICAgICAvLyBjaGlsZCBpbnNlcnRlZCBwcmVjZWRlcyBhbnkgc3Bhbm5lciBvciBub3QgKGFz
IHRoYXQncyBhbiBleHBlbnNpdmUgb3BlcmF0aW9uKS4gSnVzdAotICAgICAgICAgICAgLy8gbWFr
ZSBzdXJlIHdlIGhhdmUgYSBjb2x1bW4gc2V0IGF0IHRoZSBlbmQuIEl0J3Mgbm8gYmlnIGRlYWwg
aWYgaXQgcmVtYWlucyB1bnVzZWQuCi0gICAgICAgICAgICBpZiAoIWxhc3RTZXQtPm5leHRTaWJs
aW5nKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5leHREZXNjZW5kYW50OwotICAgICAgICB9
Ci0gICAgfQotICAgIC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGNvbHVtbiBzZXQgd2hlbiB0aGVy
ZSdzIG5vIHNldCBhbHJlYWR5IGNyZWF0ZWQuIFdlIGFsc28gYWx3YXlzIGluc2VydAotICAgIC8v
IGFub3RoZXIgY29sdW1uIHNldCBhZnRlciBhIHNwYW5uZXIuIEV2ZW4gaWYgaXQgdHVybnMgb3V0
IHRoYXQgdGhlcmUgYXJlIG5vIHJlbmRlcmVycwotICAgIC8vIGZvbGxvd2luZyB0aGUgc3Bhbm5l
ciwgdGhlcmUgbWF5IGJlIGJvdHRvbSBtYXJnaW5zIHRoZXJlLCB3aGljaCB0YWtlIHVwIHNwYWNl
LgotICAgIGF1dG8gbmV3U2V0ID0gY3JlYXRlTXVsdGlDb2x1bW5TZXQoUmVuZGVyU3R5bGU6OmNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkobXVsdGljb2xDb250YWluZXItPnN0eWxlKCks
IEJMT0NLKSk7Ci0gICAgbmV3U2V0LT5pbml0aWFsaXplU3R5bGUoKTsKLSAgICBhdXRvJiBzZXQg
PSAqbmV3U2V0OwotICAgIFJlbmRlclRyZWVCdWlsZGVyOjpjdXJyZW50KCktPmluc2VydENoaWxk
VG9SZW5kZXJCbG9jaygqbXVsdGljb2xDb250YWluZXIsIFdURk1vdmUobmV3U2V0KSwgaW5zZXJ0
QmVmb3JlTXVsdGljb2xDaGlsZCk7Ci0gICAgaW52YWxpZGF0ZUZyYWdtZW50cygpOwotCi0gICAg
Ly8gV2UgY2Fubm90IGhhbmRsZSBpbW1lZGlhdGUgY29sdW1uIHNldCBzaWJsaW5ncyBhdCB0aGUg
bW9tZW50IChhbmQgdGhlcmUncyBubyBuZWVkIGZvcgotICAgIC8vIGl0LCBlaXRoZXIpLiBUaGVy
ZSBoYXMgdG8gYmUgYXQgbGVhc3Qgb25lIHNwYW5uZXIgc2VwYXJhdGluZyB0aGVtLgotICAgIEFT
U0VSVF9VTlVTRUQoc2V0LCAhcHJldmlvdXNDb2x1bW5TZXRPclNwYW5uZXJTaWJsaW5nT2YoJnNl
dCkgfHwgIXByZXZpb3VzQ29sdW1uU2V0T3JTcGFubmVyU2libGluZ09mKCZzZXQpLT5pc1JlbmRl
ck11bHRpQ29sdW1uU2V0KCkpOwotICAgIEFTU0VSVCghbmV4dENvbHVtblNldE9yU3Bhbm5lclNp
YmxpbmdPZigmc2V0KSB8fCAhbmV4dENvbHVtblNldE9yU3Bhbm5lclNpYmxpbmdPZigmc2V0KS0+
aXNSZW5kZXJNdWx0aUNvbHVtblNldCgpKTsKLSAgICAKLSAgICByZXR1cm4gbmV4dERlc2NlbmRh
bnQ7Ci19Ci0KIFJlbmRlclB0cjxSZW5kZXJNdWx0aUNvbHVtblNldD4gUmVuZGVyTXVsdGlDb2x1
bW5GbG93OjpjcmVhdGVNdWx0aUNvbHVtblNldChSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNdWx0aUNvbHVtblNldD4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKIH0KIAotdm9pZCBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OmZyYWdtZW50ZWRG
bG93RGVzY2VuZGFudEluc2VydGVkKFJlbmRlck9iamVjdCYgbmV3RGVzY2VuZGFudCkKLXsKLSAg
ICBpZiAoZ1NoaWZ0aW5nU3Bhbm5lciB8fCBuZXdEZXNjZW5kYW50LmlzSW5GbG93UmVuZGVyRnJh
Z21lbnRlZEZsb3coKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogc3VidHJlZVJvb3Qg
PSAmbmV3RGVzY2VuZGFudDsKLSAgICBhdXRvKiBkZXNjZW5kYW50ID0gc3VidHJlZVJvb3Q7Ci0g
ICAgd2hpbGUgKGRlc2NlbmRhbnQpIHsKLSAgICAgICAgLy8gU2tpcCBuZXN0ZWQgbXVsdGljb2x1
bW4gZmxvd3MuCi0gICAgICAgIGlmIChpczxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+KCpkZXNjZW5k
YW50KSkgewotICAgICAgICAgICAgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5leHRTaWJsaW5n
KCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXM8UmVu
ZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI+KCpkZXNjZW5kYW50KSkgewotICAgICAg
ICAgICAgLy8gQSBzcGFubmVyJ3MgcGxhY2Vob2xkZXIgaGFzIGJlZW4gaW5zZXJ0ZWQuIFRoZSBh
Y3R1YWwgc3Bhbm5lciByZW5kZXJlciBpcyBtb3ZlZCBmcm9tCi0gICAgICAgICAgICAvLyB3aGVy
ZSBpdCB3b3VsZCBvdGhlcndpc2Ugb2NjdXIgKGlmIGl0IHdlcmVuJ3QgYSBzcGFubmVyKSB0byBi
ZWNvbWluZyBhIHNpYmxpbmcgb2YgdGhlCi0gICAgICAgICAgICAvLyBjb2x1bW4gc2V0cy4KLSAg
ICAgICAgICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyJiBwbGFjZWhvbGRl
ciA9IGRvd25jYXN0PFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyPigqZGVzY2Vu
ZGFudCk7Ci0gICAgICAgICAgICBBU1NFUlQoIXNwYW5uZXJNYXAoKS5nZXQocGxhY2Vob2xkZXIu
c3Bhbm5lcigpKSk7Ci0gICAgICAgICAgICBzcGFubmVyTWFwKCkuYWRkKHBsYWNlaG9sZGVyLnNw
YW5uZXIoKSwgbWFrZVdlYWtQdHIoZG93bmNhc3Q8UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxh
Y2Vob2xkZXI+KGRlc2NlbmRhbnQpKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIXBsYWNlaG9sZGVy
LmZpcnN0Q2hpbGQoKSk7IC8vIFRoZXJlIHNob3VsZCBiZSBubyBjaGlsZHJlbiBoZXJlLCBidXQg
aWYgdGhlcmUgYXJlLCB3ZSBvdWdodCB0byBza2lwIHRoZW0uCi0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgZGVzY2VuZGFudCA9IHByb2Nlc3NQb3NzaWJsZVNwYW5uZXJEZXNjZW5kYW50KHN1
YnRyZWVSb290LCAqZGVzY2VuZGFudCk7Ci0gICAgICAgIGlmIChkZXNjZW5kYW50KQotICAgICAg
ICAgICAgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5leHRJblByZU9yZGVyKHN1YnRyZWVSb290
KTsKLSAgICB9Ci19Ci0KIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93OjpoYW5kbGVTcGFubmVy
UmVtb3ZhbChSZW5kZXJPYmplY3QmIHNwYW5uZXIpCiB7CiAgICAgLy8gVGhlIHBsYWNlaG9sZGVy
IG1heSBhbHJlYWR5IGhhdmUgYmVlbiByZW1vdmVkLCBidXQgaWYgaXQgaGFzbid0LCBkbyBzbyBu
b3cuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5GbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93
LmgKaW5kZXggYmQ2YmY1MGEwZjVmOGZkZjY0NGVhODU2ZGEzZmFhM2Q3MDI3OGI4MC4uMzRkN2Vj
YjA0NTJhNzU2ZDNmZjMwZDI1ZDZlNjNmNDc0NWU4NzUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuaApAQCAtMTAwLDcgKzEwMCw2IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0NvbHVtblNwYW5uaW5nRGVzY2VuZGFudChj
b25zdCBSZW5kZXJCb3gmKSBjb25zdDsKIAotcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlck11bHRpQ29sdW1uU2V0PiBjcmVhdGVNdWx0aUNvbHVtblNldChSZW5kZXJTdHls
ZSYmKTsKIAogcHJpdmF0ZToKQEAgLTEwOCw3ICsxMDcsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFkZEZyYWdtZW50
VG9UaHJlYWQoUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxCZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgZnJhZ21lbnRlZEZsb3dE
ZXNjZW5kYW50SW5zZXJ0ZWQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFn
bWVudGVkRmxvd1JlbGF0aXZlV2lsbEJlUmVtb3ZlZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGZyYWdtZW50ZWRGbG93RGVzY2VuZGFudEJveExhaWRPdXQoUmVuZGVyQm94Kikg
b3ZlcnJpZGU7CiAgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2Fs
SGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBj
b25zdCBvdmVycmlkZTsKQEAgLTEyMSw3ICsxMTksNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQ
YWdlTG9naWNhbEhlaWdodEtub3duKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGhhbmRs
ZVNwYW5uZXJSZW1vdmFsKFJlbmRlck9iamVjdCYgc3Bhbm5lcik7Ci0gICAgUmVuZGVyT2JqZWN0
KiBwcm9jZXNzUG9zc2libGVTcGFubmVyRGVzY2VuZGFudChSZW5kZXJPYmplY3QqJiBzdWJ0cmVl
Um9vdCwgUmVuZGVyT2JqZWN0JiBkZXNjZW5kYW50KTsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U3Bhbm5lck1hcD4gbV9zcGFubmVyTWFwOwpAQCAtMTQxLDggKzEzOCw2IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgYm9vbCBtX3Byb2dyZXNzaW9uSXNJbmxpbmU7CiAgICAgYm9vbCBt
X3Byb2dyZXNzaW9uSXNSZXZlcnNlZDsKLSAgICAKLSAgICBzdGF0aWMgYm9vbCBnU2hpZnRpbmdT
cGFubmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA2NzA2NmFjOTI2ODc3NGEzZTY0ZWE4NDY3YjQx
NWYzZTA5ZTdjMWYwLi43MjI4YmIzZWY2MWExNzNkMjc4YmQ5ZGFkMWExYTdlNjljNDA5NWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTQ1OSw4ICsx
NDU5LDkgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Omluc2VydGVkSW50b1RyZWUoKQogICAgIGlmICgh
aXNGbG9hdGluZygpICYmIHBhcmVudCgpLT5jaGlsZHJlbklubGluZSgpKQogICAgICAgICBwYXJl
bnQoKS0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoKnRoaXMpOwogCi0gICAgaWYgKFJlbmRl
ckZyYWdtZW50ZWRGbG93KiBmcmFnbWVudGVkRmxvdyA9IGVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93
KCkpCi0gICAgICAgIGZyYWdtZW50ZWRGbG93LT5mcmFnbWVudGVkRmxvd0Rlc2NlbmRhbnRJbnNl
cnRlZCgqdGhpcyk7CisgICAgYXV0byogZnJhZ21lbnRlZEZsb3cgPSBlbmNsb3NpbmdGcmFnbWVu
dGVkRmxvdygpOworICAgIGlmIChpczxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+KGZyYWdtZW50ZWRG
bG93KSkKKyAgICAgICAgUmVuZGVyVHJlZUJ1aWxkZXI6OmN1cnJlbnQoKS0+bXVsdGlDb2x1bW5E
ZXNjZW5kYW50SW5zZXJ0ZWQoZG93bmNhc3Q8UmVuZGVyTXVsdGlDb2x1bW5GbG93PigqZnJhZ21l
bnRlZEZsb3cpLCAqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVSZW1vdmVk
RnJvbVRyZWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKaW5kZXggODUxMjE4NGIzNDE0Yzc5NDM2MDFkMmVhZThl
OTI4NjhkMDA0MDMzOC4uMjQ2Y2UyYjlhZDVkYTNlZGYyOTdiZDgzY2QwODk4MDJmMDgxNDgyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXIuY3BwCkBAIC0zNTIsNiArMzUyLDExIEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxk
ZXI6OmNoaWxkRmxvd1N0YXRlQ2hhbmdlc0FuZE5vTG9uZ2VyQWZmZWN0c1BhcmVudEJsb2NrKFJl
bmRlCiAgICAgcmVtb3ZlQW5vbnltb3VzV3JhcHBlcnNGb3JJbmxpbmVDaGlsZHJlbklmTmVlZGVk
KCpjaGlsZC5wYXJlbnQoKSk7CiB9CiAKK3ZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Om11bHRpQ29s
dW1uRGVzY2VuZGFudEluc2VydGVkKFJlbmRlck11bHRpQ29sdW1uRmxvdyYgZmxvdywgUmVuZGVy
T2JqZWN0JiBuZXdEZXNjZW5kYW50KQoreworICAgIG11bHRpQ29sdW1uQnVpbGRlcigpLm11bHRp
Q29sdW1uRGVzY2VuZGFudEluc2VydGVkKGZsb3csIG5ld0Rlc2NlbmRhbnQpOworfQorCiBzdGF0
aWMgYm9vbCBpc0Fub255bW91c0FuZFNhZmVUb0RlbGV0ZShSZW5kZXJFbGVtZW50JiBlbGVtZW50
KQogewogICAgIGlmICghZWxlbWVudC5pc0Fub255bW91cygpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuaAppbmRleCBiY2E4
NjM2MzkyNjUzMTRkZTg1MGVmMzA2Y2FlNGJiOTE1Y2U4NTRlLi45ZDczMWI4YTUxYTY0ZjcxYmI4
ZjFlMDQ0NjlkODY0MWZjYTliNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuaApAQCAtNzksNiArNzksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjaGlsZEZsb3dTdGF0ZUNoYW5nZXNBbmROb0xvbmdlckFmZmVjdHNQYXJl
bnRCbG9jayhSZW5kZXJFbGVtZW50JiBjaGlsZCk7CiAgICAgUmVuZGVyT2JqZWN0KiByZXNvbHZl
TW92ZWRDaGlsZEZvck11bHRpQ29sdW1uRmxvdyhSZW5kZXJGcmFnbWVudGVkRmxvdyYgZW5jbG9z
aW5nRnJhZ21lbnRlZEZsb3csIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwogICAgIHZvaWQg
cmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3lDbGVhbmluZ1VwQW5vbnltb3VzV3JhcHBlcnMoUmVu
ZGVyT2JqZWN0JiBjaGlsZCk7CisgICAgdm9pZCBtdWx0aUNvbHVtbkRlc2NlbmRhbnRJbnNlcnRl
ZChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmLCBSZW5kZXJPYmplY3QmIG5ld0Rlc2NlbmRhbnQpOwog
CiBwcml2YXRlOgogICAgIGNsYXNzIEZpcnN0TGV0dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVs
dGlDb2x1bW4uY3BwCmluZGV4IDhhNzRhMjZmNmJkMjBmYmM5MmQyZjFhYjFiYThlMWU0N2M5MTJk
ZmEuLjE0NGIwMWEzZDVhNGY0NzZhM2IxNDRlNjFhNjM2NzEzMDNmMzNkZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11bHRp
Q29sdW1uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5jcHAKQEAgLTM0LDYgKzM0LDg3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RhdGljIFJlbmRlck11bHRpQ29sdW1uU2V0KiBmaW5kU2V0UmVuZGVy
aW5nKGNvbnN0IFJlbmRlck11bHRpQ29sdW1uRmxvdyYgZnJhZ21lbnRlZEZsb3csIGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIpCit7CisgICAgLy8gRmluZCB0aGUgc2V0IGluc2lkZSB3aGlj
aCB0aGUgc3BlY2lmaWVkIHJlbmRlcmVyIHdvdWxkIGJlIHJlbmRlcmVkLgorICAgIGZvciAoYXV0
byogbXVsdGljb2xTZXQgPSBmcmFnbWVudGVkRmxvdy5maXJzdE11bHRpQ29sdW1uU2V0KCk7IG11
bHRpY29sU2V0OyBtdWx0aWNvbFNldCA9IG11bHRpY29sU2V0LT5uZXh0U2libGluZ011bHRpQ29s
dW1uU2V0KCkpIHsKKyAgICAgICAgaWYgKG11bHRpY29sU2V0LT5jb250YWluc1JlbmRlcmVySW5G
cmFnbWVudGVkRmxvdyhyZW5kZXJlcikpCisgICAgICAgICAgICByZXR1cm4gbXVsdGljb2xTZXQ7
CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVuZGVyT2JqZWN0KiBz
cGFubmVyUGxhY2Vob2RlckNhbmRpZGF0ZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBj
b25zdCBSZW5kZXJNdWx0aUNvbHVtbkZsb3cmIHN0YXlXaXRoaW4pCit7CisgICAgLy8gU3Bhbm5l
ciBjYW5kaWRhdGUgaXMgYSBuZXh0IHNpYmxpbmcvYW5jZXN0b3IncyBuZXh0IGNoaWxkIHdpdGhp
biB0aGUgZmxvdyB0aHJlYWQgYW5kCisgICAgLy8gaXQgaXMgaW4gdGhlIHNhbWUgaW5mbG93L291
dC1vZi1mbG93IGxheW91dCBjb250ZXh0LgorICAgIGlmIChyZW5kZXJlci5pc091dE9mRmxvd1Bv
c2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBBU1NFUlQocmVuZGVy
ZXIuaXNEZXNjZW5kYW50T2YoJnN0YXlXaXRoaW4pKTsKKyAgICBhdXRvKiBjdXJyZW50ID0gJnJl
bmRlcmVyOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIC8vIFNraXAgdG8gdGhlIGZpcnN0
IGluLWZsb3cgc2libGluZy4KKyAgICAgICAgYXV0byogbmV4dFNpYmxpbmcgPSBjdXJyZW50LT5u
ZXh0U2libGluZygpOworICAgICAgICB3aGlsZSAobmV4dFNpYmxpbmcgJiYgbmV4dFNpYmxpbmct
PmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICAgICAgbmV4dFNpYmxpbmcgPSBuZXh0
U2libGluZy0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgaWYgKG5leHRTaWJsaW5nKQorICAgICAg
ICAgICAgcmV0dXJuIG5leHRTaWJsaW5nOworICAgICAgICAvLyBObyBzaWJsaW5nIGNhbmRpZGF0
ZSwganVtcCB0byB0aGUgcGFyZW50IGFuZCBjaGVjayBpdHMgc2libGluZ3MuCisgICAgICAgIGN1
cnJlbnQgPSBjdXJyZW50LT5wYXJlbnQoKTsKKyAgICAgICAgaWYgKCFjdXJyZW50IHx8IGN1cnJl
bnQgPT0gJnN0YXlXaXRoaW4gfHwgY3VycmVudC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3N0YXRpYyBib29sIGlzVmFsaWRDb2x1bW5TcGFubmVyKGNvbnN0IFJlbmRlck11bHRpQ29s
dW1uRmxvdyYgZnJhZ21lbnRlZEZsb3csIGNvbnN0IFJlbmRlck9iamVjdCYgZGVzY2VuZGFudCkK
K3sKKyAgICAvLyBXZSBhc3N1bWUgdGhhdCB3ZSdyZSBpbnNpZGUgdGhlIGZsb3cgdGhyZWFkLiBU
aGlzIGZ1bmN0aW9uIGlzIG5vdCB0byBiZSBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIEFTU0VSVChk
ZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKCZmcmFnbWVudGVkRmxvdykpOworICAgIC8vIEZpcnN0
IG1ha2Ugc3VyZSB0aGF0IHRoZSByZW5kZXJlciBpdHNlbGYgaGFzIHRoZSByaWdodCBwcm9wZXJ0
aWVzIGZvciBiZWNvbWluZyBhIHNwYW5uZXIuCisgICAgaWYgKCFpczxSZW5kZXJCb3g+KGRlc2Nl
bmRhbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBkZXNjZW5kYW50Qm94
ID0gZG93bmNhc3Q8UmVuZGVyQm94PihkZXNjZW5kYW50KTsKKyAgICBpZiAoZGVzY2VuZGFudEJv
eC5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghZnJhZ21lbnRlZEZsb3cuaXNDb2x1bW5TcGFubmluZ0Rlc2NlbmRhbnQo
ZGVzY2VuZGFudEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8qIHBhcmVu
dCA9IGRlc2NlbmRhbnRCb3gucGFyZW50KCk7CisgICAgaWYgKCFpczxSZW5kZXJCbG9ja0Zsb3c+
KCpwYXJlbnQpIHx8IHBhcmVudC0+Y2hpbGRyZW5JbmxpbmUoKSkgeworICAgICAgICAvLyBOZWVk
cyB0byBiZSBibG9jay1sZXZlbC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IC8vIFdlIG5lZWQgdG8gaGF2ZSB0aGUgZmxvdyB0aHJlYWQgYXMgdGhlIGNvbnRhaW5pbmcgYmxv
Y2suIEEgc3Bhbm5lciBjYW5ub3QgYnJlYWsgb3V0IG9mIHRoZSBmbG93IHRocmVhZC4KKyAgICBh
dXRvKiBlbmNsb3NpbmdGcmFnbWVudGVkRmxvdyA9IGRlc2NlbmRhbnRCb3guZW5jbG9zaW5nRnJh
Z21lbnRlZEZsb3coKTsKKyAgICBpZiAoZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3cgIT0gJmZyYWdt
ZW50ZWRGbG93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGlzIGxvb2tzIGxp
a2UgYSBzcGFubmVyLCBidXQgaWYgd2UncmUgaW5zaWRlIHNvbWV0aGluZyB1bmJyZWFrYWJsZSwg
aXQncyBub3QgdG8gYmUgdHJlYXRlZCBhcyBvbmUuCisgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9
IGRlc2NlbmRhbnRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFu
Y2VzdG9yLT5jb250YWluaW5nQmxvY2soKSkgeworICAgICAgICBpZiAoaXM8UmVuZGVyVmlldz4o
KmFuY2VzdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGlzPFJl
bmRlckZyYWdtZW50ZWRGbG93PigqYW5jZXN0b3IpKSB7CisgICAgICAgICAgICAvLyBEb24ndCBh
bGxvdyBhbnkgaW50ZXJ2ZW5pbmcgbm9uLW11bHRpY29sIGZyYWdtZW50YXRpb24gY29udGV4dHMu
IFRoZSBzcGVjIGRvZXNuJ3Qgc2F5CisgICAgICAgICAgICAvLyBhbnl0aGluZyBhYm91dCBkaXNh
bGxvd2luZyB0aGlzLCBidXQgaXQncyBqdXN0IGdvaW5nIHRvIGJlIHRvbyBjb21wbGljYXRlZCB0
bworICAgICAgICAgICAgLy8gaW1wbGVtZW50IChub3QgdG8gbWVudGlvbiBzcGVjaWZ5IGJlaGF2
aW9yKS4KKyAgICAgICAgICAgIHJldHVybiBhbmNlc3RvciA9PSAmZnJhZ21lbnRlZEZsb3c7Cisg
ICAgICAgIH0KKyAgICAgICAgLy8gVGhpcyBhbmNlc3RvciAoZGVzY2VuZGVudCBvZiB0aGUgZnJh
Z21lbnRlZEZsb3cpIHdpbGwgY3JlYXRlIGNvbHVtbnMgbGF0ZXIuIFRoZSBzcGFubmVyIGJlbG9u
Z3MgdG8gaXQuCisgICAgICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+KCphbmNlc3RvcikgJiYg
ZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqYW5jZXN0b3IpLndpbGxDcmVhdGVDb2x1bW5zKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEFTU0VSVChhbmNlc3Rvci0+c3R5
bGUoKS5jb2x1bW5TcGFuKCkgIT0gQ29sdW1uU3BhbkFsbCB8fCAhaXNWYWxpZENvbHVtblNwYW5u
ZXIoZnJhZ21lbnRlZEZsb3csICphbmNlc3RvcikpOworICAgICAgICBpZiAoYW5jZXN0b3ItPmlz
VW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6TXVsdGlDb2x1bW4oUmVuZGVyVHJlZUJ1
aWxkZXImIGJ1aWxkZXIpCiAgICAgOiBtX2J1aWxkZXIoYnVpbGRlcikKIHsKQEAgLTE3MSw0ICsy
NTIsMTE5IEBAIFJlbmRlck9iamVjdCogUmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjpy
ZXNvbHZlTW92ZWRDaGlsZChSZW5kZXJGcmFnbWVudGVkCiAgICAgcmV0dXJuIGJlZm9yZUNoaWxk
OwogfQogCitzdGF0aWMgYm9vbCBnU2hpZnRpbmdTcGFubmVyID0gZmFsc2U7CisKK3ZvaWQgUmVu
ZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjptdWx0aUNvbHVtbkRlc2NlbmRhbnRJbnNlcnRl
ZChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmIGZsb3csIFJlbmRlck9iamVjdCYgbmV3RGVzY2VuZGFu
dCkKK3sKKyAgICBpZiAoZ1NoaWZ0aW5nU3Bhbm5lciB8fCBuZXdEZXNjZW5kYW50LmlzSW5GbG93
UmVuZGVyRnJhZ21lbnRlZEZsb3coKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc3Vi
dHJlZVJvb3QgPSAmbmV3RGVzY2VuZGFudDsKKyAgICBhdXRvKiBkZXNjZW5kYW50ID0gc3VidHJl
ZVJvb3Q7CisgICAgd2hpbGUgKGRlc2NlbmRhbnQpIHsKKyAgICAgICAgLy8gU2tpcCBuZXN0ZWQg
bXVsdGljb2x1bW4gZmxvd3MuCisgICAgICAgIGlmIChpczxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+
KCpkZXNjZW5kYW50KSkgeworICAgICAgICAgICAgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5l
eHRTaWJsaW5nKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoaXM8UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI+KCpkZXNjZW5kYW50KSkg
eworICAgICAgICAgICAgLy8gQSBzcGFubmVyJ3MgcGxhY2Vob2xkZXIgaGFzIGJlZW4gaW5zZXJ0
ZWQuIFRoZSBhY3R1YWwgc3Bhbm5lciByZW5kZXJlciBpcyBtb3ZlZCBmcm9tCisgICAgICAgICAg
ICAvLyB3aGVyZSBpdCB3b3VsZCBvdGhlcndpc2Ugb2NjdXIgKGlmIGl0IHdlcmVuJ3QgYSBzcGFu
bmVyKSB0byBiZWNvbWluZyBhIHNpYmxpbmcgb2YgdGhlCisgICAgICAgICAgICAvLyBjb2x1bW4g
c2V0cy4KKyAgICAgICAgICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyJiBw
bGFjZWhvbGRlciA9IGRvd25jYXN0PFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVy
PigqZGVzY2VuZGFudCk7CisgICAgICAgICAgICBBU1NFUlQoIWZsb3cuc3Bhbm5lck1hcCgpLmdl
dChwbGFjZWhvbGRlci5zcGFubmVyKCkpKTsKKyAgICAgICAgICAgIGZsb3cuc3Bhbm5lck1hcCgp
LmFkZChwbGFjZWhvbGRlci5zcGFubmVyKCksIG1ha2VXZWFrUHRyKGRvd25jYXN0PFJlbmRlck11
bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyPihkZXNjZW5kYW50KSkpOworICAgICAgICAgICAg
QVNTRVJUKCFwbGFjZWhvbGRlci5maXJzdENoaWxkKCkpOyAvLyBUaGVyZSBzaG91bGQgYmUgbm8g
Y2hpbGRyZW4gaGVyZSwgYnV0IGlmIHRoZXJlIGFyZSwgd2Ugb3VnaHQgdG8gc2tpcCB0aGVtLgor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGRlc2NlbmRhbnQgPSBwcm9jZXNzUG9zc2libGVT
cGFubmVyRGVzY2VuZGFudChmbG93LCBzdWJ0cmVlUm9vdCwgKmRlc2NlbmRhbnQpOworICAgICAg
ICBpZiAoZGVzY2VuZGFudCkKKyAgICAgICAgICAgIGRlc2NlbmRhbnQgPSBkZXNjZW5kYW50LT5u
ZXh0SW5QcmVPcmRlcihzdWJ0cmVlUm9vdCk7CisgICAgfQorfQorCitSZW5kZXJPYmplY3QqIFJl
bmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6cHJvY2Vzc1Bvc3NpYmxlU3Bhbm5lckRlc2Nl
bmRhbnQoUmVuZGVyTXVsdGlDb2x1bW5GbG93JiBmbG93LCBSZW5kZXJPYmplY3QqJiBzdWJ0cmVl
Um9vdCwgUmVuZGVyT2JqZWN0JiBkZXNjZW5kYW50KQoreworICAgIFJlbmRlckJsb2NrRmxvdyog
bXVsdGljb2xDb250YWluZXIgPSBmbG93Lm11bHRpQ29sdW1uQmxvY2tGbG93KCk7CisgICAgUmVu
ZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXJJbkZyYWdtZW50ZWRGbG93ID0gc3Bhbm5lclBsYWNlaG9k
ZXJDYW5kaWRhdGUoZGVzY2VuZGFudCwgZmxvdyk7CisgICAgUmVuZGVyT2JqZWN0KiBpbnNlcnRC
ZWZvcmVNdWx0aWNvbENoaWxkID0gbnVsbHB0cjsKKyAgICBSZW5kZXJPYmplY3QqIG5leHREZXNj
ZW5kYW50ID0gJmRlc2NlbmRhbnQ7CisKKyAgICBpZiAoaXNWYWxpZENvbHVtblNwYW5uZXIoZmxv
dywgZGVzY2VuZGFudCkpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBhIHNwYW5uZXIgKGNvbHVtbi1z
cGFuOmFsbCkuIFN1Y2ggcmVuZGVyZXJzIGFyZSBtb3ZlZCBmcm9tIHdoZXJlIHRoZXkgd291bGQK
KyAgICAgICAgLy8gb3RoZXJ3aXNlIG9jY3VyIGluIHRoZSByZW5kZXIgdHJlZSB0byBiZWNvbWlu
ZyBhIGRpcmVjdCBjaGlsZCBvZiB0aGUgbXVsdGljb2wgY29udGFpbmVyLAorICAgICAgICAvLyBz
byB0aGF0IHRoZXkgbGl2ZSBhbW9uZyB0aGUgY29sdW1uIHNldHMuIFRoaXMgc2ltcGxpZmllcyB0
aGUgbGF5b3V0IGltcGxlbWVudGF0aW9uLCBhbmQKKyAgICAgICAgLy8gYmFzaWNhbGx5IGp1c3Qg
cmVsaWVzIG9uIHJlZ3VsYXIgYmxvY2sgbGF5b3V0IGRvbmUgYnkgdGhlIFJlbmRlckJsb2NrRmxv
dyB0aGF0CisgICAgICAgIC8vIGVzdGFibGlzaGVzIHRoZSBtdWx0aWNvbCBjb250YWluZXIuCisg
ICAgICAgIFJlbmRlckJsb2NrRmxvdyogY29udGFpbmVyID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tG
bG93PihkZXNjZW5kYW50LnBhcmVudCgpKTsKKyAgICAgICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQq
IHNldFRvU3BsaXQgPSBudWxscHRyOworICAgICAgICBpZiAobmV4dFJlbmRlcmVySW5GcmFnbWVu
dGVkRmxvdykgeworICAgICAgICAgICAgc2V0VG9TcGxpdCA9IGZpbmRTZXRSZW5kZXJpbmcoZmxv
dywgZGVzY2VuZGFudCk7CisgICAgICAgICAgICBpZiAoc2V0VG9TcGxpdCkgeworICAgICAgICAg
ICAgICAgIHNldFRvU3BsaXQtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgICAgICAgICAgaW5z
ZXJ0QmVmb3JlTXVsdGljb2xDaGlsZCA9IHNldFRvU3BsaXQtPm5leHRTaWJsaW5nKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gTW92aW5nIGEgc3Bhbm5lcidzIHJlbmRl
cmVyIHNvIHRoYXQgaXQgYmVjb21lcyBhIHNpYmxpbmcgb2YgdGhlIGNvbHVtbiBzZXRzIHJlcXVp
cmVzIHVzCisgICAgICAgIC8vIHRvIGluc2VydCBhbiBhbm9ueW1vdXMgcGxhY2Vob2xkZXIgaW4g
dGhlIHRyZWUgd2hlcmUgdGhlIHNwYW5uZXIncyByZW5kZXJlciBvdGhlcndpc2UKKyAgICAgICAg
Ly8gd291bGQgaGF2ZSBiZWVuLiBUaGlzIGlzIG5lZWRlZCBmb3IgYSB0d28gcmVhc29uczogV2Ug
bmVlZCBhIHdheSBvZiBzZXBhcmF0aW5nIGlubGluZQorICAgICAgICAvLyBjb250ZW50IGJlZm9y
ZSBhbmQgYWZ0ZXIgdGhlIHNwYW5uZXIsIHNvIHRoYXQgaXQgYmVjb21lcyBzZXBhcmF0ZSBsaW5l
IGJveGVzLiBTZWNvbmRseSwKKyAgICAgICAgLy8gdGhpcyBwbGFjZWhvbGRlciBzZXJ2ZXMgYXMg
YSBicmVhayBwb2ludCBmb3IgY29sdW1uIHNldHMsIHNvIHRoYXQsIHdoZW4gZW5jb3VudGVyZWQs
IHdlCisgICAgICAgIC8vIGVuZCBmbG93aW5nIG9uZSBjb2x1bW4gc2V0IGFuZCBtb3ZlIHRvIHRo
ZSBuZXh0IG9uZS4KKyAgICAgICAgYXV0byBuZXdQbGFjZWhvbGRlciA9IFJlbmRlck11bHRpQ29s
dW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpjcmVhdGVBbm9ueW1vdXMoZmxvdywgZG93bmNhc3Q8UmVu
ZGVyQm94PihkZXNjZW5kYW50KSwgY29udGFpbmVyLT5zdHlsZSgpKTsKKyAgICAgICAgYXV0byYg
cGxhY2Vob2xkZXIgPSAqbmV3UGxhY2Vob2xkZXI7CisgICAgICAgIG1fYnVpbGRlci5pbnNlcnRD
aGlsZCgqY29udGFpbmVyLCBXVEZNb3ZlKG5ld1BsYWNlaG9sZGVyKSwgZGVzY2VuZGFudC5uZXh0
U2libGluZygpKTsKKyAgICAgICAgYXV0byB0YWtlbkRlc2NlbmRhbnQgPSBjb250YWluZXItPnRh
a2VDaGlsZChtX2J1aWxkZXIsIGRlc2NlbmRhbnQpOworCisgICAgICAgIC8vIFRoaXMgaXMgYSBn
dWFyZCB0byBzdG9wIGFuIGFuY2VzdG9yIGZsb3cgdGhyZWFkIGZyb20gcHJvY2Vzc2luZyB0aGUg
c3Bhbm5lci4KKyAgICAgICAgZ1NoaWZ0aW5nU3Bhbm5lciA9IHRydWU7CisgICAgICAgIG1fYnVp
bGRlci5pbnNlcnRDaGlsZFRvUmVuZGVyQmxvY2soKm11bHRpY29sQ29udGFpbmVyLCBXVEZNb3Zl
KHRha2VuRGVzY2VuZGFudCksIGluc2VydEJlZm9yZU11bHRpY29sQ2hpbGQpOworICAgICAgICBn
U2hpZnRpbmdTcGFubmVyID0gZmFsc2U7CisKKyAgICAgICAgLy8gVGhlIHNwYW5uZXIgaGFzIG5v
dyBiZWVuIG1vdmVkIG91dCBmcm9tIHRoZSBmbG93IHRocmVhZCwgYnV0IHdlIGRvbid0IHdhbnQg
dG8KKyAgICAgICAgLy8gZXhhbWluZSBpdHMgY2hpbGRyZW4gYW55d2F5LiBUaGV5IGFyZSBhbGwg
cGFydCBvZiB0aGUgc3Bhbm5lciBhbmQgc2hvdWxkbid0IHRyaWdnZXIKKyAgICAgICAgLy8gY3Jl
YXRpb24gb2YgY29sdW1uIHNldHMgb3IgYW55dGhpbmcgbGlrZSB0aGF0LiBDb250aW51ZSBhdCBp
dHMgb3JpZ2luYWwgcG9zaXRpb24gaW4KKyAgICAgICAgLy8gdGhlIHRyZWUsIGkuZS4gd2hlcmUg
dGhlIHBsYWNlaG9sZGVyIHdhcyBqdXN0IHB1dC4KKyAgICAgICAgaWYgKHN1YnRyZWVSb290ID09
ICZkZXNjZW5kYW50KQorICAgICAgICAgICAgc3VidHJlZVJvb3QgPSAmcGxhY2Vob2xkZXI7Cisg
ICAgICAgIG5leHREZXNjZW5kYW50ID0gJnBsYWNlaG9sZGVyOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIFRoaXMgaXMgcmVndWxhciBtdWx0aWNvbCBjb250ZW50LCBpLmUuIG5vdCBwYXJ0IG9m
IGEgc3Bhbm5lci4KKyAgICAgICAgaWYgKGlzPFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNl
aG9sZGVyPihuZXh0UmVuZGVyZXJJbkZyYWdtZW50ZWRGbG93KSkgeworICAgICAgICAgICAgLy8g
SW5zZXJ0ZWQgcmlnaHQgYmVmb3JlIGEgc3Bhbm5lci4gSXMgdGhlcmUgYSBzZXQgZm9yIHVzIHRo
ZXJlPworICAgICAgICAgICAgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXImIHBs
YWNlaG9sZGVyID0gZG93bmNhc3Q8UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI+
KCpuZXh0UmVuZGVyZXJJbkZyYWdtZW50ZWRGbG93KTsKKyAgICAgICAgICAgIGlmIChSZW5kZXJP
YmplY3QqIHByZXZpb3VzID0gcGxhY2Vob2xkZXIuc3Bhbm5lcigpLT5wcmV2aW91c1NpYmxpbmco
KSkgeworICAgICAgICAgICAgICAgIGlmIChpczxSZW5kZXJNdWx0aUNvbHVtblNldD4oKnByZXZp
b3VzKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHREZXNjZW5kYW50OyAvLyBUaGVy
ZSdzIGFscmVhZHkgYSBzZXQgdGhlcmUuIE5vdGhpbmcgdG8gZG8uCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpbnNlcnRCZWZvcmVNdWx0aWNvbENoaWxkID0gcGxhY2Vob2xkZXIuc3Bhbm5l
cigpOworICAgICAgICB9IGVsc2UgaWYgKFJlbmRlck11bHRpQ29sdW1uU2V0KiBsYXN0U2V0ID0g
Zmxvdy5sYXN0TXVsdGlDb2x1bW5TZXQoKSkgeworICAgICAgICAgICAgLy8gVGhpcyBjaGlsZCBp
cyBub3QgYW4gaW1tZWRpYXRlIHByZWRlY2Vzc29yIG9mIGEgc3Bhbm5lciwgd2hpY2ggbWVhbnMg
dGhhdCBpZiB0aGlzCisgICAgICAgICAgICAvLyBjaGlsZCBwcmVjZWRlcyBhIHNwYW5uZXIgYXQg
YWxsLCB0aGVyZSBoYXMgdG8gYmUgYSBjb2x1bW4gc2V0IGNyZWF0ZWQgZm9yIHVzIHRoZXJlCisg
ICAgICAgICAgICAvLyBhbHJlYWR5LiBJZiBpdCBkb2Vzbid0IHByZWNlZGUgYW55IHNwYW5uZXIg
YXQgYWxsLCBvbiB0aGUgb3RoZXIgaGFuZCwgd2UgbmVlZCBhCisgICAgICAgICAgICAvLyBjb2x1
bW4gc2V0IGF0IHRoZSBlbmQgb2YgdGhlIG11bHRpY29sIGNvbnRhaW5lci4gV2UgZG9uJ3QgcmVh
bGx5IGNoZWNrIGhlcmUgaWYgdGhlCisgICAgICAgICAgICAvLyBjaGlsZCBpbnNlcnRlZCBwcmVj
ZWRlcyBhbnkgc3Bhbm5lciBvciBub3QgKGFzIHRoYXQncyBhbiBleHBlbnNpdmUgb3BlcmF0aW9u
KS4gSnVzdAorICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgYSBjb2x1bW4gc2V0IGF0
IHRoZSBlbmQuIEl0J3Mgbm8gYmlnIGRlYWwgaWYgaXQgcmVtYWlucyB1bnVzZWQuCisgICAgICAg
ICAgICBpZiAoIWxhc3RTZXQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG5leHREZXNjZW5kYW50OworICAgICAgICB9CisgICAgfQorICAgIC8vIE5lZWQgdG8gY3JlYXRl
IGEgbmV3IGNvbHVtbiBzZXQgd2hlbiB0aGVyZSdzIG5vIHNldCBhbHJlYWR5IGNyZWF0ZWQuIFdl
IGFsc28gYWx3YXlzIGluc2VydAorICAgIC8vIGFub3RoZXIgY29sdW1uIHNldCBhZnRlciBhIHNw
YW5uZXIuIEV2ZW4gaWYgaXQgdHVybnMgb3V0IHRoYXQgdGhlcmUgYXJlIG5vIHJlbmRlcmVycwor
ICAgIC8vIGZvbGxvd2luZyB0aGUgc3Bhbm5lciwgdGhlcmUgbWF5IGJlIGJvdHRvbSBtYXJnaW5z
IHRoZXJlLCB3aGljaCB0YWtlIHVwIHNwYWNlLgorICAgIGF1dG8gbmV3U2V0ID0gZmxvdy5jcmVh
dGVNdWx0aUNvbHVtblNldChSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheShtdWx0aWNvbENvbnRhaW5lci0+c3R5bGUoKSwgQkxPQ0spKTsKKyAgICBuZXdTZXQtPmlu
aXRpYWxpemVTdHlsZSgpOworICAgIGF1dG8mIHNldCA9ICpuZXdTZXQ7CisgICAgbV9idWlsZGVy
Lmluc2VydENoaWxkVG9SZW5kZXJCbG9jaygqbXVsdGljb2xDb250YWluZXIsIFdURk1vdmUobmV3
U2V0KSwgaW5zZXJ0QmVmb3JlTXVsdGljb2xDaGlsZCk7CisgICAgZmxvdy5pbnZhbGlkYXRlRnJh
Z21lbnRzKCk7CisKKyAgICAvLyBXZSBjYW5ub3QgaGFuZGxlIGltbWVkaWF0ZSBjb2x1bW4gc2V0
IHNpYmxpbmdzIGF0IHRoZSBtb21lbnQgKGFuZCB0aGVyZSdzIG5vIG5lZWQgZm9yCisgICAgLy8g
aXQsIGVpdGhlcikuIFRoZXJlIGhhcyB0byBiZSBhdCBsZWFzdCBvbmUgc3Bhbm5lciBzZXBhcmF0
aW5nIHRoZW0uCisgICAgQVNTRVJUX1VOVVNFRChzZXQsICFSZW5kZXJNdWx0aUNvbHVtbkZsb3c6
OnByZXZpb3VzQ29sdW1uU2V0T3JTcGFubmVyU2libGluZ09mKCZzZXQpCisgICAgICAgIHx8ICFS
ZW5kZXJNdWx0aUNvbHVtbkZsb3c6OnByZXZpb3VzQ29sdW1uU2V0T3JTcGFubmVyU2libGluZ09m
KCZzZXQpLT5pc1JlbmRlck11bHRpQ29sdW1uU2V0KCkpOworICAgIEFTU0VSVCghUmVuZGVyTXVs
dGlDb2x1bW5GbG93OjpuZXh0Q29sdW1uU2V0T3JTcGFubmVyU2libGluZ09mKCZzZXQpCisgICAg
ICAgIHx8ICFSZW5kZXJNdWx0aUNvbHVtbkZsb3c6Om5leHRDb2x1bW5TZXRPclNwYW5uZXJTaWJs
aW5nT2YoJnNldCktPmlzUmVuZGVyTXVsdGlDb2x1bW5TZXQoKSk7CisKKyAgICByZXR1cm4gbmV4
dERlc2NlbmRhbnQ7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oCmluZGV4
IDZkZDQ1MDgzNWIxYzIxY2QyNWQ4YmI1ODdkOGM2OTNmZTkyMTQxZDAuLmJiZjE1NjhiZWQyZjEy
NmI0OTMzMmIyZDY2ZGQ1YWJkZGYwYmIwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1
bW4uaApAQCAtNDAsMTAgKzQwLDEyIEBAIHB1YmxpYzoKICAgICAvLyBzZXRzLiBJZiB8Y2hpbGR8
IGlzIHN1Y2ggYSByZW5kZXJlciwgcmVzb2x2ZSBpdCB0byB0aGUgcGxhY2Vob2xkZXIgdGhhdCBs
aXZlcyBhdCB0aGUgb3JpZ2luYWwKICAgICAvLyBsb2NhdGlvbiBpbiB0aGUgdHJlZS4KICAgICBS
ZW5kZXJPYmplY3QqIHJlc29sdmVNb3ZlZENoaWxkKFJlbmRlckZyYWdtZW50ZWRGbG93JiBlbmNs
b3NpbmdGcmFnbWVudGVkRmxvdywgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CisgICAgdm9p
ZCBtdWx0aUNvbHVtbkRlc2NlbmRhbnRJbnNlcnRlZChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmLCBS
ZW5kZXJPYmplY3QmIG5ld0Rlc2NlbmRhbnQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRl
RnJhZ21lbnRlZEZsb3coUmVuZGVyQmxvY2tGbG93Jik7CiAgICAgdm9pZCBkZXN0cm95RnJhZ21l
bnRlZEZsb3coUmVuZGVyQmxvY2tGbG93Jik7CisgICAgUmVuZGVyT2JqZWN0KiBwcm9jZXNzUG9z
c2libGVTcGFubmVyRGVzY2VuZGFudChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmLCBSZW5kZXJPYmpl
Y3QqJiBzdWJ0cmVlUm9vdCwgUmVuZGVyT2JqZWN0JiBkZXNjZW5kYW50KTsKIAogICAgIFJlbmRl
clRyZWVCdWlsZGVyJiBtX2J1aWxkZXI7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>