<?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>164577</bug_id>
          
          <creation_ts>2016-11-09 18:35:11 -0800</creation_ts>
          <short_desc>Updating class name doesn&apos;t update the slotted content&apos;s style</short_desc>
          <delta_ts>2016-11-11 15:11:46 -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>CSS</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>
          
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jan</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1249629</commentid>
    <comment_count>0</comment_count>
      <attachid>294319</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-09 18:35:11 -0800</bug_when>
    <thetext>Created attachment 294319
Demo

::slotted(.selected) wouldn&apos;t apply when the class name is applied dynamically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249949</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-11-10 13:27:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/29205873&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250015</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-10 15:42:40 -0800</bug_when>
    <thetext>*** Bug 160865 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250016</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-10 15:43:26 -0800</bug_when>
    <thetext>A few more test cases listed on https://polymerlabs.github.io/wc-demos/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250229</commentid>
    <comment_count>4</comment_count>
      <attachid>294494</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-11-11 03:42:57 -0800</bug_when>
    <thetext>Created attachment 294494
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250257</commentid>
    <comment_count>5</comment_count>
      <attachid>294501</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-11-11 09:38:10 -0800</bug_when>
    <thetext>Created attachment 294501
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250260</commentid>
    <comment_count>6</comment_count>
      <attachid>294502</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-11-11 09:43:34 -0800</bug_when>
    <thetext>Created attachment 294502
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250359</commentid>
    <comment_count>7</comment_count>
      <attachid>294502</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-11 13:06:53 -0800</bug_when>
    <thetext>Comment on attachment 294502
patch

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

&gt; LayoutTests/fast/shadow-dom/css-scoping-slotted-invalidation.html:86
&gt; +

Maybe we should add a test which involves multiple slots in a single shadow tree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250416</commentid>
    <comment_count>8</comment_count>
      <attachid>294539</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-11-11 14:35:44 -0800</bug_when>
    <thetext>Created attachment 294539
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250442</commentid>
    <comment_count>9</comment_count>
      <attachid>294539</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-11 15:11:40 -0800</bug_when>
    <thetext>Comment on attachment 294539
patch for landing

Clearing flags on attachment: 294539

Committed r208616: &lt;http://trac.webkit.org/changeset/208616&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250443</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-11 15:11:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>294319</attachid>
            <date>2016-11-09 18:35:11 -0800</date>
            <delta_ts>2016-11-09 18:35:11 -0800</delta_ts>
            <desc>Demo</desc>
            <filename>ce.html</filename>
            <type>text/html</type>
            <size>586</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cjxib2R5Pgo8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xl
IDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+CjxkaXYgb25jbGljaz0iZG9jdW1l
bnQucXVlcnlTZWxlY3Rvcignc3BhbicpLmNsYXNzTmFtZT0nc2VsZWN0ZWQnIj4KICAgIDxzcGFu
PkZBSUw8L3NwYW4+CjwvZGl2Pgo8c2NyaXB0PgoKY29uc3QgaG9zdCA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ2RpdicpOwpjb25zdCBzaGFkb3cgPSBob3N0LmF0dGFjaFNoYWRvdyh7bW9kZTog
J2Nsb3NlZCd9KTsKc2hhZG93LmlubmVySFRNTCA9IGA8c2xvdD48c2xvdD4KPHN0eWxlPgo6aG9z
dCB7CiAgICB3aWR0aDogMTAwcHg7CiAgICBoZWlnaHQ6IDEwMHB4OwogICAgYmFja2dyb3VuZDog
Z3JlZW47Cn0KOjpzbG90dGVkKC5zZWxlY3RlZCkgewogICAgY29sb3I6IGdyZWVuOwp9Cjwvc3R5
bGU+YDsKY29uc3Qgc3BhbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKTsKZ2V0Q29t
cHV0ZWRTdHlsZShzcGFuKS5iYWNrZ3JvdW5kQ29sb3IKc3Bhbi5jbGFzc05hbWUgPSAnc2VsZWN0
ZWQnOwoKPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294494</attachid>
            <date>2016-11-11 03:42:57 -0800</date>
            <delta_ts>2016-11-11 09:38:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>slotted-mutation-invalidation-3.patch</filename>
            <type>text/plain</type>
            <size>16915</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTExLTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGluZyBjbGFzcyBuYW1l
IGRvZXNuJ3QgdXBkYXRlIHRoZSBzbG90dGVkIGNvbnRlbnQncyBzdHlsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NTc3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yOTIwNTg3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2xvdHRlZC1p
bnZhbGlkYXRpb24uaHRtbAorCisgICAgICAgIFRlYWNoIHN0eWxlIGludmFsaWRhdGlvbiBjb2Rl
IGZvciBhdHRyaWJ1dGUvY2xhc3MvaWQgbXV0YXRpb25zIGFib3V0IHNsb3R0ZWQgcnVsZXMuCisK
KyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphc3NpZ25l
ZFNoYWRvd1Jvb3RzSWZTbG90dGVkKToKKworICAgICAgICAgICAgSGVscGVyIHRvIGZpbmQgYWxs
IGFzc2lnbmVkIHNoYWRvdyByb290cyAodGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgaWYgc2xv
dHMgYXJlIGFzc2lnbmVkIHRvIHNsb3RzKS4KKworICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6
CisgICAgICAgICogc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjptYXlCZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5SG9zdFN0eWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjptYXlCZUFmZmVjdGVkQnlTbG90dGVkUnVsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkNsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRl
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RTdHls
ZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDoK
KyAgICAgICAgKiBzdHlsZS9JZENoYW5nZUludmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjptYXlCZUFmZmVjdGVkQnlTbG90dGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OklkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZSk6IERlbGV0ZWQuCisgICAg
ICAgICogc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlNoYXJpbmdSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KToKKworICAg
ICAgICAgICAgRml4IGEgYnVnIGluIHN0eWxlIHNoYXJpbmcgd2hlcmUgd2Ugd2VyZSBjaGVja2lu
ZyB3cm9uZyBlbGVtZW50IGZvciBob3N0IHJ1bGVzLgorICAgICAgICAgICAgVGVzdGVkIGJ5IHRo
ZSBpbmNsdWRlZCB0ZXN0IHRvbyAodGhlIGxhc3QgZW1wdHkgZGl2KS4KKwogMjAxNi0xMS0xMSAg
TWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3Nz
LWdyaWRdIEFTU0VSVElPTiBGQUlMRUQ6ICFtX2dyaWRJc0RpcnR5IGluIFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmdyaWRSb3dDb3VudApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2
aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgog
I2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5o
IgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTbG90QXNz
aWdubWVudC5oIgpAQCAtMTgzLDUgKzE4NCwxNCBAQCBjb25zdCBWZWN0b3I8Tm9kZSo+KiBTaGFk
b3dSb290Ojphc3NpZ25lCiAgICAgcmV0dXJuIG1fc2xvdEFzc2lnbm1lbnQtPmFzc2lnbmVkTm9k
ZXNGb3JTbG90KHNsb3QsICp0aGlzKTsKIH0KIAorVmVjdG9yPFNoYWRvd1Jvb3QqPiBhc3NpZ25l
ZFNoYWRvd1Jvb3RzSWZTbG90dGVkKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgVmVjdG9yPFNo
YWRvd1Jvb3QqPiByZXN1bHQ7CisgICAgZm9yIChhdXRvKiBzbG90ID0gbm9kZS5hc3NpZ25lZFNs
b3QoKTsgc2xvdDsgc2xvdCA9IHNsb3QtPmFzc2lnbmVkU2xvdCgpKSB7CisgICAgICAgIEFTU0VS
VChzbG90LT5jb250YWluaW5nU2hhZG93Um9vdCgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChz
bG90LT5jb250YWluaW5nU2hhZG93Um9vdCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAyMDgzOTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMs
NiArMTMzLDggQEAgaW5saW5lIGJvb2wgaGFzU2hhZG93Um9vdFBhcmVudChjb25zdCBObwogICAg
IHJldHVybiBub2RlLnBhcmVudE5vZGUoKSAmJiBub2RlLnBhcmVudE5vZGUoKS0+aXNTaGFkb3dS
b290KCk7CiB9CiAKK1ZlY3RvcjxTaGFkb3dSb290Kj4gYXNzaWduZWRTaGFkb3dSb290c0lmU2xv
dHRlZChjb25zdCBOb2RlJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTaGFkb3dSb290KQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJ
bnZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNCArMzYsMzQgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLXN0YXRpYyBib29sIG1heUJlQWZm
ZWN0ZWRCeUhvc3RTdHlsZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBib29sIGlzSFRNTCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKK3N0YXRpYyBib29sIG1heUJlQWZmZWN0
ZWRCeUF0dHJpYnV0ZUNoYW5nZShEb2N1bWVudFJ1bGVTZXRzJiBydWxlU2V0cywgYm9vbCBpc0hU
TUwsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgYXV0byYgc2hh
ZG93UnVsZVNldHMgPSBzaGFkb3dSb290LnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRz
KCk7CisgICAgYXV0byYgbmFtZVNldCA9IGlzSFRNTCA/IHJ1bGVTZXRzLmZlYXR1cmVzKCkuYXR0
cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXMgOiBydWxlU2V0cy5mZWF0dXJlcygpLmF0
dHJpYnV0ZUxvY2FsTmFtZXNJblJ1bGVzOworICAgIHJldHVybiBuYW1lU2V0LmNvbnRhaW5zKGF0
dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKK30KKworc3RhdGljIGJvb2wgbWF5QmVB
ZmZlY3RlZEJ5SG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCit7CisgICAgYXV0byogc2hhZG93Um9vdCA9IGVsZW1lbnQu
c2hhZG93Um9vdCgpOworICAgIGlmICghc2hhZG93Um9vdCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGF1dG8mIHNoYWRvd1J1bGVTZXRzID0gc2hhZG93Um9vdC0+c3R5bGVTY29wZSgpLnJl
c29sdmVyKCkucnVsZVNldHMoKTsKICAgICBpZiAoc2hhZG93UnVsZVNldHMuYXV0aG9yU3R5bGUo
KS5ob3N0UHNldWRvQ2xhc3NSdWxlcygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYXV0byYgbmFtZVNldCA9IGlzSFRNTCA/IHNoYWRvd1J1bGVTZXRzLmZlYXR1cmVz
KCkuYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXMgOiBzaGFkb3dSdWxlU2V0cy5m
ZWF0dXJlcygpLmF0dHJpYnV0ZUxvY2FsTmFtZXNJblJ1bGVzOwotICAgIHJldHVybiBuYW1lU2V0
LmNvbnRhaW5zKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICByZXR1cm4g
bWF5QmVBZmZlY3RlZEJ5QXR0cmlidXRlQ2hhbmdlKHNoYWRvd1J1bGVTZXRzLCBlbGVtZW50Lmlz
SFRNTEVsZW1lbnQoKSwgYXR0cmlidXRlTmFtZSk7Cit9CisKK3N0YXRpYyBib29sIG1heUJlQWZm
ZWN0ZWRCeVNsb3R0ZWRSdWxlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQoreworICAgIGZvciAoYXV0byogc2hhZG93Um9vdCA6IGFz
c2lnbmVkU2hhZG93Um9vdHNJZlNsb3R0ZWQoZWxlbWVudCkpIHsKKyAgICAgICAgYXV0byYgcnVs
ZVNldHMgPSBzaGFkb3dSb290LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygpOwor
ICAgICAgICBpZiAocnVsZVNldHMuYXV0aG9yU3R5bGUoKS5zbG90dGVkUHNldWRvRWxlbWVudFJ1
bGVzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChtYXlC
ZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2UocnVsZVNldHMsIGVsZW1lbnQuaXNIVE1MRWxlbWVu
dCgpLCBhdHRyaWJ1dGVOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjpp
bnZhbGlkYXRlU3R5bGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKQEAg
LTU0LDEyICs3NCw5IEBAIHZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGkK
ICAgICBhdXRvJiBydWxlU2V0cyA9IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMo
KTsKICAgICBib29sIGlzSFRNTCA9IG1fZWxlbWVudC5pc0hUTUxFbGVtZW50KCk7CiAKLSAgICBh
dXRvJiBuYW1lU2V0ID0gaXNIVE1MID8gcnVsZVNldHMuZmVhdHVyZXMoKS5hdHRyaWJ1dGVDYW5v
bmljYWxMb2NhbE5hbWVzSW5SdWxlcyA6IHJ1bGVTZXRzLmZlYXR1cmVzKCkuYXR0cmlidXRlTG9j
YWxOYW1lc0luUnVsZXM7Ci0gICAgYm9vbCBtYXlBZmZlY3RTdHlsZSA9IG5hbWVTZXQuY29udGFp
bnMoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwotCi0gICAgYXV0byogc2hhZG93
Um9vdCA9IG1fZWxlbWVudC5zaGFkb3dSb290KCk7Ci0gICAgaWYgKCFtYXlBZmZlY3RTdHlsZSAm
JiBzaGFkb3dSb290ICYmIG1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZSgqc2hhZG93Um9vdCwgaXNI
VE1MLCBhdHRyaWJ1dGVOYW1lKSkKLSAgICAgICAgbWF5QWZmZWN0U3R5bGUgPSB0cnVlOworICAg
IGJvb2wgbWF5QWZmZWN0U3R5bGUgPSBtYXlCZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2UocnVs
ZVNldHMsIGlzSFRNTCwgYXR0cmlidXRlTmFtZSkKKyAgICAgICAgfHwgbWF5QmVBZmZlY3RlZEJ5
SG9zdFJ1bGVzKG1fZWxlbWVudCwgYXR0cmlidXRlTmFtZSkKKyAgICAgICAgfHwgbWF5QmVBZmZl
Y3RlZEJ5U2xvdHRlZFJ1bGVzKG1fZWxlbWVudCwgYXR0cmlidXRlTmFtZSk7CiAKICAgICBpZiAo
IW1heUFmZmVjdFN0eWxlKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDI4ICs4Niw0MSBAQCBzdGF0aWMgQ2xhc3NDaGFuZ2VWZWN0b3Ig
Y29tcHV0ZUNsYXNzQ2hhCiAgICAgcmV0dXJuIGNoYW5nZWRDbGFzc2VzOwogfQogCi1zdGF0aWMg
Ym9vbCBtYXlCZUFmZmVjdGVkQnlIb3N0U3R5bGUoU2hhZG93Um9vdCYgc2hhZG93Um9vdCwgQXRv
bWljU3RyaW5nSW1wbCogY2hhbmdlZENsYXNzKQorc3RhdGljIGJvb2wgbWF5QmVBZmZlY3RlZEJ5
SG9zdFJ1bGVzKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIEF0b21pY1N0cmluZ0ltcGwqIGNoYW5n
ZWRDbGFzcykKIHsKLSAgICBhdXRvJiBzaGFkb3dSdWxlU2V0cyA9IHNoYWRvd1Jvb3Quc3R5bGVT
Y29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICBpZiAoIXNoYWRvd1Jvb3QpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvJiBzaGFkb3dSdWxlU2V0cyA9IHNoYWRvd1Jvb3Qt
PnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCk7CiAgICAgaWYgKHNoYWRvd1J1bGVT
ZXRzLmF1dGhvclN0eWxlKCkuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc2hhZG93UnVsZVNldHMuZmVhdHVyZXMoKS5j
bGFzc2VzSW5SdWxlcy5jb250YWlucyhjaGFuZ2VkQ2xhc3MpOwogfQogCitzdGF0aWMgYm9vbCBt
YXlCZUFmZmVjdGVkQnlTbG90dGVkUnVsZXMoVmVjdG9yPFNoYWRvd1Jvb3QqPiBhc3NpZ25lZFNo
YWRvd1Jvb3RzLCBBdG9taWNTdHJpbmdJbXBsKiBjaGFuZ2VkQ2xhc3MpCit7CisgICAgZm9yIChh
dXRvJiBhc3NpZ25lZFNoYWRvd1Jvb3QgOiBhc3NpZ25lZFNoYWRvd1Jvb3RzKSB7CisgICAgICAg
IGF1dG8mIHJ1bGVTZXRzID0gYXNzaWduZWRTaGFkb3dSb290LT5zdHlsZVNjb3BlKCkucmVzb2x2
ZXIoKS5ydWxlU2V0cygpOworICAgICAgICBpZiAocnVsZVNldHMuYXV0aG9yU3R5bGUoKS5zbG90
dGVkUHNldWRvRWxlbWVudFJ1bGVzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmIChydWxlU2V0cy5mZWF0dXJlcygpLmNsYXNzZXNJblJ1bGVzLmNvbnRhaW5z
KGNoYW5nZWRDbGFzcykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCiB2b2lkIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRl
U3R5bGUoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3NlcywgY29uc3QgU3BhY2VTcGxp
dFN0cmluZyYgbmV3Q2xhc3NlcykKIHsKICAgICBhdXRvIGNoYW5nZWRDbGFzc2VzID0gY29tcHV0
ZUNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIG5ld0NsYXNzZXMpOwogCiAgICAgYXV0byYgcnVsZVNl
dHMgPSBtX2VsZW1lbnQuc3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCk7CiAgICAgYXV0byogc2hh
ZG93Um9vdCA9IG1fZWxlbWVudC5zaGFkb3dSb290KCk7CisgICAgYXV0byBhc3NpZ25lZFNoYWRv
d1Jvb3RzID0gYXNzaWduZWRTaGFkb3dSb290c0lmU2xvdHRlZChtX2VsZW1lbnQpOwogCiAgICAg
Q2xhc3NDaGFuZ2VWZWN0b3IgY2hhbmdlZENsYXNzZXNBZmZlY3RpbmdTdHlsZTsKICAgICBmb3Ig
KGF1dG8qIGNoYW5nZWRDbGFzcyA6IGNoYW5nZWRDbGFzc2VzKSB7Ci0gICAgICAgIGJvb2wgbWF5
QWZmZWN0U3R5bGUgPSBydWxlU2V0cy5mZWF0dXJlcygpLmNsYXNzZXNJblJ1bGVzLmNvbnRhaW5z
KGNoYW5nZWRDbGFzcyk7Ci0KLSAgICAgICAgaWYgKCFtYXlBZmZlY3RTdHlsZSAmJiBzaGFkb3dS
b290ICYmIG1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZSgqc2hhZG93Um9vdCwgY2hhbmdlZENsYXNz
KSkKLSAgICAgICAgICAgIG1heUFmZmVjdFN0eWxlID0gdHJ1ZTsKLQorICAgICAgICBib29sIG1h
eUFmZmVjdFN0eWxlID0gcnVsZVNldHMuZmVhdHVyZXMoKS5jbGFzc2VzSW5SdWxlcy5jb250YWlu
cyhjaGFuZ2VkQ2xhc3MpCisgICAgICAgICAgICB8fCBtYXlCZUFmZmVjdGVkQnlIb3N0UnVsZXMo
c2hhZG93Um9vdCwgY2hhbmdlZENsYXNzKQorICAgICAgICAgICAgfHwgbWF5QmVBZmZlY3RlZEJ5
U2xvdHRlZFJ1bGVzKGFzc2lnbmVkU2hhZG93Um9vdHMsIGNoYW5nZWRDbGFzcyk7CiAgICAgICAg
IGlmIChtYXlBZmZlY3RTdHlsZSkKICAgICAgICAgICAgIGNoYW5nZWRDbGFzc2VzQWZmZWN0aW5n
U3R5bGUuYXBwZW5kKGNoYW5nZWRDbGFzcyk7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAkocmV2aXNpb24gMjA4Mzk4KQor
KysgU291cmNlL1dlYkNvcmUvc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBpbmxpbmUgQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246
On5DbGFzc0NoCiAgICAgICAgIHJldHVybjsKICAgICBpbnZhbGlkYXRlRGVzY2VuZGFudFN0eWxl
KCk7CiB9Ci0gICAgCisKIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvSWRDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lk
Q2hhbmdlSW52YWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNv
cmUvc3R5bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwx
NSArMzUsMjkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLXN0
YXRpYyBib29sIG1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZShTaGFkb3dSb290JiBzaGFkb3dSb290
LCBjb25zdCBBdG9taWNTdHJpbmcmIGNoYW5nZWRJZCkKK3N0YXRpYyBib29sIG1heUJlQWZmZWN0
ZWRCeUhvc3RSdWxlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IGNoYW5nZWRJZCkKIHsKLSAgICBhdXRvJiBzaGFkb3dSdWxlU2V0cyA9IHNoYWRvd1Jvb3Quc3R5
bGVTY29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICBhdXRvKiBzaGFkb3dSb290ID0g
ZWxlbWVudC5zaGFkb3dSb290KCk7CisgICAgaWYgKCFzaGFkb3dSb290KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgYXV0byYgc2hhZG93UnVsZVNldHMgPSBzaGFkb3dSb290LT5zdHlsZVNj
b3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygpOwogICAgIGlmIChzaGFkb3dSdWxlU2V0cy5hdXRo
b3JTdHlsZSgpLmhvc3RQc2V1ZG9DbGFzc1J1bGVzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gc2hhZG93UnVsZVNldHMuZmVhdHVyZXMoKS5pZHNJblJ1
bGVzLmNvbnRhaW5zKGNoYW5nZWRJZC5pbXBsKCkpOwogfQogCitzdGF0aWMgYm9vbCBtYXlCZUFm
ZmVjdGVkQnlTbG90dGVkUnVsZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBjaGFuZ2VkSWQpCit7CisgICAgZm9yIChhdXRvKiBzaGFkb3dSb290IDogYXNzaWdu
ZWRTaGFkb3dSb290c0lmU2xvdHRlZChlbGVtZW50KSkgeworICAgICAgICBhdXRvJiBydWxlU2V0
cyA9IHNoYWRvd1Jvb3QtPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCk7CisgICAg
ICAgIGlmIChydWxlU2V0cy5hdXRob3JTdHlsZSgpLnNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMo
KS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHJ1bGVTZXRz
LmZlYXR1cmVzKCkuaWRzSW5SdWxlcy5jb250YWlucyhjaGFuZ2VkSWQuaW1wbCgpKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQg
SWRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZShjb25zdCBBdG9taWNTdHJpbmcm
IGNoYW5nZWRJZCkKIHsKICAgICBpZiAoY2hhbmdlZElkLmlzRW1wdHkoKSkKQEAgLTUxLDExICs2
NSw5IEBAIHZvaWQgSWRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHkKIAogICAgIGF1
dG8mIHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygpOwogCi0g
ICAgYm9vbCBtYXlBZmZlY3RTdHlsZSA9IHJ1bGVTZXRzLmZlYXR1cmVzKCkuaWRzSW5SdWxlcy5j
b250YWlucyhjaGFuZ2VkSWQuaW1wbCgpKTsKLQotICAgIGF1dG8qIHNoYWRvd1Jvb3QgPSBtX2Vs
ZW1lbnQuc2hhZG93Um9vdCgpOwotICAgIGlmICghbWF5QWZmZWN0U3R5bGUgJiYgc2hhZG93Um9v
dCAmJiBtYXlCZUFmZmVjdGVkQnlIb3N0U3R5bGUoKnNoYWRvd1Jvb3QsIGNoYW5nZWRJZCkpCi0g
ICAgICAgIG1heUFmZmVjdFN0eWxlID0gdHJ1ZTsKKyAgICBib29sIG1heUFmZmVjdFN0eWxlID0g
cnVsZVNldHMuZmVhdHVyZXMoKS5pZHNJblJ1bGVzLmNvbnRhaW5zKGNoYW5nZWRJZC5pbXBsKCkp
CisgICAgICAgIHx8IG1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyhtX2VsZW1lbnQsIGNoYW5nZWRJ
ZCkKKyAgICAgICAgfHwgbWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKG1fZWxlbWVudCwgY2hh
bmdlZElkKTsKIAogICAgIGlmICghbWF5QWZmZWN0U3R5bGUpCiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAJKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29s
dmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDcgKzI4OCw3IEBAIGJvb2wgU2hhcmluZ1Jl
c29sdmVyOjpjYW5TaGFyZVN0eWxlV2l0aEUKICAgICBpZiAoY2FuZGlkYXRlRWxlbWVudC5tYXRj
aGVzRGVmYXVsdFBzZXVkb0NsYXNzKCkgIT0gZWxlbWVudC5tYXRjaGVzRGVmYXVsdFBzZXVkb0Ns
YXNzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChlbGVtZW50LnNoYWRvd1Jv
b3QoKSAmJiAhZWxlbWVudC5zaGFkb3dSb290KCktPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1
bGVTZXRzKCkuYXV0aG9yU3R5bGUoKS5ob3N0UHNldWRvQ2xhc3NSdWxlcygpLmlzRW1wdHkoKSkK
KyAgICBpZiAoY2FuZGlkYXRlRWxlbWVudC5zaGFkb3dSb290KCkgJiYgIWNhbmRpZGF0ZUVsZW1l
bnQuc2hhZG93Um9vdCgpLT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygpLmF1dGhv
clN0eWxlKCkuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIwODM5OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDE2LTExLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4K
KworICAgICAgICBVcGRhdGluZyBjbGFzcyBuYW1lIGRvZXNuJ3QgdXBkYXRlIHRoZSBzbG90dGVk
IGNvbnRlbnQncyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY0NTc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTIwNTg3Mz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qvc2hhZG93
LWRvbS9jc3Mtc2NvcGluZy1zbG90dGVkLWludmFsaWRhdGlvbi1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2xvdHRlZC1pbnZhbGlk
YXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTYtMTEtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgbGF5b3V0IHRlc3QgZm9yIGlucHV0LnNldEN1c3RvbVZh
bGlkaXR5KCkKQEAgLTMxLDYgKzQyLDE3IEBACiAgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Nz
cy1zY29waW5nLXNsb3Qtd2l0aC1pZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KICAgICAgICAgKiBm
YXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2xvdC13aXRoLWlkLmh0bWw6IEFkZGVkLgogCisy
MDE2LTExLTA0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBz
bG90dGVkKCkgcHNldWRvIGRvZXMgbm90IHdvcmsgd2l0aCBJRCBzZWxlY3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTM4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yODUzNDUyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNsb3Qtd2l0aC1p
ZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vY3NzLXNj
b3Bpbmctc2xvdC13aXRoLWlkLmh0bWw6IEFkZGVkLgorCiAyMDE2LTExLTA0ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmRleGVkREIgMi4wOiBVc2UgSURC
LXNwZWNpZmljIGV4Y2VwdGlvbnMgaW4gcGxhY2VzIHdoZXJlIHRoZSBnZW5lcmljIGV4Y2VwdGlv
bnMgYXJlIGN1cnJlbnRseSB1c2VkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9t
L2Nzcy1zY29waW5nLXNsb3R0ZWQtaW52YWxpZGF0aW9uLWV4cGVjdGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNsb3R0ZWQtaW52
YWxpZGF0aW9uLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNsb3R0ZWQtaW52YWxpZGF0aW9uLWV4cGVjdGVkLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxib2R5PgorICAgICAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xl
IDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+CisgICAgICAgIDxkaXYgc3R5bGU9
IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZDogZ3JlZW47Ij48L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
Y3NzLXNjb3Bpbmctc2xvdHRlZC1pbnZhbGlkYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2xvdHRlZC1pbnZhbGlkYXRpb24u
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNj
b3Bpbmctc2xvdHRlZC1pbnZhbGlkYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDg3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNl
ZSBhIHNpbmdsZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cuPC9wPgorPGRpdiBpZD0i
dDEiPgorICAgIDxzcGFuPkZBSUw8L3NwYW4+Cis8L2Rpdj4KKzxkaXYgaWQ9InQyIj4KKyAgICA8
c3Bhbj5GQUlMPC9zcGFuPgorPC9kaXY+Cis8ZGl2IGlkPSJ0MyI+CisgICAgPHNwYW4+RkFJTDwv
c3Bhbj4KKzwvZGl2PgorPGRpdiBpZD0idDQiPgorICAgIDxzcGFuPkZBSUw8L3NwYW4+Cis8L2Rp
dj4KKzxkaXYgaWQ9InQ1Ij4KKyAgICA8c3BhbiBzZWxlY3RlZD5GQUlMPC9zcGFuPgorPC9kaXY+
Cis8ZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBhdHRhY2hTaGFkb3coaG9zdCwg
c2xvdHRlZFNlbGVjdG9yKQoreworICAgIGNvbnN0IHNoYWRvdyA9IGhvc3QuYXR0YWNoU2hhZG93
KHttb2RlOiAnY2xvc2VkJ30pOworICAgIHNoYWRvdy5pbm5lckhUTUwgPSBgPHNsb3Q+PC9zbG90
PgorICAgIDxzdHlsZT4KKyAgICA6aG9zdCB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAyMHB4OworICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICAgICAgY29s
b3I6IHJlZDsKKyAgICB9CisgICAgOjpzbG90dGVkKCR7c2xvdHRlZFNlbGVjdG9yfSkgeworICAg
ICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorICAgIDwvc3R5bGU+YDsKKyAgICByZXR1cm4gc2hh
ZG93OworfQorCit7CisgICAgY29uc3QgaG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0
MScpOworICAgIGF0dGFjaFNoYWRvdyhob3N0LCAnLnNlbGVjdGVkJyk7CisgICAgY29uc3Qgc3Bh
biA9IGhvc3QucXVlcnlTZWxlY3Rvcignc3BhbicpOworICAgIGdldENvbXB1dGVkU3R5bGUoc3Bh
bikuYmFja2dyb3VuZENvbG9yOworICAgIHNwYW4uY2xhc3NOYW1lID0gJ3NlbGVjdGVkJzsKK30K
KworeworICAgIGNvbnN0IGhvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdDInKTsKKyAg
ICBhdHRhY2hTaGFkb3coaG9zdCwgJyNzZWxlY3RlZCcpOworICAgIGNvbnN0IHNwYW4gPSBob3N0
LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKTsKKyAgICBnZXRDb21wdXRlZFN0eWxlKHNwYW4pLmJhY2tn
cm91bmRDb2xvcgorICAgIHNwYW4uaWQgPSAnc2VsZWN0ZWQnOworfQorCit7CisgICAgY29uc3Qg
aG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0MycpOworICAgIGF0dGFjaFNoYWRvdyho
b3N0LCAnW3NlbGVjdGVkXScpOworICAgIGNvbnN0IHNwYW4gPSBob3N0LnF1ZXJ5U2VsZWN0b3Io
J3NwYW4nKTsKKyAgICBnZXRDb21wdXRlZFN0eWxlKHNwYW4pLmJhY2tncm91bmRDb2xvcjsKKyAg
ICBzcGFuLnNldEF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCAnc2VsZWN0ZWQnKTsKK30KKworeworICAg
IGNvbnN0IGhvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdDQnKTsKKyAgICBjb25zdCBz
aGFkb3cgPSBob3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKKyAgICBzaGFkb3cu
aW5uZXJIVE1MID0gYDxkaXY+PHNsb3Q+PC9zbG90PjwvZGl2PmA7CisgICAgY29uc3QgZGVlcEhv
c3QgPSBzaGFkb3cucXVlcnlTZWxlY3RvcignZGl2Jyk7CisgICAgYXR0YWNoU2hhZG93KGRlZXBI
b3N0LCAnLnNlbGVjdGVkJyk7CisgICAgY29uc3Qgc3BhbiA9IGhvc3QucXVlcnlTZWxlY3Rvcign
c3BhbicpOworICAgIGdldENvbXB1dGVkU3R5bGUoc3BhbikuYmFja2dyb3VuZENvbG9yOworICAg
IHNwYW4uY2xhc3NOYW1lID0gJ3NlbGVjdGVkJzsKK30KKworeworICAgIGNvbnN0IGhvc3QgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdDUnKTsKKyAgICBjb25zdCBzaGFkb3cgPSBob3N0LmF0
dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0gYDxk
aXY+PHNsb3Q+PC9zbG90PjwvZGl2PmA7CisgICAgY29uc3QgZGVlcEhvc3QgPSBzaGFkb3cucXVl
cnlTZWxlY3RvcignZGl2Jyk7CisgICAgYXR0YWNoU2hhZG93KGRlZXBIb3N0LCAnOm5vdChbc2Vs
ZWN0ZWRdKScpOworICAgIGNvbnN0IHNwYW4gPSBob3N0LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKTsK
KyAgICBnZXRDb21wdXRlZFN0eWxlKHNwYW4pLmJhY2tncm91bmRDb2xvcjsKKyAgICBzcGFuLnJl
bW92ZUF0dHJpYnV0ZSgnc2VsZWN0ZWQnKTsKK30KKworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294501</attachid>
            <date>2016-11-11 09:38:10 -0800</date>
            <delta_ts>2016-11-11 09:43:34 -0800</delta_ts>
            <desc>patch</desc>
            <filename>slotted-mutation-invalidation-4.patch</filename>
            <type>text/plain</type>
            <size>16922</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTExLTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGluZyBjbGFzcyBuYW1l
IGRvZXNuJ3QgdXBkYXRlIHRoZSBzbG90dGVkIGNvbnRlbnQncyBzdHlsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NTc3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yOTIwNTg3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2xvdHRlZC1p
bnZhbGlkYXRpb24uaHRtbAorCisgICAgICAgIFRlYWNoIHN0eWxlIGludmFsaWRhdGlvbiBjb2Rl
IGZvciBhdHRyaWJ1dGUvY2xhc3MvaWQgbXV0YXRpb25zIGFib3V0IHNsb3R0ZWQgcnVsZXMuCisK
KyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphc3NpZ25l
ZFNoYWRvd1Jvb3RzSWZTbG90dGVkKToKKworICAgICAgICAgICAgSGVscGVyIHRvIGZpbmQgYWxs
IGFzc2lnbmVkIHNoYWRvdyByb290cyAodGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgaWYgc2xv
dHMgYXJlIGFzc2lnbmVkIHRvIHNsb3RzKS4KKworICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6
CisgICAgICAgICogc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjptYXlCZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5SG9zdFN0eWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjptYXlCZUFmZmVjdGVkQnlTbG90dGVkUnVsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkNsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRl
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RTdHls
ZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDoK
KyAgICAgICAgKiBzdHlsZS9JZENoYW5nZUludmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjptYXlCZUFmZmVjdGVkQnlTbG90dGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OklkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZSk6IERlbGV0ZWQuCisgICAg
ICAgICogc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlNoYXJpbmdSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KToKKworICAg
ICAgICAgICAgRml4IGEgYnVnIGluIHN0eWxlIHNoYXJpbmcgd2hlcmUgd2Ugd2VyZSBjaGVja2lu
ZyB3cm9uZyBlbGVtZW50IGZvciBob3N0IHJ1bGVzLgorICAgICAgICAgICAgVGVzdGVkIGJ5IHRo
ZSBpbmNsdWRlZCB0ZXN0IHRvbyAodGhlIGxhc3QgZW1wdHkgZGl2KS4KKwogMjAxNi0xMS0xMSAg
TWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3Nz
LWdyaWRdIEFTU0VSVElPTiBGQUlMRUQ6ICFtX2dyaWRJc0RpcnR5IGluIFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmdyaWRSb3dDb3VudApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2
aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgog
I2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5o
IgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTbG90QXNz
aWdubWVudC5oIgpAQCAtMTgzLDUgKzE4NCwxNCBAQCBjb25zdCBWZWN0b3I8Tm9kZSo+KiBTaGFk
b3dSb290Ojphc3NpZ25lCiAgICAgcmV0dXJuIG1fc2xvdEFzc2lnbm1lbnQtPmFzc2lnbmVkTm9k
ZXNGb3JTbG90KHNsb3QsICp0aGlzKTsKIH0KIAorVmVjdG9yPFNoYWRvd1Jvb3QqPiBhc3NpZ25l
ZFNoYWRvd1Jvb3RzSWZTbG90dGVkKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgVmVjdG9yPFNo
YWRvd1Jvb3QqPiByZXN1bHQ7CisgICAgZm9yIChhdXRvKiBzbG90ID0gbm9kZS5hc3NpZ25lZFNs
b3QoKTsgc2xvdDsgc2xvdCA9IHNsb3QtPmFzc2lnbmVkU2xvdCgpKSB7CisgICAgICAgIEFTU0VS
VChzbG90LT5jb250YWluaW5nU2hhZG93Um9vdCgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChz
bG90LT5jb250YWluaW5nU2hhZG93Um9vdCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAyMDgzOTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMs
NiArMTMzLDggQEAgaW5saW5lIGJvb2wgaGFzU2hhZG93Um9vdFBhcmVudChjb25zdCBObwogICAg
IHJldHVybiBub2RlLnBhcmVudE5vZGUoKSAmJiBub2RlLnBhcmVudE5vZGUoKS0+aXNTaGFkb3dS
b290KCk7CiB9CiAKK1ZlY3RvcjxTaGFkb3dSb290Kj4gYXNzaWduZWRTaGFkb3dSb290c0lmU2xv
dHRlZChjb25zdCBOb2RlJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTaGFkb3dSb290KQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJ
bnZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNCArMzYsMzQgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLXN0YXRpYyBib29sIG1heUJlQWZm
ZWN0ZWRCeUhvc3RTdHlsZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBib29sIGlzSFRNTCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKK3N0YXRpYyBib29sIG1heUJlQWZmZWN0
ZWRCeUF0dHJpYnV0ZUNoYW5nZShEb2N1bWVudFJ1bGVTZXRzJiBydWxlU2V0cywgYm9vbCBpc0hU
TUwsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgYXV0byYgc2hh
ZG93UnVsZVNldHMgPSBzaGFkb3dSb290LnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRz
KCk7CisgICAgYXV0byYgbmFtZVNldCA9IGlzSFRNTCA/IHJ1bGVTZXRzLmZlYXR1cmVzKCkuYXR0
cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXMgOiBydWxlU2V0cy5mZWF0dXJlcygpLmF0
dHJpYnV0ZUxvY2FsTmFtZXNJblJ1bGVzOworICAgIHJldHVybiBuYW1lU2V0LmNvbnRhaW5zKGF0
dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKK30KKworc3RhdGljIGJvb2wgbWF5QmVB
ZmZlY3RlZEJ5SG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCit7CisgICAgYXV0byogc2hhZG93Um9vdCA9IGVsZW1lbnQu
c2hhZG93Um9vdCgpOworICAgIGlmICghc2hhZG93Um9vdCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGF1dG8mIHNoYWRvd1J1bGVTZXRzID0gc2hhZG93Um9vdC0+c3R5bGVTY29wZSgpLnJl
c29sdmVyKCkucnVsZVNldHMoKTsKICAgICBpZiAoc2hhZG93UnVsZVNldHMuYXV0aG9yU3R5bGUo
KS5ob3N0UHNldWRvQ2xhc3NSdWxlcygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYXV0byYgbmFtZVNldCA9IGlzSFRNTCA/IHNoYWRvd1J1bGVTZXRzLmZlYXR1cmVz
KCkuYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXMgOiBzaGFkb3dSdWxlU2V0cy5m
ZWF0dXJlcygpLmF0dHJpYnV0ZUxvY2FsTmFtZXNJblJ1bGVzOwotICAgIHJldHVybiBuYW1lU2V0
LmNvbnRhaW5zKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICByZXR1cm4g
bWF5QmVBZmZlY3RlZEJ5QXR0cmlidXRlQ2hhbmdlKHNoYWRvd1J1bGVTZXRzLCBlbGVtZW50Lmlz
SFRNTEVsZW1lbnQoKSwgYXR0cmlidXRlTmFtZSk7Cit9CisKK3N0YXRpYyBib29sIG1heUJlQWZm
ZWN0ZWRCeVNsb3R0ZWRSdWxlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQoreworICAgIGZvciAoYXV0byogc2hhZG93Um9vdCA6IGFz
c2lnbmVkU2hhZG93Um9vdHNJZlNsb3R0ZWQoZWxlbWVudCkpIHsKKyAgICAgICAgYXV0byYgcnVs
ZVNldHMgPSBzaGFkb3dSb290LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygpOwor
ICAgICAgICBpZiAocnVsZVNldHMuYXV0aG9yU3R5bGUoKS5zbG90dGVkUHNldWRvRWxlbWVudFJ1
bGVzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChtYXlC
ZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2UocnVsZVNldHMsIGVsZW1lbnQuaXNIVE1MRWxlbWVu
dCgpLCBhdHRyaWJ1dGVOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjpp
bnZhbGlkYXRlU3R5bGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKQEAg
LTU0LDEyICs3NCw5IEBAIHZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGkK
ICAgICBhdXRvJiBydWxlU2V0cyA9IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMo
KTsKICAgICBib29sIGlzSFRNTCA9IG1fZWxlbWVudC5pc0hUTUxFbGVtZW50KCk7CiAKLSAgICBh
dXRvJiBuYW1lU2V0ID0gaXNIVE1MID8gcnVsZVNldHMuZmVhdHVyZXMoKS5hdHRyaWJ1dGVDYW5v
bmljYWxMb2NhbE5hbWVzSW5SdWxlcyA6IHJ1bGVTZXRzLmZlYXR1cmVzKCkuYXR0cmlidXRlTG9j
YWxOYW1lc0luUnVsZXM7Ci0gICAgYm9vbCBtYXlBZmZlY3RTdHlsZSA9IG5hbWVTZXQuY29udGFp
bnMoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwotCi0gICAgYXV0byogc2hhZG93
Um9vdCA9IG1fZWxlbWVudC5zaGFkb3dSb290KCk7Ci0gICAgaWYgKCFtYXlBZmZlY3RTdHlsZSAm
JiBzaGFkb3dSb290ICYmIG1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZSgqc2hhZG93Um9vdCwgaXNI
VE1MLCBhdHRyaWJ1dGVOYW1lKSkKLSAgICAgICAgbWF5QWZmZWN0U3R5bGUgPSB0cnVlOworICAg
IGJvb2wgbWF5QWZmZWN0U3R5bGUgPSBtYXlCZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2UocnVs
ZVNldHMsIGlzSFRNTCwgYXR0cmlidXRlTmFtZSkKKyAgICAgICAgfHwgbWF5QmVBZmZlY3RlZEJ5
SG9zdFJ1bGVzKG1fZWxlbWVudCwgYXR0cmlidXRlTmFtZSkKKyAgICAgICAgfHwgbWF5QmVBZmZl
Y3RlZEJ5U2xvdHRlZFJ1bGVzKG1fZWxlbWVudCwgYXR0cmlidXRlTmFtZSk7CiAKICAgICBpZiAo
IW1heUFmZmVjdFN0eWxlKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDI4ICs4Niw0MSBAQCBzdGF0aWMgQ2xhc3NDaGFuZ2VWZWN0b3Ig
Y29tcHV0ZUNsYXNzQ2hhCiAgICAgcmV0dXJuIGNoYW5nZWRDbGFzc2VzOwogfQogCi1zdGF0aWMg
Ym9vbCBtYXlCZUFmZmVjdGVkQnlIb3N0U3R5bGUoU2hhZG93Um9vdCYgc2hhZG93Um9vdCwgQXRv
bWljU3RyaW5nSW1wbCogY2hhbmdlZENsYXNzKQorc3RhdGljIGJvb2wgbWF5QmVBZmZlY3RlZEJ5
SG9zdFJ1bGVzKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIEF0b21pY1N0cmluZ0ltcGwqIGNoYW5n
ZWRDbGFzcykKIHsKLSAgICBhdXRvJiBzaGFkb3dSdWxlU2V0cyA9IHNoYWRvd1Jvb3Quc3R5bGVT
Y29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICBpZiAoIXNoYWRvd1Jvb3QpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvJiBzaGFkb3dSdWxlU2V0cyA9IHNoYWRvd1Jvb3Qt
PnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCk7CiAgICAgaWYgKHNoYWRvd1J1bGVT
ZXRzLmF1dGhvclN0eWxlKCkuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc2hhZG93UnVsZVNldHMuZmVhdHVyZXMoKS5j
bGFzc2VzSW5SdWxlcy5jb250YWlucyhjaGFuZ2VkQ2xhc3MpOwogfQogCitzdGF0aWMgYm9vbCBt
YXlCZUFmZmVjdGVkQnlTbG90dGVkUnVsZXMoY29uc3QgVmVjdG9yPFNoYWRvd1Jvb3QqPiYgYXNz
aWduZWRTaGFkb3dSb290cywgQXRvbWljU3RyaW5nSW1wbCogY2hhbmdlZENsYXNzKQoreworICAg
IGZvciAoYXV0byYgYXNzaWduZWRTaGFkb3dSb290IDogYXNzaWduZWRTaGFkb3dSb290cykgewor
ICAgICAgICBhdXRvJiBydWxlU2V0cyA9IGFzc2lnbmVkU2hhZG93Um9vdC0+c3R5bGVTY29wZSgp
LnJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICAgICAgaWYgKHJ1bGVTZXRzLmF1dGhvclN0eWxl
KCkuc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBpZiAocnVsZVNldHMuZmVhdHVyZXMoKS5jbGFzc2VzSW5SdWxlcy5j
b250YWlucyhjaGFuZ2VkQ2xhc3MpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBDbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6aW52
YWxpZGF0ZVN0eWxlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sZENsYXNzZXMsIGNvbnN0IFNw
YWNlU3BsaXRTdHJpbmcmIG5ld0NsYXNzZXMpCiB7CiAgICAgYXV0byBjaGFuZ2VkQ2xhc3NlcyA9
IGNvbXB1dGVDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBuZXdDbGFzc2VzKTsKIAogICAgIGF1dG8m
IHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygpOwogICAgIGF1
dG8qIHNoYWRvd1Jvb3QgPSBtX2VsZW1lbnQuc2hhZG93Um9vdCgpOworICAgIGF1dG8gYXNzaWdu
ZWRTaGFkb3dSb290cyA9IGFzc2lnbmVkU2hhZG93Um9vdHNJZlNsb3R0ZWQobV9lbGVtZW50KTsK
IAogICAgIENsYXNzQ2hhbmdlVmVjdG9yIGNoYW5nZWRDbGFzc2VzQWZmZWN0aW5nU3R5bGU7CiAg
ICAgZm9yIChhdXRvKiBjaGFuZ2VkQ2xhc3MgOiBjaGFuZ2VkQ2xhc3NlcykgewotICAgICAgICBi
b29sIG1heUFmZmVjdFN0eWxlID0gcnVsZVNldHMuZmVhdHVyZXMoKS5jbGFzc2VzSW5SdWxlcy5j
b250YWlucyhjaGFuZ2VkQ2xhc3MpOwotCi0gICAgICAgIGlmICghbWF5QWZmZWN0U3R5bGUgJiYg
c2hhZG93Um9vdCAmJiBtYXlCZUFmZmVjdGVkQnlIb3N0U3R5bGUoKnNoYWRvd1Jvb3QsIGNoYW5n
ZWRDbGFzcykpCi0gICAgICAgICAgICBtYXlBZmZlY3RTdHlsZSA9IHRydWU7Ci0KKyAgICAgICAg
Ym9vbCBtYXlBZmZlY3RTdHlsZSA9IHJ1bGVTZXRzLmZlYXR1cmVzKCkuY2xhc3Nlc0luUnVsZXMu
Y29udGFpbnMoY2hhbmdlZENsYXNzKQorICAgICAgICAgICAgfHwgbWF5QmVBZmZlY3RlZEJ5SG9z
dFJ1bGVzKHNoYWRvd1Jvb3QsIGNoYW5nZWRDbGFzcykKKyAgICAgICAgICAgIHx8IG1heUJlQWZm
ZWN0ZWRCeVNsb3R0ZWRSdWxlcyhhc3NpZ25lZFNoYWRvd1Jvb3RzLCBjaGFuZ2VkQ2xhc3MpOwog
ICAgICAgICBpZiAobWF5QWZmZWN0U3R5bGUpCiAgICAgICAgICAgICBjaGFuZ2VkQ2xhc3Nlc0Fm
ZmVjdGluZ1N0eWxlLmFwcGVuZChjaGFuZ2VkQ2xhc3MpOwogICAgIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgJKHJldmlzaW9uIDIw
ODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgaW5saW5lIENsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uOjp+Q2xhc3NDaAogICAgICAgICByZXR1cm47CiAgICAgaW52YWxpZGF0ZURlc2NlbmRh
bnRTdHlsZSgpOwogfQotICAgIAorCiB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxl
L0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9JZENoYW5nZUludmFsaWRhdGlvbi5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTUgKzM1LDI5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgU3R5bGUg
ewogCi1zdGF0aWMgYm9vbCBtYXlCZUFmZmVjdGVkQnlIb3N0U3R5bGUoU2hhZG93Um9vdCYgc2hh
ZG93Um9vdCwgY29uc3QgQXRvbWljU3RyaW5nJiBjaGFuZ2VkSWQpCitzdGF0aWMgYm9vbCBtYXlC
ZUFmZmVjdGVkQnlIb3N0UnVsZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBjaGFuZ2VkSWQpCiB7Ci0gICAgYXV0byYgc2hhZG93UnVsZVNldHMgPSBzaGFkb3dS
b290LnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCk7CisgICAgYXV0byogc2hhZG93
Um9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCgpOworICAgIGlmICghc2hhZG93Um9vdCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIHNoYWRvd1J1bGVTZXRzID0gc2hhZG93Um9vdC0+
c3R5bGVTY29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMoKTsKICAgICBpZiAoc2hhZG93UnVsZVNl
dHMuYXV0aG9yU3R5bGUoKS5ob3N0UHNldWRvQ2xhc3NSdWxlcygpLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCiAgICAgcmV0dXJuIHNoYWRvd1J1bGVTZXRzLmZlYXR1cmVzKCku
aWRzSW5SdWxlcy5jb250YWlucyhjaGFuZ2VkSWQuaW1wbCgpKTsKIH0KIAorc3RhdGljIGJvb2wg
bWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IEF0b21pY1N0cmluZyYgY2hhbmdlZElkKQoreworICAgIGZvciAoYXV0byogc2hhZG93Um9vdCA6
IGFzc2lnbmVkU2hhZG93Um9vdHNJZlNsb3R0ZWQoZWxlbWVudCkpIHsKKyAgICAgICAgYXV0byYg
cnVsZVNldHMgPSBzaGFkb3dSb290LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygp
OworICAgICAgICBpZiAocnVsZVNldHMuYXV0aG9yU3R5bGUoKS5zbG90dGVkUHNldWRvRWxlbWVu
dFJ1bGVzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChy
dWxlU2V0cy5mZWF0dXJlcygpLmlkc0luUnVsZXMuY29udGFpbnMoY2hhbmdlZElkLmltcGwoKSkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiB2b2lkIElkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBjaGFuZ2VkSWQpCiB7CiAgICAgaWYgKGNoYW5nZWRJZC5pc0VtcHR5KCkpCkBAIC01
MSwxMSArNjUsOSBAQCB2b2lkIElkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5CiAK
ICAgICBhdXRvJiBydWxlU2V0cyA9IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMo
KTsKIAotICAgIGJvb2wgbWF5QWZmZWN0U3R5bGUgPSBydWxlU2V0cy5mZWF0dXJlcygpLmlkc0lu
UnVsZXMuY29udGFpbnMoY2hhbmdlZElkLmltcGwoKSk7Ci0KLSAgICBhdXRvKiBzaGFkb3dSb290
ID0gbV9lbGVtZW50LnNoYWRvd1Jvb3QoKTsKLSAgICBpZiAoIW1heUFmZmVjdFN0eWxlICYmIHNo
YWRvd1Jvb3QgJiYgbWF5QmVBZmZlY3RlZEJ5SG9zdFN0eWxlKCpzaGFkb3dSb290LCBjaGFuZ2Vk
SWQpKQotICAgICAgICBtYXlBZmZlY3RTdHlsZSA9IHRydWU7CisgICAgYm9vbCBtYXlBZmZlY3RT
dHlsZSA9IHJ1bGVTZXRzLmZlYXR1cmVzKCkuaWRzSW5SdWxlcy5jb250YWlucyhjaGFuZ2VkSWQu
aW1wbCgpKQorICAgICAgICB8fCBtYXlCZUFmZmVjdGVkQnlIb3N0UnVsZXMobV9lbGVtZW50LCBj
aGFuZ2VkSWQpCisgICAgICAgIHx8IG1heUJlQWZmZWN0ZWRCeVNsb3R0ZWRSdWxlcyhtX2VsZW1l
bnQsIGNoYW5nZWRJZCk7CiAKICAgICBpZiAoIW1heUFmZmVjdFN0eWxlKQogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIu
Y3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJp
bmdSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBAQCBib29sIFNo
YXJpbmdSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFCiAgICAgaWYgKGNhbmRpZGF0ZUVsZW1l
bnQubWF0Y2hlc0RlZmF1bHRQc2V1ZG9DbGFzcygpICE9IGVsZW1lbnQubWF0Y2hlc0RlZmF1bHRQ
c2V1ZG9DbGFzcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZWxlbWVudC5z
aGFkb3dSb290KCkgJiYgIWVsZW1lbnQuc2hhZG93Um9vdCgpLT5zdHlsZVNjb3BlKCkucmVzb2x2
ZXIoKS5ydWxlU2V0cygpLmF1dGhvclN0eWxlKCkuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0Vt
cHR5KCkpCisgICAgaWYgKGNhbmRpZGF0ZUVsZW1lbnQuc2hhZG93Um9vdCgpICYmICFjYW5kaWRh
dGVFbGVtZW50LnNoYWRvd1Jvb3QoKS0+c3R5bGVTY29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMo
KS5hdXRob3JTdHlsZSgpLmhvc3RQc2V1ZG9DbGFzc1J1bGVzKCkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxNi0xMS0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRpbmcgY2xhc3MgbmFtZSBkb2Vzbid0IHVwZGF0ZSB0aGUg
c2xvdHRlZCBjb250ZW50J3Mgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NDU3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkyMDU4NzM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2xvdHRlZC1pbnZhbGlkYXRpb24tZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNsb3R0ZWQt
aW52YWxpZGF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE2LTExLTA0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGxheW91dCB0ZXN0IGZvciBpbnB1dC5zZXRD
dXN0b21WYWxpZGl0eSgpCkBAIC0zMSw2ICs0MiwxNyBAQAogICAgICAgICAqIGZhc3Qvc2hhZG93
LWRvbS9jc3Mtc2NvcGluZy1zbG90LXdpdGgtaWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCiAgICAg
ICAgICogZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNsb3Qtd2l0aC1pZC5odG1sOiBBZGRl
ZC4KIAorMjAxNi0xMS0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAg
ICAgICAgc2xvdHRlZCgpIHBzZXVkbyBkb2VzIG5vdCB3b3JrIHdpdGggSUQgc2VsZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDUzOAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjg1MzQ1Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KKworICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zbG90
LXdpdGgtaWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9t
L2Nzcy1zY29waW5nLXNsb3Qtd2l0aC1pZC5odG1sOiBBZGRlZC4KKwogMjAxNi0xMS0wNCAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhlZERCIDIuMDog
VXNlIElEQi1zcGVjaWZpYyBleGNlcHRpb25zIGluIHBsYWNlcyB3aGVyZSB0aGUgZ2VuZXJpYyBl
eGNlcHRpb25zIGFyZSBjdXJyZW50bHkgdXNlZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hh
ZG93LWRvbS9jc3Mtc2NvcGluZy1zbG90dGVkLWludmFsaWRhdGlvbi1leHBlY3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zbG90
dGVkLWludmFsaWRhdGlvbi1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zbG90dGVkLWludmFsaWRhdGlvbi1leHBl
Y3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBh
IHNpbmdsZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cuPC9wPgorICAgICAgICA8ZGl2
IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyI+
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFk
b3ctZG9tL2Nzcy1zY29waW5nLXNsb3R0ZWQtaW52YWxpZGF0aW9uLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNsb3R0ZWQtaW52YWxp
ZGF0aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9t
L2Nzcy1zY29waW5nLXNsb3R0ZWQtaW52YWxpZGF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw4NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxwPlRlc3QgcGFzc2VzIGlm
IHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4KKzxk
aXYgaWQ9InQxIj4KKyAgICA8c3Bhbj5GQUlMPC9zcGFuPgorPC9kaXY+Cis8ZGl2IGlkPSJ0MiI+
CisgICAgPHNwYW4+RkFJTDwvc3Bhbj4KKzwvZGl2PgorPGRpdiBpZD0idDMiPgorICAgIDxzcGFu
PkZBSUw8L3NwYW4+Cis8L2Rpdj4KKzxkaXYgaWQ9InQ0Ij4KKyAgICA8c3Bhbj5GQUlMPC9zcGFu
PgorPC9kaXY+Cis8ZGl2IGlkPSJ0NSI+CisgICAgPHNwYW4gc2VsZWN0ZWQ+RkFJTDwvc3Bhbj4K
KzwvZGl2PgorPGRpdj4KKzwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24gYXR0YWNoU2hhZG93
KGhvc3QsIHNsb3R0ZWRTZWxlY3RvcikKK3sKKyAgICBjb25zdCBzaGFkb3cgPSBob3N0LmF0dGFj
aFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0gYDxzbG90
Pjwvc2xvdD4KKyAgICA8c3R5bGU+CisgICAgOmhvc3QgeworICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgIGhlaWdodDogMjBweDsKKyAgICAgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAg
ICAgIGNvbG9yOiByZWQ7CisgICAgfQorICAgIDo6c2xvdHRlZCgke3Nsb3R0ZWRTZWxlY3Rvcn0p
IHsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKyAgICA8L3N0eWxlPmA7CisgICAgcmV0
dXJuIHNoYWRvdzsKK30KKworeworICAgIGNvbnN0IGhvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCcjdDEnKTsKKyAgICBhdHRhY2hTaGFkb3coaG9zdCwgJy5zZWxlY3RlZCcpOworICAgIGNv
bnN0IHNwYW4gPSBob3N0LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKTsKKyAgICBnZXRDb21wdXRlZFN0
eWxlKHNwYW4pLmJhY2tncm91bmRDb2xvcjsKKyAgICBzcGFuLmNsYXNzTmFtZSA9ICdzZWxlY3Rl
ZCc7Cit9CisKK3sKKyAgICBjb25zdCBob3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3Qy
Jyk7CisgICAgYXR0YWNoU2hhZG93KGhvc3QsICcjc2VsZWN0ZWQnKTsKKyAgICBjb25zdCBzcGFu
ID0gaG9zdC5xdWVyeVNlbGVjdG9yKCdzcGFuJyk7CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShzcGFu
KS5iYWNrZ3JvdW5kQ29sb3IKKyAgICBzcGFuLmlkID0gJ3NlbGVjdGVkJzsKK30KKworeworICAg
IGNvbnN0IGhvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdDMnKTsKKyAgICBhdHRhY2hT
aGFkb3coaG9zdCwgJ1tzZWxlY3RlZF0nKTsKKyAgICBjb25zdCBzcGFuID0gaG9zdC5xdWVyeVNl
bGVjdG9yKCdzcGFuJyk7CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShzcGFuKS5iYWNrZ3JvdW5kQ29s
b3I7CisgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ3NlbGVjdGVkJywgJ3NlbGVjdGVkJyk7Cit9CisK
K3sKKyAgICBjb25zdCBob3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3Q0Jyk7CisgICAg
Y29uc3Qgc2hhZG93ID0gaG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7CisgICAg
c2hhZG93LmlubmVySFRNTCA9IGA8ZGl2PjxzbG90Pjwvc2xvdD48L2Rpdj5gOworICAgIGNvbnN0
IGRlZXBIb3N0ID0gc2hhZG93LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpOworICAgIGF0dGFjaFNoYWRv
dyhkZWVwSG9zdCwgJy5zZWxlY3RlZCcpOworICAgIGNvbnN0IHNwYW4gPSBob3N0LnF1ZXJ5U2Vs
ZWN0b3IoJ3NwYW4nKTsKKyAgICBnZXRDb21wdXRlZFN0eWxlKHNwYW4pLmJhY2tncm91bmRDb2xv
cjsKKyAgICBzcGFuLmNsYXNzTmFtZSA9ICdzZWxlY3RlZCc7Cit9CisKK3sKKyAgICBjb25zdCBo
b3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3Q1Jyk7CisgICAgY29uc3Qgc2hhZG93ID0g
aG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7CisgICAgc2hhZG93LmlubmVySFRN
TCA9IGA8ZGl2PjxzbG90Pjwvc2xvdD48L2Rpdj5gOworICAgIGNvbnN0IGRlZXBIb3N0ID0gc2hh
ZG93LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpOworICAgIGF0dGFjaFNoYWRvdyhkZWVwSG9zdCwgJzpu
b3QoW3NlbGVjdGVkXSknKTsKKyAgICBjb25zdCBzcGFuID0gaG9zdC5xdWVyeVNlbGVjdG9yKCdz
cGFuJyk7CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShzcGFuKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAg
c3Bhbi5yZW1vdmVBdHRyaWJ1dGUoJ3NlbGVjdGVkJyk7Cit9CisKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294502</attachid>
            <date>2016-11-11 09:43:34 -0800</date>
            <delta_ts>2016-11-11 14:35:44 -0800</delta_ts>
            <desc>patch</desc>
            <filename>slotted-mutation-invalidation-5.patch</filename>
            <type>text/plain</type>
            <size>16224</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTExLTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGluZyBjbGFzcyBuYW1l
IGRvZXNuJ3QgdXBkYXRlIHRoZSBzbG90dGVkIGNvbnRlbnQncyBzdHlsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NTc3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yOTIwNTg3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2xvdHRlZC1p
bnZhbGlkYXRpb24uaHRtbAorCisgICAgICAgIFRlYWNoIHN0eWxlIGludmFsaWRhdGlvbiBjb2Rl
IGZvciBhdHRyaWJ1dGUvY2xhc3MvaWQgbXV0YXRpb25zIGFib3V0IHNsb3R0ZWQgcnVsZXMuCisK
KyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphc3NpZ25l
ZFNoYWRvd1Jvb3RzSWZTbG90dGVkKToKKworICAgICAgICAgICAgSGVscGVyIHRvIGZpbmQgYWxs
IGFzc2lnbmVkIHNoYWRvdyByb290cyAodGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgaWYgc2xv
dHMgYXJlIGFzc2lnbmVkIHRvIHNsb3RzKS4KKworICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6
CisgICAgICAgICogc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjptYXlCZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5SG9zdFN0eWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjptYXlCZUFmZmVjdGVkQnlTbG90dGVkUnVsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkNsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRl
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RTdHls
ZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDoK
KyAgICAgICAgKiBzdHlsZS9JZENoYW5nZUludmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5SG9zdFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjptYXlCZUFmZmVjdGVkQnlTbG90dGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OklkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZSk6IERlbGV0ZWQuCisgICAg
ICAgICogc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlNoYXJpbmdSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KToKKworICAg
ICAgICAgICAgRml4IGEgYnVnIGluIHN0eWxlIHNoYXJpbmcgd2hlcmUgd2Ugd2VyZSBjaGVja2lu
ZyB3cm9uZyBlbGVtZW50IGZvciBob3N0IHJ1bGVzLgorICAgICAgICAgICAgVGVzdGVkIGJ5IHRo
ZSBpbmNsdWRlZCB0ZXN0IHRvbyAodGhlIGxhc3QgZW1wdHkgZGl2KS4KKwogMjAxNi0xMS0xMSAg
TWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3Nz
LWdyaWRdIEFTU0VSVElPTiBGQUlMRUQ6ICFtX2dyaWRJc0RpcnR5IGluIFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmdyaWRSb3dDb3VudApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2
aXNpb24gMjA4Mzk4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgog
I2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5o
IgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTbG90QXNz
aWdubWVudC5oIgpAQCAtMTgzLDUgKzE4NCwxNCBAQCBjb25zdCBWZWN0b3I8Tm9kZSo+KiBTaGFk
b3dSb290Ojphc3NpZ25lCiAgICAgcmV0dXJuIG1fc2xvdEFzc2lnbm1lbnQtPmFzc2lnbmVkTm9k
ZXNGb3JTbG90KHNsb3QsICp0aGlzKTsKIH0KIAorVmVjdG9yPFNoYWRvd1Jvb3QqPiBhc3NpZ25l
ZFNoYWRvd1Jvb3RzSWZTbG90dGVkKGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgVmVjdG9yPFNo
YWRvd1Jvb3QqPiByZXN1bHQ7CisgICAgZm9yIChhdXRvKiBzbG90ID0gbm9kZS5hc3NpZ25lZFNs
b3QoKTsgc2xvdDsgc2xvdCA9IHNsb3QtPmFzc2lnbmVkU2xvdCgpKSB7CisgICAgICAgIEFTU0VS
VChzbG90LT5jb250YWluaW5nU2hhZG93Um9vdCgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChz
bG90LT5jb250YWluaW5nU2hhZG93Um9vdCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAyMDgzOTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMs
NiArMTMzLDggQEAgaW5saW5lIGJvb2wgaGFzU2hhZG93Um9vdFBhcmVudChjb25zdCBObwogICAg
IHJldHVybiBub2RlLnBhcmVudE5vZGUoKSAmJiBub2RlLnBhcmVudE5vZGUoKS0+aXNTaGFkb3dS
b290KCk7CiB9CiAKK1ZlY3RvcjxTaGFkb3dSb290Kj4gYXNzaWduZWRTaGFkb3dSb290c0lmU2xv
dHRlZChjb25zdCBOb2RlJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTaGFkb3dSb290KQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJ
bnZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNCArMzYsMzQgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLXN0YXRpYyBib29sIG1heUJlQWZm
ZWN0ZWRCeUhvc3RTdHlsZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBib29sIGlzSFRNTCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKK3N0YXRpYyBib29sIG1heUJlQWZmZWN0
ZWRCeUF0dHJpYnV0ZUNoYW5nZShEb2N1bWVudFJ1bGVTZXRzJiBydWxlU2V0cywgYm9vbCBpc0hU
TUwsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgYXV0byYgc2hh
ZG93UnVsZVNldHMgPSBzaGFkb3dSb290LnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRz
KCk7CisgICAgYXV0byYgbmFtZVNldCA9IGlzSFRNTCA/IHJ1bGVTZXRzLmZlYXR1cmVzKCkuYXR0
cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXMgOiBydWxlU2V0cy5mZWF0dXJlcygpLmF0
dHJpYnV0ZUxvY2FsTmFtZXNJblJ1bGVzOworICAgIHJldHVybiBuYW1lU2V0LmNvbnRhaW5zKGF0
dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKK30KKworc3RhdGljIGJvb2wgbWF5QmVB
ZmZlY3RlZEJ5SG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCit7CisgICAgYXV0byogc2hhZG93Um9vdCA9IGVsZW1lbnQu
c2hhZG93Um9vdCgpOworICAgIGlmICghc2hhZG93Um9vdCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGF1dG8mIHNoYWRvd1J1bGVTZXRzID0gc2hhZG93Um9vdC0+c3R5bGVTY29wZSgpLnJl
c29sdmVyKCkucnVsZVNldHMoKTsKICAgICBpZiAoc2hhZG93UnVsZVNldHMuYXV0aG9yU3R5bGUo
KS5ob3N0UHNldWRvQ2xhc3NSdWxlcygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYXV0byYgbmFtZVNldCA9IGlzSFRNTCA/IHNoYWRvd1J1bGVTZXRzLmZlYXR1cmVz
KCkuYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXMgOiBzaGFkb3dSdWxlU2V0cy5m
ZWF0dXJlcygpLmF0dHJpYnV0ZUxvY2FsTmFtZXNJblJ1bGVzOwotICAgIHJldHVybiBuYW1lU2V0
LmNvbnRhaW5zKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICByZXR1cm4g
bWF5QmVBZmZlY3RlZEJ5QXR0cmlidXRlQ2hhbmdlKHNoYWRvd1J1bGVTZXRzLCBlbGVtZW50Lmlz
SFRNTEVsZW1lbnQoKSwgYXR0cmlidXRlTmFtZSk7Cit9CisKK3N0YXRpYyBib29sIG1heUJlQWZm
ZWN0ZWRCeVNsb3R0ZWRSdWxlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQoreworICAgIGZvciAoYXV0byogc2hhZG93Um9vdCA6IGFz
c2lnbmVkU2hhZG93Um9vdHNJZlNsb3R0ZWQoZWxlbWVudCkpIHsKKyAgICAgICAgYXV0byYgcnVs
ZVNldHMgPSBzaGFkb3dSb290LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygpOwor
ICAgICAgICBpZiAocnVsZVNldHMuYXV0aG9yU3R5bGUoKS5zbG90dGVkUHNldWRvRWxlbWVudFJ1
bGVzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChtYXlC
ZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2UocnVsZVNldHMsIGVsZW1lbnQuaXNIVE1MRWxlbWVu
dCgpLCBhdHRyaWJ1dGVOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjpp
bnZhbGlkYXRlU3R5bGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKQEAg
LTU0LDEyICs3NCw5IEBAIHZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGkK
ICAgICBhdXRvJiBydWxlU2V0cyA9IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMo
KTsKICAgICBib29sIGlzSFRNTCA9IG1fZWxlbWVudC5pc0hUTUxFbGVtZW50KCk7CiAKLSAgICBh
dXRvJiBuYW1lU2V0ID0gaXNIVE1MID8gcnVsZVNldHMuZmVhdHVyZXMoKS5hdHRyaWJ1dGVDYW5v
bmljYWxMb2NhbE5hbWVzSW5SdWxlcyA6IHJ1bGVTZXRzLmZlYXR1cmVzKCkuYXR0cmlidXRlTG9j
YWxOYW1lc0luUnVsZXM7Ci0gICAgYm9vbCBtYXlBZmZlY3RTdHlsZSA9IG5hbWVTZXQuY29udGFp
bnMoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwotCi0gICAgYXV0byogc2hhZG93
Um9vdCA9IG1fZWxlbWVudC5zaGFkb3dSb290KCk7Ci0gICAgaWYgKCFtYXlBZmZlY3RTdHlsZSAm
JiBzaGFkb3dSb290ICYmIG1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZSgqc2hhZG93Um9vdCwgaXNI
VE1MLCBhdHRyaWJ1dGVOYW1lKSkKLSAgICAgICAgbWF5QWZmZWN0U3R5bGUgPSB0cnVlOworICAg
IGJvb2wgbWF5QWZmZWN0U3R5bGUgPSBtYXlCZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2UocnVs
ZVNldHMsIGlzSFRNTCwgYXR0cmlidXRlTmFtZSkKKyAgICAgICAgfHwgbWF5QmVBZmZlY3RlZEJ5
SG9zdFJ1bGVzKG1fZWxlbWVudCwgYXR0cmlidXRlTmFtZSkKKyAgICAgICAgfHwgbWF5QmVBZmZl
Y3RlZEJ5U2xvdHRlZFJ1bGVzKG1fZWxlbWVudCwgYXR0cmlidXRlTmFtZSk7CiAKICAgICBpZiAo
IW1heUFmZmVjdFN0eWxlKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCShyZXZpc2lvbiAyMDgzOTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDI4ICs4Niw0MSBAQCBzdGF0aWMgQ2xhc3NDaGFuZ2VWZWN0b3Ig
Y29tcHV0ZUNsYXNzQ2hhCiAgICAgcmV0dXJuIGNoYW5nZWRDbGFzc2VzOwogfQogCi1zdGF0aWMg
Ym9vbCBtYXlCZUFmZmVjdGVkQnlIb3N0U3R5bGUoU2hhZG93Um9vdCYgc2hhZG93Um9vdCwgQXRv
bWljU3RyaW5nSW1wbCogY2hhbmdlZENsYXNzKQorc3RhdGljIGJvb2wgbWF5QmVBZmZlY3RlZEJ5
SG9zdFJ1bGVzKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIEF0b21pY1N0cmluZ0ltcGwqIGNoYW5n
ZWRDbGFzcykKIHsKLSAgICBhdXRvJiBzaGFkb3dSdWxlU2V0cyA9IHNoYWRvd1Jvb3Quc3R5bGVT
Y29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICBpZiAoIXNoYWRvd1Jvb3QpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvJiBzaGFkb3dSdWxlU2V0cyA9IHNoYWRvd1Jvb3Qt
PnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCk7CiAgICAgaWYgKHNoYWRvd1J1bGVT
ZXRzLmF1dGhvclN0eWxlKCkuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc2hhZG93UnVsZVNldHMuZmVhdHVyZXMoKS5j
bGFzc2VzSW5SdWxlcy5jb250YWlucyhjaGFuZ2VkQ2xhc3MpOwogfQogCitzdGF0aWMgYm9vbCBt
YXlCZUFmZmVjdGVkQnlTbG90dGVkUnVsZXMoY29uc3QgVmVjdG9yPFNoYWRvd1Jvb3QqPiYgYXNz
aWduZWRTaGFkb3dSb290cywgQXRvbWljU3RyaW5nSW1wbCogY2hhbmdlZENsYXNzKQoreworICAg
IGZvciAoYXV0byYgYXNzaWduZWRTaGFkb3dSb290IDogYXNzaWduZWRTaGFkb3dSb290cykgewor
ICAgICAgICBhdXRvJiBydWxlU2V0cyA9IGFzc2lnbmVkU2hhZG93Um9vdC0+c3R5bGVTY29wZSgp
LnJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICAgICAgaWYgKHJ1bGVTZXRzLmF1dGhvclN0eWxl
KCkuc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBpZiAocnVsZVNldHMuZmVhdHVyZXMoKS5jbGFzc2VzSW5SdWxlcy5j
b250YWlucyhjaGFuZ2VkQ2xhc3MpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBDbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6aW52
YWxpZGF0ZVN0eWxlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sZENsYXNzZXMsIGNvbnN0IFNw
YWNlU3BsaXRTdHJpbmcmIG5ld0NsYXNzZXMpCiB7CiAgICAgYXV0byBjaGFuZ2VkQ2xhc3NlcyA9
IGNvbXB1dGVDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBuZXdDbGFzc2VzKTsKIAogICAgIGF1dG8m
IHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygpOwogICAgIGF1
dG8qIHNoYWRvd1Jvb3QgPSBtX2VsZW1lbnQuc2hhZG93Um9vdCgpOworICAgIGF1dG8gYXNzaWdu
ZWRTaGFkb3dSb290cyA9IGFzc2lnbmVkU2hhZG93Um9vdHNJZlNsb3R0ZWQobV9lbGVtZW50KTsK
IAogICAgIENsYXNzQ2hhbmdlVmVjdG9yIGNoYW5nZWRDbGFzc2VzQWZmZWN0aW5nU3R5bGU7CiAg
ICAgZm9yIChhdXRvKiBjaGFuZ2VkQ2xhc3MgOiBjaGFuZ2VkQ2xhc3NlcykgewotICAgICAgICBi
b29sIG1heUFmZmVjdFN0eWxlID0gcnVsZVNldHMuZmVhdHVyZXMoKS5jbGFzc2VzSW5SdWxlcy5j
b250YWlucyhjaGFuZ2VkQ2xhc3MpOwotCi0gICAgICAgIGlmICghbWF5QWZmZWN0U3R5bGUgJiYg
c2hhZG93Um9vdCAmJiBtYXlCZUFmZmVjdGVkQnlIb3N0U3R5bGUoKnNoYWRvd1Jvb3QsIGNoYW5n
ZWRDbGFzcykpCi0gICAgICAgICAgICBtYXlBZmZlY3RTdHlsZSA9IHRydWU7Ci0KKyAgICAgICAg
Ym9vbCBtYXlBZmZlY3RTdHlsZSA9IHJ1bGVTZXRzLmZlYXR1cmVzKCkuY2xhc3Nlc0luUnVsZXMu
Y29udGFpbnMoY2hhbmdlZENsYXNzKQorICAgICAgICAgICAgfHwgbWF5QmVBZmZlY3RlZEJ5SG9z
dFJ1bGVzKHNoYWRvd1Jvb3QsIGNoYW5nZWRDbGFzcykKKyAgICAgICAgICAgIHx8IG1heUJlQWZm
ZWN0ZWRCeVNsb3R0ZWRSdWxlcyhhc3NpZ25lZFNoYWRvd1Jvb3RzLCBjaGFuZ2VkQ2xhc3MpOwog
ICAgICAgICBpZiAobWF5QWZmZWN0U3R5bGUpCiAgICAgICAgICAgICBjaGFuZ2VkQ2xhc3Nlc0Fm
ZmVjdGluZ1N0eWxlLmFwcGVuZChjaGFuZ2VkQ2xhc3MpOwogICAgIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgJKHJldmlzaW9uIDIw
ODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgaW5saW5lIENsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uOjp+Q2xhc3NDaAogICAgICAgICByZXR1cm47CiAgICAgaW52YWxpZGF0ZURlc2NlbmRh
bnRTdHlsZSgpOwogfQotICAgIAorCiB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxl
L0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9JZENoYW5nZUludmFsaWRhdGlvbi5jcHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTUgKzM1LDI5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgU3R5bGUg
ewogCi1zdGF0aWMgYm9vbCBtYXlCZUFmZmVjdGVkQnlIb3N0U3R5bGUoU2hhZG93Um9vdCYgc2hh
ZG93Um9vdCwgY29uc3QgQXRvbWljU3RyaW5nJiBjaGFuZ2VkSWQpCitzdGF0aWMgYm9vbCBtYXlC
ZUFmZmVjdGVkQnlIb3N0UnVsZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBjaGFuZ2VkSWQpCiB7Ci0gICAgYXV0byYgc2hhZG93UnVsZVNldHMgPSBzaGFkb3dS
b290LnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCk7CisgICAgYXV0byogc2hhZG93
Um9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCgpOworICAgIGlmICghc2hhZG93Um9vdCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIHNoYWRvd1J1bGVTZXRzID0gc2hhZG93Um9vdC0+
c3R5bGVTY29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMoKTsKICAgICBpZiAoc2hhZG93UnVsZVNl
dHMuYXV0aG9yU3R5bGUoKS5ob3N0UHNldWRvQ2xhc3NSdWxlcygpLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCiAgICAgcmV0dXJuIHNoYWRvd1J1bGVTZXRzLmZlYXR1cmVzKCku
aWRzSW5SdWxlcy5jb250YWlucyhjaGFuZ2VkSWQuaW1wbCgpKTsKIH0KIAorc3RhdGljIGJvb2wg
bWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IEF0b21pY1N0cmluZyYgY2hhbmdlZElkKQoreworICAgIGZvciAoYXV0byogc2hhZG93Um9vdCA6
IGFzc2lnbmVkU2hhZG93Um9vdHNJZlNsb3R0ZWQoZWxlbWVudCkpIHsKKyAgICAgICAgYXV0byYg
cnVsZVNldHMgPSBzaGFkb3dSb290LT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygp
OworICAgICAgICBpZiAocnVsZVNldHMuYXV0aG9yU3R5bGUoKS5zbG90dGVkUHNldWRvRWxlbWVu
dFJ1bGVzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChy
dWxlU2V0cy5mZWF0dXJlcygpLmlkc0luUnVsZXMuY29udGFpbnMoY2hhbmdlZElkLmltcGwoKSkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiB2b2lkIElkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBjaGFuZ2VkSWQpCiB7CiAgICAgaWYgKGNoYW5nZWRJZC5pc0VtcHR5KCkpCkBAIC01
MSwxMSArNjUsOSBAQCB2b2lkIElkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5CiAK
ICAgICBhdXRvJiBydWxlU2V0cyA9IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMo
KTsKIAotICAgIGJvb2wgbWF5QWZmZWN0U3R5bGUgPSBydWxlU2V0cy5mZWF0dXJlcygpLmlkc0lu
UnVsZXMuY29udGFpbnMoY2hhbmdlZElkLmltcGwoKSk7Ci0KLSAgICBhdXRvKiBzaGFkb3dSb290
ID0gbV9lbGVtZW50LnNoYWRvd1Jvb3QoKTsKLSAgICBpZiAoIW1heUFmZmVjdFN0eWxlICYmIHNo
YWRvd1Jvb3QgJiYgbWF5QmVBZmZlY3RlZEJ5SG9zdFN0eWxlKCpzaGFkb3dSb290LCBjaGFuZ2Vk
SWQpKQotICAgICAgICBtYXlBZmZlY3RTdHlsZSA9IHRydWU7CisgICAgYm9vbCBtYXlBZmZlY3RT
dHlsZSA9IHJ1bGVTZXRzLmZlYXR1cmVzKCkuaWRzSW5SdWxlcy5jb250YWlucyhjaGFuZ2VkSWQu
aW1wbCgpKQorICAgICAgICB8fCBtYXlCZUFmZmVjdGVkQnlIb3N0UnVsZXMobV9lbGVtZW50LCBj
aGFuZ2VkSWQpCisgICAgICAgIHx8IG1heUJlQWZmZWN0ZWRCeVNsb3R0ZWRSdWxlcyhtX2VsZW1l
bnQsIGNoYW5nZWRJZCk7CiAKICAgICBpZiAoIW1heUFmZmVjdFN0eWxlKQogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIu
Y3BwCShyZXZpc2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJp
bmdSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBAQCBib29sIFNo
YXJpbmdSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFCiAgICAgaWYgKGNhbmRpZGF0ZUVsZW1l
bnQubWF0Y2hlc0RlZmF1bHRQc2V1ZG9DbGFzcygpICE9IGVsZW1lbnQubWF0Y2hlc0RlZmF1bHRQ
c2V1ZG9DbGFzcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZWxlbWVudC5z
aGFkb3dSb290KCkgJiYgIWVsZW1lbnQuc2hhZG93Um9vdCgpLT5zdHlsZVNjb3BlKCkucmVzb2x2
ZXIoKS5ydWxlU2V0cygpLmF1dGhvclN0eWxlKCkuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0Vt
cHR5KCkpCisgICAgaWYgKGNhbmRpZGF0ZUVsZW1lbnQuc2hhZG93Um9vdCgpICYmICFjYW5kaWRh
dGVFbGVtZW50LnNoYWRvd1Jvb3QoKS0+c3R5bGVTY29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMo
KS5hdXRob3JTdHlsZSgpLmhvc3RQc2V1ZG9DbGFzc1J1bGVzKCkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDgzOTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxNi0xMS0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRpbmcgY2xhc3MgbmFtZSBkb2Vzbid0IHVwZGF0ZSB0aGUg
c2xvdHRlZCBjb250ZW50J3Mgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NDU3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkyMDU4NzM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2xvdHRlZC1pbnZhbGlkYXRpb24tZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNsb3R0ZWQt
aW52YWxpZGF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE2LTExLTA0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGxheW91dCB0ZXN0IGZvciBpbnB1dC5zZXRD
dXN0b21WYWxpZGl0eSgpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNj
b3Bpbmctc2xvdHRlZC1pbnZhbGlkYXRpb24tZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2xvdHRlZC1pbnZhbGlkYXRp
b24tZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vY3NzLXNjb3Bpbmctc2xvdHRlZC1pbnZhbGlkYXRpb24tZXhwZWN0ZWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGJvZHk+CisgICAgICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHgg
YnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4KKyAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6
IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsiPjwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2Nv
cGluZy1zbG90dGVkLWludmFsaWRhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zbG90dGVkLWludmFsaWRhdGlvbi5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1z
bG90dGVkLWludmFsaWRhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2lu
Z2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+Cis8ZGl2IGlkPSJ0MSI+Cisg
ICAgPHNwYW4+RkFJTDwvc3Bhbj4KKzwvZGl2PgorPGRpdiBpZD0idDIiPgorICAgIDxzcGFuPkZB
SUw8L3NwYW4+Cis8L2Rpdj4KKzxkaXYgaWQ9InQzIj4KKyAgICA8c3Bhbj5GQUlMPC9zcGFuPgor
PC9kaXY+Cis8ZGl2IGlkPSJ0NCI+CisgICAgPHNwYW4+RkFJTDwvc3Bhbj4KKzwvZGl2PgorPGRp
diBpZD0idDUiPgorICAgIDxzcGFuIHNlbGVjdGVkPkZBSUw8L3NwYW4+Cis8L2Rpdj4KKzxkaXY+
Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGF0dGFjaFNoYWRvdyhob3N0LCBzbG90dGVk
U2VsZWN0b3IpCit7CisgICAgY29uc3Qgc2hhZG93ID0gaG9zdC5hdHRhY2hTaGFkb3coe21vZGU6
ICdjbG9zZWQnfSk7CisgICAgc2hhZG93LmlubmVySFRNTCA9IGA8c2xvdD48L3Nsb3Q+CisgICAg
PHN0eWxlPgorICAgIDpob3N0IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDIwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgICAgICBjb2xvcjogcmVk
OworICAgIH0KKyAgICA6OnNsb3R0ZWQoJHtzbG90dGVkU2VsZWN0b3J9KSB7CisgICAgICAgIGNv
bG9yOiBncmVlbjsKKyAgICB9CisgICAgPC9zdHlsZT5gOworICAgIHJldHVybiBzaGFkb3c7Cit9
CisKK3sKKyAgICBjb25zdCBob3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3QxJyk7Cisg
ICAgYXR0YWNoU2hhZG93KGhvc3QsICcuc2VsZWN0ZWQnKTsKKyAgICBjb25zdCBzcGFuID0gaG9z
dC5xdWVyeVNlbGVjdG9yKCdzcGFuJyk7CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShzcGFuKS5iYWNr
Z3JvdW5kQ29sb3I7CisgICAgc3Bhbi5jbGFzc05hbWUgPSAnc2VsZWN0ZWQnOworfQorCit7Cisg
ICAgY29uc3QgaG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0MicpOworICAgIGF0dGFj
aFNoYWRvdyhob3N0LCAnI3NlbGVjdGVkJyk7CisgICAgY29uc3Qgc3BhbiA9IGhvc3QucXVlcnlT
ZWxlY3Rvcignc3BhbicpOworICAgIGdldENvbXB1dGVkU3R5bGUoc3BhbikuYmFja2dyb3VuZENv
bG9yCisgICAgc3Bhbi5pZCA9ICdzZWxlY3RlZCc7Cit9CisKK3sKKyAgICBjb25zdCBob3N0ID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3QzJyk7CisgICAgYXR0YWNoU2hhZG93KGhvc3QsICdb
c2VsZWN0ZWRdJyk7CisgICAgY29uc3Qgc3BhbiA9IGhvc3QucXVlcnlTZWxlY3Rvcignc3Bhbicp
OworICAgIGdldENvbXB1dGVkU3R5bGUoc3BhbikuYmFja2dyb3VuZENvbG9yOworICAgIHNwYW4u
c2V0QXR0cmlidXRlKCdzZWxlY3RlZCcsICdzZWxlY3RlZCcpOworfQorCit7CisgICAgY29uc3Qg
aG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0NCcpOworICAgIGNvbnN0IHNoYWRvdyA9
IGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOworICAgIHNoYWRvdy5pbm5lckhU
TUwgPSBgPGRpdj48c2xvdD48L3Nsb3Q+PC9kaXY+YDsKKyAgICBjb25zdCBkZWVwSG9zdCA9IHNo
YWRvdy5xdWVyeVNlbGVjdG9yKCdkaXYnKTsKKyAgICBhdHRhY2hTaGFkb3coZGVlcEhvc3QsICcu
c2VsZWN0ZWQnKTsKKyAgICBjb25zdCBzcGFuID0gaG9zdC5xdWVyeVNlbGVjdG9yKCdzcGFuJyk7
CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShzcGFuKS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgc3Bhbi5j
bGFzc05hbWUgPSAnc2VsZWN0ZWQnOworfQorCit7CisgICAgY29uc3QgaG9zdCA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJyN0NScpOworICAgIGNvbnN0IHNoYWRvdyA9IGhvc3QuYXR0YWNoU2hh
ZG93KHttb2RlOiAnY2xvc2VkJ30pOworICAgIHNoYWRvdy5pbm5lckhUTUwgPSBgPGRpdj48c2xv
dD48L3Nsb3Q+PC9kaXY+YDsKKyAgICBjb25zdCBkZWVwSG9zdCA9IHNoYWRvdy5xdWVyeVNlbGVj
dG9yKCdkaXYnKTsKKyAgICBhdHRhY2hTaGFkb3coZGVlcEhvc3QsICc6bm90KFtzZWxlY3RlZF0p
Jyk7CisgICAgY29uc3Qgc3BhbiA9IGhvc3QucXVlcnlTZWxlY3Rvcignc3BhbicpOworICAgIGdl
dENvbXB1dGVkU3R5bGUoc3BhbikuYmFja2dyb3VuZENvbG9yOworICAgIHNwYW4ucmVtb3ZlQXR0
cmlidXRlKCdzZWxlY3RlZCcpOworfQorCis8L3NjcmlwdD4K
</data>
<flag name="review"
          id="317179"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294539</attachid>
            <date>2016-11-11 14:35:44 -0800</date>
            <delta_ts>2016-11-11 15:11:40 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>slotted-mutation-invalidation-6.patch</filename>
            <type>text/plain</type>
            <size>16312</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODYwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTExLTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGluZyBjbGFzcyBuYW1l
IGRvZXNuJ3QgdXBkYXRlIHRoZSBzbG90dGVkIGNvbnRlbnQncyBzdHlsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NTc3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yOTIwNTg3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2Eu
CisKKyAgICAgICAgVGVzdDogZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNsb3R0ZWQtaW52
YWxpZGF0aW9uLmh0bWwKKworICAgICAgICBUZWFjaCBzdHlsZSBpbnZhbGlkYXRpb24gY29kZSBm
b3IgYXR0cmlidXRlL2NsYXNzL2lkIG11dGF0aW9ucyBhYm91dCBzbG90dGVkIHJ1bGVzLgorCisg
ICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXNzaWduZWRT
aGFkb3dSb290c0lmU2xvdHRlZCk6CisKKyAgICAgICAgICAgIEhlbHBlciB0byBmaW5kIGFsbCBh
c3NpZ25lZCBzaGFkb3cgcm9vdHMgKHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIGlmIHNsb3Rz
IGFyZSBhc3NpZ25lZCB0byBzbG90cykuCisKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgor
ICAgICAgICAqIHN0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5QXR0cmlidXRlQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjptYXlCZUFmZmVjdGVkQnlIb3N0UnVsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeVNsb3R0ZWRSdWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZSk6
IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6bWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpDbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjptYXlCZUFmZmVjdGVkQnlIb3N0U3R5bGUp
OiBEZWxldGVkLgorICAgICAgICAqIHN0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmg6Cisg
ICAgICAgICogc3R5bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6Om1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6bWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpJZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZVN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjptYXlCZUFmZmVjdGVkQnlIb3N0U3R5bGUpOiBEZWxldGVkLgorICAgICAg
ICAqIHN0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpTaGFyaW5nUmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6CisKKyAgICAg
ICAgICAgIEZpeCBhIGJ1ZyBpbiBzdHlsZSBzaGFyaW5nIHdoZXJlIHdlIHdlcmUgY2hlY2tpbmcg
d3JvbmcgZWxlbWVudCBmb3IgaG9zdCBydWxlcy4KKyAgICAgICAgICAgIFRlc3RlZCBieSB0aGUg
aW5jbHVkZWQgdGVzdCB0b28gKHRoZSBsYXN0IGVtcHR5IGRpdikuCisKIDIwMTYtMTEtMTEgIERh
dmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBQYXJzZXJdIEZpeCBi
YXNpYyBzaGFwZSBwYXJzaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCShyZXZp
c2lvbiAyMDgzOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAj
aW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNsb3RBc3Np
Z25tZW50LmgiCkBAIC0xODMsNSArMTg0LDE0IEBAIGNvbnN0IFZlY3RvcjxOb2RlKj4qIFNoYWRv
d1Jvb3Q6OmFzc2lnbmUKICAgICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+YXNzaWduZWROb2Rl
c0ZvclNsb3Qoc2xvdCwgKnRoaXMpOwogfQogCitWZWN0b3I8U2hhZG93Um9vdCo+IGFzc2lnbmVk
U2hhZG93Um9vdHNJZlNsb3R0ZWQoY29uc3QgTm9kZSYgbm9kZSkKK3sKKyAgICBWZWN0b3I8U2hh
ZG93Um9vdCo+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8qIHNsb3QgPSBub2RlLmFzc2lnbmVkU2xv
dCgpOyBzbG90OyBzbG90ID0gc2xvdC0+YXNzaWduZWRTbG90KCkpIHsKKyAgICAgICAgQVNTRVJU
KHNsb3QtPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKHNs
b3QtPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgJKHJldmlzaW9uIDIwODM5OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2
ICsxMzMsOCBAQCBpbmxpbmUgYm9vbCBoYXNTaGFkb3dSb290UGFyZW50KGNvbnN0IE5vCiAgICAg
cmV0dXJuIG5vZGUucGFyZW50Tm9kZSgpICYmIG5vZGUucGFyZW50Tm9kZSgpLT5pc1NoYWRvd1Jv
b3QoKTsKIH0KIAorVmVjdG9yPFNoYWRvd1Jvb3QqPiBhc3NpZ25lZFNoYWRvd1Jvb3RzSWZTbG90
dGVkKGNvbnN0IE5vZGUmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNoYWRvd1Jvb3QpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAJKHJl
dmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUlu
dmFsaWRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE0ICszNiwzNCBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFN0eWxlIHsKIAotc3RhdGljIGJvb2wgbWF5QmVBZmZl
Y3RlZEJ5SG9zdFN0eWxlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIGJvb2wgaXNIVE1MLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorc3RhdGljIGJvb2wgbWF5QmVBZmZlY3Rl
ZEJ5QXR0cmlidXRlQ2hhbmdlKERvY3VtZW50UnVsZVNldHMmIHJ1bGVTZXRzLCBib29sIGlzSFRN
TCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKLSAgICBhdXRvJiBzaGFk
b3dSdWxlU2V0cyA9IHNoYWRvd1Jvb3Quc3R5bGVTY29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMo
KTsKKyAgICBhdXRvJiBuYW1lU2V0ID0gaXNIVE1MID8gcnVsZVNldHMuZmVhdHVyZXMoKS5hdHRy
aWJ1dGVDYW5vbmljYWxMb2NhbE5hbWVzSW5SdWxlcyA6IHJ1bGVTZXRzLmZlYXR1cmVzKCkuYXR0
cmlidXRlTG9jYWxOYW1lc0luUnVsZXM7CisgICAgcmV0dXJuIG5hbWVTZXQuY29udGFpbnMoYXR0
cmlidXRlTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOworfQorCitzdGF0aWMgYm9vbCBtYXlCZUFm
ZmVjdGVkQnlIb3N0UnVsZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKK3sKKyAgICBhdXRvKiBzaGFkb3dSb290ID0gZWxlbWVudC5z
aGFkb3dSb290KCk7CisgICAgaWYgKCFzaGFkb3dSb290KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYXV0byYgc2hhZG93UnVsZVNldHMgPSBzaGFkb3dSb290LT5zdHlsZVNjb3BlKCkucmVz
b2x2ZXIoKS5ydWxlU2V0cygpOwogICAgIGlmIChzaGFkb3dSdWxlU2V0cy5hdXRob3JTdHlsZSgp
Lmhvc3RQc2V1ZG9DbGFzc1J1bGVzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvJiBuYW1lU2V0ID0gaXNIVE1MID8gc2hhZG93UnVsZVNldHMuZmVhdHVyZXMo
KS5hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWVzSW5SdWxlcyA6IHNoYWRvd1J1bGVTZXRzLmZl
YXR1cmVzKCkuYXR0cmlidXRlTG9jYWxOYW1lc0luUnVsZXM7Ci0gICAgcmV0dXJuIG5hbWVTZXQu
Y29udGFpbnMoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgIHJldHVybiBt
YXlCZUFmZmVjdGVkQnlBdHRyaWJ1dGVDaGFuZ2Uoc2hhZG93UnVsZVNldHMsIGVsZW1lbnQuaXNI
VE1MRWxlbWVudCgpLCBhdHRyaWJ1dGVOYW1lKTsKK30KKworc3RhdGljIGJvb2wgbWF5QmVBZmZl
Y3RlZEJ5U2xvdHRlZFJ1bGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCit7CisgICAgZm9yIChhdXRvKiBzaGFkb3dSb290IDogYXNz
aWduZWRTaGFkb3dSb290c0lmU2xvdHRlZChlbGVtZW50KSkgeworICAgICAgICBhdXRvJiBydWxl
U2V0cyA9IHNoYWRvd1Jvb3QtPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCk7Cisg
ICAgICAgIGlmIChydWxlU2V0cy5hdXRob3JTdHlsZSgpLnNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVs
ZXMoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG1heUJl
QWZmZWN0ZWRCeUF0dHJpYnV0ZUNoYW5nZShydWxlU2V0cywgZWxlbWVudC5pc0hUTUxFbGVtZW50
KCksIGF0dHJpYnV0ZU5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246Omlu
dmFsaWRhdGVTdHlsZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQpAQCAt
NTQsMTIgKzc0LDkgQEAgdm9pZCBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaQog
ICAgIGF1dG8mIHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygp
OwogICAgIGJvb2wgaXNIVE1MID0gbV9lbGVtZW50LmlzSFRNTEVsZW1lbnQoKTsKIAotICAgIGF1
dG8mIG5hbWVTZXQgPSBpc0hUTUwgPyBydWxlU2V0cy5mZWF0dXJlcygpLmF0dHJpYnV0ZUNhbm9u
aWNhbExvY2FsTmFtZXNJblJ1bGVzIDogcnVsZVNldHMuZmVhdHVyZXMoKS5hdHRyaWJ1dGVMb2Nh
bE5hbWVzSW5SdWxlczsKLSAgICBib29sIG1heUFmZmVjdFN0eWxlID0gbmFtZVNldC5jb250YWlu
cyhhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0KLSAgICBhdXRvKiBzaGFkb3dS
b290ID0gbV9lbGVtZW50LnNoYWRvd1Jvb3QoKTsKLSAgICBpZiAoIW1heUFmZmVjdFN0eWxlICYm
IHNoYWRvd1Jvb3QgJiYgbWF5QmVBZmZlY3RlZEJ5SG9zdFN0eWxlKCpzaGFkb3dSb290LCBpc0hU
TUwsIGF0dHJpYnV0ZU5hbWUpKQotICAgICAgICBtYXlBZmZlY3RTdHlsZSA9IHRydWU7CisgICAg
Ym9vbCBtYXlBZmZlY3RTdHlsZSA9IG1heUJlQWZmZWN0ZWRCeUF0dHJpYnV0ZUNoYW5nZShydWxl
U2V0cywgaXNIVE1MLCBhdHRyaWJ1dGVOYW1lKQorICAgICAgICB8fCBtYXlCZUFmZmVjdGVkQnlI
b3N0UnVsZXMobV9lbGVtZW50LCBhdHRyaWJ1dGVOYW1lKQorICAgICAgICB8fCBtYXlCZUFmZmVj
dGVkQnlTbG90dGVkUnVsZXMobV9lbGVtZW50LCBhdHRyaWJ1dGVOYW1lKTsKIAogICAgIGlmICgh
bWF5QWZmZWN0U3R5bGUpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0
eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAJKHJldmlzaW9uIDIwODM5OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODYsMjggKzg2LDQxIEBAIHN0YXRpYyBDbGFzc0NoYW5nZVZlY3RvciBj
b21wdXRlQ2xhc3NDaGEKICAgICByZXR1cm4gY2hhbmdlZENsYXNzZXM7CiB9CiAKLXN0YXRpYyBi
b29sIG1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBBdG9t
aWNTdHJpbmdJbXBsKiBjaGFuZ2VkQ2xhc3MpCitzdGF0aWMgYm9vbCBtYXlCZUFmZmVjdGVkQnlI
b3N0UnVsZXMoU2hhZG93Um9vdCogc2hhZG93Um9vdCwgQXRvbWljU3RyaW5nSW1wbCogY2hhbmdl
ZENsYXNzKQogewotICAgIGF1dG8mIHNoYWRvd1J1bGVTZXRzID0gc2hhZG93Um9vdC5zdHlsZVNj
b3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygpOworICAgIGlmICghc2hhZG93Um9vdCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIHNoYWRvd1J1bGVTZXRzID0gc2hhZG93Um9vdC0+
c3R5bGVTY29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMoKTsKICAgICBpZiAoc2hhZG93UnVsZVNl
dHMuYXV0aG9yU3R5bGUoKS5ob3N0UHNldWRvQ2xhc3NSdWxlcygpLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBzaGFkb3dSdWxlU2V0cy5mZWF0dXJlcygpLmNs
YXNzZXNJblJ1bGVzLmNvbnRhaW5zKGNoYW5nZWRDbGFzcyk7CiB9CiAKK3N0YXRpYyBib29sIG1h
eUJlQWZmZWN0ZWRCeVNsb3R0ZWRSdWxlcyhjb25zdCBWZWN0b3I8U2hhZG93Um9vdCo+JiBhc3Np
Z25lZFNoYWRvd1Jvb3RzLCBBdG9taWNTdHJpbmdJbXBsKiBjaGFuZ2VkQ2xhc3MpCit7CisgICAg
Zm9yIChhdXRvJiBhc3NpZ25lZFNoYWRvd1Jvb3QgOiBhc3NpZ25lZFNoYWRvd1Jvb3RzKSB7Cisg
ICAgICAgIGF1dG8mIHJ1bGVTZXRzID0gYXNzaWduZWRTaGFkb3dSb290LT5zdHlsZVNjb3BlKCku
cmVzb2x2ZXIoKS5ydWxlU2V0cygpOworICAgICAgICBpZiAocnVsZVNldHMuYXV0aG9yU3R5bGUo
KS5zbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmIChydWxlU2V0cy5mZWF0dXJlcygpLmNsYXNzZXNJblJ1bGVzLmNv
bnRhaW5zKGNoYW5nZWRDbGFzcykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZh
bGlkYXRlU3R5bGUoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3NlcywgY29uc3QgU3Bh
Y2VTcGxpdFN0cmluZyYgbmV3Q2xhc3NlcykKIHsKICAgICBhdXRvIGNoYW5nZWRDbGFzc2VzID0g
Y29tcHV0ZUNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIG5ld0NsYXNzZXMpOwogCiAgICAgYXV0byYg
cnVsZVNldHMgPSBtX2VsZW1lbnQuc3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCk7CiAgICAgYXV0
byogc2hhZG93Um9vdCA9IG1fZWxlbWVudC5zaGFkb3dSb290KCk7CisgICAgYXV0byBhc3NpZ25l
ZFNoYWRvd1Jvb3RzID0gYXNzaWduZWRTaGFkb3dSb290c0lmU2xvdHRlZChtX2VsZW1lbnQpOwog
CiAgICAgQ2xhc3NDaGFuZ2VWZWN0b3IgY2hhbmdlZENsYXNzZXNBZmZlY3RpbmdTdHlsZTsKICAg
ICBmb3IgKGF1dG8qIGNoYW5nZWRDbGFzcyA6IGNoYW5nZWRDbGFzc2VzKSB7Ci0gICAgICAgIGJv
b2wgbWF5QWZmZWN0U3R5bGUgPSBydWxlU2V0cy5mZWF0dXJlcygpLmNsYXNzZXNJblJ1bGVzLmNv
bnRhaW5zKGNoYW5nZWRDbGFzcyk7Ci0KLSAgICAgICAgaWYgKCFtYXlBZmZlY3RTdHlsZSAmJiBz
aGFkb3dSb290ICYmIG1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZSgqc2hhZG93Um9vdCwgY2hhbmdl
ZENsYXNzKSkKLSAgICAgICAgICAgIG1heUFmZmVjdFN0eWxlID0gdHJ1ZTsKLQorICAgICAgICBi
b29sIG1heUFmZmVjdFN0eWxlID0gcnVsZVNldHMuZmVhdHVyZXMoKS5jbGFzc2VzSW5SdWxlcy5j
b250YWlucyhjaGFuZ2VkQ2xhc3MpCisgICAgICAgICAgICB8fCBtYXlCZUFmZmVjdGVkQnlIb3N0
UnVsZXMoc2hhZG93Um9vdCwgY2hhbmdlZENsYXNzKQorICAgICAgICAgICAgfHwgbWF5QmVBZmZl
Y3RlZEJ5U2xvdHRlZFJ1bGVzKGFzc2lnbmVkU2hhZG93Um9vdHMsIGNoYW5nZWRDbGFzcyk7CiAg
ICAgICAgIGlmIChtYXlBZmZlY3RTdHlsZSkKICAgICAgICAgICAgIGNoYW5nZWRDbGFzc2VzQWZm
ZWN0aW5nU3R5bGUuYXBwZW5kKGNoYW5nZWRDbGFzcyk7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAkocmV2aXNpb24gMjA4
Mzk4KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBpbmxpbmUgQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb246On5DbGFzc0NoCiAgICAgICAgIHJldHVybjsKICAgICBpbnZhbGlkYXRlRGVzY2VuZGFu
dFN0eWxlKCk7CiB9Ci0gICAgCisKIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUv
SWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMjA4Mzk4KQorKysgU291cmNl
L1dlYkNvcmUvc3R5bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSwxNSArMzUsMjkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTdHlsZSB7
CiAKLXN0YXRpYyBib29sIG1heUJlQWZmZWN0ZWRCeUhvc3RTdHlsZShTaGFkb3dSb290JiBzaGFk
b3dSb290LCBjb25zdCBBdG9taWNTdHJpbmcmIGNoYW5nZWRJZCkKK3N0YXRpYyBib29sIG1heUJl
QWZmZWN0ZWRCeUhvc3RSdWxlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIGNoYW5nZWRJZCkKIHsKLSAgICBhdXRvJiBzaGFkb3dSdWxlU2V0cyA9IHNoYWRvd1Jv
b3Quc3R5bGVTY29wZSgpLnJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICBhdXRvKiBzaGFkb3dS
b290ID0gZWxlbWVudC5zaGFkb3dSb290KCk7CisgICAgaWYgKCFzaGFkb3dSb290KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgYXV0byYgc2hhZG93UnVsZVNldHMgPSBzaGFkb3dSb290LT5z
dHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygpOwogICAgIGlmIChzaGFkb3dSdWxlU2V0
cy5hdXRob3JTdHlsZSgpLmhvc3RQc2V1ZG9DbGFzc1J1bGVzKCkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gc2hhZG93UnVsZVNldHMuZmVhdHVyZXMoKS5p
ZHNJblJ1bGVzLmNvbnRhaW5zKGNoYW5nZWRJZC5pbXBsKCkpOwogfQogCitzdGF0aWMgYm9vbCBt
YXlCZUFmZmVjdGVkQnlTbG90dGVkUnVsZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBjaGFuZ2VkSWQpCit7CisgICAgZm9yIChhdXRvKiBzaGFkb3dSb290IDog
YXNzaWduZWRTaGFkb3dSb290c0lmU2xvdHRlZChlbGVtZW50KSkgeworICAgICAgICBhdXRvJiBy
dWxlU2V0cyA9IHNoYWRvd1Jvb3QtPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCk7
CisgICAgICAgIGlmIChydWxlU2V0cy5hdXRob3JTdHlsZSgpLnNsb3R0ZWRQc2V1ZG9FbGVtZW50
UnVsZXMoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHJ1
bGVTZXRzLmZlYXR1cmVzKCkuaWRzSW5SdWxlcy5jb250YWlucyhjaGFuZ2VkSWQuaW1wbCgpKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IHZvaWQgSWRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZShjb25zdCBBdG9taWNT
dHJpbmcmIGNoYW5nZWRJZCkKIHsKICAgICBpZiAoY2hhbmdlZElkLmlzRW1wdHkoKSkKQEAgLTUx
LDExICs2NSw5IEBAIHZvaWQgSWRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHkKIAog
ICAgIGF1dG8mIHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygp
OwogCi0gICAgYm9vbCBtYXlBZmZlY3RTdHlsZSA9IHJ1bGVTZXRzLmZlYXR1cmVzKCkuaWRzSW5S
dWxlcy5jb250YWlucyhjaGFuZ2VkSWQuaW1wbCgpKTsKLQotICAgIGF1dG8qIHNoYWRvd1Jvb3Qg
PSBtX2VsZW1lbnQuc2hhZG93Um9vdCgpOwotICAgIGlmICghbWF5QWZmZWN0U3R5bGUgJiYgc2hh
ZG93Um9vdCAmJiBtYXlCZUFmZmVjdGVkQnlIb3N0U3R5bGUoKnNoYWRvd1Jvb3QsIGNoYW5nZWRJ
ZCkpCi0gICAgICAgIG1heUFmZmVjdFN0eWxlID0gdHJ1ZTsKKyAgICBib29sIG1heUFmZmVjdFN0
eWxlID0gcnVsZVNldHMuZmVhdHVyZXMoKS5pZHNJblJ1bGVzLmNvbnRhaW5zKGNoYW5nZWRJZC5p
bXBsKCkpCisgICAgICAgIHx8IG1heUJlQWZmZWN0ZWRCeUhvc3RSdWxlcyhtX2VsZW1lbnQsIGNo
YW5nZWRJZCkKKyAgICAgICAgfHwgbWF5QmVBZmZlY3RlZEJ5U2xvdHRlZFJ1bGVzKG1fZWxlbWVu
dCwgY2hhbmdlZElkKTsKIAogICAgIGlmICghbWF5QWZmZWN0U3R5bGUpCiAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5j
cHAJKHJldmlzaW9uIDIwODM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmlu
Z1Jlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDcgKzI4OCw3IEBAIGJvb2wgU2hh
cmluZ1Jlc29sdmVyOjpjYW5TaGFyZVN0eWxlV2l0aEUKICAgICBpZiAoY2FuZGlkYXRlRWxlbWVu
dC5tYXRjaGVzRGVmYXVsdFBzZXVkb0NsYXNzKCkgIT0gZWxlbWVudC5tYXRjaGVzRGVmYXVsdFBz
ZXVkb0NsYXNzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChlbGVtZW50LnNo
YWRvd1Jvb3QoKSAmJiAhZWxlbWVudC5zaGFkb3dSb290KCktPnN0eWxlU2NvcGUoKS5yZXNvbHZl
cigpLnJ1bGVTZXRzKCkuYXV0aG9yU3R5bGUoKS5ob3N0UHNldWRvQ2xhc3NSdWxlcygpLmlzRW1w
dHkoKSkKKyAgICBpZiAoY2FuZGlkYXRlRWxlbWVudC5zaGFkb3dSb290KCkgJiYgIWNhbmRpZGF0
ZUVsZW1lbnQuc2hhZG93Um9vdCgpLT5zdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5ydWxlU2V0cygp
LmF1dGhvclN0eWxlKCkuaG9zdFBzZXVkb0NsYXNzUnVsZXMoKS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwODM5OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE2LTExLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KKworICAgICAgICBVcGRhdGluZyBjbGFzcyBuYW1lIGRvZXNuJ3QgdXBkYXRlIHRoZSBz
bG90dGVkIGNvbnRlbnQncyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY0NTc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTIwNTg3Mz4K
KworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBmYXN0L3No
YWRvdy1kb20vY3NzLXNjb3Bpbmctc2xvdHRlZC1pbnZhbGlkYXRpb24tZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNsb3R0ZWQtaW52
YWxpZGF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE2LTExLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGxheW91dCB0ZXN0IGZvciBpbnB1dC5zZXRDdXN0
b21WYWxpZGl0eSgpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bp
bmctc2xvdHRlZC1pbnZhbGlkYXRpb24tZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2xvdHRlZC1pbnZhbGlkYXRpb24t
ZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vY3NzLXNjb3Bpbmctc2xvdHRlZC1pbnZhbGlkYXRpb24tZXhwZWN0ZWQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGJv
ZHk+CisgICAgICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkg
MTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4KKyAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6IDEw
MHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsiPjwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGlu
Zy1zbG90dGVkLWludmFsaWRhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zbG90dGVkLWludmFsaWRhdGlvbi5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zbG90
dGVkLWludmFsaWRhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGJvZHk+Cis8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xl
IDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+Cis8ZGl2IGlkPSJ0MSI+CisgICAg
PHNwYW4+RkFJTDwvc3Bhbj4KKzwvZGl2PgorPGRpdiBpZD0idDIiPgorICAgIDxzcGFuIHNsb3Q9
InNlY29uZC1zbG90Ij5GQUlMPC9zcGFuPgorPC9kaXY+Cis8ZGl2IGlkPSJ0MyI+CisgICAgPHNw
YW4+RkFJTDwvc3Bhbj4KKzwvZGl2PgorPGRpdiBpZD0idDQiPgorICAgIDxzcGFuPkZBSUw8L3Nw
YW4+Cis8L2Rpdj4KKzxkaXYgaWQ9InQ1Ij4KKyAgICA8c3BhbiBzZWxlY3RlZD5GQUlMPC9zcGFu
PgorPC9kaXY+Cis8ZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBhdHRhY2hTaGFk
b3coaG9zdCwgc2VsZWN0b3IpCit7CisgICAgY29uc3Qgc2hhZG93ID0gaG9zdC5hdHRhY2hTaGFk
b3coe21vZGU6ICdjbG9zZWQnfSk7CisgICAgc2hhZG93LmlubmVySFRNTCA9IGAKKyAgICA8c3R5
bGU+CisgICAgOmhvc3QgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MjBweDsKKyAgICAgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgICAgIGNvbG9yOiByZWQ7Cisg
ICAgfQorICAgICR7c2VsZWN0b3J9IHsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKyAg
ICA8L3N0eWxlPgorICAgIDxzbG90Pjwvc2xvdD4KKyAgICA8c2xvdCBuYW1lPSJzZWNvbmQtc2xv
dCI+PC9zbG90PmA7CisgICAgcmV0dXJuIHNoYWRvdzsKK30KKworeworICAgIGNvbnN0IGhvc3Qg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdDEnKTsKKyAgICBhdHRhY2hTaGFkb3coaG9zdCwg
Jzo6c2xvdHRlZCguc2VsZWN0ZWQpJyk7CisgICAgY29uc3Qgc3BhbiA9IGhvc3QucXVlcnlTZWxl
Y3Rvcignc3BhbicpOworICAgIGdldENvbXB1dGVkU3R5bGUoc3BhbikuYmFja2dyb3VuZENvbG9y
OworICAgIHNwYW4uY2xhc3NOYW1lID0gJ3NlbGVjdGVkJzsKK30KKworeworICAgIGNvbnN0IGhv
c3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdDInKTsKKyAgICBhdHRhY2hTaGFkb3coaG9z
dCwgJ1tuYW1lPXNlY29uZC1zbG90XTo6c2xvdHRlZCgjc2VsZWN0ZWQpJyk7CisgICAgY29uc3Qg
c3BhbiA9IGhvc3QucXVlcnlTZWxlY3Rvcignc3BhbicpOworICAgIGdldENvbXB1dGVkU3R5bGUo
c3BhbikuYmFja2dyb3VuZENvbG9yCisgICAgc3Bhbi5pZCA9ICdzZWxlY3RlZCc7Cit9CisKK3sK
KyAgICBjb25zdCBob3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3QzJyk7CisgICAgYXR0
YWNoU2hhZG93KGhvc3QsICc6OnNsb3R0ZWQoW3NlbGVjdGVkXSknKTsKKyAgICBjb25zdCBzcGFu
ID0gaG9zdC5xdWVyeVNlbGVjdG9yKCdzcGFuJyk7CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShzcGFu
KS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ3NlbGVjdGVkJywgJ3Nl
bGVjdGVkJyk7Cit9CisKK3sKKyAgICBjb25zdCBob3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignI3Q0Jyk7CisgICAgY29uc3Qgc2hhZG93ID0gaG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdj
bG9zZWQnfSk7CisgICAgc2hhZG93LmlubmVySFRNTCA9IGA8ZGl2PjxzbG90Pjwvc2xvdD48L2Rp
dj5gOworICAgIGNvbnN0IGRlZXBIb3N0ID0gc2hhZG93LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpOwor
ICAgIGF0dGFjaFNoYWRvdyhkZWVwSG9zdCwgJzo6c2xvdHRlZCguc2VsZWN0ZWQpJyk7CisgICAg
Y29uc3Qgc3BhbiA9IGhvc3QucXVlcnlTZWxlY3Rvcignc3BhbicpOworICAgIGdldENvbXB1dGVk
U3R5bGUoc3BhbikuYmFja2dyb3VuZENvbG9yOworICAgIHNwYW4uY2xhc3NOYW1lID0gJ3NlbGVj
dGVkJzsKK30KKworeworICAgIGNvbnN0IGhvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcj
dDUnKTsKKyAgICBjb25zdCBzaGFkb3cgPSBob3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3Nl
ZCd9KTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0gYDxkaXY+PHNsb3Qgc2xvdD0ic2Vjb25kLXNs
b3QiPjwvc2xvdD48L2Rpdj5gOworICAgIGNvbnN0IGRlZXBIb3N0ID0gc2hhZG93LnF1ZXJ5U2Vs
ZWN0b3IoJ2RpdicpOworICAgIGF0dGFjaFNoYWRvdyhkZWVwSG9zdCwgJ1tuYW1lPXNlY29uZC1z
bG90XTo6c2xvdHRlZCg6bm90KFtzZWxlY3RlZF0pKScpOworICAgIGNvbnN0IHNwYW4gPSBob3N0
LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKTsKKyAgICBnZXRDb21wdXRlZFN0eWxlKHNwYW4pLmJhY2tn
cm91bmRDb2xvcjsKKyAgICBzcGFuLnJlbW92ZUF0dHJpYnV0ZSgnc2VsZWN0ZWQnKTsKK30KKwor
PC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>