<?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>115646</bug_id>
          
          <creation_ts>2013-05-06 08:01:42 -0700</creation_ts>
          <short_desc>HashTraits&lt;RefPtr&lt;P&gt; &gt;::PeekType should be raw pointer for better performance</short_desc>
          <delta_ts>2013-05-26 18:10:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>884950</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-05-06 08:01:42 -0700</bug_when>
    <thetext>HashTraits&lt;RefPtr&lt;P&gt; &gt;::PeekType should be raw pointer so that we can obviate multiple
RefPtr copying when invoking HashMap::get() method (and when HashMap value type is RefPtr).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884953</commentid>
    <comment_count>1</comment_count>
      <attachid>200671</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-05-06 08:04:51 -0700</bug_when>
    <thetext>Created attachment 200671
WIP

let&apos;s see what EWS tells.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884958</commentid>
    <comment_count>2</comment_count>
      <attachid>200671</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-06 08:14:50 -0700</bug_when>
    <thetext>Comment on attachment 200671
WIP

Attachment 200671 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/378166</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884960</commentid>
    <comment_count>3</comment_count>
      <attachid>200671</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-06 08:18:11 -0700</bug_when>
    <thetext>Comment on attachment 200671
WIP

Attachment 200671 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/281086</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884964</commentid>
    <comment_count>4</comment_count>
      <attachid>200671</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-06 08:27:49 -0700</bug_when>
    <thetext>Comment on attachment 200671
WIP

Attachment 200671 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/278056</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884972</commentid>
    <comment_count>5</comment_count>
      <attachid>200671</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-06 08:34:55 -0700</bug_when>
    <thetext>Comment on attachment 200671
WIP

Attachment 200671 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/284026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885035</commentid>
    <comment_count>6</comment_count>
      <attachid>200671</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-06 08:50:10 -0700</bug_when>
    <thetext>Comment on attachment 200671
WIP

Attachment 200671 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/289035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885045</commentid>
    <comment_count>7</comment_count>
      <attachid>200705</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-05-06 09:11:20 -0700</bug_when>
    <thetext>Created attachment 200705
WIP 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885080</commentid>
    <comment_count>8</comment_count>
      <attachid>200705</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-06 09:51:28 -0700</bug_when>
    <thetext>Comment on attachment 200705
WIP 2

Attachment 200705 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/377201</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885085</commentid>
    <comment_count>9</comment_count>
      <attachid>200714</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-05-06 09:55:30 -0700</bug_when>
    <thetext>Created attachment 200714
WIP 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885135</commentid>
    <comment_count>10</comment_count>
      <attachid>200724</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-05-06 11:18:17 -0700</bug_when>
    <thetext>Created attachment 200724
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885632</commentid>
    <comment_count>11</comment_count>
      <attachid>200724</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 00:22:55 -0700</bug_when>
    <thetext>Comment on attachment 200724
patch

Clearing flags on attachment: 200724

Committed r149665: &lt;http://trac.webkit.org/changeset/149665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885633</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 00:22:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893858</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-26 18:10:55 -0700</bug_when>
    <thetext>*** Bug 72477 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200671</attachid>
            <date>2013-05-06 08:04:51 -0700</date>
            <delta_ts>2013-05-06 09:11:20 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug115646</filename>
            <type>text/plain</type>
            <size>24353</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDBmYjJkNTEwZGIzZDM4ODMyZjg0MTE1MjJiMjk3NmM0ZDY4NTI5NzEKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
TW9uIE1heSA2IDE4OjAyOjE2IDIwMTMgKzAzMDAKCiAgICBidWcxMTU2NDYKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlB
bmFseXplci5oCmluZGV4IGMxMjQ2YjQuLmRkN2YwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5o
CkBAIC03OCw3ICs3OCw3IEBAIGlubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6Om5l
d09iamVjdChpbnQgZHN0LCB1bnNpZ25lZCBvZmZzZXRPZklubGluZUNhCiAKIGlubGluZSB2b2lk
IFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OnB1dEJ5SWQoaW50IGRzdCwgdW5zaWduZWQgcHJvcGVy
dHlJbmRleCkKIHsKLSAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKiBhbmFseXNpcyA9IG1fYW5h
bHlzZXMuZ2V0KGRzdCkuZ2V0KCk7CisgICAgU3RhdGljUHJvcGVydHlBbmFseXNpcyogYW5hbHlz
aXMgPSBtX2FuYWx5c2VzLmdldChkc3QpOwogICAgIGlmICghYW5hbHlzaXMpCiAgICAgICAgIHJl
dHVybjsKICAgICBhbmFseXNpcy0+YWRkUHJvcGVydHlJbmRleChwcm9wZXJ0eUluZGV4KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMuaCBiL1NvdXJjZS9XVEYvd3RmL0hh
c2hUcmFpdHMuaAppbmRleCBiMDZlNzg1Li4yNmE5MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9IYXNoVHJhaXRzLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCkBAIC0x
NDIsOCArMTQyLDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHN0b3Jl
KFBhc3NSZWZQdHI8UD4gdmFsdWUsIFJlZlB0cjxQPiYgc3RvcmFnZSkgeyBzdG9yYWdlID0gdmFs
dWU7IH0KIAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoYW5nZSBQYXNzT3V0VHlwZSB0
byBQYXNzUmVmUHRyIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCi0gICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgY29uc2lkZXIgY2hhbmdpbmcgUGVla1R5cGUgdG8gYSByYXcgcG9pbnRlciBmb3Ig
YmV0dGVyIHBlcmZvcm1hbmNlLAotICAgICAgICAvLyBidXQgdGhlbiBjYWxsZXJzIHdvbid0IG5l
ZWQgdG8gY2FsbCBnZXQ7IGRvaW5nIHNvIHdpbGwgcmVxdWlyZSB1cGRhdGluZyBtYW55IGNhbGwg
c2l0ZXMuCisgICAgICAgIHR5cGVkZWYgUCogUGVla1R5cGU7CisgICAgICAgIHN0YXRpYyBQZWVr
VHlwZSBwZWVrKGNvbnN0IFJlZlB0cjxQPiYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9
CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8U3RyaW5nPiA6IFNp
bXBsZUNsYXNzSGFzaFRyYWl0czxTdHJpbmc+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDY4NmNhYjkuLmNhZTU4YjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTk1LDcg
KzE5NSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldChXaWRnZXQq
IHdpZGdldCkKICAgICBpZiAoIWF4SUQpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIHJl
dHVybiBtX29iamVjdHMuZ2V0KGF4SUQpLmdldCgpOyAgICAKKyAgICByZXR1cm4gbV9vYmplY3Rz
LmdldChheElEKTsgICAgCiB9CiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENh
Y2hlOjpnZXQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTIwOCw3ICsyMDgsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXQoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKICAgICBpZiAoIWF4SUQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG1fb2Jq
ZWN0cy5nZXQoYXhJRCkuZ2V0KCk7ICAgIAorICAgIHJldHVybiBtX29iamVjdHMuZ2V0KGF4SUQp
OyAgICAKIH0KIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KE5vZGUq
IG5vZGUpCkBAIC0yMzEsMTIgKzIzMSwxMiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVj
dENhY2hlOjpnZXQoTm9kZSogbm9kZSkKICAgICB9CiAKICAgICBpZiAocmVuZGVySUQpCi0gICAg
ICAgIHJldHVybiBtX29iamVjdHMuZ2V0KHJlbmRlcklEKS5nZXQoKTsKKyAgICAgICAgcmV0dXJu
IG1fb2JqZWN0cy5nZXQocmVuZGVySUQpOwogCiAgICAgaWYgKCFub2RlSUQpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgcmV0dXJuIG1fb2JqZWN0cy5nZXQobm9kZUlEKS5nZXQoKTsKKyAgICBy
ZXR1cm4gbV9vYmplY3RzLmdldChub2RlSUQpOwogfQogCiAvLyBGSVhNRTogVGhpcyBwcm9iYWJs
eSBiZWxvbmdzIG9uIE5vZGUuCkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjpyZW1vdmUoQVhJRCBheElEKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gZmlyc3Qg
ZmV0Y2ggb2JqZWN0IHRvIG9wZXJhdGUgc29tZSBjbGVhbnVwIGZ1bmN0aW9ucyBvbiBpdCAKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBtX29iamVjdHMuZ2V0KGF4SUQpLmdldCgpOwor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IG1fb2JqZWN0cy5nZXQoYXhJRCk7CiAgICAg
aWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggNWM1NTk4ZC4uNDgxMTg3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTE1MCw3ICsxNTAs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBub2RlSXNUZXh0Q29udHJvbChjb25zdCBOb2RlKik7CiAK
ICAgICBBWElEIHBsYXRmb3JtR2VuZXJhdGVBWElEKCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqZWN0RnJvbUFYSUQoQVhJRCBpZCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Rz
LmdldChpZCkuZ2V0KCk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGcm9tQVhJ
RChBWElEIGlkKSBjb25zdCB7IHJldHVybiBtX29iamVjdHMuZ2V0KGlkKTsgfQogCiAgICAgLy8g
VGV4dCBtYXJrZXIgdXRpbGl0aWVzLgogICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JWaXNpYmxl
UG9zaXRpb24oVGV4dE1hcmtlckRhdGEmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCA5MWY2NjRk
Li4xNjc0YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFs
dWUuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgSW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6
OmdldEltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHMKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICAvLyBMb29rIHVwIHRoZSBpbWFnZSBpbiBvdXIgY2FjaGUuCi0g
ICAgcmV0dXJuIG1faW1hZ2VzLmdldChzaXplKS5nZXQoKTsKKyAgICByZXR1cm4gbV9pbWFnZXMu
Z2V0KHNpemUpOwogfQogCiB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnB1dEltYWdlKGNv
bnN0IEludFNpemUmIHNpemUsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCmluZGV4IDZjYjhmZjEuLmEzOTZm
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAK
QEAgLTEyNSw3ICsxMjUsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU09NV3JhcHBlcnM6
OmdldFdyYXBwZXJGb3JSdWxlSW5TaGVldHMoU3R5bGVSdWxlKiBydWxlLAogCiAgICAgICAgIGNv
bGxlY3RGcm9tRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbihzdHlsZVNoZWV0Q29sbGVjdGlv
bik7CiAgICAgfQotICAgIHJldHVybiBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLmdldChy
dWxlKS5nZXQoKTsKKyAgICByZXR1cm4gbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5nZXQo
cnVsZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMGM2ZjU3Ny4uZjBiNWI1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTYwNiw3ICs2MDYsNyBAQCBFbGVt
ZW50KiBIVE1MQW5jaG9yRWxlbWVudDo6cm9vdEVkaXRhYmxlRWxlbWVudEZvclNlbGVjdGlvbk9u
TW91c2VEb3duKCkgY29uc3QKIHsKICAgICBpZiAoIW1faGFzUm9vdEVkaXRhYmxlRWxlbWVudEZv
clNlbGVjdGlvbk9uTW91c2VEb3duKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gcm9v
dEVkaXRhYmxlRWxlbWVudE1hcCgpLmdldCh0aGlzKS5nZXQoKTsKKyAgICByZXR1cm4gcm9vdEVk
aXRhYmxlRWxlbWVudE1hcCgpLmdldCh0aGlzKTsKIH0KIAogdm9pZCBIVE1MQW5jaG9yRWxlbWVu
dDo6Y2xlYXJSb290RWRpdGFibGVFbGVtZW50Rm9yU2VsZWN0aW9uT25Nb3VzZURvd24oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDE3OWRiNWMuLjU5ODQ1NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTYxOSw3ICs2MTks
NyBAQCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBIVE1MRm9ybUVsZW1lbnQ6OmVsZW1lbnRGb3JB
bGlhcyhjb25zdCBBdG9taWNTdHJpbmcmIGFsaQogewogICAgIGlmIChhbGlhcy5pc0VtcHR5KCkg
fHwgIW1fZWxlbWVudEFsaWFzZXMpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX2Vs
ZW1lbnRBbGlhc2VzLT5nZXQoYWxpYXMuaW1wbCgpKS5nZXQoKTsKKyAgICByZXR1cm4gbV9lbGVt
ZW50QWxpYXNlcy0+Z2V0KGFsaWFzLmltcGwoKSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50
OjphZGRFbGVtZW50QWxpYXMoSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhbGlhcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuY3BwCmluZGV4IDgyYjc4Y2MuLmExYmVhOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApAQCAtMTg4
LDcgKzE4OCw3IEBAIENvbnRlbnREaXN0cmlidXRvcjo6fkNvbnRlbnREaXN0cmlidXRvcigpCiAK
IEluc2VydGlvblBvaW50KiBDb250ZW50RGlzdHJpYnV0b3I6OmZpbmRJbnNlcnRpb25Qb2ludEZv
cihjb25zdCBOb2RlKiBrZXkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbm9kZVRvSW5zZXJ0aW9u
UG9pbnQuZ2V0KGtleSkuZ2V0KCk7CisgICAgcmV0dXJuIG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQu
Z2V0KGtleSk7CiB9CiAKIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpwb3B1bGF0ZShOb2RlKiBu
b2RlLCBDb250ZW50RGlzdHJpYnV0aW9uJiBwb29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IDc5Y2M5ZDguLjYxODI5
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB1bnNpZ25lZCBBcHBsaWNhdGlvbkNhY2hl
OjpyZW1vdmVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCkKIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogQXBwbGljYXRpb25DYWNoZTo6cmVzb3VyY2VGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwp
CiB7CiAgICAgQVNTRVJUKCFLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5oYXNGcmFnbWVudElk
ZW50aWZpZXIoKSk7Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2VzLmdldCh1cmwpLmdldCgpOworICAg
IHJldHVybiBtX3Jlc291cmNlcy5nZXQodXJsKTsKIH0gICAgCiAKIGJvb2wgQXBwbGljYXRpb25D
YWNoZTo6cmVxdWVzdElzSFRUUE9ySFRUUFNHZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcAppbmRleCBjZGQ4MzU4Li5hYTRhODcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2VDb2xsZWN0aW9uLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEFyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb246OmFkZFJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJj
ZQogCiBBcmNoaXZlUmVzb3VyY2UqIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb246OmFyY2hpdmVS
ZXNvdXJjZUZvclVSTChjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgQXJjaGl2ZVJlc291cmNlKiBy
ZXNvdXJjZSA9IG1fc3VicmVzb3VyY2VzLmdldCh1cmwpLmdldCgpOworICAgIEFyY2hpdmVSZXNv
dXJjZSogcmVzb3VyY2UgPSBtX3N1YnJlc291cmNlcy5nZXQodXJsKTsKICAgICBpZiAoIXJlc291
cmNlKQogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5j
cHAKaW5kZXggYzJmZWYyMy4uNDYxMDFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcApA
QCAtMjY5LDcgKzI2OSw3IEBAIFN0b3JhZ2VOYW1lc3BhY2UqIFBhZ2VHcm91cDo6dHJhbnNpZW50
TG9jYWxTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnCiAgICAgaWYgKCFtX3Ry
YW5zaWVudExvY2FsU3RvcmFnZS5nZXQodG9wT3JpZ2luU3RyaW5nKSkKICAgICAgICAgbV90cmFu
c2llbnRMb2NhbFN0b3JhZ2Uuc2V0KHRvcE9yaWdpblN0cmluZywgU3RvcmFnZU5hbWVzcGFjZTo6
c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoKnRoaXMtPnBhZ2VzKCkuYmVnaW4oKSkpOwogCi0gICAg
cmV0dXJuIG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlLmdldCh0b3BPcmlnaW5TdHJpbmcpLmdldCgp
OworICAgIHJldHVybiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZS5nZXQodG9wT3JpZ2luU3RyaW5n
KTsKIH0KIAogdm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJX
b3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBLVVJMJiB1cmwsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNw
cAppbmRleCAwNzFkYmNmLi4xNTgwNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2
b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciwgUmVuZGVyU3R5bGUqCiAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGZyb21T
dHlsZSA9IGtleWZyYW1lQW5pbSA/IGtleWZyYW1lQW5pbS0+dW5hbmltYXRlZFN0eWxlKCkgOiBj
dXJyZW50U3R5bGU7CiAKICAgICAgICAgICAgICAgICAvLyBTZWUgaWYgdGhlcmUgaXMgYSBjdXJy
ZW50IHRyYW5zaXRpb24gZm9yIHRoaXMgcHJvcAotICAgICAgICAgICAgICAgIEltcGxpY2l0QW5p
bWF0aW9uKiBpbXBsQW5pbSA9IG1fdHJhbnNpdGlvbnMuZ2V0KHByb3ApLmdldCgpOworICAgICAg
ICAgICAgICAgIEltcGxpY2l0QW5pbWF0aW9uKiBpbXBsQW5pbSA9IG1fdHJhbnNpdGlvbnMuZ2V0
KHByb3ApOwogICAgICAgICAgICAgICAgIGJvb2wgZXF1YWwgPSB0cnVlOwogCiAgICAgICAgICAg
ICAgICAgaWYgKGltcGxBbmltKSB7CkBAIC01MTEsNyArNTExLDcgQEAgYm9vbCBDb21wb3NpdGVB
bmltYXRpb246OnBhdXNlVHJhbnNpdGlvbkF0VGltZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBk
b3VibGUgdCkKICAgICBpZiAoKHByb3BlcnR5IDwgZmlyc3RDU1NQcm9wZXJ0eSkgfHwgKHByb3Bl
cnR5ID49IGZpcnN0Q1NTUHJvcGVydHkgKyBudW1DU1NQcm9wZXJ0aWVzKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgSW1wbGljaXRBbmltYXRpb24qIGltcGxBbmltID0gbV90cmFuc2l0
aW9ucy5nZXQocHJvcGVydHkpLmdldCgpOworICAgIEltcGxpY2l0QW5pbWF0aW9uKiBpbXBsQW5p
bSA9IG1fdHJhbnNpdGlvbnMuZ2V0KHByb3BlcnR5KTsKICAgICBpZiAoIWltcGxBbmltKSB7CiAg
ICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIHByb3BlcnR5IGlzIGJlaW5nIGFuaW1hdGVk
IHZpYSBhIHNob3J0aGFuZC4KICAgICAgICAgLy8gVGhpcyBjb2RlIGlzIG9ubHkgdXNlZCBmb3Ig
dGVzdGluZywgc28gcGVyZm9ybWFuY2UgaXMgbm90IGNyaXRpY2FsIGhlcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRl
eCA2MWNmMzlhLi4wYmI2NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIEJs
b2JSZWdpc3RyeUltcGw6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCkKIEJsb2JT
dG9yYWdlRGF0YSogQmxvYlJlZ2lzdHJ5SW1wbDo6Z2V0QmxvYkRhdGFGcm9tVVJMKGNvbnN0IEtV
UkwmIHVybCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHJldHVy
biBtX2Jsb2JzLmdldCh1cmwuc3RyaW5nKCkpLmdldCgpOworICAgIHJldHVybiBtX2Jsb2JzLmdl
dCh1cmwuc3RyaW5nKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDRkMGZmYmUuLjdlNmY2NjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0xOTgsNyArMTk4
LDcgQEAgUGx1Z2luUGFja2FnZSogUGx1Z2luRGF0YWJhc2U6OnBsdWdpbkZvck1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiAKICAgICBTdHJpbmcga2V5ID0gbWltZVR5cGUubG93ZXIo
KTsKICAgICBQbHVnaW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGx1Z2lucy5lbmQoKTsK
LSAgICBQbHVnaW5QYWNrYWdlKiBwcmVmZXJyZWRQbHVnaW4gPSBtX3ByZWZlcnJlZFBsdWdpbnMu
Z2V0KGtleSkuZ2V0KCk7CisgICAgUGx1Z2luUGFja2FnZSogcHJlZmVycmVkUGx1Z2luID0gbV9w
cmVmZXJyZWRQbHVnaW5zLmdldChrZXkpOwogICAgIGlmIChwcmVmZXJyZWRQbHVnaW4KICAgICAg
ICAgJiYgcHJlZmVycmVkUGx1Z2luLT5pc0VuYWJsZWQoKQogICAgICAgICAmJiBwcmVmZXJyZWRQ
bHVnaW4tPm1pbWVUb0Rlc2NyaXB0aW9ucygpLmNvbnRhaW5zKGtleSkpIHsKQEAgLTI0OCw3ICsy
NDgsNyBAQCBTdHJpbmcgUGx1Z2luRGF0YWJhc2U6Ok1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdAogCiAgICAgICAgIGZvciAoTUlNRVRvRXh0ZW5zaW9u
c01hcDo6Y29uc3RfaXRlcmF0b3IgbWltZV9pdCA9ICgqaXQpLT5taW1lVG9FeHRlbnNpb25zKCku
YmVnaW4oKTsgbWltZV9pdCAhPSBtaW1lX2VuZDsgKyttaW1lX2l0KSB7CiAgICAgICAgICAgICBt
aW1lVHlwZSA9IG1pbWVfaXQtPmtleTsKLSAgICAgICAgICAgIFBsdWdpblBhY2thZ2UqIHByZWZl
cnJlZFBsdWdpbiA9IG1fcHJlZmVycmVkUGx1Z2lucy5nZXQobWltZVR5cGUpLmdldCgpOworICAg
ICAgICAgICAgUGx1Z2luUGFja2FnZSogcHJlZmVycmVkUGx1Z2luID0gbV9wcmVmZXJyZWRQbHVn
aW5zLmdldChtaW1lVHlwZSk7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0
ZW5zaW9ucyA9IG1pbWVfaXQtPnZhbHVlOwogICAgICAgICAgICAgYm9vbCBmb3VuZE1hcHBpbmcg
PSBmYWxzZTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleHRlbnNpb25z
LnNpemUoKTsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5j
cHAKaW5kZXggNTcyYzlhMi4uZDcyMTk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb3VudGVyLmNwcApAQCAtMjk4LDcgKzI5OCw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSog
bWFrZUNvdW50ZXJOb2RlKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcm
IGlkCiAKICAgICBpZiAob2JqZWN0LT5oYXNDb3VudGVyTm9kZU1hcCgpKSB7CiAgICAgICAgIGlm
IChDb3VudGVyTWFwKiBub2RlTWFwID0gY291bnRlck1hcHMoKS5nZXQob2JqZWN0KSkgewotICAg
ICAgICAgICAgaWYgKENvdW50ZXJOb2RlKiBub2RlID0gbm9kZU1hcC0+Z2V0KGlkZW50aWZpZXIp
LmdldCgpKQorICAgICAgICAgICAgaWYgKENvdW50ZXJOb2RlKiBub2RlID0gbm9kZU1hcC0+Z2V0
KGlkZW50aWZpZXIpKQogICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMzMzLDcgKzMzMyw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJO
b2RlKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkCiAgICAgICAg
IHNraXBEZXNjZW5kYW50cyA9IGZhbHNlOwogICAgICAgICBpZiAoIWN1cnJlbnRSZW5kZXJlci0+
aGFzQ291bnRlck5vZGVNYXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBDb3Vu
dGVyTm9kZSogY3VycmVudENvdW50ZXIgPSBtYXBzLmdldChjdXJyZW50UmVuZGVyZXIpLT5nZXQo
aWRlbnRpZmllcikuZ2V0KCk7CisgICAgICAgIENvdW50ZXJOb2RlKiBjdXJyZW50Q291bnRlciA9
IG1hcHMuZ2V0KGN1cnJlbnRSZW5kZXJlciktPmdldChpZGVudGlmaWVyKTsKICAgICAgICAgaWYg
KCFjdXJyZW50Q291bnRlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBza2lwRGVz
Y2VuZGFudHMgPSB0cnVlOwpAQCAtNjI3LDcgKzYyNyw3IEBAIHZvaWQgc2hvd0NvdW50ZXJSZW5k
ZXJlclRyZWUoY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgY2hh
cioKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcCBOOiVwIFA6JXAgUFM6JXAgTlM6JXAgQzol
cFxuIiwKICAgICAgICAgICAgIGN1cnJlbnQsIGN1cnJlbnQtPm5vZGUoKSwgY3VycmVudC0+cGFy
ZW50KCksIGN1cnJlbnQtPnByZXZpb3VzU2libGluZygpLAogICAgICAgICAgICAgY3VycmVudC0+
bmV4dFNpYmxpbmcoKSwgY3VycmVudC0+aGFzQ291bnRlck5vZGVNYXAoKSA/Ci0gICAgICAgICAg
ICBjb3VudGVyTmFtZSA/IFdlYkNvcmU6OmNvdW50ZXJNYXBzKCkuZ2V0KGN1cnJlbnQpLT5nZXQo
aWRlbnRpZmllcikuZ2V0KCkgOiAoV2ViQ29yZTo6Q291bnRlck5vZGUqKTEgOiAoV2ViQ29yZTo6
Q291bnRlck5vZGUqKTApOworICAgICAgICAgICAgY291bnRlck5hbWUgPyBXZWJDb3JlOjpjb3Vu
dGVyTWFwcygpLmdldChjdXJyZW50KS0+Z2V0KGlkZW50aWZpZXIpIDogKFdlYkNvcmU6OkNvdW50
ZXJOb2RlKikxIDogKFdlYkNvcmU6OkNvdW50ZXJOb2RlKikwKTsKICAgICB9CiAgICAgZmZsdXNo
KHN0ZGVycik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCmluZGV4IDZkYjQ5OGQuLjMxMTAyYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ckJ1aWxkZXIuY3BwCkBAIC01NywxMyArNTcsMTMgQEAgRmlsdGVyRWZmZWN0KiBTVkdGaWx0ZXJC
dWlsZGVyOjpnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CiAgICAg
ICAgIGlmIChtX2xhc3RFZmZlY3QpCiAgICAgICAgICAgICByZXR1cm4gbV9sYXN0RWZmZWN0Lmdl
dCgpOwogCi0gICAgICAgIHJldHVybiBtX2J1aWx0aW5FZmZlY3RzLmdldChTb3VyY2VHcmFwaGlj
OjplZmZlY3ROYW1lKCkpLmdldCgpOworICAgICAgICByZXR1cm4gbV9idWlsdGluRWZmZWN0cy5n
ZXQoU291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSgpKTsKICAgICB9CiAKICAgICBpZiAobV9idWls
dGluRWZmZWN0cy5jb250YWlucyhpZCkpCi0gICAgICAgIHJldHVybiBtX2J1aWx0aW5FZmZlY3Rz
LmdldChpZCkuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX2J1aWx0aW5FZmZlY3RzLmdldChpZCk7
CiAKLSAgICByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkKS5nZXQoKTsKKyAgICByZXR1cm4g
bV9uYW1lZEVmZmVjdHMuZ2V0KGlkKTsKIH0KIAogdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBl
bmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHBycEVm
ZmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0
YWJsZURpY3Rpb25hcnkuaAppbmRleCBjOTY5NjIxLi5kOGQ4NTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogCiAgICAgQVBJT2JqZWN0KiBnZXQoY29uc3QgU3RyaW5nJiBrZXkpCiAgICAgewotICAgICAg
ICByZXR1cm4gbV9tYXAuZ2V0KGtleSkuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX21hcC5nZXQo
a2V5KTsKICAgICB9CiAKICAgICBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBrZXlzKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggMGE4MGVhZC4uM2UxZjg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNDExLDcgKzQxMSw3
IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKENvcmVJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHVpCiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5
KTsKIAogICAgIEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlPiA+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKLSAgICBTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25T
dG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKS5nZXQoKTsKKyAgICBTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25T
dG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKTsKIAogICAgIC8vIEZJWE1F
OiBUaGVzZSBzaG91bGQgYmUgbWVzc2FnZSBjaGVja3MuCiAgICAgQVNTRVJUKHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKTsKQEAgLTUxMSwxMCArNTExLDEwIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6
OnNldEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb25JbnRlcm5hbCh1aW50
NjRfCiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VJ
bnRlcm5hbCh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHVpbnQ2NF90IG5ld1N0b3JhZ2VO
YW1lc3BhY2VJRCkKIHsKLSAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVz
cGFjZUlEKS5nZXQoKTsKKyAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVz
cGFjZUlEKTsKICAgICBBU1NFUlQoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwogCi0gICAgU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCkuZ2V0KCk7Cisg
ICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0g
bV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAg
ICAgQVNTRVJUKG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlKTsKIAogICAgIHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlLT5jbG9uZVRvKCpuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CkBAIC01
NDIsNyArNTQyLDcgQEAgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdl
cjo6ZmluZFN0b3JhZ2VBcmVhKENvcmVJUEM6OkNvbm5lY3Rpb24KICAgICBpZiAoIUhhc2hNYXA8
c3RkOjpwYWlyPFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiwgdWludDY0X3Q+LCBSZWZQdHI8
U3RvcmFnZUFyZWE+ID46OmlzVmFsaWRLZXkoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIp
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVj
dGlvbi5nZXQoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpLmdldCgpOworICAgIHJldHVy
biBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJ
RFBhaXIpOwogfQogCiBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9y
YWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3Rv
cmFnZU5hbWVzcGFjZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXgg
YzJlZDhiNS4uODZkZjI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBA
IC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAg
IFQqIHN1cHBsZW1lbnQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPiht
X3N1cHBsZW1lbnRzLmdldChUOjpzdXBwbGVtZW50TmFtZSgpKS5nZXQoKSk7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUKj4obV9zdXBwbGVtZW50cy5nZXQoVDo6c3VwcGxlbWVudE5hbWUo
KSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwZGMxMWQ3Li5kNDM4NDBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjEw
LDcgKzIxMCw3IEBAIFZlY3RvcjxXZWJQYWdlUHJveHkqPiBXZWJQcm9jZXNzUHJveHk6OnBhZ2Vz
KCkgY29uc3QKIAogV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJC
YWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlEKSBjb25zdAogewotICAgIHJldHVybiBtX2Jh
Y2tGb3J3YXJkTGlzdEl0ZW1NYXAuZ2V0KGl0ZW1JRCkuZ2V0KCk7CisgICAgcmV0dXJuIG1fYmFj
a0ZvcndhcmRMaXN0SXRlbU1hcC5nZXQoaXRlbUlEKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnJlZ2lzdGVyTmV3V2ViQmFja0ZvcndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKiBpdGVtKQpAQCAtNDYzLDcgKzQ2Myw3IEBAIFdlYkZyYW1lUHJveHkqIFdlYlByb2Nlc3NQ
cm94eTo6d2ViRnJhbWUodWludDY0X3QgZnJhbWVJRCkgY29uc3QKICAgICBpZiAoIVdlYkZyYW1l
UHJveHlNYXA6OmlzVmFsaWRLZXkoZnJhbWVJRCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIG1fZnJhbWVNYXAuZ2V0KGZyYW1lSUQpLmdldCgpOworICAgIHJldHVybiBtX2ZyYW1l
TWFwLmdldChmcmFtZUlEKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNhbkNyZWF0ZUZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKaW5kZXggYjFlYjBmYS4uMGFlMTcyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2Vy
RWZsLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpyZWdp
c3RlckRvd25sb2FkSm9iKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIEV3a1ZpZXcqIHZpCiAKIEV3
a0Rvd25sb2FkSm9iKiBEb3dubG9hZE1hbmFnZXJFZmw6OmV3a0Rvd25sb2FkSm9iKFdLRG93bmxv
YWRSZWYgd2tEb3dubG9hZCkKIHsKLSAgICByZXR1cm4gbV9kb3dubG9hZEpvYnMuZ2V0KFdLRG93
bmxvYWRHZXRJRCh3a0Rvd25sb2FkKSkuZ2V0KCk7CisgICAgcmV0dXJuIG1fZG93bmxvYWRKb2Jz
LmdldChXS0Rvd25sb2FkR2V0SUQod2tEb3dubG9hZCkpOwogfQogCiB2b2lkIERvd25sb2FkTWFu
YWdlckVmbDo6dW5yZWdpc3RlckRvd25sb2FkSm9iKFdLRG93bmxvYWRSZWYgd2tEb3dubG9hZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IGM4YzQzOWIuLjM5MzA3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIGJvb2wgTmV0c2NhcGVQbHVn
aW46OnNob3VsZExvYWRTcmNVUkwoKQogCiBOZXRzY2FwZVBsdWdpblN0cmVhbSogTmV0c2NhcGVQ
bHVnaW46OnN0cmVhbUZyb21JRCh1aW50NjRfdCBzdHJlYW1JRCkKIHsKLSAgICByZXR1cm4gbV9z
dHJlYW1zLmdldChzdHJlYW1JRCkuZ2V0KCk7CisgICAgcmV0dXJuIG1fc3RyZWFtcy5nZXQoc3Ry
ZWFtSUQpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdG9wQWxsU3RyZWFtcygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IDBlOWE2YTQuLjlhOGRjNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC0xMTYsNyArMTE2
LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3MKIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IHVpbnQzMl90IG9wYXF1ZVBsdWdpblR5cGUpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
cGF0aHNBbmRDb25uZWN0aW9uc011dGV4KTsKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uID0gbV9wYXRoc0FuZENvbm5lY3Rpb25zLmdldChzdGQ6Om1ha2VfcGFpcihwbHVnaW5Q
YXRoLCBzdGF0aWNfY2FzdDxQbHVnaW5Qcm9jZXNzOjpUeXBlPihvcGFxdWVQbHVnaW5UeXBlKSkp
LmdldCgpOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtX3BhdGhzQW5k
Q29ubmVjdGlvbnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKHBsdWdpblBhdGgsIHN0YXRpY19jYXN0PFBs
dWdpblByb2Nlc3M6OlR5cGU+KG9wYXF1ZVBsdWdpblR5cGUpKSk7CiAKICAgICAvLyBJdCdzIE9L
IGZvciBjb25uZWN0aW9uIHRvIGJlIG51bGwgaGVyZTsgaXQgd2lsbCBoYXBwZW4gaWYgdGhpcyB3
ZWIgcHJvY2VzcyBkb2Vzbid0IGtub3cKICAgICAvLyBhbnl0aGluZyBhYm91dCB0aGUgcGx1Zy1p
biBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCmluZGV4IDAzOWQ2MTEuLjg3MmQ0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyOTEsNyArMTI5MSw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6Y2FuY2VsU3RyZWFtTG9hZCh1aW50NjRfdCBzdHJlYW1JRCkKIHsK
ICAgICAvLyBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJlYW0uIFN0cmVhbTo6Y2FuY2VsIG1p
Z2h0IHJlbW92ZSB0aGUgc3RyZWFtIGZyb20gdGhlIG1hcCwgYW5kIHRodXMKICAgICAvLyByZWxl
YXNpbmcgaXRzIGxhc3QgcmVmZXJlbmNlLgotICAgIFJlZlB0cjxTdHJlYW0+IHN0cmVhbSA9IG1f
c3RyZWFtcy5nZXQoc3RyZWFtSUQpLmdldCgpOworICAgIFJlZlB0cjxTdHJlYW0+IHN0cmVhbSA9
IG1fc3RyZWFtcy5nZXQoc3RyZWFtSUQpOwogICAgIGlmICghc3RyZWFtKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IGJlODJhMTkuLjNhMTNkMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lk
IFdLMk5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZChIaXN0b3J5SXRlbSogaXRlbSkKIAogSGlzdG9y
eUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtRm9ySUQodWludDY0X3QgaXRlbUlE
KQogewotICAgIHJldHVybiBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5nZXQoaXRlbUlEKS5nZXQoKTsK
KyAgICByZXR1cm4gaWRUb0hpc3RvcnlJdGVtTWFwKCkuZ2V0KGl0ZW1JRCk7CiB9CiAKIHVpbnQ2
NF90IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppZEZvckl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0p
CkBAIC0xODYsNyArMTg2LDcgQEAgSGlzdG9yeUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjppdGVtQXRJbmRleChpbnQgaXRlbUluZGV4KQogICAgIGlmICghaXRlbUlEKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIHJldHVybiBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5nZXQoaXRlbUlEKS5n
ZXQoKTsKKyAgICByZXR1cm4gaWRUb0hpc3RvcnlJdGVtTWFwKCkuZ2V0KGl0ZW1JRCk7CiB9CiAK
IGludCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xpc3RDb3VudCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZDY3NjdiZC4uODA3
NzE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMjcwNSw3ICsyNzA1LDcgQEAgdm9pZCBXZWJQYWdlOjptYXlQZXJmb3JtVXBsb2FkRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKCkKIAogV2ViVW5kb1N0ZXAqIFdlYlBhZ2U6OndlYlVuZG9TdGVw
KHVpbnQ2NF90IHN0ZXBJRCkKIHsKLSAgICByZXR1cm4gbV91bmRvU3RlcE1hcC5nZXQoc3RlcElE
KS5nZXQoKTsKKyAgICByZXR1cm4gbV91bmRvU3RlcE1hcC5nZXQoc3RlcElEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlOjphZGRXZWJVbmRvU3RlcCh1aW50NjRfdCBzdGVwSUQsIFdlYlVuZG9TdGVwKiBl
bnRyeSkKQEAgLTM5MzIsNyArMzkzMiw3IEBAIHZvaWQgV2ViUGFnZTo6YWRkVGV4dENoZWNraW5n
UmVxdWVzdCh1aW50NjRfdCByZXF1ZXN0SUQsIFBhc3NSZWZQdHI8VGV4dENoZWNraW5nCiAKIHZv
aWQgV2ViUGFnZTo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdCkKIHsKLSAgICBUZXh0Q2hlY2tp
bmdSZXF1ZXN0KiByZXF1ZXN0ID0gbV9wZW5kaW5nVGV4dENoZWNraW5nUmVxdWVzdE1hcC5nZXQo
cmVxdWVzdElEKS5nZXQoKTsKKyAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0KiByZXF1ZXN0ID0gbV9w
ZW5kaW5nVGV4dENoZWNraW5nUmVxdWVzdE1hcC5nZXQocmVxdWVzdElEKTsKICAgICBpZiAoIXJl
cXVlc3QpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzk0Miw3ICszOTQyLDcgQEAgdm9pZCBXZWJQ
YWdlOjpkaWRGaW5pc2hDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0
b3I8VGV4dENoZWNraW4KIAogdm9pZCBXZWJQYWdlOjpkaWRDYW5jZWxDaGVja2luZ1RleHQodWlu
dDY0X3QgcmVxdWVzdElEKQogewotICAgIFRleHRDaGVja2luZ1JlcXVlc3QqIHJlcXVlc3QgPSBt
X3BlbmRpbmdUZXh0Q2hlY2tpbmdSZXF1ZXN0TWFwLmdldChyZXF1ZXN0SUQpLmdldCgpOworICAg
IFRleHRDaGVja2luZ1JlcXVlc3QqIHJlcXVlc3QgPSBtX3BlbmRpbmdUZXh0Q2hlY2tpbmdSZXF1
ZXN0TWFwLmdldChyZXF1ZXN0SUQpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAxNTYyNmIy
Li42NjQxMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTU0Myw3ICs1NDMsNyBAQCBXZWJQYWdlKiBXZWJQcm9jZXNzOjpmb2N1c2VkV2ViUGFnZSgpIGNv
bnN0CiAgICAgCiBXZWJQYWdlKiBXZWJQcm9jZXNzOjp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wYWdlTWFwLmdldChwYWdlSUQpLmdldCgpOworICAgIHJl
dHVybiBtX3BhZ2VNYXAuZ2V0KHBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRl
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCkBAIC02OTQsNyArNjk0LDcgQEAgV2ViUGFnZUdyb3VwUHJveHkqIFdlYlBy
b2Nlc3M6OndlYlBhZ2VHcm91cChQYWdlR3JvdXAqIHBhZ2VHcm91cCkKIAogV2ViUGFnZUdyb3Vw
UHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91cCh1aW50NjRfdCBwYWdlR3JvdXBJRCkKIHsK
LSAgICByZXR1cm4gbV9wYWdlR3JvdXBNYXAuZ2V0KHBhZ2VHcm91cElEKS5nZXQoKTsKKyAgICBy
ZXR1cm4gbV9wYWdlR3JvdXBNYXAuZ2V0KHBhZ2VHcm91cElEKTsKIH0KIAogV2ViUGFnZUdyb3Vw
UHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91cChjb25zdCBXZWJQYWdlR3JvdXBEYXRhJiBw
YWdlR3JvdXBEYXRhKQo=
</data>
<flag name="commit-queue"
          id="222049"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200705</attachid>
            <date>2013-05-06 09:11:20 -0700</date>
            <delta_ts>2013-05-06 09:55:30 -0700</delta_ts>
            <desc>WIP 2</desc>
            <filename>bug115646</filename>
            <type>text/plain</type>
            <size>29949</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGM1YTRhZjg3OTA4ODc5MWM3N2ZiNDVhMzhlZmVjY2E1MGJlNmZlN2QKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
TW9uIE1heSA2IDE4OjAyOjE2IDIwMTMgKzAzMDAKCiAgICBidWcxMTU2NDYKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlB
bmFseXplci5oCmluZGV4IGMxMjQ2YjQuLmRkN2YwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5o
CkBAIC03OCw3ICs3OCw3IEBAIGlubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6Om5l
d09iamVjdChpbnQgZHN0LCB1bnNpZ25lZCBvZmZzZXRPZklubGluZUNhCiAKIGlubGluZSB2b2lk
IFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OnB1dEJ5SWQoaW50IGRzdCwgdW5zaWduZWQgcHJvcGVy
dHlJbmRleCkKIHsKLSAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKiBhbmFseXNpcyA9IG1fYW5h
bHlzZXMuZ2V0KGRzdCkuZ2V0KCk7CisgICAgU3RhdGljUHJvcGVydHlBbmFseXNpcyogYW5hbHlz
aXMgPSBtX2FuYWx5c2VzLmdldChkc3QpOwogICAgIGlmICghYW5hbHlzaXMpCiAgICAgICAgIHJl
dHVybjsKICAgICBhbmFseXNpcy0+YWRkUHJvcGVydHlJbmRleChwcm9wZXJ0eUluZGV4KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMuaCBiL1NvdXJjZS9XVEYvd3RmL0hh
c2hUcmFpdHMuaAppbmRleCBiMDZlNzg1Li4yNmE5MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9IYXNoVHJhaXRzLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCkBAIC0x
NDIsOCArMTQyLDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHN0b3Jl
KFBhc3NSZWZQdHI8UD4gdmFsdWUsIFJlZlB0cjxQPiYgc3RvcmFnZSkgeyBzdG9yYWdlID0gdmFs
dWU7IH0KIAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoYW5nZSBQYXNzT3V0VHlwZSB0
byBQYXNzUmVmUHRyIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCi0gICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgY29uc2lkZXIgY2hhbmdpbmcgUGVla1R5cGUgdG8gYSByYXcgcG9pbnRlciBmb3Ig
YmV0dGVyIHBlcmZvcm1hbmNlLAotICAgICAgICAvLyBidXQgdGhlbiBjYWxsZXJzIHdvbid0IG5l
ZWQgdG8gY2FsbCBnZXQ7IGRvaW5nIHNvIHdpbGwgcmVxdWlyZSB1cGRhdGluZyBtYW55IGNhbGwg
c2l0ZXMuCisgICAgICAgIHR5cGVkZWYgUCogUGVla1R5cGU7CisgICAgICAgIHN0YXRpYyBQZWVr
VHlwZSBwZWVrKGNvbnN0IFJlZlB0cjxQPiYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9
CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8U3RyaW5nPiA6IFNp
bXBsZUNsYXNzSGFzaFRyYWl0czxTdHJpbmc+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDY4NmNhYjkuLmNhZTU4YjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTk1LDcg
KzE5NSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldChXaWRnZXQq
IHdpZGdldCkKICAgICBpZiAoIWF4SUQpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIHJl
dHVybiBtX29iamVjdHMuZ2V0KGF4SUQpLmdldCgpOyAgICAKKyAgICByZXR1cm4gbV9vYmplY3Rz
LmdldChheElEKTsgICAgCiB9CiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENh
Y2hlOjpnZXQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTIwOCw3ICsyMDgsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXQoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKICAgICBpZiAoIWF4SUQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG1fb2Jq
ZWN0cy5nZXQoYXhJRCkuZ2V0KCk7ICAgIAorICAgIHJldHVybiBtX29iamVjdHMuZ2V0KGF4SUQp
OyAgICAKIH0KIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KE5vZGUq
IG5vZGUpCkBAIC0yMzEsMTIgKzIzMSwxMiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVj
dENhY2hlOjpnZXQoTm9kZSogbm9kZSkKICAgICB9CiAKICAgICBpZiAocmVuZGVySUQpCi0gICAg
ICAgIHJldHVybiBtX29iamVjdHMuZ2V0KHJlbmRlcklEKS5nZXQoKTsKKyAgICAgICAgcmV0dXJu
IG1fb2JqZWN0cy5nZXQocmVuZGVySUQpOwogCiAgICAgaWYgKCFub2RlSUQpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgcmV0dXJuIG1fb2JqZWN0cy5nZXQobm9kZUlEKS5nZXQoKTsKKyAgICBy
ZXR1cm4gbV9vYmplY3RzLmdldChub2RlSUQpOwogfQogCiAvLyBGSVhNRTogVGhpcyBwcm9iYWJs
eSBiZWxvbmdzIG9uIE5vZGUuCkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjpyZW1vdmUoQVhJRCBheElEKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gZmlyc3Qg
ZmV0Y2ggb2JqZWN0IHRvIG9wZXJhdGUgc29tZSBjbGVhbnVwIGZ1bmN0aW9ucyBvbiBpdCAKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBtX29iamVjdHMuZ2V0KGF4SUQpLmdldCgpOwor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IG1fb2JqZWN0cy5nZXQoYXhJRCk7CiAgICAg
aWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggNWM1NTk4ZC4uNDgxMTg3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTE1MCw3ICsxNTAs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBub2RlSXNUZXh0Q29udHJvbChjb25zdCBOb2RlKik7CiAK
ICAgICBBWElEIHBsYXRmb3JtR2VuZXJhdGVBWElEKCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqZWN0RnJvbUFYSUQoQVhJRCBpZCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Rz
LmdldChpZCkuZ2V0KCk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGcm9tQVhJ
RChBWElEIGlkKSBjb25zdCB7IHJldHVybiBtX29iamVjdHMuZ2V0KGlkKTsgfQogCiAgICAgLy8g
VGV4dCBtYXJrZXIgdXRpbGl0aWVzLgogICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JWaXNpYmxl
UG9zaXRpb24oVGV4dE1hcmtlckRhdGEmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCA5MWY2NjRk
Li4xNjc0YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFs
dWUuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgSW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6
OmdldEltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHMKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICAvLyBMb29rIHVwIHRoZSBpbWFnZSBpbiBvdXIgY2FjaGUuCi0g
ICAgcmV0dXJuIG1faW1hZ2VzLmdldChzaXplKS5nZXQoKTsKKyAgICByZXR1cm4gbV9pbWFnZXMu
Z2V0KHNpemUpOwogfQogCiB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnB1dEltYWdlKGNv
bnN0IEludFNpemUmIHNpemUsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCmluZGV4IDZjYjhmZjEuLmEzOTZm
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAK
QEAgLTEyNSw3ICsxMjUsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU09NV3JhcHBlcnM6
OmdldFdyYXBwZXJGb3JSdWxlSW5TaGVldHMoU3R5bGVSdWxlKiBydWxlLAogCiAgICAgICAgIGNv
bGxlY3RGcm9tRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbihzdHlsZVNoZWV0Q29sbGVjdGlv
bik7CiAgICAgfQotICAgIHJldHVybiBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLmdldChy
dWxlKS5nZXQoKTsKKyAgICByZXR1cm4gbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5nZXQo
cnVsZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAppbmRleCA2OTUyNzkzLi5hZTczNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCkBAIC0zNTc2LDcgKzM1NzYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Omxv
YWRQZW5kaW5nU1ZHRG9jdW1lbnRzKCkKICAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbi0+Z2V0
T3BlcmF0aW9uVHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CiAgICAgICAg
ICAgICBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIHJlZmVyZW5jZUZpbHRlciA9IHN0YXRpY19j
YXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbi5nZXQoKSk7CiAK
LSAgICAgICAgICAgIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUqIHZhbHVlID0gc3RhdGUucGVu
ZGluZ1NWR0RvY3VtZW50cygpLmdldChyZWZlcmVuY2VGaWx0ZXIpLmdldCgpOworICAgICAgICAg
ICAgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSogdmFsdWUgPSBzdGF0ZS5wZW5kaW5nU1ZHRG9j
dW1lbnRzKCkuZ2V0KHJlZmVyZW5jZUZpbHRlcik7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgQ2FjaGVkU1ZHRG9jdW1lbnQq
IGNhY2hlZERvY3VtZW50ID0gdmFsdWUtPmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCAwYzZmNTc3Li5mMGI1
YjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtNjA2
LDcgKzYwNiw3IEBAIEVsZW1lbnQqIEhUTUxBbmNob3JFbGVtZW50Ojpyb290RWRpdGFibGVFbGVt
ZW50Rm9yU2VsZWN0aW9uT25Nb3VzZURvd24oKSBjb25zdAogewogICAgIGlmICghbV9oYXNSb290
RWRpdGFibGVFbGVtZW50Rm9yU2VsZWN0aW9uT25Nb3VzZURvd24pCiAgICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiByb290RWRpdGFibGVFbGVtZW50TWFwKCkuZ2V0KHRoaXMpLmdldCgpOwor
ICAgIHJldHVybiByb290RWRpdGFibGVFbGVtZW50TWFwKCkuZ2V0KHRoaXMpOwogfQogCiB2b2lk
IEhUTUxBbmNob3JFbGVtZW50OjpjbGVhclJvb3RFZGl0YWJsZUVsZW1lbnRGb3JTZWxlY3Rpb25P
bk1vdXNlRG93bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXgg
MTc5ZGI1Yy4uNTk4NDU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cApAQCAtNjE5LDcgKzYxOSw3IEBAIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIEhUTUxGb3JtRWxl
bWVudDo6ZWxlbWVudEZvckFsaWFzKGNvbnN0IEF0b21pY1N0cmluZyYgYWxpCiB7CiAgICAgaWYg
KGFsaWFzLmlzRW1wdHkoKSB8fCAhbV9lbGVtZW50QWxpYXNlcykKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgcmV0dXJuIG1fZWxlbWVudEFsaWFzZXMtPmdldChhbGlhcy5pbXBsKCkpLmdldCgpOwor
ICAgIHJldHVybiBtX2VsZW1lbnRBbGlhc2VzLT5nZXQoYWxpYXMuaW1wbCgpKTsKIH0KIAogdm9p
ZCBIVE1MRm9ybUVsZW1lbnQ6OmFkZEVsZW1lbnRBbGlhcyhIVE1MRm9ybUNvbnRyb2xFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGFsaWFzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKaW5kZXggODJiNzhjYy4uYTFi
ZWE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3Ry
aWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJp
YnV0b3IuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgQ29udGVudERpc3RyaWJ1dG9yOjp+Q29udGVu
dERpc3RyaWJ1dG9yKCkKIAogSW5zZXJ0aW9uUG9pbnQqIENvbnRlbnREaXN0cmlidXRvcjo6Zmlu
ZEluc2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9ub2RlVG9JbnNlcnRpb25Qb2ludC5nZXQoa2V5KS5nZXQoKTsKKyAgICByZXR1cm4gbV9ub2Rl
VG9JbnNlcnRpb25Qb2ludC5nZXQoa2V5KTsKIH0KIAogdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6
OnBvcHVsYXRlKE5vZGUqIG5vZGUsIENvbnRlbnREaXN0cmlidXRpb24mIHBvb2wpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKaW5k
ZXggNzljYzlkOC4uNjE4MjliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHVuc2lnbmVk
IEFwcGxpY2F0aW9uQ2FjaGU6OnJlbW92ZVJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKQogQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiBBcHBsaWNhdGlvbkNhY2hlOjpyZXNvdXJjZUZvclVSTChj
b25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBBU1NFUlQoIUtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmwpLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICByZXR1cm4gbV9yZXNvdXJjZXMuZ2V0
KHVybCkuZ2V0KCk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VzLmdldCh1cmwpOwogfSAgICAKIAog
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlOjpyZXF1ZXN0SXNIVFRQT3JIVFRQU0dldChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCmluZGV4IGNkZDgzNTgu
LmFhNGE4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQg
QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6YWRkUmVzb3VyY2UoUGFzc1JlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IHJlc291cmNlCiAKIEFyY2hpdmVSZXNvdXJjZSogQXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBB
cmNoaXZlUmVzb3VyY2UqIHJlc291cmNlID0gbV9zdWJyZXNvdXJjZXMuZ2V0KHVybCkuZ2V0KCk7
CisgICAgQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSA9IG1fc3VicmVzb3VyY2VzLmdldCh1cmwp
OwogICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCBjMmZlZjIzLi40NjEwMWFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgU3RvcmFnZU5hbWVzcGFjZSogUGFn
ZUdyb3VwOjp0cmFuc2llbnRMb2NhbFN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9y
aWcKICAgICBpZiAoIW1fdHJhbnNpZW50TG9jYWxTdG9yYWdlLmdldCh0b3BPcmlnaW5TdHJpbmcp
KQogICAgICAgICBtX3RyYW5zaWVudExvY2FsU3RvcmFnZS5zZXQodG9wT3JpZ2luU3RyaW5nLCBT
dG9yYWdlTmFtZXNwYWNlOjpzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSgqdGhpcy0+cGFnZXMoKS5i
ZWdpbigpKSk7CiAKLSAgICByZXR1cm4gbV90cmFuc2llbnRMb2NhbFN0b3JhZ2UuZ2V0KHRvcE9y
aWdpblN0cmluZykuZ2V0KCk7CisgICAgcmV0dXJuIG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlLmdl
dCh0b3BPcmlnaW5TdHJpbmcpOwogfQogCiB2b2lkIFBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRv
V29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0
IEtVUkwmIHVybCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Nv
bXBvc2l0ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21w
b3NpdGVBbmltYXRpb24uY3BwCmluZGV4IDA3MWRiY2YuLjE1ODA0NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApAQCAt
MTIzLDcgKzEyMyw3IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9u
cyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSoKICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogZnJvbVN0eWxlID0ga2V5ZnJhbWVBbmltID8ga2V5ZnJhbWVBbmltLT51bmFu
aW1hdGVkU3R5bGUoKSA6IGN1cnJlbnRTdHlsZTsKIAogICAgICAgICAgICAgICAgIC8vIFNlZSBp
ZiB0aGVyZSBpcyBhIGN1cnJlbnQgdHJhbnNpdGlvbiBmb3IgdGhpcyBwcm9wCi0gICAgICAgICAg
ICAgICAgSW1wbGljaXRBbmltYXRpb24qIGltcGxBbmltID0gbV90cmFuc2l0aW9ucy5nZXQocHJv
cCkuZ2V0KCk7CisgICAgICAgICAgICAgICAgSW1wbGljaXRBbmltYXRpb24qIGltcGxBbmltID0g
bV90cmFuc2l0aW9ucy5nZXQocHJvcCk7CiAgICAgICAgICAgICAgICAgYm9vbCBlcXVhbCA9IHRy
dWU7CiAKICAgICAgICAgICAgICAgICBpZiAoaW1wbEFuaW0pIHsKQEAgLTUxMSw3ICs1MTEsNyBA
QCBib29sIENvbXBvc2l0ZUFuaW1hdGlvbjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIGRvdWJsZSB0KQogICAgIGlmICgocHJvcGVydHkgPCBmaXJzdENTU1By
b3BlcnR5KSB8fCAocHJvcGVydHkgPj0gZmlyc3RDU1NQcm9wZXJ0eSArIG51bUNTU1Byb3BlcnRp
ZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBJbXBsaWNpdEFuaW1hdGlvbiogaW1w
bEFuaW0gPSBtX3RyYW5zaXRpb25zLmdldChwcm9wZXJ0eSkuZ2V0KCk7CisgICAgSW1wbGljaXRB
bmltYXRpb24qIGltcGxBbmltID0gbV90cmFuc2l0aW9ucy5nZXQocHJvcGVydHkpOwogICAgIGlm
ICghaW1wbEFuaW0pIHsKICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgcHJvcGVydHkg
aXMgYmVpbmcgYW5pbWF0ZWQgdmlhIGEgc2hvcnRoYW5kLgogICAgICAgICAvLyBUaGlzIGNvZGUg
aXMgb25seSB1c2VkIGZvciB0ZXN0aW5nLCBzbyBwZXJmb3JtYW5jZSBpcyBub3QgY3JpdGljYWwg
aGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGUwMjJmZTIuLjllYWEyYjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cApAQCAtMTc5Niw3ICsxNzk2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZU1hc2tM
YXllcigpCiAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5n
ZXQoKSkgewogICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9u
ZU1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7ICAgICAgICAgICAgCi0g
ICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIG1hc2tDbG9uZSA9IG1hc2tMYXllckNsb25lTWFw
ID8gbWFza0xheWVyQ2xvbmVNYXAtPmdldChpdC0+a2V5KS5nZXQoKSA6IDA7CisgICAgICAgICAg
ICBQbGF0Zm9ybUNBTGF5ZXIqIG1hc2tDbG9uZSA9IG1hc2tMYXllckNsb25lTWFwID8gbWFza0xh
eWVyQ2xvbmVNYXAtPmdldChpdC0+a2V5KSA6IDA7CiAgICAgICAgICAgICBpdC0+dmFsdWUtPnNl
dE1hc2sobWFza0Nsb25lKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDYxY2YzOWEu
LjBiYjY1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5
SW1wbDo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsKQogQmxvYlN0b3JhZ2VEYXRh
KiBCbG9iUmVnaXN0cnlJbXBsOjpnZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgS1VSTCYgdXJsKSBj
b25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgcmV0dXJuIG1fYmxvYnMu
Z2V0KHVybC5zdHJpbmcoKSkuZ2V0KCk7CisgICAgcmV0dXJuIG1fYmxvYnMuZ2V0KHVybC5zdHJp
bmcoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggNGQwZmZiZS4uN2U2ZjY2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBQbHVn
aW5QYWNrYWdlKiBQbHVnaW5EYXRhYmFzZTo6cGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKIAogICAgIFN0cmluZyBrZXkgPSBtaW1lVHlwZS5sb3dlcigpOwogICAgIFBs
dWdpblNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wbHVnaW5zLmVuZCgpOwotICAgIFBsdWdp
blBhY2thZ2UqIHByZWZlcnJlZFBsdWdpbiA9IG1fcHJlZmVycmVkUGx1Z2lucy5nZXQoa2V5KS5n
ZXQoKTsKKyAgICBQbHVnaW5QYWNrYWdlKiBwcmVmZXJyZWRQbHVnaW4gPSBtX3ByZWZlcnJlZFBs
dWdpbnMuZ2V0KGtleSk7CiAgICAgaWYgKHByZWZlcnJlZFBsdWdpbgogICAgICAgICAmJiBwcmVm
ZXJyZWRQbHVnaW4tPmlzRW5hYmxlZCgpCiAgICAgICAgICYmIHByZWZlcnJlZFBsdWdpbi0+bWlt
ZVRvRGVzY3JpcHRpb25zKCkuY29udGFpbnMoa2V5KSkgewpAQCAtMjQ4LDcgKzI0OCw3IEBAIFN0
cmluZyBQbHVnaW5EYXRhYmFzZTo6TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24pIGNvbnN0CiAKICAgICAgICAgZm9yIChNSU1FVG9FeHRlbnNpb25zTWFwOjpjb25z
dF9pdGVyYXRvciBtaW1lX2l0ID0gKCppdCktPm1pbWVUb0V4dGVuc2lvbnMoKS5iZWdpbigpOyBt
aW1lX2l0ICE9IG1pbWVfZW5kOyArK21pbWVfaXQpIHsKICAgICAgICAgICAgIG1pbWVUeXBlID0g
bWltZV9pdC0+a2V5OwotICAgICAgICAgICAgUGx1Z2luUGFja2FnZSogcHJlZmVycmVkUGx1Z2lu
ID0gbV9wcmVmZXJyZWRQbHVnaW5zLmdldChtaW1lVHlwZSkuZ2V0KCk7CisgICAgICAgICAgICBQ
bHVnaW5QYWNrYWdlKiBwcmVmZXJyZWRQbHVnaW4gPSBtX3ByZWZlcnJlZFBsdWdpbnMuZ2V0KG1p
bWVUeXBlKTsKICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25zID0g
bWltZV9pdC0+dmFsdWU7CiAgICAgICAgICAgICBib29sIGZvdW5kTWFwcGluZyA9IGZhbHNlOwog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyBp
KyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCA1
NzJjOWEyLi5kNzIxOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRl
ck5vZGUoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQKIAogICAg
IGlmIChvYmplY3QtPmhhc0NvdW50ZXJOb2RlTWFwKCkpIHsKICAgICAgICAgaWYgKENvdW50ZXJN
YXAqIG5vZGVNYXAgPSBjb3VudGVyTWFwcygpLmdldChvYmplY3QpKSB7Ci0gICAgICAgICAgICBp
ZiAoQ291bnRlck5vZGUqIG5vZGUgPSBub2RlTWFwLT5nZXQoaWRlbnRpZmllcikuZ2V0KCkpCisg
ICAgICAgICAgICBpZiAoQ291bnRlck5vZGUqIG5vZGUgPSBub2RlTWFwLT5nZXQoaWRlbnRpZmll
cikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgIH0KICAgICB9CkBAIC0z
MzMsNyArMzMzLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQKICAgICAgICAgc2tpcERlc2Nl
bmRhbnRzID0gZmFsc2U7CiAgICAgICAgIGlmICghY3VycmVudFJlbmRlcmVyLT5oYXNDb3VudGVy
Tm9kZU1hcCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIENvdW50ZXJOb2RlKiBj
dXJyZW50Q291bnRlciA9IG1hcHMuZ2V0KGN1cnJlbnRSZW5kZXJlciktPmdldChpZGVudGlmaWVy
KS5nZXQoKTsKKyAgICAgICAgQ291bnRlck5vZGUqIGN1cnJlbnRDb3VudGVyID0gbWFwcy5nZXQo
Y3VycmVudFJlbmRlcmVyKS0+Z2V0KGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWN1cnJlbnRD
b3VudGVyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHNraXBEZXNjZW5kYW50cyA9
IHRydWU7CkBAIC02MjcsNyArNjI3LDcgQEAgdm9pZCBzaG93Q291bnRlclJlbmRlcmVyVHJlZShj
b25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBjaGFyKgogICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiVwIE46JXAgUDolcCBQUzolcCBOUzolcCBDOiVwXG4iLAogICAg
ICAgICAgICAgY3VycmVudCwgY3VycmVudC0+bm9kZSgpLCBjdXJyZW50LT5wYXJlbnQoKSwgY3Vy
cmVudC0+cHJldmlvdXNTaWJsaW5nKCksCiAgICAgICAgICAgICBjdXJyZW50LT5uZXh0U2libGlu
ZygpLCBjdXJyZW50LT5oYXNDb3VudGVyTm9kZU1hcCgpID8KLSAgICAgICAgICAgIGNvdW50ZXJO
YW1lID8gV2ViQ29yZTo6Y291bnRlck1hcHMoKS5nZXQoY3VycmVudCktPmdldChpZGVudGlmaWVy
KS5nZXQoKSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMSA6IChXZWJDb3JlOjpDb3VudGVyTm9k
ZSopMCk7CisgICAgICAgICAgICBjb3VudGVyTmFtZSA/IFdlYkNvcmU6OmNvdW50ZXJNYXBzKCku
Z2V0KGN1cnJlbnQpLT5nZXQoaWRlbnRpZmllcikgOiAoV2ViQ29yZTo6Q291bnRlck5vZGUqKTEg
OiAoV2ViQ29yZTo6Q291bnRlck5vZGUqKTApOwogICAgIH0KICAgICBmZmx1c2goc3RkZXJyKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5jcHAKaW5kZXggNmRiNDk4ZC4uMzExMDJjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5j
cHAKQEAgLTU3LDEzICs1NywxMyBAQCBGaWx0ZXJFZmZlY3QqIFNWR0ZpbHRlckJ1aWxkZXI6Omdl
dEVmZmVjdEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKICAgICAgICAgaWYgKG1f
bGFzdEVmZmVjdCkKICAgICAgICAgICAgIHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7CiAKLSAg
ICAgICAgcmV0dXJuIG1fYnVpbHRpbkVmZmVjdHMuZ2V0KFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5h
bWUoKSkuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX2J1aWx0aW5FZmZlY3RzLmdldChTb3VyY2VH
cmFwaGljOjplZmZlY3ROYW1lKCkpOwogICAgIH0KIAogICAgIGlmIChtX2J1aWx0aW5FZmZlY3Rz
LmNvbnRhaW5zKGlkKSkKLSAgICAgICAgcmV0dXJuIG1fYnVpbHRpbkVmZmVjdHMuZ2V0KGlkKS5n
ZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fYnVpbHRpbkVmZmVjdHMuZ2V0KGlkKTsKIAotICAgIHJl
dHVybiBtX25hbWVkRWZmZWN0cy5nZXQoaWQpLmdldCgpOworICAgIHJldHVybiBtX25hbWVkRWZm
ZWN0cy5nZXQoaWQpOwogfQogCiB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRv
RWZmZWN0UmVmZXJlbmNlcyhQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJwRWZmZWN0LCBSZW5k
ZXJPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KaW5kZXggNTdkNTk4ZS4uYTY3
ODU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5Ib3N0UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE5l
dHNjYXBlUGx1Z2luSG9zdFByb3h5OjpyZW1vdmVQbHVnaW5JbnN0YW5jZShOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkqCiAKIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eSogTmV0c2NhcGVQ
bHVnaW5Ib3N0UHJveHk6OnBsdWdpbkluc3RhbmNlKHVpbnQzMl90IHBsdWdpbklEKQogewotICAg
IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eSogcmVzdWx0ID0gbV9pbnN0YW5jZXMuZ2V0KHBs
dWdpbklEKS5nZXQoKTsKKyAgICBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkqIHJlc3VsdCA9
IG1faW5zdGFuY2VzLmdldChwbHVnaW5JRCk7CiAgICAgQVNTRVJUKCFyZXN1bHQgfHwgcmVzdWx0
LT5ob3N0UHJveHkoKSA9PSB0aGlzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDNlYzJmMmMuLjI0YjY3YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCwgdQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJl
c291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIs
IHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgTmV0d29ya1Jlc291cmNlTG9h
ZGVyKiBsb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KG1haW5SZXNvdXJjZUxv
YWRJZGVudGlmaWVyKS5nZXQoKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxvYWRlciA9
IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQobWFpblJlc291cmNlTG9hZElkZW50aWZpZXIp
OwogICAgIE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5kb3dubG9hZE1hbmFnZXIoKS5jb252ZXJ0
SGFuZGxlVG9Eb3dubG9hZChkb3dubG9hZElELCBsb2FkZXItPmhhbmRsZSgpLCByZXF1ZXN0LCBy
ZXNwb25zZSk7CiAKICAgICAvLyBVbmJsb2NrIHRoZSBVUkwgY29ubmVjdGlvbiBvcGVyYXRpb24g
cXVldWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IGI4MWVjM2EuLjYxODMwNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBAIEhvc3RSZWNv
cmQqIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Omhvc3RGb3JVUkwoY29uc3QgV2ViQ29y
ZTo6S1VSTCYgdXJsLCBDCiAKICAgICBtX2hvc3RzLmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBT
dHJpbmcgaG9zdE5hbWUgPSB1cmwuaG9zdCgpOwotICAgIEhvc3RSZWNvcmQqIGhvc3QgPSBtX2hv
c3RzLmdldChob3N0TmFtZSkuZ2V0KCk7CisgICAgSG9zdFJlY29yZCogaG9zdCA9IG1faG9zdHMu
Z2V0KGhvc3ROYW1lKTsKICAgICBpZiAoIWhvc3QgJiYgY3JlYXRlSG9zdFBvbGljeSA9PSBDcmVh
dGVJZk5vdEZvdW5kKSB7CiAgICAgICAgIFJlZlB0cjxIb3N0UmVjb3JkPiBuZXdIb3N0ID0gSG9z
dFJlY29yZDo6Y3JlYXRlKGhvc3ROYW1lLCBtYXhSZXF1ZXN0c0luRmxpZ2h0UGVySG9zdCk7CiAg
ICAgICAgIGhvc3QgPSBuZXdIb3N0LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0ltbXV0YWJsZURpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11
dGFibGVEaWN0aW9uYXJ5LmgKaW5kZXggYzk2OTYyMS4uZDhkODUxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZURpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1Ymxp
YzoKIAogICAgIEFQSU9iamVjdCogZ2V0KGNvbnN0IFN0cmluZyYga2V5KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fbWFwLmdldChrZXkpLmdldCgpOworICAgICAgICByZXR1cm4gbV9tYXAuZ2V0
KGtleSk7CiAgICAgfQogCiAgICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4ga2V5cygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1h
bmFnZXIuY3BwCmluZGV4IDBhODBlYWQuLjNlMWY4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTQxMSw3ICs0MTEs
NyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChDb3JlSVBD
OjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCB1aQogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRy
eSk7CiAKICAgICBBU1NFUlQoKEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZT4gPjo6aXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQpKSk7Ci0gICAgU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCkuZ2V0KCk7CisgICAgU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKICAgICAvLyBGSVhN
RTogVGhlc2Ugc2hvdWxkIGJlIG1lc3NhZ2UgY2hlY2tzLgogICAgIEFTU0VSVChzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSk7CkBAIC01MTEsMTAgKzUxMSwxMCBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpzZXRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uSW50ZXJuYWwodWlu
dDY0XwogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
SW50ZXJuYWwodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCBuZXdTdG9yYWdl
TmFtZXNwYWNlSUQpCiB7Ci0gICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1l
c3BhY2VJRCkuZ2V0KCk7CisgICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlID0gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1l
c3BhY2VJRCk7CiAgICAgQVNTRVJUKHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKTsKIAotICAgIFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKiBuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChuZXdTdG9yYWdlTmFtZXNwYWNlSUQpLmdldCgpOwor
ICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9
IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChuZXdTdG9yYWdlTmFtZXNwYWNlSUQpOwog
ICAgIEFTU0VSVChuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CiAKICAgICBzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZS0+Y2xvbmVUbygqbmV3U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwpAQCAt
NTQyLDcgKzU0Miw3IEBAIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFn
ZXI6OmZpbmRTdG9yYWdlQXJlYShDb3JlSVBDOjpDb25uZWN0aW9uCiAgICAgaWYgKCFIYXNoTWFw
PHN0ZDo6cGFpcjxSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4sIHVpbnQ2NF90PiwgUmVmUHRy
PFN0b3JhZ2VBcmVhPiA+Ojppc1ZhbGlkS2V5KGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWly
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9zdG9yYWdlQXJlYXNCeUNvbm5l
Y3Rpb24uZ2V0KGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKS5nZXQoKTsKKyAgICByZXR1
cm4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uZ2V0KGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFw
SURQYWlyKTsKIH0KIAogU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZSogU3Rv
cmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4
IGMyZWQ4YjUuLjg2ZGYyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApA
QCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAg
ICBUKiBzdXBwbGVtZW50KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4o
bV9zdXBwbGVtZW50cy5nZXQoVDo6c3VwcGxlbWVudE5hbWUoKSkuZ2V0KCkpOworICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fc3VwcGxlbWVudHMuZ2V0KFQ6OnN1cHBsZW1lbnROYW1l
KCkpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMGRjMTFkNy4uZDQzODQwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTIx
MCw3ICsyMTAsNyBAQCBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gV2ViUHJvY2Vzc1Byb3h5OjpwYWdl
cygpIGNvbnN0CiAKIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYlByb2Nlc3NQcm94eTo6d2Vi
QmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9i
YWNrRm9yd2FyZExpc3RJdGVtTWFwLmdldChpdGVtSUQpLmdldCgpOworICAgIHJldHVybiBtX2Jh
Y2tGb3J3YXJkTGlzdEl0ZW1NYXAuZ2V0KGl0ZW1JRCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpyZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogaXRlbSkKQEAgLTQ2Myw3ICs0NjMsNyBAQCBXZWJGcmFtZVByb3h5KiBXZWJQcm9jZXNz
UHJveHk6OndlYkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpIGNvbnN0CiAgICAgaWYgKCFXZWJGcmFt
ZVByb3h5TWFwOjppc1ZhbGlkS2V5KGZyYW1lSUQpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IHJldHVybiBtX2ZyYW1lTWFwLmdldChmcmFtZUlEKS5nZXQoKTsKKyAgICByZXR1cm4gbV9mcmFt
ZU1hcC5nZXQoZnJhbWVJRCk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjYW5DcmVhdGVG
cmFtZSh1aW50NjRfdCBmcmFtZUlEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCmluZGV4IGIxZWIwZmEuLjBhZTE3MmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2Vy
RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdl
ckVmbC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlckVmbDo6cmVn
aXN0ZXJEb3dubG9hZEpvYihXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBFd2tWaWV3KiB2aQogCiBF
d2tEb3dubG9hZEpvYiogRG93bmxvYWRNYW5hZ2VyRWZsOjpld2tEb3dubG9hZEpvYihXS0Rvd25s
b2FkUmVmIHdrRG93bmxvYWQpCiB7Ci0gICAgcmV0dXJuIG1fZG93bmxvYWRKb2JzLmdldChXS0Rv
d25sb2FkR2V0SUQod2tEb3dubG9hZCkpLmdldCgpOworICAgIHJldHVybiBtX2Rvd25sb2FkSm9i
cy5nZXQoV0tEb3dubG9hZEdldElEKHdrRG93bmxvYWQpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1h
bmFnZXJFZmw6OnVucmVnaXN0ZXJEb3dubG9hZEpvYihXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggNjg2YzE1Zi4uZjE4NzZmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCkgT1ZFUlJJREU7CiAKLSAgICBXZWJS
ZXNvdXJjZUxvYWRlciogd2ViUmVzb3VyY2VMb2FkZXJGb3JJZGVudGlmaWVyKFJlc291cmNlTG9h
ZElkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV93ZWJSZXNvdXJjZUxvYWRl
cnMuZ2V0KGlkZW50aWZpZXIpLmdldCgpOyB9CisgICAgV2ViUmVzb3VyY2VMb2FkZXIqIHdlYlJl
c291cmNlTG9hZGVyRm9ySWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUmVzb3VyY2VMb2FkZXJzLmdldChpZGVudGlmaWVyKTsg
fQogCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAKaW5kZXggYzhjNDM5Yi4uMzkzMDdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCkBAIC01MjksNyArNTI5LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6c2hvdWxkTG9hZFNy
Y1VSTCgpCiAKIE5ldHNjYXBlUGx1Z2luU3RyZWFtKiBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRnJv
bUlEKHVpbnQ2NF90IHN0cmVhbUlEKQogewotICAgIHJldHVybiBtX3N0cmVhbXMuZ2V0KHN0cmVh
bUlEKS5nZXQoKTsKKyAgICByZXR1cm4gbV9zdHJlYW1zLmdldChzdHJlYW1JRCk7CiB9CiAKIHZv
aWQgTmV0c2NhcGVQbHVnaW46OnN0b3BBbGxTdHJlYW1zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlci5jcHAKaW5kZXggMGU5YTZhNC4uOWE4ZGM0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
UGx1Z2luUHJvY2Vzcwogdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnBsdWdp
blByb2Nlc3NDcmFzaGVkKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgdWludDMyX3Qgb3BhcXVl
UGx1Z2luVHlwZSkKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wYXRoc0FuZENvbm5lY3Rp
b25zTXV0ZXgpOwotICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtX3BhdGhz
QW5kQ29ubmVjdGlvbnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKHBsdWdpblBhdGgsIHN0YXRpY19jYXN0
PFBsdWdpblByb2Nlc3M6OlR5cGU+KG9wYXF1ZVBsdWdpblR5cGUpKSkuZ2V0KCk7CisgICAgQ29y
ZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1fcGF0aHNBbmRDb25uZWN0aW9ucy5nZXQo
c3RkOjptYWtlX3BhaXIocGx1Z2luUGF0aCwgc3RhdGljX2Nhc3Q8UGx1Z2luUHJvY2Vzczo6VHlw
ZT4ob3BhcXVlUGx1Z2luVHlwZSkpKTsKIAogICAgIC8vIEl0J3MgT0sgZm9yIGNvbm5lY3Rpb24g
dG8gYmUgbnVsbCBoZXJlOyBpdCB3aWxsIGhhcHBlbiBpZiB0aGlzIHdlYiBwcm9jZXNzIGRvZXNu
J3Qga25vdwogICAgIC8vIGFueXRoaW5nIGFib3V0IHRoZSBwbHVnLWluIHByb2Nlc3MuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXgg
MDM5ZDYxMS4uODcyZDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI5MSw3ICsxMjkxLDcgQEAgdm9pZCBQbHVnaW5WaWV3
OjpjYW5jZWxTdHJlYW1Mb2FkKHVpbnQ2NF90IHN0cmVhbUlEKQogewogICAgIC8vIEtlZXAgYSBy
ZWZlcmVuY2UgdG8gdGhlIHN0cmVhbS4gU3RyZWFtOjpjYW5jZWwgbWlnaHQgcmVtb3ZlIHRoZSBz
dHJlYW0gZnJvbSB0aGUgbWFwLCBhbmQgdGh1cwogICAgIC8vIHJlbGVhc2luZyBpdHMgbGFzdCBy
ZWZlcmVuY2UuCi0gICAgUmVmUHRyPFN0cmVhbT4gc3RyZWFtID0gbV9zdHJlYW1zLmdldChzdHJl
YW1JRCkuZ2V0KCk7CisgICAgUmVmUHRyPFN0cmVhbT4gc3RyZWFtID0gbV9zdHJlYW1zLmdldChz
dHJlYW1JRCk7CiAgICAgaWYgKCFzdHJlYW0pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcApp
bmRleCBmMTk5NzBlLi5kNzljMjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lk
IEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldo
ZWVsRXZlbnQmIHdoZWVsRXZlbgogewogI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCiAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc2Nyb2xsaW5nVHJlZXNNdXRleCk7Ci0gICAgaWYgKFNj
cm9sbGluZ1RyZWUqIHNjcm9sbGluZ1RyZWUgPSBtX3Njcm9sbGluZ1RyZWVzLmdldChwYWdlSUQp
LmdldCgpKSB7CisgICAgaWYgKFNjcm9sbGluZ1RyZWUqIHNjcm9sbGluZ1RyZWUgPSBtX3Njcm9s
bGluZ1RyZWVzLmdldChwYWdlSUQpKSB7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBwbGF0
Zm9ybVdoZWVsRXZlbnQgPSBwbGF0Zm9ybSh3aGVlbEV2ZW50KTsKIAogICAgICAgICAvLyBGSVhN
RTogSXQncyBwcmV0dHkgaG9ycmlibGUgdGhhdCB3ZSdyZSB1cGRhdGluZyB0aGUgYmFjay9mb3J3
YXJkIHN0YXRlIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCBiZTgyYTE5Li4z
YTEzZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBz
dGF0aWMgdm9pZCBXSzJOb3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQoSGlzdG9yeUl0ZW0qIGl0ZW0p
CiAKIEhpc3RvcnlJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aXRlbUZvcklEKHVpbnQ2
NF90IGl0ZW1JRCkKIHsKLSAgICByZXR1cm4gaWRUb0hpc3RvcnlJdGVtTWFwKCkuZ2V0KGl0ZW1J
RCkuZ2V0KCk7CisgICAgcmV0dXJuIGlkVG9IaXN0b3J5SXRlbU1hcCgpLmdldChpdGVtSUQpOwog
fQogCiB1aW50NjRfdCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aWRGb3JJdGVtKEhpc3RvcnlJ
dGVtKiBpdGVtKQpAQCAtMTg2LDcgKzE4Niw3IEBAIEhpc3RvcnlJdGVtKiBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6aXRlbUF0SW5kZXgoaW50IGl0ZW1JbmRleCkKICAgICBpZiAoIWl0ZW1JRCkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gaWRUb0hpc3RvcnlJdGVtTWFwKCkuZ2V0
KGl0ZW1JRCkuZ2V0KCk7CisgICAgcmV0dXJuIGlkVG9IaXN0b3J5SXRlbU1hcCgpLmdldChpdGVt
SUQpOwogfQogCiBpbnQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmJhY2tMaXN0Q291bnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ2
NzY3YmQuLjgwNzcxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTI3MDUsNyArMjcwNSw3IEBAIHZvaWQgV2ViUGFnZTo6bWF5UGVyZm9y
bVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpCiAKIFdlYlVuZG9TdGVwKiBXZWJQYWdlOjp3
ZWJVbmRvU3RlcCh1aW50NjRfdCBzdGVwSUQpCiB7Ci0gICAgcmV0dXJuIG1fdW5kb1N0ZXBNYXAu
Z2V0KHN0ZXBJRCkuZ2V0KCk7CisgICAgcmV0dXJuIG1fdW5kb1N0ZXBNYXAuZ2V0KHN0ZXBJRCk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6YWRkV2ViVW5kb1N0ZXAodWludDY0X3Qgc3RlcElELCBXZWJV
bmRvU3RlcCogZW50cnkpCkBAIC0zOTMyLDcgKzM5MzIsNyBAQCB2b2lkIFdlYlBhZ2U6OmFkZFRl
eHRDaGVja2luZ1JlcXVlc3QodWludDY0X3QgcmVxdWVzdElELCBQYXNzUmVmUHRyPFRleHRDaGVj
a2luZwogCiB2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHQpCiB7Ci0gICAg
VGV4dENoZWNraW5nUmVxdWVzdCogcmVxdWVzdCA9IG1fcGVuZGluZ1RleHRDaGVja2luZ1JlcXVl
c3RNYXAuZ2V0KHJlcXVlc3RJRCkuZ2V0KCk7CisgICAgVGV4dENoZWNraW5nUmVxdWVzdCogcmVx
dWVzdCA9IG1fcGVuZGluZ1RleHRDaGVja2luZ1JlcXVlc3RNYXAuZ2V0KHJlcXVlc3RJRCk7CiAg
ICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKQEAgLTM5NDIsNyArMzk0Miw3IEBA
IHZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgVmVjdG9yPFRleHRDaGVja2luCiAKIHZvaWQgV2ViUGFnZTo6ZGlkQ2FuY2VsQ2hlY2tp
bmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCkKIHsKLSAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0KiBy
ZXF1ZXN0ID0gbV9wZW5kaW5nVGV4dENoZWNraW5nUmVxdWVzdE1hcC5nZXQocmVxdWVzdElEKS5n
ZXQoKTsKKyAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0KiByZXF1ZXN0ID0gbV9wZW5kaW5nVGV4dENo
ZWNraW5nUmVxdWVzdE1hcC5nZXQocmVxdWVzdElEKTsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggMTU2MjZiMi4uNjY0MTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCkBAIC01NDMsNyArNTQzLDcgQEAgV2ViUGFnZSogV2ViUHJvY2Vzczo6Zm9jdXNlZFdl
YlBhZ2UoKSBjb25zdAogICAgIAogV2ViUGFnZSogV2ViUHJvY2Vzczo6d2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFnZU1hcC5nZXQocGFnZUlEKS5nZXQo
KTsKKyAgICByZXR1cm4gbV9wYWdlTWFwLmdldChwYWdlSUQpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNjk0LDcgKzY5NCw3IEBAIFdlYlBhZ2VHcm91cFBy
b3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAoUGFnZUdyb3VwKiBwYWdlR3JvdXApCiAKIFdl
YlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAodWludDY0X3QgcGFnZUdy
b3VwSUQpCiB7Ci0gICAgcmV0dXJuIG1fcGFnZUdyb3VwTWFwLmdldChwYWdlR3JvdXBJRCkuZ2V0
KCk7CisgICAgcmV0dXJuIG1fcGFnZUdyb3VwTWFwLmdldChwYWdlR3JvdXBJRCk7CiB9CiAKIFdl
YlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAoY29uc3QgV2ViUGFnZUdy
b3VwRGF0YSYgcGFnZUdyb3VwRGF0YSkK
</data>
<flag name="commit-queue"
          id="222064"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200714</attachid>
            <date>2013-05-06 09:55:30 -0700</date>
            <delta_ts>2013-05-06 11:18:17 -0700</delta_ts>
            <desc>WIP 3</desc>
            <filename>bug115646</filename>
            <type>text/plain</type>
            <size>30569</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDIyNzRhOGVjOGMzOGJjNDUyNDBjNzJhYWE1Mzg2YmU4NDMxYWYzZDAKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
TW9uIE1heSA2IDE4OjAyOjE2IDIwMTMgKzAzMDAKCiAgICBidWcxMTU2NDYKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlB
bmFseXplci5oCmluZGV4IGMxMjQ2YjQuLmRkN2YwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5o
CkBAIC03OCw3ICs3OCw3IEBAIGlubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6Om5l
d09iamVjdChpbnQgZHN0LCB1bnNpZ25lZCBvZmZzZXRPZklubGluZUNhCiAKIGlubGluZSB2b2lk
IFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OnB1dEJ5SWQoaW50IGRzdCwgdW5zaWduZWQgcHJvcGVy
dHlJbmRleCkKIHsKLSAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzKiBhbmFseXNpcyA9IG1fYW5h
bHlzZXMuZ2V0KGRzdCkuZ2V0KCk7CisgICAgU3RhdGljUHJvcGVydHlBbmFseXNpcyogYW5hbHlz
aXMgPSBtX2FuYWx5c2VzLmdldChkc3QpOwogICAgIGlmICghYW5hbHlzaXMpCiAgICAgICAgIHJl
dHVybjsKICAgICBhbmFseXNpcy0+YWRkUHJvcGVydHlJbmRleChwcm9wZXJ0eUluZGV4KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMuaCBiL1NvdXJjZS9XVEYvd3RmL0hh
c2hUcmFpdHMuaAppbmRleCBmZTRjMTJmLi4yYmUzM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9IYXNoVHJhaXRzLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCkBAIC0x
NDcsOCArMTQ3LDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFA+IHBhc3NPdXQoUmVmUHRyPFA+JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUucmVsZWFzZSgpOyB9
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFA+IHBhc3NPdXQoUCogdmFsdWUpIHsgcmV0dXJu
IHZhbHVlOyB9CiAKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBjaGFuZ2lu
ZyBQZWVrVHlwZSB0byBhIHJhdyBwb2ludGVyIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UsCi0gICAg
ICAgIC8vIGJ1dCB0aGVuIGNhbGxlcnMgd29uJ3QgbmVlZCB0byBjYWxsIGdldDsgZG9pbmcgc28g
d2lsbCByZXF1aXJlIHVwZGF0aW5nIG1hbnkgY2FsbCBzaXRlcy4KKyAgICAgICAgdHlwZWRlZiBQ
KiBQZWVrVHlwZTsKKyAgICAgICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoY29uc3QgUmVmUHRyPFA+
JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxTdHJpbmc+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFN0cmlu
Zz4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
aW5kZXggNjg2Y2FiOS4uY2FlNThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgQWNjZXNzaWJpbGl0eU9i
amVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KFdpZGdldCogd2lkZ2V0KQogICAgIGlmICghYXhJRCkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgcmV0dXJuIG1fb2JqZWN0cy5nZXQoYXhJRCku
Z2V0KCk7ICAgIAorICAgIHJldHVybiBtX29iamVjdHMuZ2V0KGF4SUQpOyAgICAKIH0KICAgICAK
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQpAQCAtMjA4LDcgKzIwOCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0
Q2FjaGU6OmdldChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIGlmICghYXhJRCkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9vYmplY3RzLmdldChheElEKS5nZXQoKTsgICAg
CisgICAgcmV0dXJuIG1fb2JqZWN0cy5nZXQoYXhJRCk7ICAgIAogfQogCiBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXQoTm9kZSogbm9kZSkKQEAgLTIzMSwxMiArMjMxLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldChOb2RlKiBub2RlKQog
ICAgIH0KIAogICAgIGlmIChyZW5kZXJJRCkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0cy5nZXQo
cmVuZGVySUQpLmdldCgpOworICAgICAgICByZXR1cm4gbV9vYmplY3RzLmdldChyZW5kZXJJRCk7
CiAKICAgICBpZiAoIW5vZGVJRCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9v
YmplY3RzLmdldChub2RlSUQpLmdldCgpOworICAgIHJldHVybiBtX29iamVjdHMuZ2V0KG5vZGVJ
RCk7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IGJlbG9uZ3Mgb24gTm9kZS4KQEAgLTQ4
Miw3ICs0ODIsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZShBWElEIGF4SUQpCiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICAvLyBmaXJzdCBmZXRjaCBvYmplY3QgdG8gb3BlcmF0ZSBz
b21lIGNsZWFudXAgZnVuY3Rpb25zIG9uIGl0IAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
aiA9IG1fb2JqZWN0cy5nZXQoYXhJRCkuZ2V0KCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqID0gbV9vYmplY3RzLmdldChheElEKTsKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJu
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApp
bmRleCA1YzU1OThkLi40ODExODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuaApAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICBib29sIG5v
ZGVJc1RleHRDb250cm9sKGNvbnN0IE5vZGUqKTsKIAogICAgIEFYSUQgcGxhdGZvcm1HZW5lcmF0
ZUFYSUQoKSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGcm9tQVhJRChB
WElEIGlkKSBjb25zdCB7IHJldHVybiBtX29iamVjdHMuZ2V0KGlkKS5nZXQoKTsgfQorICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZyb21BWElEKEFYSUQgaWQpIGNvbnN0IHsgcmV0dXJu
IG1fb2JqZWN0cy5nZXQoaWQpOyB9CiAKICAgICAvLyBUZXh0IG1hcmtlciB1dGlsaXRpZXMuCiAg
ICAgdm9pZCB0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihUZXh0TWFya2VyRGF0YSYs
IGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
R2VuZXJhdG9yVmFsdWUuY3BwCmluZGV4IDkxZjY2NGQuLjE2NzRjN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBA
QCBJbWFnZSogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Z2V0SW1hZ2UoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgcwogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIExv
b2sgdXAgdGhlIGltYWdlIGluIG91ciBjYWNoZS4KLSAgICByZXR1cm4gbV9pbWFnZXMuZ2V0KHNp
emUpLmdldCgpOworICAgIHJldHVybiBtX2ltYWdlcy5nZXQoc2l6ZSk7CiB9CiAKIHZvaWQgQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6cHV0SW1hZ2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUGFzc1Jl
ZlB0cjxJbWFnZT4gaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVj
dG9yQ1NTT01XcmFwcGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01X
cmFwcGVycy5jcHAKaW5kZXggNmNiOGZmMS4uYTM5NmZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIENTU1N0
eWxlUnVsZSogSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Z2V0V3JhcHBlckZvclJ1bGVJblNoZWV0
cyhTdHlsZVJ1bGUqIHJ1bGUsCiAKICAgICAgICAgY29sbGVjdEZyb21Eb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uKHN0eWxlU2hlZXRDb2xsZWN0aW9uKTsKICAgICB9Ci0gICAgcmV0dXJuIG1f
c3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuZ2V0KHJ1bGUpLmdldCgpOworICAgIHJldHVybiBt
X3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLmdldChydWxlKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGQzMmEwYTgu
LmE2NWQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTM1NzYsNyAr
MzU3Niw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdTVkdEb2N1bWVudHMoKQog
ICAgICAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkgPT0gRmlsdGVy
T3BlcmF0aW9uOjpSRUZFUkVOQ0UpIHsKICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlck9wZXJh
dGlvbiogcmVmZXJlbmNlRmlsdGVyID0gc3RhdGljX2Nhc3Q8UmVmZXJlbmNlRmlsdGVyT3BlcmF0
aW9uKj4oZmlsdGVyT3BlcmF0aW9uLmdldCgpKTsKIAotICAgICAgICAgICAgV2ViS2l0Q1NTU1ZH
RG9jdW1lbnRWYWx1ZSogdmFsdWUgPSBzdGF0ZS5wZW5kaW5nU1ZHRG9jdW1lbnRzKCkuZ2V0KHJl
ZmVyZW5jZUZpbHRlcikuZ2V0KCk7CisgICAgICAgICAgICBXZWJLaXRDU1NTVkdEb2N1bWVudFZh
bHVlKiB2YWx1ZSA9IHN0YXRlLnBlbmRpbmdTVkdEb2N1bWVudHMoKS5nZXQocmVmZXJlbmNlRmls
dGVyKTsKICAgICAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBDYWNoZWRTVkdEb2N1bWVudCogY2FjaGVkRG9jdW1lbnQgPSB2YWx1ZS0+
bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuY3BwCmluZGV4IDBjNmY1NzcuLmYwYjViNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC02MDYsNyArNjA2LDcgQEAgRWxlbWVudCogSFRN
TEFuY2hvckVsZW1lbnQ6OnJvb3RFZGl0YWJsZUVsZW1lbnRGb3JTZWxlY3Rpb25Pbk1vdXNlRG93
bigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhc1Jvb3RFZGl0YWJsZUVsZW1lbnRGb3JTZWxlY3Rp
b25Pbk1vdXNlRG93bikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHJvb3RFZGl0YWJs
ZUVsZW1lbnRNYXAoKS5nZXQodGhpcykuZ2V0KCk7CisgICAgcmV0dXJuIHJvb3RFZGl0YWJsZUVs
ZW1lbnRNYXAoKS5nZXQodGhpcyk7CiB9CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmNsZWFy
Um9vdEVkaXRhYmxlRWxlbWVudEZvclNlbGVjdGlvbk9uTW91c2VEb3duKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCAxNzlkYjVjLi41OTg0NTcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC02MTksNyArNjE5LDcgQEAgSFRN
TEZvcm1Db250cm9sRWxlbWVudCogSFRNTEZvcm1FbGVtZW50OjplbGVtZW50Rm9yQWxpYXMoY29u
c3QgQXRvbWljU3RyaW5nJiBhbGkKIHsKICAgICBpZiAoYWxpYXMuaXNFbXB0eSgpIHx8ICFtX2Vs
ZW1lbnRBbGlhc2VzKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9lbGVtZW50QWxp
YXNlcy0+Z2V0KGFsaWFzLmltcGwoKSkuZ2V0KCk7CisgICAgcmV0dXJuIG1fZWxlbWVudEFsaWFz
ZXMtPmdldChhbGlhcy5pbXBsKCkpOwogfQogCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6YWRkRWxl
bWVudEFsaWFzKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0
cmluZyYgYWxpYXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250
ZW50RGlzdHJpYnV0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERp
c3RyaWJ1dG9yLmNwcAppbmRleCA2MjFjZDg0Li4yZGNlZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKQEAgLTE4Nyw3ICsxODcs
NyBAQCBDb250ZW50RGlzdHJpYnV0b3I6On5Db250ZW50RGlzdHJpYnV0b3IoKQogCiBJbnNlcnRp
b25Qb2ludCogQ29udGVudERpc3RyaWJ1dG9yOjpmaW5kSW5zZXJ0aW9uUG9pbnRGb3IoY29uc3Qg
Tm9kZSoga2V5KSBjb25zdAogewotICAgIHJldHVybiBtX25vZGVUb0luc2VydGlvblBvaW50Lmdl
dChrZXkpLmdldCgpOworICAgIHJldHVybiBtX25vZGVUb0luc2VydGlvblBvaW50LmdldChrZXkp
OwogfQogCiB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6cG9wdWxhdGUoTm9kZSogbm9kZSwgQ29u
dGVudERpc3RyaWJ1dGlvbiYgcG9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCA3OWNjOWQ4Li42MTgyOWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUu
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdW5zaWduZWQgQXBwbGljYXRpb25DYWNoZTo6cmVtb3Zl
UmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpCiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIEFw
cGxpY2F0aW9uQ2FjaGU6OnJlc291cmNlRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAg
IEFTU0VSVCghS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkpOwotICAgIHJldHVybiBtX3Jlc291cmNlcy5nZXQodXJsKS5nZXQoKTsKKyAgICByZXR1cm4g
bV9yZXNvdXJjZXMuZ2V0KHVybCk7CiB9ICAgIAogCiBib29sIEFwcGxpY2F0aW9uQ2FjaGU6OnJl
cXVlc3RJc0hUVFBPckhUVFBTR2V0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbi5jcHAKaW5kZXggY2RkODM1OC4uYWE0YTg3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbi5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
OjphZGRSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UKIAogQXJj
aGl2ZVJlc291cmNlKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjphcmNoaXZlUmVzb3VyY2VG
b3JVUkwoY29uc3QgS1VSTCYgdXJsKQogewotICAgIEFyY2hpdmVSZXNvdXJjZSogcmVzb3VyY2Ug
PSBtX3N1YnJlc291cmNlcy5nZXQodXJsKS5nZXQoKTsKKyAgICBBcmNoaXZlUmVzb3VyY2UqIHJl
c291cmNlID0gbV9zdWJyZXNvdXJjZXMuZ2V0KHVybCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4
IGMyZmVmMjMuLjQ2MTAxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdy
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTI2OSw3
ICsyNjksNyBAQCBTdG9yYWdlTmFtZXNwYWNlKiBQYWdlR3JvdXA6OnRyYW5zaWVudExvY2FsU3Rv
cmFnZShjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZwogICAgIGlmICghbV90cmFuc2llbnRM
b2NhbFN0b3JhZ2UuZ2V0KHRvcE9yaWdpblN0cmluZykpCiAgICAgICAgIG1fdHJhbnNpZW50TG9j
YWxTdG9yYWdlLnNldCh0b3BPcmlnaW5TdHJpbmcsIFN0b3JhZ2VOYW1lc3BhY2U6OnNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKCp0aGlzLT5wYWdlcygpLmJlZ2luKCkpKTsKIAotICAgIHJldHVybiBt
X3RyYW5zaWVudExvY2FsU3RvcmFnZS5nZXQodG9wT3JpZ2luU3RyaW5nKS5nZXQoKTsKKyAgICBy
ZXR1cm4gbV90cmFuc2llbnRMb2NhbFN0b3JhZ2UuZ2V0KHRvcE9yaWdpblN0cmluZyk7CiB9CiAK
IHZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdv
cmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYgdXJsLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKaW5kZXgg
YWVmZjBmMC4uZTdkMTgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBDb21w
b3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRpb25zKFJlbmRlck9iamVjdCogcmVuZGVyZXIs
IFJlbmRlclN0eWxlKgogICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBmcm9tU3R5bGUgPSBr
ZXlmcmFtZUFuaW0gPyBrZXlmcmFtZUFuaW0tPnVuYW5pbWF0ZWRTdHlsZSgpIDogY3VycmVudFN0
eWxlOwogCiAgICAgICAgICAgICAgICAgLy8gU2VlIGlmIHRoZXJlIGlzIGEgY3VycmVudCB0cmFu
c2l0aW9uIGZvciB0aGlzIHByb3AKLSAgICAgICAgICAgICAgICBJbXBsaWNpdEFuaW1hdGlvbiog
aW1wbEFuaW0gPSBtX3RyYW5zaXRpb25zLmdldChwcm9wKS5nZXQoKTsKKyAgICAgICAgICAgICAg
ICBJbXBsaWNpdEFuaW1hdGlvbiogaW1wbEFuaW0gPSBtX3RyYW5zaXRpb25zLmdldChwcm9wKTsK
ICAgICAgICAgICAgICAgICBib29sIGVxdWFsID0gdHJ1ZTsKIAogICAgICAgICAgICAgICAgIGlm
IChpbXBsQW5pbSkgewpAQCAtNTIxLDcgKzUyMSw3IEBAIGJvb2wgQ29tcG9zaXRlQW5pbWF0aW9u
OjpwYXVzZVRyYW5zaXRpb25BdFRpbWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgZG91YmxlIHQp
CiAgICAgaWYgKChwcm9wZXJ0eSA8IGZpcnN0Q1NTUHJvcGVydHkpIHx8IChwcm9wZXJ0eSA+PSBm
aXJzdENTU1Byb3BlcnR5ICsgbnVtQ1NTUHJvcGVydGllcykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIEltcGxpY2l0QW5pbWF0aW9uKiBpbXBsQW5pbSA9IG1fdHJhbnNpdGlvbnMuZ2V0
KHByb3BlcnR5KS5nZXQoKTsKKyAgICBJbXBsaWNpdEFuaW1hdGlvbiogaW1wbEFuaW0gPSBtX3Ry
YW5zaXRpb25zLmdldChwcm9wZXJ0eSk7CiAgICAgaWYgKCFpbXBsQW5pbSkgewogICAgICAgICAv
LyBDaGVjayB0byBzZWUgaWYgdGhpcyBwcm9wZXJ0eSBpcyBiZWluZyBhbmltYXRlZCB2aWEgYSBz
aG9ydGhhbmQuCiAgICAgICAgIC8vIFRoaXMgY29kZSBpcyBvbmx5IHVzZWQgZm9yIHRlc3Rpbmcs
IHNvIHBlcmZvcm1hbmNlIGlzIG5vdCBjcml0aWNhbCBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXgg
MjEyZTkyZS4uMjEwYjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xNzk2LDcgKzE3OTYsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTWFza0xheWVyKCkKICAgICBpZiAoTGF5ZXJNYXAq
IGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CiAgICAgICAgIExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKICAgICAgICAgZm9y
IChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsgICAgICAgICAgICAKLSAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXll
ciogbWFza0Nsb25lID0gbWFza0xheWVyQ2xvbmVNYXAgPyBtYXNrTGF5ZXJDbG9uZU1hcC0+Z2V0
KGl0LT5rZXkpLmdldCgpIDogMDsKKyAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXllciogbWFza0Ns
b25lID0gbWFza0xheWVyQ2xvbmVNYXAgPyBtYXNrTGF5ZXJDbG9uZU1hcC0+Z2V0KGl0LT5rZXkp
IDogMDsKICAgICAgICAgICAgIGl0LT52YWx1ZS0+c2V0TWFzayhtYXNrQ2xvbmUpOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggNjFjZjM5YS4uMGJiNjVhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0x
ODYsNyArMTg2LDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBLVVJMJiB1cmwpCiBCbG9iU3RvcmFnZURhdGEqIEJsb2JSZWdpc3RyeUltcGw6OmdldEJs
b2JEYXRhRnJvbVVSTChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICByZXR1cm4gbV9ibG9icy5nZXQodXJsLnN0cmluZygpKS5nZXQoKTsK
KyAgICByZXR1cm4gbV9ibG9icy5nZXQodXJsLnN0cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRl
eCAyMjIxNzI2Li43NjUwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFi
YXNlLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIFBsdWdpblBhY2thZ2UqIFBsdWdpbkRhdGFiYXNl
OjpwbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiAgICAgU3RyaW5n
IGtleSA9IG1pbWVUeXBlLmxvd2VyKCk7CiAgICAgUGx1Z2luU2V0Ojpjb25zdF9pdGVyYXRvciBl
bmQgPSBtX3BsdWdpbnMuZW5kKCk7Ci0gICAgUGx1Z2luUGFja2FnZSogcHJlZmVycmVkUGx1Z2lu
ID0gbV9wcmVmZXJyZWRQbHVnaW5zLmdldChrZXkpLmdldCgpOworICAgIFBsdWdpblBhY2thZ2Uq
IHByZWZlcnJlZFBsdWdpbiA9IG1fcHJlZmVycmVkUGx1Z2lucy5nZXQoa2V5KTsKICAgICBpZiAo
cHJlZmVycmVkUGx1Z2luCiAgICAgICAgICYmIHByZWZlcnJlZFBsdWdpbi0+aXNFbmFibGVkKCkK
ICAgICAgICAgJiYgcHJlZmVycmVkUGx1Z2luLT5taW1lVG9EZXNjcmlwdGlvbnMoKS5jb250YWlu
cyhrZXkpKSB7CkBAIC0yNDgsNyArMjQ4LDcgQEAgU3RyaW5nIFBsdWdpbkRhdGFiYXNlOjpNSU1F
VHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgY29uc3QKIAogICAgICAg
ICBmb3IgKE1JTUVUb0V4dGVuc2lvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIG1pbWVfaXQgPSAoKml0
KS0+bWltZVRvRXh0ZW5zaW9ucygpLmJlZ2luKCk7IG1pbWVfaXQgIT0gbWltZV9lbmQ7ICsrbWlt
ZV9pdCkgewogICAgICAgICAgICAgbWltZVR5cGUgPSBtaW1lX2l0LT5rZXk7Ci0gICAgICAgICAg
ICBQbHVnaW5QYWNrYWdlKiBwcmVmZXJyZWRQbHVnaW4gPSBtX3ByZWZlcnJlZFBsdWdpbnMuZ2V0
KG1pbWVUeXBlKS5nZXQoKTsKKyAgICAgICAgICAgIFBsdWdpblBhY2thZ2UqIHByZWZlcnJlZFBs
dWdpbiA9IG1fcHJlZmVycmVkUGx1Z2lucy5nZXQobWltZVR5cGUpOwogICAgICAgICAgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGV4dGVuc2lvbnMgPSBtaW1lX2l0LT52YWx1ZTsKICAgICAgICAg
ICAgIGJvb2wgZm91bmRNYXBwaW5nID0gZmFsc2U7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IDU3MmM5YTIuLmQ3MjE5OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTI5OCw3ICsyOTgsNyBA
QCBzdGF0aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqIG9iamVj
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZAogCiAgICAgaWYgKG9iamVjdC0+aGFzQ291bnRlck5v
ZGVNYXAoKSkgewogICAgICAgICBpZiAoQ291bnRlck1hcCogbm9kZU1hcCA9IGNvdW50ZXJNYXBz
KCkuZ2V0KG9iamVjdCkpIHsKLSAgICAgICAgICAgIGlmIChDb3VudGVyTm9kZSogbm9kZSA9IG5v
ZGVNYXAtPmdldChpZGVudGlmaWVyKS5nZXQoKSkKKyAgICAgICAgICAgIGlmIChDb3VudGVyTm9k
ZSogbm9kZSA9IG5vZGVNYXAtPmdldChpZGVudGlmaWVyKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZTsKICAgICAgICAgfQogICAgIH0KQEAgLTMzMyw3ICszMzMsNyBAQCBzdGF0aWMgQ291
bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRv
bWljU3RyaW5nJiBpZAogICAgICAgICBza2lwRGVzY2VuZGFudHMgPSBmYWxzZTsKICAgICAgICAg
aWYgKCFjdXJyZW50UmVuZGVyZXItPmhhc0NvdW50ZXJOb2RlTWFwKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgQ291bnRlck5vZGUqIGN1cnJlbnRDb3VudGVyID0gbWFwcy5nZXQo
Y3VycmVudFJlbmRlcmVyKS0+Z2V0KGlkZW50aWZpZXIpLmdldCgpOworICAgICAgICBDb3VudGVy
Tm9kZSogY3VycmVudENvdW50ZXIgPSBtYXBzLmdldChjdXJyZW50UmVuZGVyZXIpLT5nZXQoaWRl
bnRpZmllcik7CiAgICAgICAgIGlmICghY3VycmVudENvdW50ZXIpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgc2tpcERlc2NlbmRhbnRzID0gdHJ1ZTsKQEAgLTYyNyw3ICs2MjcsNyBA
QCB2b2lkIHNob3dDb3VudGVyUmVuZGVyZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGNvbnN0IGNoYXIqCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXAgTjol
cCBQOiVwIFBTOiVwIE5TOiVwIEM6JXBcbiIsCiAgICAgICAgICAgICBjdXJyZW50LCBjdXJyZW50
LT5ub2RlKCksIGN1cnJlbnQtPnBhcmVudCgpLCBjdXJyZW50LT5wcmV2aW91c1NpYmxpbmcoKSwK
ICAgICAgICAgICAgIGN1cnJlbnQtPm5leHRTaWJsaW5nKCksIGN1cnJlbnQtPmhhc0NvdW50ZXJO
b2RlTWFwKCkgPwotICAgICAgICAgICAgY291bnRlck5hbWUgPyBXZWJDb3JlOjpjb3VudGVyTWFw
cygpLmdldChjdXJyZW50KS0+Z2V0KGlkZW50aWZpZXIpLmdldCgpIDogKFdlYkNvcmU6OkNvdW50
ZXJOb2RlKikxIDogKFdlYkNvcmU6OkNvdW50ZXJOb2RlKikwKTsKKyAgICAgICAgICAgIGNvdW50
ZXJOYW1lID8gV2ViQ29yZTo6Y291bnRlck1hcHMoKS5nZXQoY3VycmVudCktPmdldChpZGVudGlm
aWVyKSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSop
MCk7CiAgICAgfQogICAgIGZmbHVzaChzdGRlcnIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAppbmRleCA2
ZGI0OThkLi4zMTEwMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcApAQCAtNTcsMTMgKzU3LDEzIEBAIEZp
bHRlckVmZmVjdCogU1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNT
dHJpbmcmIGlkKSBjb25zdAogICAgICAgICBpZiAobV9sYXN0RWZmZWN0KQogICAgICAgICAgICAg
cmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsKIAotICAgICAgICByZXR1cm4gbV9idWlsdGluRWZm
ZWN0cy5nZXQoU291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSgpKS5nZXQoKTsKKyAgICAgICAgcmV0
dXJuIG1fYnVpbHRpbkVmZmVjdHMuZ2V0KFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKSk7CiAg
ICAgfQogCiAgICAgaWYgKG1fYnVpbHRpbkVmZmVjdHMuY29udGFpbnMoaWQpKQotICAgICAgICBy
ZXR1cm4gbV9idWlsdGluRWZmZWN0cy5nZXQoaWQpLmdldCgpOworICAgICAgICByZXR1cm4gbV9i
dWlsdGluRWZmZWN0cy5nZXQoaWQpOwogCi0gICAgcmV0dXJuIG1fbmFtZWRFZmZlY3RzLmdldChp
ZCkuZ2V0KCk7CisgICAgcmV0dXJuIG1fbmFtZWRFZmZlY3RzLmdldChpZCk7CiB9CiAKIHZvaWQg
U1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBwcnBFZmZlY3QsIFJlbmRlck9iamVjdCogb2JqZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RQcm94eS5tbQppbmRleCA1N2Q1OThlLi5hNjc4NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94
eS5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHk6OnJl
bW92ZVBsdWdpbkluc3RhbmNlKE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eSoKIAogTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5KiBOZXRzY2FwZVBsdWdpbkhvc3RQcm94eTo6cGx1Z2luSW5z
dGFuY2UodWludDMyX3QgcGx1Z2luSUQpCiB7Ci0gICAgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5KiByZXN1bHQgPSBtX2luc3RhbmNlcy5nZXQocGx1Z2luSUQpLmdldCgpOworICAgIE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eSogcmVzdWx0ID0gbV9pbnN0YW5jZXMuZ2V0KHBsdWdpbklE
KTsKICAgICBBU1NFUlQoIXJlc3VsdCB8fCByZXN1bHQtPmhvc3RQcm94eSgpID09IHRoaXMpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXgg
ZDdhMDVkYy4uYjA0ZGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMzYx
LDcgKzM2MSw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjYW5jZWxTdHJl
YW1Mb2FkKHVpbnQzMl90IHN0cmVhbUlELCBOUFJlYXNvbiByCiAgICAgaWYgKG1fbWFudWFsU3Ry
ZWFtICYmIHN0cmVhbUlEID09IDEpCiAgICAgICAgIHN0cmVhbSA9IG1fbWFudWFsU3RyZWFtLmdl
dCgpOwogICAgIGVsc2UKLSAgICAgICAgc3RyZWFtID0gbV9zdHJlYW1zLmdldChzdHJlYW1JRCku
Z2V0KCk7CisgICAgICAgIHN0cmVhbSA9IG1fc3RyZWFtcy5nZXQoc3RyZWFtSUQpOwogICAgIAog
ICAgIGlmICghc3RyZWFtKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggM2VjMmYyYy4uMjRiNjdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCB1CiAK
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VM
b2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0
X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxv
YWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQobWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIpLmdldCgpOworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gbV9uZXR3
b3JrUmVzb3VyY2VMb2FkZXJzLmdldChtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAg
TmV0d29ya1Byb2Nlc3M6OnNoYXJlZCgpLmRvd25sb2FkTWFuYWdlcigpLmNvbnZlcnRIYW5kbGVU
b0Rvd25sb2FkKGRvd25sb2FkSUQsIGxvYWRlci0+aGFuZGxlKCksIHJlcXVlc3QsIHJlc3BvbnNl
KTsKIAogICAgIC8vIFVuYmxvY2sgdGhlIFVSTCBjb25uZWN0aW9uIG9wZXJhdGlvbiBxdWV1ZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggYjgxZWMzYS4uNjE4MzA1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgSG9zdFJlY29yZCogTmV0
d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6aG9zdEZvclVSTChjb25zdCBXZWJDb3JlOjpLVVJM
JiB1cmwsIEMKIAogICAgIG1faG9zdHMuY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIFN0cmluZyBo
b3N0TmFtZSA9IHVybC5ob3N0KCk7Ci0gICAgSG9zdFJlY29yZCogaG9zdCA9IG1faG9zdHMuZ2V0
KGhvc3ROYW1lKS5nZXQoKTsKKyAgICBIb3N0UmVjb3JkKiBob3N0ID0gbV9ob3N0cy5nZXQoaG9z
dE5hbWUpOwogICAgIGlmICghaG9zdCAmJiBjcmVhdGVIb3N0UG9saWN5ID09IENyZWF0ZUlmTm90
Rm91bmQpIHsKICAgICAgICAgUmVmUHRyPEhvc3RSZWNvcmQ+IG5ld0hvc3QgPSBIb3N0UmVjb3Jk
OjpjcmVhdGUoaG9zdE5hbWUsIG1heFJlcXVlc3RzSW5GbGlnaHRQZXJIb3N0KTsKICAgICAgICAg
aG9zdCA9IG5ld0hvc3QuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
SW1tdXRhYmxlRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZURp
Y3Rpb25hcnkuaAppbmRleCBjOTY5NjIxLi5kOGQ4NTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAg
ICAgQVBJT2JqZWN0KiBnZXQoY29uc3QgU3RyaW5nJiBrZXkpCiAgICAgewotICAgICAgICByZXR1
cm4gbV9tYXAuZ2V0KGtleSkuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX21hcC5nZXQoa2V5KTsK
ICAgICB9CiAKICAgICBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBrZXlzKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5j
cHAKaW5kZXggMGE4MGVhZC4uM2UxZjg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNDExLDcgKzQxMSw3IEBAIHZv
aWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKENvcmVJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIHVpCiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKIAog
ICAgIEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlPiA+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKLSAgICBTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdl
TmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKS5nZXQoKTsKKyAgICBTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdl
TmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlEKTsKIAogICAgIC8vIEZJWE1FOiBUaGVz
ZSBzaG91bGQgYmUgbWVzc2FnZSBjaGVja3MuCiAgICAgQVNTRVJUKHNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKTsKQEAgLTUxMSwxMCArNTExLDEwIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OnNldEFs
bG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb25JbnRlcm5hbCh1aW50NjRfCiAK
IHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VJbnRlcm5h
bCh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHVpbnQ2NF90IG5ld1N0b3JhZ2VOYW1lc3Bh
Y2VJRCkKIHsKLSAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlE
KS5nZXQoKTsKKyAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlE
KTsKICAgICBBU1NFUlQoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwogCi0gICAgU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZXMuZ2V0KG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCkuZ2V0KCk7CisgICAgU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UqIG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlID0gbV9zZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZXMuZ2V0KG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAgICAgQVNT
RVJUKG5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlKTsKIAogICAgIHNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlLT5jbG9uZVRvKCpuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk7CkBAIC01NDIsNyAr
NTQyLDcgQEAgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Zmlu
ZFN0b3JhZ2VBcmVhKENvcmVJUEM6OkNvbm5lY3Rpb24KICAgICBpZiAoIUhhc2hNYXA8c3RkOjpw
YWlyPFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiwgdWludDY0X3Q+LCBSZWZQdHI8U3RvcmFn
ZUFyZWE+ID46OmlzVmFsaWRLZXkoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5n
ZXQoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIpLmdldCgpOworICAgIHJldHVybiBtX3N0
b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIp
OwogfQogCiBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFu
YWdlcjo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggN2Y4NzM5
MC4uZjM5ZDE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0xMDEs
NyArMTAxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIFQqIHN1
cHBsZW1lbnQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX3N1cHBs
ZW1lbnRzLmdldChUOjpzdXBwbGVtZW50TmFtZSgpKS5nZXQoKSk7CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxUKj4obV9zdXBwbGVtZW50cy5nZXQoVDo6c3VwcGxlbWVudE5hbWUoKSkpOwog
ICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwZGMxMWQ3Li5kNDM4NDBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjEwLDcgKzIx
MCw3IEBAIFZlY3RvcjxXZWJQYWdlUHJveHkqPiBXZWJQcm9jZXNzUHJveHk6OnBhZ2VzKCkgY29u
c3QKIAogV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJCYWNrRm9y
d2FyZEl0ZW0odWludDY0X3QgaXRlbUlEKSBjb25zdAogewotICAgIHJldHVybiBtX2JhY2tGb3J3
YXJkTGlzdEl0ZW1NYXAuZ2V0KGl0ZW1JRCkuZ2V0KCk7CisgICAgcmV0dXJuIG1fYmFja0Zvcndh
cmRMaXN0SXRlbU1hcC5nZXQoaXRlbUlEKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJl
Z2lzdGVyTmV3V2ViQmFja0ZvcndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBp
dGVtKQpAQCAtNDYzLDcgKzQ2Myw3IEBAIFdlYkZyYW1lUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6
d2ViRnJhbWUodWludDY0X3QgZnJhbWVJRCkgY29uc3QKICAgICBpZiAoIVdlYkZyYW1lUHJveHlN
YXA6OmlzVmFsaWRLZXkoZnJhbWVJRCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IG1fZnJhbWVNYXAuZ2V0KGZyYW1lSUQpLmdldCgpOworICAgIHJldHVybiBtX2ZyYW1lTWFwLmdl
dChmcmFtZUlEKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNhbkNyZWF0ZUZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKaW5kZXggYjFlYjBmYS4uMGFlMTcyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNw
cApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpyZWdpc3RlckRv
d25sb2FkSm9iKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIEV3a1ZpZXcqIHZpCiAKIEV3a0Rvd25s
b2FkSm9iKiBEb3dubG9hZE1hbmFnZXJFZmw6OmV3a0Rvd25sb2FkSm9iKFdLRG93bmxvYWRSZWYg
d2tEb3dubG9hZCkKIHsKLSAgICByZXR1cm4gbV9kb3dubG9hZEpvYnMuZ2V0KFdLRG93bmxvYWRH
ZXRJRCh3a0Rvd25sb2FkKSkuZ2V0KCk7CisgICAgcmV0dXJuIG1fZG93bmxvYWRKb2JzLmdldChX
S0Rvd25sb2FkR2V0SUQod2tEb3dubG9hZCkpOwogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlckVm
bDo6dW5yZWdpc3RlckRvd25sb2FkSm9iKFdLRG93bmxvYWRSZWYgd2tEb3dubG9hZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaAppbmRleCA2ODZjMTVmLi5mMTg3NmY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTZXJpYWxMb2FkaW5nRW5hYmxlZChib29sKSBPVkVSUklERTsKIAotICAgIFdlYlJlc291cmNl
TG9hZGVyKiB3ZWJSZXNvdXJjZUxvYWRlckZvcklkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX3dlYlJlc291cmNlTG9hZGVycy5nZXQo
aWRlbnRpZmllcikuZ2V0KCk7IH0KKyAgICBXZWJSZXNvdXJjZUxvYWRlciogd2ViUmVzb3VyY2VM
b2FkZXJGb3JJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikgY29u
c3QgeyByZXR1cm4gbV93ZWJSZXNvdXJjZUxvYWRlcnMuZ2V0KGlkZW50aWZpZXIpOyB9CiAKICAg
ICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cAppbmRleCBjOGM0MzliLi4zOTMwN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAg
LTUyOSw3ICs1MjksNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpzaG91bGRMb2FkU3JjVVJMKCkK
IAogTmV0c2NhcGVQbHVnaW5TdHJlYW0qIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1Gcm9tSUQodWlu
dDY0X3Qgc3RyZWFtSUQpCiB7Ci0gICAgcmV0dXJuIG1fc3RyZWFtcy5nZXQoc3RyZWFtSUQpLmdl
dCgpOworICAgIHJldHVybiBtX3N0cmVhbXMuZ2V0KHN0cmVhbUlEKTsKIH0KIAogdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6c3RvcEFsbFN0cmVhbXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyLmNwcAppbmRleCAwZTlhNmE0Li45YThkYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Q
cm9jZXNzCiB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vz
c0NyYXNoZWQoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCB1aW50MzJfdCBvcGFxdWVQbHVnaW5U
eXBlKQogewogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BhdGhzQW5kQ29ubmVjdGlvbnNNdXRl
eCk7Ci0gICAgQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1fcGF0aHNBbmRDb25u
ZWN0aW9ucy5nZXQoc3RkOjptYWtlX3BhaXIocGx1Z2luUGF0aCwgc3RhdGljX2Nhc3Q8UGx1Z2lu
UHJvY2Vzczo6VHlwZT4ob3BhcXVlUGx1Z2luVHlwZSkpKS5nZXQoKTsKKyAgICBDb3JlSVBDOjpD
b25uZWN0aW9uKiBjb25uZWN0aW9uID0gbV9wYXRoc0FuZENvbm5lY3Rpb25zLmdldChzdGQ6Om1h
a2VfcGFpcihwbHVnaW5QYXRoLCBzdGF0aWNfY2FzdDxQbHVnaW5Qcm9jZXNzOjpUeXBlPihvcGFx
dWVQbHVnaW5UeXBlKSkpOwogCiAgICAgLy8gSXQncyBPSyBmb3IgY29ubmVjdGlvbiB0byBiZSBu
dWxsIGhlcmU7IGl0IHdpbGwgaGFwcGVuIGlmIHRoaXMgd2ViIHByb2Nlc3MgZG9lc24ndCBrbm93
CiAgICAgLy8gYW55dGhpbmcgYWJvdXQgdGhlIHBsdWctaW4gcHJvY2Vzcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAwMzlkNjEx
Li44NzJkNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCkBAIC0xMjkxLDcgKzEyOTEsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmNhbmNl
bFN0cmVhbUxvYWQodWludDY0X3Qgc3RyZWFtSUQpCiB7CiAgICAgLy8gS2VlcCBhIHJlZmVyZW5j
ZSB0byB0aGUgc3RyZWFtLiBTdHJlYW06OmNhbmNlbCBtaWdodCByZW1vdmUgdGhlIHN0cmVhbSBm
cm9tIHRoZSBtYXAsIGFuZCB0aHVzCiAgICAgLy8gcmVsZWFzaW5nIGl0cyBsYXN0IHJlZmVyZW5j
ZS4KLSAgICBSZWZQdHI8U3RyZWFtPiBzdHJlYW0gPSBtX3N0cmVhbXMuZ2V0KHN0cmVhbUlEKS5n
ZXQoKTsKKyAgICBSZWZQdHI8U3RyZWFtPiBzdHJlYW0gPSBtX3N0cmVhbXMuZ2V0KHN0cmVhbUlE
KTsKICAgICBpZiAoIXN0cmVhbSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IGYx
OTk3MGUuLmQ3OWMyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRXZlbnRE
aXNwYXRjaGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVu
dCYgd2hlZWxFdmVuCiB7CiAjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9zY3JvbGxpbmdUcmVlc011dGV4KTsKLSAgICBpZiAoU2Nyb2xsaW5n
VHJlZSogc2Nyb2xsaW5nVHJlZSA9IG1fc2Nyb2xsaW5nVHJlZXMuZ2V0KHBhZ2VJRCkuZ2V0KCkp
IHsKKyAgICBpZiAoU2Nyb2xsaW5nVHJlZSogc2Nyb2xsaW5nVHJlZSA9IG1fc2Nyb2xsaW5nVHJl
ZXMuZ2V0KHBhZ2VJRCkpIHsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHBsYXRmb3JtV2hl
ZWxFdmVudCA9IHBsYXRmb3JtKHdoZWVsRXZlbnQpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJdCdz
IHByZXR0eSBob3JyaWJsZSB0aGF0IHdlJ3JlIHVwZGF0aW5nIHRoZSBiYWNrL2ZvcndhcmQgc3Rh
dGUgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IGJlODJhMTkuLjNhMTNkMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2
b2lkIFdLMk5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZChIaXN0b3J5SXRlbSogaXRlbSkKIAogSGlz
dG9yeUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtRm9ySUQodWludDY0X3QgaXRl
bUlEKQogewotICAgIHJldHVybiBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5nZXQoaXRlbUlEKS5nZXQo
KTsKKyAgICByZXR1cm4gaWRUb0hpc3RvcnlJdGVtTWFwKCkuZ2V0KGl0ZW1JRCk7CiB9CiAKIHVp
bnQ2NF90IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppZEZvckl0ZW0oSGlzdG9yeUl0ZW0qIGl0
ZW0pCkBAIC0xODYsNyArMTg2LDcgQEAgSGlzdG9yeUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5OjppdGVtQXRJbmRleChpbnQgaXRlbUluZGV4KQogICAgIGlmICghaXRlbUlEKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIHJldHVybiBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5nZXQoaXRlbUlE
KS5nZXQoKTsKKyAgICByZXR1cm4gaWRUb0hpc3RvcnlJdGVtTWFwKCkuZ2V0KGl0ZW1JRCk7CiB9
CiAKIGludCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xpc3RDb3VudCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOWZiOGNhZC4u
MWUxZTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMjcwNSw3ICsyNzA1LDcgQEAgdm9pZCBXZWJQYWdlOjptYXlQZXJmb3JtVXBsb2Fk
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkKIAogV2ViVW5kb1N0ZXAqIFdlYlBhZ2U6OndlYlVuZG9T
dGVwKHVpbnQ2NF90IHN0ZXBJRCkKIHsKLSAgICByZXR1cm4gbV91bmRvU3RlcE1hcC5nZXQoc3Rl
cElEKS5nZXQoKTsKKyAgICByZXR1cm4gbV91bmRvU3RlcE1hcC5nZXQoc3RlcElEKTsKIH0KIAog
dm9pZCBXZWJQYWdlOjphZGRXZWJVbmRvU3RlcCh1aW50NjRfdCBzdGVwSUQsIFdlYlVuZG9TdGVw
KiBlbnRyeSkKQEAgLTM5MzIsNyArMzkzMiw3IEBAIHZvaWQgV2ViUGFnZTo6YWRkVGV4dENoZWNr
aW5nUmVxdWVzdCh1aW50NjRfdCByZXF1ZXN0SUQsIFBhc3NSZWZQdHI8VGV4dENoZWNraW5nCiAK
IHZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdCkKIHsKLSAgICBUZXh0Q2hl
Y2tpbmdSZXF1ZXN0KiByZXF1ZXN0ID0gbV9wZW5kaW5nVGV4dENoZWNraW5nUmVxdWVzdE1hcC5n
ZXQocmVxdWVzdElEKS5nZXQoKTsKKyAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0KiByZXF1ZXN0ID0g
bV9wZW5kaW5nVGV4dENoZWNraW5nUmVxdWVzdE1hcC5nZXQocmVxdWVzdElEKTsKICAgICBpZiAo
IXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzk0Miw3ICszOTQyLDcgQEAgdm9pZCBX
ZWJQYWdlOjpkaWRGaW5pc2hDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBW
ZWN0b3I8VGV4dENoZWNraW4KIAogdm9pZCBXZWJQYWdlOjpkaWRDYW5jZWxDaGVja2luZ1RleHQo
dWludDY0X3QgcmVxdWVzdElEKQogewotICAgIFRleHRDaGVja2luZ1JlcXVlc3QqIHJlcXVlc3Qg
PSBtX3BlbmRpbmdUZXh0Q2hlY2tpbmdSZXF1ZXN0TWFwLmdldChyZXF1ZXN0SUQpLmdldCgpOwor
ICAgIFRleHRDaGVja2luZ1JlcXVlc3QqIHJlcXVlc3QgPSBtX3BlbmRpbmdUZXh0Q2hlY2tpbmdS
ZXF1ZXN0TWFwLmdldChyZXF1ZXN0SUQpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAxNTYy
NmIyLi42NjQxMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTU0Myw3ICs1NDMsNyBAQCBXZWJQYWdlKiBXZWJQcm9jZXNzOjpmb2N1c2VkV2ViUGFnZSgp
IGNvbnN0CiAgICAgCiBXZWJQYWdlKiBXZWJQcm9jZXNzOjp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJ
RCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wYWdlTWFwLmdldChwYWdlSUQpLmdldCgpOworICAg
IHJldHVybiBtX3BhZ2VNYXAuZ2V0KHBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6Y3Jl
YXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCkBAIC02OTQsNyArNjk0LDcgQEAgV2ViUGFnZUdyb3VwUHJveHkqIFdl
YlByb2Nlc3M6OndlYlBhZ2VHcm91cChQYWdlR3JvdXAqIHBhZ2VHcm91cCkKIAogV2ViUGFnZUdy
b3VwUHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91cCh1aW50NjRfdCBwYWdlR3JvdXBJRCkK
IHsKLSAgICByZXR1cm4gbV9wYWdlR3JvdXBNYXAuZ2V0KHBhZ2VHcm91cElEKS5nZXQoKTsKKyAg
ICByZXR1cm4gbV9wYWdlR3JvdXBNYXAuZ2V0KHBhZ2VHcm91cElEKTsKIH0KIAogV2ViUGFnZUdy
b3VwUHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91cChjb25zdCBXZWJQYWdlR3JvdXBEYXRh
JiBwYWdlR3JvdXBEYXRhKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200724</attachid>
            <date>2013-05-06 11:18:17 -0700</date>
            <delta_ts>2013-05-07 00:22:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug115646</filename>
            <type>text/plain</type>
            <size>38233</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDQwMjE5YjJhNzNiOWJiYmZlNTVlNzAwN2M1YTUwZDQ0NTg3Nzg2ZmMKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
TW9uIE1heSA2IDE4OjAyOjE2IDIwMTMgKzAzMDAKCiAgICBidWcxMTU2NDYKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwppbmRleCBhN2NlZDZjLi44Nzg5MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wNS0wNiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlr
aGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KKworICAgICAgICBIYXNoVHJhaXRzPFJlZlB0cjxQ
PiA+OjpQZWVrVHlwZSBzaG91bGQgYmUgcmF3IHBvaW50ZXIgZm9yIGJldHRlciBwZXJmb3JtYW5j
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NjQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oOgorICAgICAgICAoSlNDOjpTdGF0aWNQ
cm9wZXJ0eUFuYWx5emVyOjpwdXRCeUlkKToKKyAgICAgICAgICAgIFVwZGF0ZWQgYWNjb3JkaW5n
bHkgdG8gbmV3IEhhc2hNYXA8Li4sIFJlZlB0cj46OmdldCgpIHNlbWFudGljcy4KKwogMjAxMy0w
NS0wNiAgR2Fib3IgUmFwY3NhbnlpICA8cmdhYm9yQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSlND
IEFSTSB0cmFkaXRpb25hbCBmYWlsaW5nIG9uIE9jdGFuZSBOYXZpZXJTdG9rZXMgdGVzdApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0
eUFuYWx5emVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1By
b3BlcnR5QW5hbHl6ZXIuaAppbmRleCBjMTI0NmI0Li5kZDdmMGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5h
bHl6ZXIuaApAQCAtNzgsNyArNzgsNyBAQCBpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5
emVyOjpuZXdPYmplY3QoaW50IGRzdCwgdW5zaWduZWQgb2Zmc2V0T2ZJbmxpbmVDYQogCiBpbmxp
bmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpwdXRCeUlkKGludCBkc3QsIHVuc2lnbmVk
IHByb3BlcnR5SW5kZXgpCiB7Ci0gICAgU3RhdGljUHJvcGVydHlBbmFseXNpcyogYW5hbHlzaXMg
PSBtX2FuYWx5c2VzLmdldChkc3QpLmdldCgpOworICAgIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMq
IGFuYWx5c2lzID0gbV9hbmFseXNlcy5nZXQoZHN0KTsKICAgICBpZiAoIWFuYWx5c2lzKQogICAg
ICAgICByZXR1cm47CiAgICAgYW5hbHlzaXMtPmFkZFByb3BlcnR5SW5kZXgocHJvcGVydHlJbmRl
eCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGJlYzE1Y2EuLjY5NDNhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTMtMDUt
MDYgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAK
KyAgICAgICAgSGFzaFRyYWl0czxSZWZQdHI8UD4gPjo6UGVla1R5cGUgc2hvdWxkIGJlIHJhdyBw
b2ludGVyIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEhhc2hUcmFpdHM8UmVmUHRyPFA+ID46OlBlZWtUeXBlIHNo
b3VsZCBiZSByYXcgcG9pbnRlciBzbyB0aGF0IHdlCisgICAgICAgIGNhbiBvYnZpYXRlIG11bHRp
cGxlIFJlZlB0ciBjb3B5aW5nIHdoZW4gaW52b2tpbmcgSGFzaE1hcDwuLiwgUmVmUHRyPjo6Z2V0
KCkKKyAgICAgICAgbWV0aG9kLgorCisgICAgICAgICogd3RmL0hhc2hUcmFpdHMuaDoKKworMjAx
My0wNS0wNiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNv
bT4KKwogICAgICAgICBDaGFuZ2UgSGFzaFRyYWl0czxSZWZQdHI8UD4gPjo6UGFzc091dFR5cGUg
dG8gUGFzc1JlZlB0ciBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU0MTAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvSGFzaFRyYWl0cy5oIGIvU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCmluZGV4
IGZlNGMxMmYuLjJiZTMzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRzLmgKQEAgLTE0Nyw4ICsxNDcsOCBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UD4gcGFzc091dChSZWZQ
dHI8UD4mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5yZWxlYXNlKCk7IH0KICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UD4gcGFzc091dChQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KIAotICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIGNoYW5naW5nIFBlZWtUeXBlIHRvIGEg
cmF3IHBvaW50ZXIgZm9yIGJldHRlciBwZXJmb3JtYW5jZSwKLSAgICAgICAgLy8gYnV0IHRoZW4g
Y2FsbGVycyB3b24ndCBuZWVkIHRvIGNhbGwgZ2V0OyBkb2luZyBzbyB3aWxsIHJlcXVpcmUgdXBk
YXRpbmcgbWFueSBjYWxsIHNpdGVzLgorICAgICAgICB0eXBlZGVmIFAqIFBlZWtUeXBlOworICAg
ICAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBSZWZQdHI8UD4mIHZhbHVlKSB7IHJldHVy
biB2YWx1ZS5nZXQoKTsgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJh
aXRzPFN0cmluZz4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U3RyaW5nPiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZDZhODE5Mi4uN2I1OTExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTA1
LTA2ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgor
CisgICAgICAgIEhhc2hUcmFpdHM8UmVmUHRyPFA+ID46OlBlZWtUeXBlIHNob3VsZCBiZSByYXcg
cG9pbnRlciBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU2NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIG5ldyBmdW5jdGlvbmFsaXR5
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpyZW1vdmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
OgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6b2JqZWN0RnJvbUFYSUQpOgorICAg
ICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmdldEltYWdlKToKKyAgICAgICAgKiBjc3MvSW5zcGVj
dG9yQ1NTT01XcmFwcGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NPTVdy
YXBwZXJzOjpnZXRXcmFwcGVyRm9yUnVsZUluU2hlZXRzKToKKyAgICAgICAgKiBjc3MvU3R5bGVS
ZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGlu
Z1NWR0RvY3VtZW50cyk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cm9vdEVkaXRhYmxlRWxlbWVudEZv
clNlbGVjdGlvbk9uTW91c2VEb3duKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmVsZW1lbnRGb3JBbGlhcyk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZmluZEluc2VydGlvblBvaW50Rm9yKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlOjpyZXNvdXJjZUZvclVSTCk6CisgICAgICAgICogbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjphcmNoaXZlUmVzb3VyY2VGb3JVUkwpOgor
ICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91
cDo6dHJhbnNpZW50TG9jYWxTdG9yYWdlKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Db21w
b3NpdGVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9u
Ojp1cGRhdGVUcmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRp
b246OnBhdXNlVHJhbnNpdGlvbkF0VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6dXBkYXRlTWFza0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6Z2V0Qmxv
YkRhdGFGcm9tVVJMKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5Gb3JNSU1FVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6TUlNRVR5cGVGb3JFeHRlbnNpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1h
a2VDb3VudGVyTm9kZSk6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkKToKKyAgICAgICAgICAg
IFVwZGF0ZWQgYWNjb3JkaW5nbHkgdG8gbmV3IEhhc2hNYXA8Li4sIFJlZlB0cj46OmdldCgpIHNl
bWFudGljcy4KKwogMjAxMy0wNS0wNiAgVsOtY3RvciBNYW51ZWwgSsOhcXVleiBMZWFsICA8dmph
cXVlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFt0ZXhtYXBdIGRyYXcgY29udGVudCBpZiBncmFw
aGljcyBsYXllciBkaXNwbGF5cyBhIHZpZGVvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCA2ODZjYWI5Li5jYWU1OGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE5NSw3ICsx
OTUsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXQoV2lkZ2V0KiB3
aWRnZXQpCiAgICAgaWYgKCFheElEKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICByZXR1
cm4gbV9vYmplY3RzLmdldChheElEKS5nZXQoKTsgICAgCisgICAgcmV0dXJuIG1fb2JqZWN0cy5n
ZXQoYXhJRCk7ICAgIAogfQogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNo
ZTo6Z2V0KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkBAIC0yMDgsNyArMjA4LDcgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KFJlbmRlck9iamVjdCogcmVuZGVyZXIp
CiAgICAgaWYgKCFheElEKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtX29iamVj
dHMuZ2V0KGF4SUQpLmdldCgpOyAgICAKKyAgICByZXR1cm4gbV9vYmplY3RzLmdldChheElEKTsg
ICAgCiB9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldChOb2RlKiBu
b2RlKQpAQCAtMjMxLDEyICsyMzEsMTIgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RD
YWNoZTo6Z2V0KE5vZGUqIG5vZGUpCiAgICAgfQogCiAgICAgaWYgKHJlbmRlcklEKQotICAgICAg
ICByZXR1cm4gbV9vYmplY3RzLmdldChyZW5kZXJJRCkuZ2V0KCk7CisgICAgICAgIHJldHVybiBt
X29iamVjdHMuZ2V0KHJlbmRlcklEKTsKIAogICAgIGlmICghbm9kZUlEKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiBtX29iamVjdHMuZ2V0KG5vZGVJRCkuZ2V0KCk7CisgICAgcmV0
dXJuIG1fb2JqZWN0cy5nZXQobm9kZUlEKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgcHJvYmFibHkg
YmVsb25ncyBvbiBOb2RlLgpAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
cmVtb3ZlKEFYSUQgYXhJRCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIGZpcnN0IGZl
dGNoIG9iamVjdCB0byBvcGVyYXRlIHNvbWUgY2xlYW51cCBmdW5jdGlvbnMgb24gaXQgCi0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gbV9vYmplY3RzLmdldChheElEKS5nZXQoKTsKKyAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBtX29iamVjdHMuZ2V0KGF4SUQpOwogICAgIGlm
ICghb2JqKQogICAgICAgICByZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDVjNTU5OGQuLjQ4MTE4NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xNTAsNyArMTUwLDcg
QEAgcHVibGljOgogICAgIGJvb2wgbm9kZUlzVGV4dENvbnRyb2woY29uc3QgTm9kZSopOwogCiAg
ICAgQVhJRCBwbGF0Zm9ybUdlbmVyYXRlQVhJRCgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iamVjdEZyb21BWElEKEFYSUQgaWQpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0cy5n
ZXQoaWQpLmdldCgpOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0RnJvbUFYSUQo
QVhJRCBpZCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RzLmdldChpZCk7IH0KIAogICAgIC8vIFRl
eHQgbWFya2VyIHV0aWxpdGllcy4KICAgICB2b2lkIHRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBv
c2l0aW9uKFRleHRNYXJrZXJEYXRhJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggOTFmNjY0ZC4u
MTY3NGM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpn
ZXRJbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgLy8gTG9vayB1cCB0aGUgaW1hZ2UgaW4gb3VyIGNhY2hlLgotICAg
IHJldHVybiBtX2ltYWdlcy5nZXQoc2l6ZSkuZ2V0KCk7CisgICAgcmV0dXJuIG1faW1hZ2VzLmdl
dChzaXplKTsKIH0KIAogdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpwdXRJbWFnZShjb25z
dCBJbnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAppbmRleCA2Y2I4ZmYxLi5hMzk2ZmIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCkBA
IC0xMjUsNyArMTI1LDcgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpn
ZXRXcmFwcGVyRm9yUnVsZUluU2hlZXRzKFN0eWxlUnVsZSogcnVsZSwKIAogICAgICAgICBjb2xs
ZWN0RnJvbURvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24oc3R5bGVTaGVldENvbGxlY3Rpb24p
OwogICAgIH0KLSAgICByZXR1cm4gbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5nZXQocnVs
ZSkuZ2V0KCk7CisgICAgcmV0dXJuIG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuZ2V0KHJ1
bGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKaW5kZXggZDMyYTBhOC4uYTY1ZDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcApAQCAtMzU3Niw3ICszNTc2LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpsb2Fk
UGVuZGluZ1NWR0RvY3VtZW50cygpCiAgICAgICAgIGlmIChmaWx0ZXJPcGVyYXRpb24tPmdldE9w
ZXJhdGlvblR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkgewogICAgICAgICAg
ICAgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKiByZWZlcmVuY2VGaWx0ZXIgPSBzdGF0aWNfY2Fz
dDxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24uZ2V0KCkpOwogCi0g
ICAgICAgICAgICBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlKiB2YWx1ZSA9IHN0YXRlLnBlbmRp
bmdTVkdEb2N1bWVudHMoKS5nZXQocmVmZXJlbmNlRmlsdGVyKS5nZXQoKTsKKyAgICAgICAgICAg
IFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUqIHZhbHVlID0gc3RhdGUucGVuZGluZ1NWR0RvY3Vt
ZW50cygpLmdldChyZWZlcmVuY2VGaWx0ZXIpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIENhY2hlZFNWR0RvY3VtZW50KiBj
YWNoZWREb2N1bWVudCA9IHZhbHVlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMGM2ZjU3Ny4uZjBiNWI1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTYwNiw3
ICs2MDYsNyBAQCBFbGVtZW50KiBIVE1MQW5jaG9yRWxlbWVudDo6cm9vdEVkaXRhYmxlRWxlbWVu
dEZvclNlbGVjdGlvbk9uTW91c2VEb3duKCkgY29uc3QKIHsKICAgICBpZiAoIW1faGFzUm9vdEVk
aXRhYmxlRWxlbWVudEZvclNlbGVjdGlvbk9uTW91c2VEb3duKQogICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gcm9vdEVkaXRhYmxlRWxlbWVudE1hcCgpLmdldCh0aGlzKS5nZXQoKTsKKyAg
ICByZXR1cm4gcm9vdEVkaXRhYmxlRWxlbWVudE1hcCgpLmdldCh0aGlzKTsKIH0KIAogdm9pZCBI
VE1MQW5jaG9yRWxlbWVudDo6Y2xlYXJSb290RWRpdGFibGVFbGVtZW50Rm9yU2VsZWN0aW9uT25N
b3VzZURvd24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDE3
OWRiNWMuLjU5ODQ1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
QEAgLTYxOSw3ICs2MTksNyBAQCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBIVE1MRm9ybUVsZW1l
bnQ6OmVsZW1lbnRGb3JBbGlhcyhjb25zdCBBdG9taWNTdHJpbmcmIGFsaQogewogICAgIGlmIChh
bGlhcy5pc0VtcHR5KCkgfHwgIW1fZWxlbWVudEFsaWFzZXMpCiAgICAgICAgIHJldHVybiAwOwot
ICAgIHJldHVybiBtX2VsZW1lbnRBbGlhc2VzLT5nZXQoYWxpYXMuaW1wbCgpKS5nZXQoKTsKKyAg
ICByZXR1cm4gbV9lbGVtZW50QWxpYXNlcy0+Z2V0KGFsaWFzLmltcGwoKSk7CiB9CiAKIHZvaWQg
SFRNTEZvcm1FbGVtZW50OjphZGRFbGVtZW50QWxpYXMoSFRNTEZvcm1Db250cm9sRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBhbGlhcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCmluZGV4IDYyMWNkODQuLjJkY2Vm
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmli
dXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIENvbnRlbnREaXN0cmlidXRvcjo6fkNvbnRlbnRE
aXN0cmlidXRvcigpCiAKIEluc2VydGlvblBvaW50KiBDb250ZW50RGlzdHJpYnV0b3I6OmZpbmRJ
bnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
bm9kZVRvSW5zZXJ0aW9uUG9pbnQuZ2V0KGtleSkuZ2V0KCk7CisgICAgcmV0dXJuIG1fbm9kZVRv
SW5zZXJ0aW9uUG9pbnQuZ2V0KGtleSk7CiB9CiAKIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpw
b3B1bGF0ZShOb2RlKiBub2RlLCBDb250ZW50RGlzdHJpYnV0aW9uJiBwb29sKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4
IDc5Y2M5ZDguLjYxODI5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB1bnNpZ25lZCBB
cHBsaWNhdGlvbkNhY2hlOjpyZW1vdmVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCkKIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSogQXBwbGljYXRpb25DYWNoZTo6cmVzb3VyY2VGb3JVUkwoY29u
c3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgQVNTRVJUKCFLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJs
KS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2VzLmdldCh1
cmwpLmdldCgpOworICAgIHJldHVybiBtX3Jlc291cmNlcy5nZXQodXJsKTsKIH0gICAgCiAKIGJv
b2wgQXBwbGljYXRpb25DYWNoZTo6cmVxdWVzdElzSFRUUE9ySFRUUFNHZXQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcAppbmRleCBjZGQ4MzU4Li5h
YTRhODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEFy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb246OmFkZFJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiByZXNvdXJjZQogCiBBcmNoaXZlUmVzb3VyY2UqIEFyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb246OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgQXJj
aGl2ZVJlc291cmNlKiByZXNvdXJjZSA9IG1fc3VicmVzb3VyY2VzLmdldCh1cmwpLmdldCgpOwor
ICAgIEFyY2hpdmVSZXNvdXJjZSogcmVzb3VyY2UgPSBtX3N1YnJlc291cmNlcy5nZXQodXJsKTsK
ICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VHcm91cC5jcHAKaW5kZXggYzJmZWYyMy4uNDYxMDFhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUdyb3VwLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIFN0b3JhZ2VOYW1lc3BhY2UqIFBhZ2VH
cm91cDo6dHJhbnNpZW50TG9jYWxTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmln
CiAgICAgaWYgKCFtX3RyYW5zaWVudExvY2FsU3RvcmFnZS5nZXQodG9wT3JpZ2luU3RyaW5nKSkK
ICAgICAgICAgbV90cmFuc2llbnRMb2NhbFN0b3JhZ2Uuc2V0KHRvcE9yaWdpblN0cmluZywgU3Rv
cmFnZU5hbWVzcGFjZTo6c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoKnRoaXMtPnBhZ2VzKCkuYmVn
aW4oKSkpOwogCi0gICAgcmV0dXJuIG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlLmdldCh0b3BPcmln
aW5TdHJpbmcpLmdldCgpOworICAgIHJldHVybiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZS5nZXQo
dG9wT3JpZ2luU3RyaW5nKTsKIH0KIAogdm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHRUb1dv
cmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBL
VVJMJiB1cmwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21w
b3NpdGVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9z
aXRlQW5pbWF0aW9uLmNwcAppbmRleCBhZWZmMGYwLi5lN2QxODM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKQEAgLTEy
OSw3ICsxMjksNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyU3R5bGUqCiAgICAgICAgICAgICAgICAgUmVu
ZGVyU3R5bGUqIGZyb21TdHlsZSA9IGtleWZyYW1lQW5pbSA/IGtleWZyYW1lQW5pbS0+dW5hbmlt
YXRlZFN0eWxlKCkgOiBjdXJyZW50U3R5bGU7CiAKICAgICAgICAgICAgICAgICAvLyBTZWUgaWYg
dGhlcmUgaXMgYSBjdXJyZW50IHRyYW5zaXRpb24gZm9yIHRoaXMgcHJvcAotICAgICAgICAgICAg
ICAgIEltcGxpY2l0QW5pbWF0aW9uKiBpbXBsQW5pbSA9IG1fdHJhbnNpdGlvbnMuZ2V0KHByb3Ap
LmdldCgpOworICAgICAgICAgICAgICAgIEltcGxpY2l0QW5pbWF0aW9uKiBpbXBsQW5pbSA9IG1f
dHJhbnNpdGlvbnMuZ2V0KHByb3ApOwogICAgICAgICAgICAgICAgIGJvb2wgZXF1YWwgPSB0cnVl
OwogCiAgICAgICAgICAgICAgICAgaWYgKGltcGxBbmltKSB7CkBAIC01MjEsNyArNTIxLDcgQEAg
Ym9vbCBDb21wb3NpdGVBbmltYXRpb246OnBhdXNlVHJhbnNpdGlvbkF0VGltZShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5LCBkb3VibGUgdCkKICAgICBpZiAoKHByb3BlcnR5IDwgZmlyc3RDU1NQcm9w
ZXJ0eSkgfHwgKHByb3BlcnR5ID49IGZpcnN0Q1NTUHJvcGVydHkgKyBudW1DU1NQcm9wZXJ0aWVz
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW1wbGljaXRBbmltYXRpb24qIGltcGxB
bmltID0gbV90cmFuc2l0aW9ucy5nZXQocHJvcGVydHkpLmdldCgpOworICAgIEltcGxpY2l0QW5p
bWF0aW9uKiBpbXBsQW5pbSA9IG1fdHJhbnNpdGlvbnMuZ2V0KHByb3BlcnR5KTsKICAgICBpZiAo
IWltcGxBbmltKSB7CiAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIHByb3BlcnR5IGlz
IGJlaW5nIGFuaW1hdGVkIHZpYSBhIHNob3J0aGFuZC4KICAgICAgICAgLy8gVGhpcyBjb2RlIGlz
IG9ubHkgdXNlZCBmb3IgdGVzdGluZywgc28gcGVyZm9ybWFuY2UgaXMgbm90IGNyaXRpY2FsIGhl
cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcAppbmRleCAyMTJlOTJlLi4yMTBiODFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
QEAgLTE3OTYsNyArMTc5Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVNYXNrTGF5
ZXIoKQogICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0
KCkpIHsKICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVN
YXAtPmVuZCgpOwogICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxh
eWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeyAgICAgICAgICAgIAotICAg
ICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBtYXNrQ2xvbmUgPSBtYXNrTGF5ZXJDbG9uZU1hcCA/
IG1hc2tMYXllckNsb25lTWFwLT5nZXQoaXQtPmtleSkuZ2V0KCkgOiAwOworICAgICAgICAgICAg
UGxhdGZvcm1DQUxheWVyKiBtYXNrQ2xvbmUgPSBtYXNrTGF5ZXJDbG9uZU1hcCA/IG1hc2tMYXll
ckNsb25lTWFwLT5nZXQoaXQtPmtleSkgOiAwOwogICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRN
YXNrKG1hc2tDbG9uZSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCA2MWNmMzlhLi4w
YmI2NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIEJsb2JSZWdpc3RyeUlt
cGw6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCkKIEJsb2JTdG9yYWdlRGF0YSog
QmxvYlJlZ2lzdHJ5SW1wbDo6Z2V0QmxvYkRhdGFGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCkgY29u
c3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHJldHVybiBtX2Jsb2JzLmdl
dCh1cmwuc3RyaW5nKCkpLmdldCgpOworICAgIHJldHVybiBtX2Jsb2JzLmdldCh1cmwuc3RyaW5n
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDIyMjE3MjYuLjc2NTBiNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgUGx1Z2lu
UGFja2FnZSogUGx1Z2luRGF0YWJhc2U6OnBsdWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiAKICAgICBTdHJpbmcga2V5ID0gbWltZVR5cGUubG93ZXIoKTsKICAgICBQbHVn
aW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGx1Z2lucy5lbmQoKTsKLSAgICBQbHVnaW5Q
YWNrYWdlKiBwcmVmZXJyZWRQbHVnaW4gPSBtX3ByZWZlcnJlZFBsdWdpbnMuZ2V0KGtleSkuZ2V0
KCk7CisgICAgUGx1Z2luUGFja2FnZSogcHJlZmVycmVkUGx1Z2luID0gbV9wcmVmZXJyZWRQbHVn
aW5zLmdldChrZXkpOwogICAgIGlmIChwcmVmZXJyZWRQbHVnaW4KICAgICAgICAgJiYgcHJlZmVy
cmVkUGx1Z2luLT5pc0VuYWJsZWQoKQogICAgICAgICAmJiBwcmVmZXJyZWRQbHVnaW4tPm1pbWVU
b0Rlc2NyaXB0aW9ucygpLmNvbnRhaW5zKGtleSkpIHsKQEAgLTI0OCw3ICsyNDgsNyBAQCBTdHJp
bmcgUGx1Z2luRGF0YWJhc2U6Ok1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uKSBjb25zdAogCiAgICAgICAgIGZvciAoTUlNRVRvRXh0ZW5zaW9uc01hcDo6Y29uc3Rf
aXRlcmF0b3IgbWltZV9pdCA9ICgqaXQpLT5taW1lVG9FeHRlbnNpb25zKCkuYmVnaW4oKTsgbWlt
ZV9pdCAhPSBtaW1lX2VuZDsgKyttaW1lX2l0KSB7CiAgICAgICAgICAgICBtaW1lVHlwZSA9IG1p
bWVfaXQtPmtleTsKLSAgICAgICAgICAgIFBsdWdpblBhY2thZ2UqIHByZWZlcnJlZFBsdWdpbiA9
IG1fcHJlZmVycmVkUGx1Z2lucy5nZXQobWltZVR5cGUpLmdldCgpOworICAgICAgICAgICAgUGx1
Z2luUGFja2FnZSogcHJlZmVycmVkUGx1Z2luID0gbV9wcmVmZXJyZWRQbHVnaW5zLmdldChtaW1l
VHlwZSk7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9ucyA9IG1p
bWVfaXQtPnZhbHVlOwogICAgICAgICAgICAgYm9vbCBmb3VuZE1hcHBpbmcgPSBmYWxzZTsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgaSsr
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggNTcy
YzlhMi4uZDcyMTk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcApAQCAtMjk4LDcgKzI5OCw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJO
b2RlKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkCiAKICAgICBp
ZiAob2JqZWN0LT5oYXNDb3VudGVyTm9kZU1hcCgpKSB7CiAgICAgICAgIGlmIChDb3VudGVyTWFw
KiBub2RlTWFwID0gY291bnRlck1hcHMoKS5nZXQob2JqZWN0KSkgewotICAgICAgICAgICAgaWYg
KENvdW50ZXJOb2RlKiBub2RlID0gbm9kZU1hcC0+Z2V0KGlkZW50aWZpZXIpLmdldCgpKQorICAg
ICAgICAgICAgaWYgKENvdW50ZXJOb2RlKiBub2RlID0gbm9kZU1hcC0+Z2V0KGlkZW50aWZpZXIp
KQogICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICB9CiAgICAgfQpAQCAtMzMz
LDcgKzMzMyw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlck9i
amVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkCiAgICAgICAgIHNraXBEZXNjZW5k
YW50cyA9IGZhbHNlOwogICAgICAgICBpZiAoIWN1cnJlbnRSZW5kZXJlci0+aGFzQ291bnRlck5v
ZGVNYXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBDb3VudGVyTm9kZSogY3Vy
cmVudENvdW50ZXIgPSBtYXBzLmdldChjdXJyZW50UmVuZGVyZXIpLT5nZXQoaWRlbnRpZmllciku
Z2V0KCk7CisgICAgICAgIENvdW50ZXJOb2RlKiBjdXJyZW50Q291bnRlciA9IG1hcHMuZ2V0KGN1
cnJlbnRSZW5kZXJlciktPmdldChpZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFjdXJyZW50Q291
bnRlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBza2lwRGVzY2VuZGFudHMgPSB0
cnVlOwpAQCAtNjI3LDcgKzYyNyw3IEBAIHZvaWQgc2hvd0NvdW50ZXJSZW5kZXJlclRyZWUoY29u
c3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgY2hhcioKICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICIlcCBOOiVwIFA6JXAgUFM6JXAgTlM6JXAgQzolcFxuIiwKICAgICAg
ICAgICAgIGN1cnJlbnQsIGN1cnJlbnQtPm5vZGUoKSwgY3VycmVudC0+cGFyZW50KCksIGN1cnJl
bnQtPnByZXZpb3VzU2libGluZygpLAogICAgICAgICAgICAgY3VycmVudC0+bmV4dFNpYmxpbmco
KSwgY3VycmVudC0+aGFzQ291bnRlck5vZGVNYXAoKSA/Ci0gICAgICAgICAgICBjb3VudGVyTmFt
ZSA/IFdlYkNvcmU6OmNvdW50ZXJNYXBzKCkuZ2V0KGN1cnJlbnQpLT5nZXQoaWRlbnRpZmllciku
Z2V0KCkgOiAoV2ViQ29yZTo6Q291bnRlck5vZGUqKTEgOiAoV2ViQ29yZTo6Q291bnRlck5vZGUq
KTApOworICAgICAgICAgICAgY291bnRlck5hbWUgPyBXZWJDb3JlOjpjb3VudGVyTWFwcygpLmdl
dChjdXJyZW50KS0+Z2V0KGlkZW50aWZpZXIpIDogKFdlYkNvcmU6OkNvdW50ZXJOb2RlKikxIDog
KFdlYkNvcmU6OkNvdW50ZXJOb2RlKikwKTsKICAgICB9CiAgICAgZmZsdXNoKHN0ZGVycik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuY3BwCmluZGV4IDZkYjQ5OGQuLjMxMTAyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3Bw
CkBAIC01NywxMyArNTcsMTMgQEAgRmlsdGVyRWZmZWN0KiBTVkdGaWx0ZXJCdWlsZGVyOjpnZXRF
ZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CiAgICAgICAgIGlmIChtX2xh
c3RFZmZlY3QpCiAgICAgICAgICAgICByZXR1cm4gbV9sYXN0RWZmZWN0LmdldCgpOwogCi0gICAg
ICAgIHJldHVybiBtX2J1aWx0aW5FZmZlY3RzLmdldChTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1l
KCkpLmdldCgpOworICAgICAgICByZXR1cm4gbV9idWlsdGluRWZmZWN0cy5nZXQoU291cmNlR3Jh
cGhpYzo6ZWZmZWN0TmFtZSgpKTsKICAgICB9CiAKICAgICBpZiAobV9idWlsdGluRWZmZWN0cy5j
b250YWlucyhpZCkpCi0gICAgICAgIHJldHVybiBtX2J1aWx0aW5FZmZlY3RzLmdldChpZCkuZ2V0
KCk7CisgICAgICAgIHJldHVybiBtX2J1aWx0aW5FZmZlY3RzLmdldChpZCk7CiAKLSAgICByZXR1
cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkKS5nZXQoKTsKKyAgICByZXR1cm4gbV9uYW1lZEVmZmVj
dHMuZ2V0KGlkKTsKIH0KIAogdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0Vm
ZmVjdFJlZmVyZW5jZXMoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHBycEVmZmVjdCwgUmVuZGVy
T2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZTkwYWM0OC4uYWQ1ZmYwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA1LTA2ICBNaWtoYWlsIFBvemRu
eWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIEhhc2hUcmFp
dHM8UmVmUHRyPFA+ID46OlBlZWtUeXBlIHNob3VsZCBiZSByYXcgcG9pbnRlciBmb3IgYmV0dGVy
IHBlcmZvcm1hbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTU2NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RQcm94eTo6cGx1Z2luSW5zdGFuY2UpOgorICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjYW5jZWxTdHJlYW1M
b2FkKToKKyAgICAgICAgICAgIFVwZGF0ZWQgYWNjb3JkaW5nbHkgdG8gbmV3IEhhc2hNYXA8Li4s
IFJlZlB0cj46OmdldCgpIHNlbWFudGljcy4KKwogMjAxMy0wNS0wNCAgRGVhbiBKYWNrc29uICA8
ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQW5pbWF0aW9ucyBhbmQgVHJhbnNpdGlvbnMgc2hv
dWxkIG5vdCBzdGFydCB3aGVuIGdsb2JhbGx5IHN1c3BlbmRlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5t
bQppbmRleCA1N2Q1OThlLi5hNjc4NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAtMTc1
LDcgKzE3NSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHk6OnJlbW92ZVBsdWdpbklu
c3RhbmNlKE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eSoKIAogTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5KiBOZXRzY2FwZVBsdWdpbkhvc3RQcm94eTo6cGx1Z2luSW5zdGFuY2UodWludDMy
X3QgcGx1Z2luSUQpCiB7Ci0gICAgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5KiByZXN1bHQg
PSBtX2luc3RhbmNlcy5nZXQocGx1Z2luSUQpLmdldCgpOworICAgIE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eSogcmVzdWx0ID0gbV9pbnN0YW5jZXMuZ2V0KHBsdWdpbklEKTsKICAgICBBU1NF
UlQoIXJlc3VsdCB8fCByZXN1bHQtPmhvc3RQcm94eSgpID09IHRoaXMpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggZDdhMDVkYy4uYjA0
ZGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMzYxLDcgKzM2MSw3IEBA
IGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjYW5jZWxTdHJlYW1Mb2FkKHVpbnQz
Ml90IHN0cmVhbUlELCBOUFJlYXNvbiByCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtICYmIHN0cmVh
bUlEID09IDEpCiAgICAgICAgIHN0cmVhbSA9IG1fbWFudWFsU3RyZWFtLmdldCgpOwogICAgIGVs
c2UKLSAgICAgICAgc3RyZWFtID0gbV9zdHJlYW1zLmdldChzdHJlYW1JRCkuZ2V0KCk7CisgICAg
ICAgIHN0cmVhbSA9IG1fc3RyZWFtcy5nZXQoc3RyZWFtSUQpOwogICAgIAogICAgIGlmICghc3Ry
ZWFtKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWFmZmQzYy4uY2I4MTFh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTA1LTA2ICBNaWtoYWlsIFBvemRu
eWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIEhhc2hUcmFp
dHM8UmVmUHRyPFA+ID46OlBlZWtUeXBlIHNob3VsZCBiZSByYXcgcG9pbnRlciBmb3IgYmV0dGVy
IHBlcmZvcm1hbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTU2NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRN
YWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRTY2hlZHVsZXI6Omhvc3RGb3JVUkwpOgorICAgICAgICAqIFNoYXJlZC9JbW11
dGFibGVEaWN0aW9uYXJ5Lmg6CisgICAgICAgIChXZWJLaXQ6OkltbXV0YWJsZURpY3Rpb25hcnk6
OmdldCk6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAp
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZUludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmZpbmRT
dG9yYWdlQXJlYSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6c3VwcGxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2Vi
QmFja0ZvcndhcmRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJG
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmw6OmV3a0Rvd25sb2FkSm9iKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6d2ViUmVzb3VyY2VMb2Fk
ZXJGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c3Ry
ZWFtRnJvbUlEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpj
YW5jZWxTdHJlYW1Mb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNw
YXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aXRlbUZvcklE
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OndlYlVuZG9TdGVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2Fu
Y2VsQ2hlY2tpbmdUZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6d2ViUGFnZUdyb3VwKToKKyAgICAgICAgICAgIFVwZGF0ZWQgYWNjb3JkaW5n
bHkgdG8gbmV3IEhhc2hNYXA8Li4sIFJlZlB0cj46OmdldCgpIHNlbWFudGljcy4KKwogMjAxMy0w
NS0wNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dL
Ml0gTWFrZSB0aGUgV2ViQmF0dGVyeU1hbmFnZXJQcm94eSBhIHN1cHBsZW1lbnQgdG8gdGhlIFdl
YkNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAzZWMyZjJjLi4yNGI2
N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIHUKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAg
IE5ldHdvcmtSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJz
LmdldChtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllcikuZ2V0KCk7CisgICAgTmV0d29ya1Jlc291
cmNlTG9hZGVyKiBsb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICBOZXR3b3JrUHJvY2Vzczo6c2hhcmVkKCkuZG93bmxv
YWRNYW5hZ2VyKCkuY29udmVydEhhbmRsZVRvRG93bmxvYWQoZG93bmxvYWRJRCwgbG9hZGVyLT5o
YW5kbGUoKSwgcmVxdWVzdCwgcmVzcG9uc2UpOwogCiAgICAgLy8gVW5ibG9jayB0aGUgVVJMIGNv
bm5lY3Rpb24gb3BlcmF0aW9uIHF1ZXVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRl
eCBiODFlYzNhLi42MTgzMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtNjYs
NyArNjYsNyBAQCBIb3N0UmVjb3JkKiBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpob3N0
Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgQwogCiAgICAgbV9ob3N0cy5jaGVja0Nv
bnNpc3RlbmN5KCk7CiAgICAgU3RyaW5nIGhvc3ROYW1lID0gdXJsLmhvc3QoKTsKLSAgICBIb3N0
UmVjb3JkKiBob3N0ID0gbV9ob3N0cy5nZXQoaG9zdE5hbWUpLmdldCgpOworICAgIEhvc3RSZWNv
cmQqIGhvc3QgPSBtX2hvc3RzLmdldChob3N0TmFtZSk7CiAgICAgaWYgKCFob3N0ICYmIGNyZWF0
ZUhvc3RQb2xpY3kgPT0gQ3JlYXRlSWZOb3RGb3VuZCkgewogICAgICAgICBSZWZQdHI8SG9zdFJl
Y29yZD4gbmV3SG9zdCA9IEhvc3RSZWNvcmQ6OmNyZWF0ZShob3N0TmFtZSwgbWF4UmVxdWVzdHNJ
bkZsaWdodFBlckhvc3QpOwogICAgICAgICBob3N0ID0gbmV3SG9zdC5nZXQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5oCmluZGV4IGM5Njk2MjEuLmQ4ZDg1
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZURpY3Rpb25hcnkuaApAQCAt
NzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICBBUElPYmplY3QqIGdldChjb25zdCBTdHJpbmcm
IGtleSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX21hcC5nZXQoa2V5KS5nZXQoKTsKKyAgICAg
ICAgcmV0dXJuIG1fbWFwLmdldChrZXkpOwogICAgIH0KIAogICAgIFBhc3NSZWZQdHI8SW1tdXRh
YmxlQXJyYXk+IGtleXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCAwYTgwZWFkLi4zZTFmODZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIu
Y3BwCkBAIC00MTEsNyArNDExLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lv
blN0b3JhZ2VNYXAoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgdWkKICAgICBBU1NF
UlQocmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgQVNTRVJUKChIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+ID46OmlzVmFsaWRLZXkoc3RvcmFnZU5hbWVz
cGFjZUlEKSkpOwotICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNl
SUQpLmdldCgpOworICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNl
SUQpOwogCiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBtZXNzYWdlIGNoZWNrcy4KICAg
ICBBU1NFUlQoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOwpAQCAtNTExLDEwICs1MTEsMTAgQEAg
dm9pZCBTdG9yYWdlTWFuYWdlcjo6c2V0QWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29u
bmVjdGlvbkludGVybmFsKHVpbnQ2NF8KIAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZUludGVybmFsKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwg
dWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKQogewotICAgIFNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpLmdldCgpOworICAgIFNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpOwogICAgIEFTU0VSVChzZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSk7CiAKLSAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogbmV3U2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQobmV3U3RvcmFnZU5h
bWVzcGFjZUlEKS5nZXQoKTsKKyAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogbmV3U2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQobmV3U3Rv
cmFnZU5hbWVzcGFjZUlEKTsKICAgICBBU1NFUlQobmV3U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Up
OwogCiAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsb25lVG8oKm5ld1Nlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKTsKQEAgLTU0Miw3ICs1NDIsNyBAQCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpmaW5kU3RvcmFnZUFyZWEoQ29yZUlQQzo6Q29ubmVjdGlv
bgogICAgIGlmICghSGFzaE1hcDxzdGQ6OnBhaXI8UmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+
LCB1aW50NjRfdD4sIFJlZlB0cjxTdG9yYWdlQXJlYT4gPjo6aXNWYWxpZEtleShjb25uZWN0aW9u
QW5kU3RvcmFnZU1hcElEUGFpcikpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG1f
c3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmdldChjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFp
cikuZ2V0KCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmdldChjb25u
ZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcik7CiB9CiAKIFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaAppbmRleCA3Zjg3MzkwLi5mMzlkMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgICAgVCogc3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VCo+KG1fc3VwcGxlbWVudHMuZ2V0KFQ6OnN1cHBsZW1lbnROYW1lKCkp
LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX3N1cHBsZW1lbnRzLmdl
dChUOjpzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDBkYzExZDcuLmQ0Mzg0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgVmVjdG9yPFdlYlBhZ2VQcm94eSo+IFdl
YlByb2Nlc3NQcm94eTo6cGFnZXMoKSBjb25zdAogCiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBX
ZWJQcm9jZXNzUHJveHk6OndlYkJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5nZXQoaXRlbUlEKS5nZXQo
KTsKKyAgICByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmdldChpdGVtSUQpOwogfQog
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJOZXdXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0pCkBAIC00NjMsNyArNDYzLDcgQEAgV2ViRnJh
bWVQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSBjb25z
dAogICAgIGlmICghV2ViRnJhbWVQcm94eU1hcDo6aXNWYWxpZEtleShmcmFtZUlEKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZU1hcC5nZXQoZnJhbWVJRCkuZ2V0KCk7
CisgICAgcmV0dXJuIG1fZnJhbWVNYXAuZ2V0KGZyYW1lSUQpOwogfQogCiBib29sIFdlYlByb2Nl
c3NQcm94eTo6Y2FuQ3JlYXRlRnJhbWUodWludDY0X3QgZnJhbWVJRCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcAppbmRl
eCBiMWViMGZhLi4wYWUxNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBEb3du
bG9hZE1hbmFnZXJFZmw6OnJlZ2lzdGVyRG93bmxvYWRKb2IoV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgRXdrVmlldyogdmkKIAogRXdrRG93bmxvYWRKb2IqIERvd25sb2FkTWFuYWdlckVmbDo6ZXdr
RG93bmxvYWRKb2IoV0tEb3dubG9hZFJlZiB3a0Rvd25sb2FkKQogewotICAgIHJldHVybiBtX2Rv
d25sb2FkSm9icy5nZXQoV0tEb3dubG9hZEdldElEKHdrRG93bmxvYWQpKS5nZXQoKTsKKyAgICBy
ZXR1cm4gbV9kb3dubG9hZEpvYnMuZ2V0KFdLRG93bmxvYWRHZXRJRCh3a0Rvd25sb2FkKSk7CiB9
CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjp1bnJlZ2lzdGVyRG93bmxvYWRKb2IoV0tEb3du
bG9hZFJlZiB3a0Rvd25sb2FkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4IDY4NmMxNWYu
LmYxODc2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldFNlcmlhbExvYWRpbmdFbmFibGVkKGJvb2wpIE9W
RVJSSURFOwogCi0gICAgV2ViUmVzb3VyY2VMb2FkZXIqIHdlYlJlc291cmNlTG9hZGVyRm9ySWRl
bnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViUmVzb3VyY2VMb2FkZXJzLmdldChpZGVudGlmaWVyKS5nZXQoKTsgfQorICAgIFdlYlJl
c291cmNlTG9hZGVyKiB3ZWJSZXNvdXJjZUxvYWRlckZvcklkZW50aWZpZXIoUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX3dlYlJlc291cmNlTG9hZGVy
cy5nZXQoaWRlbnRpZmllcik7IH0KIAogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IGM4YzQzOWIuLjM5MzA3YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIGJvb2wgTmV0c2NhcGVQ
bHVnaW46OnNob3VsZExvYWRTcmNVUkwoKQogCiBOZXRzY2FwZVBsdWdpblN0cmVhbSogTmV0c2Nh
cGVQbHVnaW46OnN0cmVhbUZyb21JRCh1aW50NjRfdCBzdHJlYW1JRCkKIHsKLSAgICByZXR1cm4g
bV9zdHJlYW1zLmdldChzdHJlYW1JRCkuZ2V0KCk7CisgICAgcmV0dXJuIG1fc3RyZWFtcy5nZXQo
c3RyZWFtSUQpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdG9wQWxsU3RyZWFtcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IDBlOWE2YTQuLjlhOGRj
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC0xMTYsNyAr
MTE2LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3MKIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgsIHVpbnQzMl90IG9wYXF1ZVBsdWdpblR5cGUpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fcGF0aHNBbmRDb25uZWN0aW9uc011dGV4KTsKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uID0gbV9wYXRoc0FuZENvbm5lY3Rpb25zLmdldChzdGQ6Om1ha2VfcGFpcihwbHVn
aW5QYXRoLCBzdGF0aWNfY2FzdDxQbHVnaW5Qcm9jZXNzOjpUeXBlPihvcGFxdWVQbHVnaW5UeXBl
KSkpLmdldCgpOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtX3BhdGhz
QW5kQ29ubmVjdGlvbnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKHBsdWdpblBhdGgsIHN0YXRpY19jYXN0
PFBsdWdpblByb2Nlc3M6OlR5cGU+KG9wYXF1ZVBsdWdpblR5cGUpKSk7CiAKICAgICAvLyBJdCdz
IE9LIGZvciBjb25uZWN0aW9uIHRvIGJlIG51bGwgaGVyZTsgaXQgd2lsbCBoYXBwZW4gaWYgdGhp
cyB3ZWIgcHJvY2VzcyBkb2Vzbid0IGtub3cKICAgICAvLyBhbnl0aGluZyBhYm91dCB0aGUgcGx1
Zy1pbiBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCmluZGV4IDAzOWQ2MTEuLjg3MmQ0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEyOTEsNyArMTI5MSw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6Y2FuY2VsU3RyZWFtTG9hZCh1aW50NjRfdCBzdHJlYW1JRCkK
IHsKICAgICAvLyBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJlYW0uIFN0cmVhbTo6Y2FuY2Vs
IG1pZ2h0IHJlbW92ZSB0aGUgc3RyZWFtIGZyb20gdGhlIG1hcCwgYW5kIHRodXMKICAgICAvLyBy
ZWxlYXNpbmcgaXRzIGxhc3QgcmVmZXJlbmNlLgotICAgIFJlZlB0cjxTdHJlYW0+IHN0cmVhbSA9
IG1fc3RyZWFtcy5nZXQoc3RyZWFtSUQpLmdldCgpOworICAgIFJlZlB0cjxTdHJlYW0+IHN0cmVh
bSA9IG1fc3RyZWFtcy5nZXQoc3RyZWFtSUQpOwogICAgIGlmICghc3RyZWFtKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9F
dmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggZjE5OTcwZS4uZDc5YzI5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAg
LTg4LDcgKzg4LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQodWludDY0X3Qg
cGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW4KIHsKICNpZiBFTkFCTEUoVEhS
RUFERURfU0NST0xMSU5HKQogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Njcm9sbGluZ1RyZWVz
TXV0ZXgpOwotICAgIGlmIChTY3JvbGxpbmdUcmVlKiBzY3JvbGxpbmdUcmVlID0gbV9zY3JvbGxp
bmdUcmVlcy5nZXQocGFnZUlEKS5nZXQoKSkgeworICAgIGlmIChTY3JvbGxpbmdUcmVlKiBzY3Jv
bGxpbmdUcmVlID0gbV9zY3JvbGxpbmdUcmVlcy5nZXQocGFnZUlEKSkgewogICAgICAgICBQbGF0
Zm9ybVdoZWVsRXZlbnQgcGxhdGZvcm1XaGVlbEV2ZW50ID0gcGxhdGZvcm0od2hlZWxFdmVudCk7
CiAKICAgICAgICAgLy8gRklYTUU6IEl0J3MgcHJldHR5IGhvcnJpYmxlIHRoYXQgd2UncmUgdXBk
YXRpbmcgdGhlIGJhY2svZm9yd2FyZCBzdGF0ZSBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5j
cHAKaW5kZXggYmU4MmExOS4uM2ExM2QyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCkBA
IC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIHZvaWQgV0syTm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2Vk
KEhpc3RvcnlJdGVtKiBpdGVtKQogCiBIaXN0b3J5SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6Oml0ZW1Gb3JJRCh1aW50NjRfdCBpdGVtSUQpCiB7Ci0gICAgcmV0dXJuIGlkVG9IaXN0b3J5
SXRlbU1hcCgpLmdldChpdGVtSUQpLmdldCgpOworICAgIHJldHVybiBpZFRvSGlzdG9yeUl0ZW1N
YXAoKS5nZXQoaXRlbUlEKTsKIH0KIAogdWludDY0X3QgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6
OmlkRm9ySXRlbShIaXN0b3J5SXRlbSogaXRlbSkKQEAgLTE4Niw3ICsxODYsNyBAQCBIaXN0b3J5
SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KGludCBpdGVtSW5kZXgp
CiAgICAgaWYgKCFpdGVtSUQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGlkVG9I
aXN0b3J5SXRlbU1hcCgpLmdldChpdGVtSUQpLmdldCgpOworICAgIHJldHVybiBpZFRvSGlzdG9y
eUl0ZW1NYXAoKS5nZXQoaXRlbUlEKTsKIH0KIAogaW50IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjpiYWNrTGlzdENvdW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCA5ZmI4Y2FkLi4xZTFlMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNzA1LDcgKzI3MDUsNyBAQCB2b2lk
IFdlYlBhZ2U6Om1heVBlcmZvcm1VcGxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oKQogCiBXZWJV
bmRvU3RlcCogV2ViUGFnZTo6d2ViVW5kb1N0ZXAodWludDY0X3Qgc3RlcElEKQogewotICAgIHJl
dHVybiBtX3VuZG9TdGVwTWFwLmdldChzdGVwSUQpLmdldCgpOworICAgIHJldHVybiBtX3VuZG9T
dGVwTWFwLmdldChzdGVwSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmFkZFdlYlVuZG9TdGVwKHVp
bnQ2NF90IHN0ZXBJRCwgV2ViVW5kb1N0ZXAqIGVudHJ5KQpAQCAtMzkzMiw3ICszOTMyLDcgQEAg
dm9pZCBXZWJQYWdlOjphZGRUZXh0Q2hlY2tpbmdSZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJRCwg
UGFzc1JlZlB0cjxUZXh0Q2hlY2tpbmcKIAogdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hDaGVja2lu
Z1RleHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiYgcmVzdWx0KQogewotICAgIFRleHRDaGVja2luZ1JlcXVlc3QqIHJlcXVlc3QgPSBtX3BlbmRp
bmdUZXh0Q2hlY2tpbmdSZXF1ZXN0TWFwLmdldChyZXF1ZXN0SUQpLmdldCgpOworICAgIFRleHRD
aGVja2luZ1JlcXVlc3QqIHJlcXVlc3QgPSBtX3BlbmRpbmdUZXh0Q2hlY2tpbmdSZXF1ZXN0TWFw
LmdldChyZXF1ZXN0SUQpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0zOTQyLDcgKzM5NDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaENoZWNraW5nVGV4dCh1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbgogCiB2b2lkIFdlYlBh
Z2U6OmRpZENhbmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgVGV4
dENoZWNraW5nUmVxdWVzdCogcmVxdWVzdCA9IG1fcGVuZGluZ1RleHRDaGVja2luZ1JlcXVlc3RN
YXAuZ2V0KHJlcXVlc3RJRCkuZ2V0KCk7CisgICAgVGV4dENoZWNraW5nUmVxdWVzdCogcmVxdWVz
dCA9IG1fcGVuZGluZ1RleHRDaGVja2luZ1JlcXVlc3RNYXAuZ2V0KHJlcXVlc3RJRCk7CiAgICAg
aWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCmluZGV4IDE1NjI2YjIuLjY2NDExYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIFdlYlBhZ2UqIFdl
YlByb2Nlc3M6OmZvY3VzZWRXZWJQYWdlKCkgY29uc3QKICAgICAKIFdlYlBhZ2UqIFdlYlByb2Nl
c3M6OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2VN
YXAuZ2V0KHBhZ2VJRCkuZ2V0KCk7CisgICAgcmV0dXJuIG1fcGFnZU1hcC5nZXQocGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTY5NCw3ICs2OTQs
NyBAQCBXZWJQYWdlR3JvdXBQcm94eSogV2ViUHJvY2Vzczo6d2ViUGFnZUdyb3VwKFBhZ2VHcm91
cCogcGFnZUdyb3VwKQogCiBXZWJQYWdlR3JvdXBQcm94eSogV2ViUHJvY2Vzczo6d2ViUGFnZUdy
b3VwKHVpbnQ2NF90IHBhZ2VHcm91cElEKQogewotICAgIHJldHVybiBtX3BhZ2VHcm91cE1hcC5n
ZXQocGFnZUdyb3VwSUQpLmdldCgpOworICAgIHJldHVybiBtX3BhZ2VHcm91cE1hcC5nZXQocGFn
ZUdyb3VwSUQpOwogfQogCiBXZWJQYWdlR3JvdXBQcm94eSogV2ViUHJvY2Vzczo6d2ViUGFnZUdy
b3VwKGNvbnN0IFdlYlBhZ2VHcm91cERhdGEmIHBhZ2VHcm91cERhdGEpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>