<?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>143843</bug_id>
          
          <creation_ts>2015-04-16 14:03:45 -0700</creation_ts>
          <short_desc>VarargsForwardingPhase should use bytecode liveness in addition to other uses to determine the last point that a candidate is used</short_desc>
          <delta_ts>2015-04-28 10:56:05 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>143736</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086063</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-16 14:03:45 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086096</commentid>
    <comment_count>1</comment_count>
      <attachid>250955</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-16 15:28:28 -0700</bug_when>
    <thetext>Created attachment 250955
WRONG PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088529</commentid>
    <comment_count>2</comment_count>
      <attachid>251626</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-25 01:38:01 -0700</bug_when>
    <thetext>Created attachment 251626
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088530</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-25 01:40:06 -0700</bug_when>
    <thetext>Attachment 251626 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGVarargsForwardingPhase.cpp:141:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGPhantomInsertionPhase.cpp:127:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089086</commentid>
    <comment_count>4</comment_count>
      <attachid>251626</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-27 11:09:42 -0700</bug_when>
    <thetext>Comment on attachment 251626
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089114</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-27 11:50:49 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/183406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089602</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-28 10:39:40 -0700</bug_when>
    <thetext>This appears to have regressed V8Spider/raytrace by 30% and Octane/raytrace by 9%.  I think I broke VarargsForwarding with this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089613</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-28 10:56:05 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; This appears to have regressed V8Spider/raytrace by 30% and Octane/raytrace
&gt; by 9%.  I think I broke VarargsForwarding with this change.

The fix is: https://bugs.webkit.org/show_bug.cgi?id=144340</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250955</attachid>
            <date>2015-04-16 15:28:28 -0700</date>
            <delta_ts>2015-04-16 15:55:36 -0700</delta_ts>
            <desc>WRONG PATCH</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>44297</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE4Mjg1NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTg4LDEwICsxODgsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgTW92
SGludDogewotICAgICAgICAvLyBEb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLiBBIE1vdkhpbnQg
b25seSBpbmZvcm1zIHVzIGFib3V0IHdoYXQgd291bGQgaGF2ZSBoYXBwZW5lZAotICAgICAgICAv
LyBpbiBieXRlY29kZSwgYnV0IHRoaXMgY29kZSBpcyBqdXN0IGNvbmNlcm5lZCB3aXRoIHdoYXQg
aXMgYWN0dWFsbHkgaGFwcGVuaW5nIGR1cmluZwotICAgICAgICAvLyBERkcgZXhlY3V0aW9uLgor
ICAgIGNhc2UgTW92SGludDoKKyAgICBjYXNlIFpvbWJpZUhpbnQ6CisgICAgY2FzZSBLaWxsSGlu
dDoKKyAgICBjYXNlIFB1dEhpbnQ6IHsKKyAgICAgICAgLy8gRG9uJ3QgbmVlZCB0byBkbyBhbnl0
aGluZy4gVGhlc2UganVzdCB0ZWxsIHVzIGFib3V0IHdoYXQgaGFwcGVuZWQgaW4gYnl0ZWNvZGUs
IGJ1dCB0aGVzZQorICAgICAgICAvLyB0aGluZ3MgZG9uJ3QgaGFwcGVuIGFsb25nIHRoZSBwYXRo
IHRoYXQgQUkgY2FyZXMgYWJvdXQuCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBA
IC0xMzYzLDkgKzEzNjUsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgICAgIC8vIFRoaXMgY2xhaW1zIHRvIHJldHVybiBib3R0b20uCiAgICAgICAgIGJy
ZWFrOwogICAgICAgICAKLSAgICBjYXNlIFB1dEhpbnQ6Ci0gICAgICAgIGJyZWFrOwotICAgICAg
ICAKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OiB7CiAgICAgICAgIFN0cnVjdHVyZVNl
dCBzZXQ7CiAgICAgICAgIApAQCAtMjEwMiw3ICsyMTAxLDYgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogCiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVy
OgogICAgIGNhc2UgTG9vcEhpbnQ6Ci0gICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgVW5yZWFjaGFibGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMTgyODU3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMy0yMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjMsMTYgKzYzLDQ3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Js
b2MKICAgICBOb2RlKiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9ub2Rlc1tpXTsgfQog
ICAgIE5vZGUqJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBhdChpKTsgfQogICAgIE5v
ZGUqIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9Ci0gICAgTm9k
ZSogbGFzdCgpIGNvbnN0IHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9Ci0gICAgTm9kZSogdGFr
ZUxhc3QoKSB7IHJldHVybiBtX25vZGVzLnRha2VMYXN0KCk7IH0KKworICAgIE5vZGVBbmRJbmRl
eCBmaW5kVGVybWluYWwoKSBjb25zdAorICAgIHsKKyAgICAgICAgc2l6ZV90IGkgPSBzaXplKCk7
CisgICAgICAgIHdoaWxlIChpLS0pIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhdChpKTsK
KyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgY2FzZSBKdW1w
OgorICAgICAgICAgICAgY2FzZSBCcmFuY2g6CisgICAgICAgICAgICBjYXNlIFN3aXRjaDoKKyAg
ICAgICAgICAgIGNhc2UgUmV0dXJuOgorICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAg
ICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAgICAg
Ly8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIEtpbGxIaW50cy4gVGhl
cmUgd2lsbCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gb2YgdGhlc2UuCisgICAgICAgICAg
ICBjYXNlIFBoYW50b206CisgICAgICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKKyAgICAgICAg
ICAgIGNhc2UgS2lsbEhpbnQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KCk7CisgICAgfQor
ICAgIAorICAgIE5vZGUqIHRlcm1pbmFsKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBm
aW5kVGVybWluYWwoKS5ub2RlOworICAgIH0KKyAgICAKICAgICB2b2lkIHJlc2l6ZShzaXplX3Qg
c2l6ZSkgeyBtX25vZGVzLnJlc2l6ZShzaXplKTsgfQogICAgIHZvaWQgZ3JvdyhzaXplX3Qgc2l6
ZSkgeyBtX25vZGVzLmdyb3coc2l6ZSk7IH0KICAgICAKICAgICB2b2lkIGFwcGVuZChOb2RlKiBu
b2RlKSB7IG1fbm9kZXMuYXBwZW5kKG5vZGUpOyB9Ci0gICAgdm9pZCBpbnNlcnRCZWZvcmVMYXN0
KE5vZGUqIG5vZGUpCisgICAgdm9pZCBpbnNlcnRCZWZvcmVUZXJtaW5hbChOb2RlKiBub2RlKQog
ICAgIHsKLSAgICAgICAgYXBwZW5kKGxhc3QoKSk7Ci0gICAgICAgIGF0KHNpemUoKSAtIDIpID0g
bm9kZTsKKyAgICAgICAgTm9kZUFuZEluZGV4IHJlc3VsdCA9IGZpbmRUZXJtaW5hbCgpOworICAg
ICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIGFwcGVuZChub2RlKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9ub2Rlcy5pbnNlcnQocmVzdWx0LmluZGV4LCBub2RlKTsKICAgICB9
CiAgICAgCiAgICAgc2l6ZV90IG51bU5vZGVzKCkgY29uc3QgeyByZXR1cm4gcGhpcy5zaXplKCkg
KyBzaXplKCk7IH0KQEAgLTkzLDE1ICsxMjQsMTUgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZD
b3VudGVkPEJhc2ljQmxvYwogICAgIE5vZGUqIGZpcnN0T3JpZ2luTm9kZSgpOwogICAgIE5vZGVP
cmlnaW4gZmlyc3RPcmlnaW4oKTsKICAgICAKLSAgICB1bnNpZ25lZCBudW1TdWNjZXNzb3JzKCkg
eyByZXR1cm4gbGFzdCgpLT5udW1TdWNjZXNzb3JzKCk7IH0KKyAgICB1bnNpZ25lZCBudW1TdWNj
ZXNzb3JzKCkgeyByZXR1cm4gdGVybWluYWwoKS0+bnVtU3VjY2Vzc29ycygpOyB9CiAgICAgCiAg
ICAgQmFzaWNCbG9jayomIHN1Y2Nlc3Nvcih1bnNpZ25lZCBpbmRleCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBsYXN0KCktPnN1Y2Nlc3NvcihpbmRleCk7CisgICAgICAgIHJldHVybiB0ZXJtaW5h
bCgpLT5zdWNjZXNzb3IoaW5kZXgpOwogICAgIH0KICAgICBCYXNpY0Jsb2NrKiYgc3VjY2Vzc29y
Rm9yQ29uZGl0aW9uKGJvb2wgY29uZGl0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGxhc3Qo
KS0+c3VjY2Vzc29yRm9yQ29uZGl0aW9uKGNvbmRpdGlvbik7CisgICAgICAgIHJldHVybiB0ZXJt
aW5hbCgpLT5zdWNjZXNzb3JGb3JDb25kaXRpb24oY29uZGl0aW9uKTsKICAgICB9CiAgICAgCiAg
ICAgY2xhc3MgU3VjY2Vzc29yc0l0ZXJhYmxlIHsKQEAgLTE4Myw2ICsyMTQsMTQgQEAgc3RydWN0
IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIFBhcmFtcz4KICAgICBOb2RlKiBhcHBlbmROb25UZXJtaW5hbChHcmFwaCYsIFNwZWN1bGF0
ZWRUeXBlLCBQYXJhbXMuLi4pOwogICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFt
cz4KKyAgICBOb2RlKiBhcHBlbmRCZWZvcmVUZXJtaW5hbChHcmFwaCYgZ3JhcGgsIFNwZWN1bGF0
ZWRUeXBlIHR5cGUsIFBhcmFtcy4uLiBwYXJhbXMpCisgICAgeworICAgICAgICAvLyBUaGlzIGlz
IGp1c3QgYSBoYW5keSBhbGlhcyBmb3IgYXBwZW5kTm9uVGVybWluYWwsIGZvciB1c2UgaW4gY2Fz
ZXMgd2hlcmUgeW91IGFyZSBhY3R1YWxseQorICAgICAgICAvLyBhcHBlbmRpbmcgYSBuZXcgdGVy
bWluYWwuCisgICAgICAgIHJldHVybiBhcHBlbmROb25UZXJtaW5hbChncmFwaCwgdHlwZSwgcGFy
YW1zLi4uKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0OwogICAgIAogICAgIHZvaWQgZGlkTGluaygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAxODI4NTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2tJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDUsNyArNDUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+
CiBOb2RlKiBCYXNpY0Jsb2NrOjphcHBlbmROb25UZXJtaW5hbChHcmFwaCYgZ3JhcGgsIFNwZWN1
bGF0ZWRUeXBlIHR5cGUsIFBhcmFtcy4uLiBwYXJhbXMpCiB7CiAgICAgTm9kZSogcmVzdWx0ID0g
Z3JhcGguYWRkTm9kZSh0eXBlLCBwYXJhbXMuLi4pOwotICAgIGluc2VydEJlZm9yZUxhc3QocmVz
dWx0KTsKKyAgICBpbnNlcnRCZWZvcmVUZXJtaW5hbChyZXN1bHQpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxODI4NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAK
LSAvKgorLyoKICAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIK
KyNpbmNsdWRlICJCeXRlY29kZUtpbGxzLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5o
IgpAQCAtNTE2LDYgKzUxNyw4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQoIW9w
ZXJhbmQuaXNDb25zdGFudCgpKTsKICAgICAgICAgCisgICAgICAgIGFkZFRvR3JhcGgoS2lsbEhp
bnQsIE9wSW5mbyhvcGVyYW5kLm9mZnNldCgpKSk7CisgICAgICAgIAogICAgICAgICBOb2RlKiBu
b2RlID0gbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5vcGVyYW5kKG9wZXJhbmQpOwog
ICAgICAgICAKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZTsKQEAgLTg5Miw2
ICs4OTUsNyBAQCBwcml2YXRlOgogICAgICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogICAg
ICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKICAgICAgICAgSW5saW5lQ2FsbEZyYW1l
KiBtX2lubGluZUNhbGxGcmFtZTsKKyAgICAgICAgQnl0ZWNvZGVLaWxscyYgbV9ieXRlY29kZUtp
bGxzOwogICAgICAgICAKICAgICAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSgpIHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsgfQogICAgICAgICAKQEAgLTEw
MjIsNyArMTAyNiw4IEBAIHByaXZhdGU6CiAKICNkZWZpbmUgTEFTVF9PUENPREUobmFtZSkgXAog
ICAgIG1fY3VycmVudEluZGV4ICs9IE9QQ09ERV9MRU5HVEgobmFtZSk7IFwKLSAgICByZXR1cm4g
c2hvdWxkQ29udGludWVQYXJzaW5nCisgICAgY29udGludWVJbkxvb3AgPSBmYWxzZTsgXAorICAg
IGJyZWFrCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoSW5zdHJ1Y3Rpb24qIHBj
LCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewpAQCAtMTA0NSw2
ICsxMDUwLDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICBoYW5kbGVD
YWxsKAogICAgICAgICByZXN1bHQsIG9wLCBJbmxpbmVDYWxsRnJhbWU6OmtpbmRGb3Ioa2luZCks
IGluc3RydWN0aW9uU2l6ZSwgY2FsbFRhcmdldCwKICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBjYWxsTGlua1N0YXR1cyk7CisgICAgCisgICAgYWRk
VG9HcmFwaChLaWxsSGludCwgT3BJbmZvKGNhbGxlZSkpOwogfQogICAgIAogdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ2FsbCgKQEAgLTExMzgsNiArMTE0NSw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKEkKICAgICAgICAgJiYgaGFuZGxlSW5saW5pbmcoY2Fs
bFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVn
aXN0ZXIodGhpc1JlZyksIFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpLCBmaXJzdFZhckFyZ09m
ZnNldCwgMCwgbV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncyks
IG9wLCBJbmxpbmVDYWxsRnJhbWU6OnZhcmFyZ3NLaW5kRm9yKGtpbmQpLCBwcmVkaWN0aW9uKSkg
ewogICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQogICAgICAgICAgICAgbV9ncmFw
aC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgpOworICAgICAgICBhZGRUb0dyYXBo
KEtpbGxIaW50LCBPcEluZm8oY2FsbGVlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
CkBAIC0xMTc2LDggKzExODQsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9u
Q2hlY2tzKAogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1lbnRQaGFudG9tcyhpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKIHsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpCi0gICAg
ICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGks
IHJlZ2lzdGVyT2Zmc2V0KSkpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXM7ICsraSkgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpOworICAgICAgICBhZGRU
b0dyYXBoKEtpbGxIaW50LCBPcEluZm8ocmVnLm9mZnNldCgpKSk7CisgICAgICAgIGFkZFRvR3Jh
cGgoUGhhbnRvbSwgZ2V0KHJlZykpOworICAgIH0KIH0KIAogdW5zaWduZWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMTM1OSw3ICsxMzcw
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYQogICAgIC8vIElm
IHRoZXJlIHdhcyBhIHJldHVybiwgYnV0IG5vIGVhcmx5IHJldHVybnMsIHRoZW4gd2UncmUgZG9u
ZS4gV2UgYWxsb3cgcGFyc2luZyBvZgogICAgIC8vIHRoZSBjYWxsZXIgdG8gY29udGludWUgaW4g
d2hhdGV2ZXIgYmFzaWMgYmxvY2sgd2UncmUgaW4gcmlnaHQgbm93LgogICAgIGlmICghaW5saW5l
U3RhY2tFbnRyeS5tX2RpZEVhcmx5UmV0dXJuICYmIGlubGluZVN0YWNrRW50cnkubV9kaWRSZXR1
cm4pIHsKLSAgICAgICAgQVNTRVJUKGxhc3RCbG9jay0+aXNFbXB0eSgpIHx8ICFsYXN0QmxvY2st
Pmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKKyAgICAgICAgQVNTRVJUKGxhc3RCbG9jay0+aXNFbXB0
eSgpIHx8ICFsYXN0QmxvY2stPnRlcm1pbmFsKCkpOwogICAgICAgICAKICAgICAgICAgLy8gSWYg
d2UgY3JlYXRlZCBuZXcgYmxvY2tzIHRoZW4gdGhlIGxhc3QgYmxvY2sgbmVlZHMgbGlua2luZywg
YnV0IGluIHRoZQogICAgICAgICAvLyBjYWxsZXIuIEl0IGRvZXNuJ3QgbmVlZCB0byBiZSBsaW5r
ZWQgdG8sIGJ1dCBpdCBuZWVkcyBvdXRnb2luZyBsaW5rcy4KQEAgLTEzODAsNyArMTM5MSw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2EKICAgICB9CiAgICAgCiAg
ICAgLy8gSWYgd2UgZ2V0IHRvIHRoaXMgcG9pbnQgdGhlbiBhbGwgYmxvY2tzIG11c3QgZW5kIGlu
IHNvbWUgc29ydCBvZiB0ZXJtaW5hbHMuCi0gICAgQVNTRVJUKGxhc3RCbG9jay0+bGFzdCgpLT5p
c1Rlcm1pbmFsKCkpOworICAgIEFTU0VSVChsYXN0QmxvY2stPnRlcm1pbmFsKCkpOwogCiAgICAg
Ly8gTmVlZCB0byBjcmVhdGUgYSBuZXcgYmFzaWMgYmxvY2sgZm9yIHRoZSBjb250aW51YXRpb24g
YXQgdGhlIGNhbGxlci4KICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihu
ZXcgQmFzaWNCbG9jayhuZXh0T2Zmc2V0LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIFBO
YU4pKTsKQEAgLTEzOTEsNyArMTQwMiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNh
bGwoTm9kZSogY2EKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9ja1RvTGluayA9IGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tpXS5tX2Jsb2Nr
OwogICAgICAgICBBU1NFUlQoIWJsb2NrVG9MaW5rLT5pc0xpbmtlZCk7Ci0gICAgICAgIE5vZGUq
IG5vZGUgPSBibG9ja1RvTGluay0+bGFzdCgpOworICAgICAgICBOb2RlKiBub2RlID0gYmxvY2tU
b0xpbmstPnRlcm1pbmFsKCk7CiAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IEp1bXApOwog
ICAgICAgICBBU1NFUlQoIW5vZGUtPnRhcmdldEJsb2NrKCkpOwogICAgICAgICBub2RlLT50YXJn
ZXRCbG9jaygpID0gYmxvY2suZ2V0KCk7CkBAIC0xODAyLDcgKzE4MTMsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVh
dGlvbkJsb2NrLmdldCgpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGxhbmRpbmdCbG9j
a3Muc2l6ZSgpOyBpLS07KQotICAgICAgICBsYW5kaW5nQmxvY2tzW2ldLT5sYXN0KCktPnRhcmdl
dEJsb2NrKCkgPSBjb250aW51YXRpb25CbG9jay5nZXQoKTsKKyAgICAgICAgbGFuZGluZ0Jsb2Nr
c1tpXS0+dGVybWluYWwoKS0+dGFyZ2V0QmxvY2soKSA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgp
OwogICAgIAogICAgIG1fY3VycmVudEluZGV4ID0gb2xkT2Zmc2V0OwogICAgIApAQCAtMjU3MSw3
ICsyNTgyLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICB9CiAgICAgfQogCi0gICAgd2hpbGUgKHRydWUpIHsKKyAgICBib29sIGNvbnRpbnVlSW5M
b29wID0gdHJ1ZTsKKyAgICB3aGlsZSAoY29udGludWVJbkxvb3ApIHsKICAgICAgICAgcHJvY2Vz
c1NldExvY2FsUXVldWUoKTsKICAgICAgICAgCiAgICAgICAgIC8vIERvbid0IGV4dGVuZCBvdmVy
IGp1bXAgZGVzdGluYXRpb25zLgpAQCAtMzg0MywxNCArMzg1NSwyMiBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2J5dGVjb2RlS2lsbHMuZm9yRWFjaE9w
ZXJhbmRLaWxsZWRBdCgKKyAgICAgICAgICAgIGN1cnJlbnRJbnN0cnVjdGlvbiwgLy8gVXNlIGN1
cnJlbnRJbnN0cnVjdGlvbiBzaW5jZSB3ZSBhbHJlYWR5IGNsb2JiZXJlZCBtX2N1cnJlbnRJbmRl
eC4KKyAgICAgICAgICAgIFsmXSAoVmlydHVhbFJlZ2lzdGVyIHJlZykgeworICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoS2lsbEhpbnQsIE9wSW5mbyhyZWcub2Zmc2V0KCkpKTsKKyAgICAgICAg
ICAgIH0pOwogICAgIH0KKyAgICAKKyAgICByZXR1cm4gc2hvdWxkQ29udGludWVQYXJzaW5nOwog
fQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIFZl
Y3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxlVGFyZ2V0cykKIHsKICAgICBBU1NFUlQoIWJsb2Nr
LT5pc0xpbmtlZCk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbXB0eSgpKTsKLSAgICBOb2RlKiBu
b2RlID0gYmxvY2stPmxhc3QoKTsKKyAgICBOb2RlKiBub2RlID0gYmxvY2stPnRlcm1pbmFsKCk7
CiAgICAgQVNTRVJUKG5vZGUtPmlzVGVybWluYWwoKSk7CiAgICAgCiAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7CkBAIC0zOTIwLDYgKzM5NDAsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3Rh
Y2tFbnRyeTo6SW5saW5lCiAgICAgOiBtX2J5dGVDb2RlUGFyc2VyKGJ5dGVDb2RlUGFyc2VyKQog
ICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKHByb2Zp
bGVkQmxvY2spCisgICAgLCBtX2J5dGVjb2RlS2lsbHMoYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgu
a2lsbHNGb3IoY29kZUJsb2NrKSkKICAgICAsIG1fY2FsbHNpdGVCbG9ja0hlYWQoY2FsbHNpdGVC
bG9ja0hlYWQpCiAgICAgLCBtX3JldHVyblZhbHVlKHJldHVyblZhbHVlVlIpCiAgICAgLCBtX2Rp
ZFJldHVybihmYWxzZSkKQEAgLTQxMzAsNyArNDE1MSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgIC8vIGFyZSBhdCB0aGUgZW5kIG9mIGFuIGlu
bGluZSBmdW5jdGlvbiwgb3Igd2UgcmVhbGl6ZWQgdGhhdCB3ZQogICAgICAgICAgICAgLy8gc2hv
dWxkIHN0b3AgcGFyc2luZyBiZWNhdXNlIHRoZXJlIHdhcyBhIHJldHVybiBpbiB0aGUgZmlyc3QK
ICAgICAgICAgICAgIC8vIGJhc2ljIGJsb2NrLgotICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVu
dEJsb2NrLT5pc0VtcHR5KCkgfHwgbV9jdXJyZW50QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgp
IHx8IChtX2N1cnJlbnRJbmRleCA9PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSAm
JiBpbmxpbmVDYWxsRnJhbWUoKSkgfHwgIXNob3VsZENvbnRpbnVlUGFyc2luZyk7CisgICAgICAg
ICAgICBBU1NFUlQobV9jdXJyZW50QmxvY2stPmlzRW1wdHkoKSB8fCBtX2N1cnJlbnRCbG9jay0+
dGVybWluYWwoKSB8fCAobV9jdXJyZW50SW5kZXggPT0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5zaXplKCkgJiYgaW5saW5lQ2FsbEZyYW1lKCkpIHx8ICFzaG91bGRDb250aW51ZVBhcnNpbmcp
OwogCiAgICAgICAgICAgICBpZiAoIXNob3VsZENvbnRpbnVlUGFyc2luZykKICAgICAgICAgICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4Mjg1NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNSZWFj
aGFibGUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgc3dpdGNoIChibG9jay0+bGFz
dCgpLT5vcCgpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChibG9jay0+dGVybWluYWwoKS0+
b3AoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgSnVtcDogewogICAgICAgICAgICAgICAgICAg
ICAvLyBTdWNjZXNzb3Igd2l0aCBvbmUgcHJlZGVjZXNzb3IgLT4gbWVyZ2UuCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChibG9jay0+c3VjY2Vzc29yKDApLT5wcmVkZWNlc3NvcnMuc2l6ZSgpID09
IDEpIHsKQEAgLTk5LDE3ICs5OSwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGV4dHJlbWVMb2dnaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRl
dGhyZWFkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoYmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOb2RlT3JpZ2luIGJvdW5kYXJ5Tm9kZU9yaWdpbiA9IGJsb2NrLT5s
YXN0KCktPm9yaWdpbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+bGFzdCgp
LT5jb252ZXJ0VG9QaGFudG9tKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGJsb2NrLT5sYXN0KCktPnJlZkNvdW50KCkgPT0gMSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqZXR0aXNvbkJsb2NrKGJsb2NrLCBqZXR0
aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Tm9kZU9yaWdpbik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTm9kZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2Rl
KiB0ZXJtaW5hbCA9IGJsb2NrLT50ZXJtaW5hbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCh0ZXJtaW5hbC0+aXNUZXJtaW5hbCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOb2RlT3JpZ2luIGJvdW5kYXJ5Tm9kZU9yaWdpbiA9IHRlcm1pbmFsLT5vcmlnaW47
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kQmVmb3JlVGVybWlu
YWwoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBK
dW1wLCBib3VuZGFyeU5vZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE9wSW5mbyh0YXJnZXRCbG9jaykpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVy
bWluYWwtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQodGVybWluYWwtPnJlZkNvdW50KCkgPT0gMSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT50ZXJtaW5h
bCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGpldHRpc29uQmxvY2soYmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlOb2RlT3Jp
Z2luKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IGlubmVyQ2hhbmdlZCA9IG91dGVyQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTEyOSw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIFN3aXRjaDogewot
ICAgICAgICAgICAgICAgICAgICBTd2l0Y2hEYXRhKiBkYXRhID0gYmxvY2stPmxhc3QoKS0+c3dp
dGNoRGF0YSgpOworICAgICAgICAgICAgICAgICAgICBTd2l0Y2hEYXRhKiBkYXRhID0gYmxvY2st
PnRlcm1pbmFsKCktPnN3aXRjaERhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIC8vIFBydW5lIG91dCBjYXNlcyB0aGF0IGVuZCB1cCBqdW1waW5nIHRvIGRl
ZmF1bHQuCiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRh
LT5jYXNlcy5zaXplKCk7ICsraSkgewpAQCAtMTQ5LDggKzE1Myw4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgLy8gU3dpdGNoIG9uIGNvbnN0YW50IC0+IGpldHRpc29uIGFsbCBvdGhlciB0YXJnZXRzIGFu
ZCBtZXJnZS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5sYXN0KCktPmNoaWxkMSgp
LT5oYXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSog
dmFsdWUgPSBibG9jay0+bGFzdCgpLT5jaGlsZDEoKS0+Y29uc3RhbnQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpLT5jaGlsZDEoKS0+aGFzQ29uc3RhbnQoKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIHZhbHVlID0gYmxvY2stPnRl
cm1pbmFsKCktPmNoaWxkMSgpLT5jb25zdGFudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
VHJpU3RhdGUgZm91bmQgPSBGYWxzZVRyaVN0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICAg
QmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gZGF0YS0+Y2FzZXMuc2l6ZSgpOyBmb3VuZCA9PSBGYWxzZVRyaVN0YXRl
ICYmIGktLTspIHsKQEAgLTE4MywxMiArMTg3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5kZXRocmVhZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3JpZ2lu
ID0gYmxvY2stPmxhc3QoKS0+b3JpZ2luOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJs
b2NrLT5sYXN0KCktPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOb2RlKiB0ZXJtaW5hbCA9IGJsb2NrLT50ZXJtaW5hbCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5vZGVPcmlnaW4gYm91bmRhcnlOb2RlT3JpZ2luID0gdGVybWluYWwtPm9y
aWdpbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kQmVmb3JlVGVy
bWluYWwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25l
LCBKdW1wLCBib3VuZGFyeU5vZGVPcmlnaW4sIE9wSW5mbyh0YXJnZXRCbG9jaykpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmFsLT5jb252ZXJ0VG9QaGFudG9tKCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gamV0dGlzb25lZEJsb2Nr
cy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpldHRpc29u
QmxvY2soYmxvY2ssIGpldHRpc29uZWRCbG9ja3NbaV0sIGJvdW5kYXJ5Tm9kZU9yaWdpbik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5vZGUoCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBKdW1wLCBib3VuZGFyeU5v
ZGVPcmlnaW4sIE9wSW5mbyh0YXJnZXRCbG9jaykpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChibG9jay0+dGVybWluYWwo
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBp
bm5lckNoYW5nZWQgPSBvdXRlckNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC0yNTMsMTQgKzI2MCwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9n
cmFwaC5kZXRocmVhZCgpOwogICAgICAgICAgICAgbWVyZ2VCbG9ja3MoYmxvY2ssIHRhcmdldEJs
b2NrLCBub0Jsb2NrcygpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUqIGJy
YW5jaCA9IGJsb2NrLT5sYXN0KCk7CisgICAgICAgICAgICBOb2RlKiBicmFuY2ggPSBibG9jay0+
dGVybWluYWwoKTsKKworICAgICAgICAgICAgYmxvY2stPmFwcGVuZEJlZm9yZVRlcm1pbmFsKAor
ICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBKdW1wLCBicmFuY2gtPm9yaWdpbiwg
T3BJbmZvKHRhcmdldEJsb2NrKSk7CisKICAgICAgICAgICAgIEFTU0VSVChicmFuY2gtPmlzVGVy
bWluYWwoKSk7CiAgICAgICAgICAgICBBU1NFUlQoYnJhbmNoLT5vcCgpID09IEJyYW5jaCB8fCBi
cmFuY2gtPm9wKCkgPT0gU3dpdGNoKTsKICAgICAgICAgICAgIGJyYW5jaC0+Y29udmVydFRvUGhh
bnRvbSgpOwogICAgICAgICAgICAgQVNTRVJUKGJyYW5jaC0+cmVmQ291bnQoKSA9PSAxKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgYmxvY2stPmFwcGVuZE5vZGUoCi0gICAgICAgICAgICAg
ICAgbV9ncmFwaCwgU3BlY05vbmUsIEp1bXAsIGJyYW5jaC0+b3JpZ2luLCBPcEluZm8odGFyZ2V0
QmxvY2spKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9jay0+dGVybWluYWwoKSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkBAIC0zMTgsMTAgKzMyOCwxMSBAQCBwcml2YXRlOgogICAgICAgICAK
ICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZXJtaW5hbCBvZiBmaXJzdEJsb2NrIHNpbmNlIHdlIGRv
bid0IG5lZWQgaXQgYW55bW9yZS4gV2VsbCwgd2UgZG9uJ3QKICAgICAgICAgLy8gcmVhbGx5IHJl
bW92ZSBpdDsgd2UgYWN0dWFsbHkgdHVybiBpdCBpbnRvIGEgUGhhbnRvbS4KLSAgICAgICAgQVNT
RVJUKGZpcnN0QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5hbCgpKTsKLSAgICAgICAgTm9kZU9yaWdp
biBib3VuZGFyeU5vZGVPcmlnaW4gPSBmaXJzdEJsb2NrLT5sYXN0KCktPm9yaWdpbjsKLSAgICAg
ICAgZmlyc3RCbG9jay0+bGFzdCgpLT5jb252ZXJ0VG9QaGFudG9tKCk7Ci0gICAgICAgIEFTU0VS
VChmaXJzdEJsb2NrLT5sYXN0KCktPnJlZkNvdW50KCkgPT0gMSk7CisgICAgICAgIE5vZGUqIHRl
cm1pbmFsID0gZmlyc3RCbG9jay0+dGVybWluYWwoKTsKKyAgICAgICAgQVNTRVJUKHRlcm1pbmFs
LT5pc1Rlcm1pbmFsKCkpOworICAgICAgICBOb2RlT3JpZ2luIGJvdW5kYXJ5Tm9kZU9yaWdpbiA9
IHRlcm1pbmFsLT5vcmlnaW47CisgICAgICAgIHRlcm1pbmFsLT5jb252ZXJ0VG9QaGFudG9tKCk7
CisgICAgICAgIEFTU0VSVCh0ZXJtaW5hbC0+cmVmQ291bnQoKSA9PSAxKTsKICAgICAgICAgCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGpldHRpc29uZWRCbG9ja3Muc2l6ZSgpOyBpLS07KSB7
CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2sgPSBqZXR0aXNvbmVkQmxv
Y2tzW2ldOwpAQCAtMzQyLDcgKzM1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2Vjb25kQmxvY2stPnNpemUoKTsgKytpKQogICAgICAgICAgICAgZmlyc3RC
bG9jay0+YXBwZW5kKHNlY29uZEJsb2NrLT5hdChpKSk7CiAgICAgICAgIAotICAgICAgICBBU1NF
UlQoZmlyc3RCbG9jay0+bGFzdCgpLT5pc1Rlcm1pbmFsKCkpOworICAgICAgICBBU1NFUlQoZmly
c3RCbG9jay0+dGVybWluYWwoKS0+aXNUZXJtaW5hbCgpKTsKICAgICAgICAgCiAgICAgICAgIC8v
IEZpeCB0aGUgcHJlZGVjZXNzb3JzIG9mIG15IG5ldyBzdWNjZXNzb3JzLiBUaGlzIGlzIHRyaWNr
eSwgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIHJlc2V0CiAgICAgICAgIC8vIGFsbCBwcmVkZWNlc3Nv
cnMgYW55d2F5IGR1ZSB0byByZWFjaGFiaWxpdHkgYW5hbHlzaXMuIEJ1dCB3ZSBuZWVkIHRvIGZp
eCB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNS
ZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTgyODU3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYzLDYgKzM2MywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fYXZhaWxhYmxlRm9y
T1NSLm9wZXJhbmQobm9kZS0+dW5saW5rZWRMb2NhbCgpKSA9IG5vZGUtPmNoaWxkMSgpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBa
b21iaWVIaW50OgorICAgICAgICAgICAgICAgIG1fYXZhaWxhYmxlRm9yT1NSLm9wZXJhbmQobm9k
ZS0+dW5saW5rZWRMb2NhbCgpKSA9IEVkZ2UoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkocmV2aXNpb24gMTgyODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsNyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgICAKICAgICBjYXNl
IE1vdkhpbnQ6CiAgICAgY2FzZSBab21iaWVIaW50OgorICAgIGNhc2UgS2lsbEhpbnQ6CiAgICAg
Y2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBVcHNpbG9uOgogICAgIGNhc2UgUGhpOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxODI4NTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzQsNiArMjc0LDI5IEBAIHZvaWQgc3RhcnRDcmFzaGluZygpOwogCiBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGlzQ3Jhc2hpbmcoKTsKIAorc3RydWN0IE5vZGVBbmRJbmRleCB7CisgICAgTm9kZUFu
ZEluZGV4KCkKKyAgICAgICAgOiBub2RlKG51bGxwdHIpCisgICAgICAgICwgaW5kZXgoVUlOVF9N
QVgpCisgICAgeworICAgIH0KKyAgICAKKyAgICBOb2RlQW5kSW5kZXgoTm9kZSogbm9kZSwgdW5z
aWduZWQgaW5kZXgpCisgICAgICAgIDogbm9kZShub2RlKQorICAgICAgICAsIGluZGV4KGluZGV4
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFub2RlID09IChpbmRleCA9PSBVSU5UX01BWCkpOwor
ICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gIW5vZGU7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGU7CisgICAgdW5zaWduZWQg
aW5kZXg7Cit9OworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKIG5hbWVzcGFjZSBXVEYg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlz
aW9uIDE4Mjg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsMTggKzE0OCwxMyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIC8vIENoZWNrIGlmIHdlIGhhZCBqdXN0IGtpbGxlZCBpdC4KICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPm9wKCkgPT0gUGhhbnRvbSB8fCBub2RlLT5jaGlsZDEoKS0+
b3AoKSA9PSBDaGVjaykgewogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1
bHRGbGFncyhab21iaWVIaW50KTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVmQ291
bnQoMSk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpID0gRWRnZSgpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBj
YXNlIFpvbWJpZUhpbnQ6IHsKLSAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2UgYXNzdW1l
IHRoYXQgRENFIHJ1bnMgb25seSBvbmNlLgotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKSB7CiAgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9k
ZS0+Zmlyc3RDaGlsZCgpICsgbm9kZS0+bnVtQ2hpbGRyZW4oKTsgY2hpbGRJZHgrKykgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMTgyODU3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDksNiArMjA5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAg
IGNhc2UgUHV0VG9Bcmd1bWVudHM6CisgICAgY2FzZSBLaWxsSGludDoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxODI4NTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjM5LDYgKzEyMzksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFN0b3JlQmFycmll
cjoKICAgICAgICAgY2FzZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOgogICAgICAgICBjYXNl
IE1vdkhpbnQ6CisgICAgICAgIGNhc2UgS2lsbEhpbnQ6CiAgICAgICAgIGNhc2UgWm9tYmllSGlu
dDoKICAgICAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAkocmV2aXNpb24gMTgy
ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCwxMyArNDgsMTMgQEAgdm9pZCBmb3JBbGxMaXZlTm9kZXNBdFRhaWwo
R3JhcGgmIGdyYXBoLAogICAgICAgICAgICAgZnVuY3Rvcihub2RlKTsKICAgICB9CiAgICAgCi0g
ICAgREZHX0FTU0VSVChncmFwaCwgYmxvY2stPmxhc3QoKSwgYmxvY2stPmxhc3QoKS0+b3JpZ2lu
LmZvckV4aXQuaXNTZXQoKSk7CisgICAgREZHX0FTU0VSVChncmFwaCwgYmxvY2stPnRlcm1pbmFs
KCksIGJsb2NrLT50ZXJtaW5hbCgpLT5vcmlnaW4uZm9yRXhpdC5pc1NldCgpKTsKICAgICAKICAg
ICBBdmFpbGFiaWxpdHlNYXAmIGF2YWlsYWJpbGl0eU1hcCA9IGJsb2NrLT5zc2EtPmF2YWlsYWJp
bGl0eUF0VGFpbDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhdmFpbGFiaWxpdHlNYXAubV9sb2Nh
bHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSBhdmFpbGFi
aWxpdHlNYXAubV9sb2NhbHMudmlydHVhbFJlZ2lzdGVyRm9ySW5kZXgoaSk7CiAgICAgICAgIAot
ICAgICAgICBpZiAoIWdyYXBoLmlzTGl2ZUluQnl0ZWNvZGUocmVnLCBibG9jay0+bGFzdCgpLT5v
cmlnaW4uZm9yRXhpdCkpCisgICAgICAgIGlmICghZ3JhcGguaXNMaXZlSW5CeXRlY29kZShyZWcs
IGJsb2NrLT50ZXJtaW5hbCgpLT5vcmlnaW4uZm9yRXhpdCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgCiAgICAgICAgIGF2YWlsYWJpbGl0eU1hcC5jbG9zZVN0YXJ0aW5nV2l0aExv
Y2FsKApAQCAtNzEsNDkgKzcxLDMxIEBAIHZvaWQgZm9yQWxsTGl2ZU5vZGVzQXRUYWlsKEdyYXBo
JiBncmFwaCwKICAgICB9CiB9CiAKKy8vIE5vdGUgdGhhdCB0aGlzIGRlZmluZXMgImtpbGwiIGlu
IHRoZSB1c3VhbCBsaWJlcmFsIHdheS4gSXQncyB2YWxpZCB0byBoYXZlIGEga2lsbCBmb2xsb3dl
ZCBieQorLy8gYW5vdGhlciBraWxsLiBJZiB5b3UgcmVhbGx5IHdhbnQgdG8gZmluZCB0aGUgKnJl
YWwqIGtpbGwsIHlvdSBuZWVkIGEgYmFja3dhcmRzIGFuYWx5c2lzIHRvIGZpbmQKKy8vIHRoZSBs
YXN0IChpLmUuIGZpcnN0LWJhY2t3YXJkcykgb25lLiBXZSBkbyBpdCB0aGlzIHdheSBiZWNhdXNl
IGl0J3MgYSBsb3QgbW9yZSBlZmZpY2llbnQgYW5kIGFsbAorLy8gb2YgdGhlIHVzZXJzIGNhbiBi
ZSBuYXR1cmFsbHkgYWRhcHRlZCB0byBpdCAtIGVpdGhlciBiZWNhdXNlIHRoZXkgdW5pZnkgdGhl
IHJlZ2lvbnMgaW1wbGllZCBieSBhbGwKKy8vIGtpbGxzIChsaWtlIEFyZ3VtZW50c0VsaW1pbmF0
aW9uUGhhc2UpIG9yIGJlY2F1c2UgdGhleSBkbyBhIGJhY2t3YXJkcyBhbmFseXNpcyBhbmQgaGF2
ZSBhIGNoZWFwCisvLyByZWR1bmRhbnQta2lsbCBjaGVjayAobGlrZSBNb3ZIaW50UmVtb3ZhbCku
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBmb3JBbGxLaWxsZWRPcGVyYW5kcyhH
cmFwaCYgZ3JhcGgsIENvZGVPcmlnaW4gYmVmb3JlLCBOb2RlKiBub2RlQWZ0ZXIsIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCit2b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRzKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZUFmdGVyLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIENvZGVPcmln
aW4gYWZ0ZXIgPSBub2RlQWZ0ZXItPm9yaWdpbi5mb3JFeGl0OwotICAgIAotICAgIGlmICghYmVm
b3JlKSB7Ci0gICAgICAgIGlmICghYWZ0ZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IC8vIFRoZSB0cnVlIGJlZm9yZS1vcmlnaW4gaXMgdGhlIG9yaWdpbiBhdCBwcmVkZWNlc3NvcnMg
dGhhdCBqdW1wIHRvIHVzLiBCdXQgdGhlcmUgY2FuIGJlCi0gICAgICAgIC8vIG1hbnkgc3VjaCBw
cmVkZWNlc3NvcnMgYW5kIHRoZXkgd2lsbCBsaWtlbHkgYWxsIGhhdmUgYSBkaWZmZXJlbnQgb3Jp
Z2luLiBTbywgaXQncyBiZXR0ZXIKLSAgICAgICAgLy8gdG8gZG8gdGhlIGNvbnNlcnZhdGl2ZSB0
aGluZy4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZ3JhcGguYmxvY2soMCktPnZhcmlhYmxl
c0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyBpLS07KSB7Ci0gICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgcmVnID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSk7Ci0gICAgICAgICAgICBpZiAo
Z3JhcGguaXNMaXZlSW5CeXRlY29kZShyZWcsIGFmdGVyKSkKLSAgICAgICAgICAgICAgICBmdW5j
dG9yKHJlZyk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBDb2RlT3Jp
Z2luIGFmdGVyT3JpZ2luID0gbm9kZUFmdGVyLT5vcmlnaW4uZm9yRXhpdDsKICAgICAKICAgICAv
LyBJZiB3ZSBNb3ZIaW50IHNvbWV0aGluZyB0aGF0IGlzIGxpdmUgYXQgdGhlIHRpbWUsIHRoZW4g
d2Uga2lsbCB0aGUgb2xkIHZhbHVlLgogICAgIFZpcnR1YWxSZWdpc3RlciBhbHJlYWR5Tm90ZWQ7
CiAgICAgaWYgKG5vZGVBZnRlci0+Y29udGFpbnNNb3ZIaW50KCkpIHsKICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHJlZyA9IG5vZGVBZnRlci0+dW5saW5rZWRMb2NhbCgpOwotICAgICAgICBpZiAo
Z3JhcGguaXNMaXZlSW5CeXRlY29kZShyZWcsIGFmdGVyKSkgeworICAgICAgICBpZiAoZ3JhcGgu
aXNMaXZlSW5CeXRlY29kZShyZWcsIGFmdGVyT3JpZ2luKSkgewogICAgICAgICAgICAgZnVuY3Rv
cihyZWcpOwogICAgICAgICAgICAgYWxyZWFkeU5vdGVkID0gcmVnOwogICAgICAgICB9CiAgICAg
fQogICAgIAotICAgIGlmIChiZWZvcmUgPT0gYWZ0ZXIpCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICAvLyBiZWZvcmUgY291bGQgYmUgdW5zZXQgZXZlbiBpZiBhZnRlciBpcywgYnV0IHRoZSBv
cHBvc2l0ZSBjYW5ub3QgaGFwcGVuLgotICAgIEFTU0VSVCghIWFmdGVyKTsKLSAgICAKLSAgICAv
LyBEZXRlY3Qga2lsbHMgdGhlIHN1cGVyIGNvbnNlcnZhdGl2ZSB3YXk6IGl0IGlzIGtpbGxlZCBp
ZiBpdCB3YXMgbGl2ZSBiZWZvcmUgYW5kIGRlYWQgYWZ0ZXIuCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyBpLS07
KSB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChpKTsKLSAgICAgICAgaWYgKHJlZyA9PSBhbHJlYWR5Tm90ZWQpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgaWYgKGdyYXBoLmlzTGl2ZUluQnl0ZWNvZGUocmVnLCBiZWZvcmUpICYm
ICFncmFwaC5pc0xpdmVJbkJ5dGVjb2RlKHJlZywgYWZ0ZXIpKQotICAgICAgICAgICAgZnVuY3Rv
cihyZWcpOwotICAgIH0KKyAgICAvLyBJZiB3ZSBLaWxsSGludCBzb21ldGhpbmcsIGFzc3VtZSBs
aWJlcmFsbHkgdGhhdCB0aGlzIGlzIGEga2lsbCB0aGF0IHRoZSB1c2VyIHdhbnRzIHRvIGtub3cK
KyAgICAvLyBhYm91dC4gU2VlIGNvbW1lbnQgYWJvdmUgdGhpcyBmdW5jdGlvbi4KKyAgICBpZiAo
bm9kZUFmdGVyLT5vcCgpID09IEtpbGxIaW50KQorICAgICAgICBmdW5jdG9yKG5vZGVBZnRlci0+
dW5saW5rZWRMb2NhbCgpKTsKIH0KICAgICAKIC8vIFRlbGxzIHlvdSBhbGwgb2YgdGhlIG5vZGVz
IHRoYXQgd291bGQgbm8gbG9uZ2VyIGJlIGxpdmUgYWNyb3NzIHRoZSBub2RlIGF0IHRoaXMgbm9k
ZUluZGV4LgpAQCAtMTQwLDEyICsxMjIsOCBAQCB2b2lkIGZvckFsbEtpbGxlZE5vZGVzQXROb2Rl
SW5kZXgoCiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogCi0gICAgQ29kZU9yaWdpbiBiZWZv
cmU7Ci0gICAgaWYgKG5vZGVJbmRleCkKLSAgICAgICAgYmVmb3JlID0gYmxvY2stPmF0KG5vZGVJ
bmRleCAtIDEpLT5vcmlnaW4uZm9yRXhpdDsKLQogICAgIGZvckFsbEtpbGxlZE9wZXJhbmRzKAot
ICAgICAgICBncmFwaCwgYmVmb3JlLCBub2RlLAorICAgICAgICBncmFwaCwgbm9kZSwKICAgICAg
ICAgWyZdIChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSB7CiAgICAgICAgICAgICBhdmFpbGFiaWxpdHlN
YXAuY2xvc2VTdGFydGluZ1dpdGhMb2NhbCgKICAgICAgICAgICAgICAgICByZWcsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTgyODU3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3NSwxMSArMzc1LDE0IEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVh
bSYKICAgICAgICAgb3V0LnByaW50KCIgIiwgKmJsb2NrLT5wcmVkZWNlc3NvcnNbaV0pOwogICAg
IG91dC5wcmludCgiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBTdWNjZXNzb3JzOiIp
OwotICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkg
ewotICAgICAgICBvdXQucHJpbnQoIiAiLCAqc3VjY2Vzc29yKTsKLSAgICAgICAgaWYgKG1fcHJl
UG9zdE51bWJlcmluZy5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBvdXQucHJpbnQoIiAoIiwgbV9w
cmVQb3N0TnVtYmVyaW5nLmVkZ2VLaW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwotICAgIH0K
KyAgICBpZiAoYmxvY2stPnRlcm1pbmFsKCkpIHsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBz
dWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICBvdXQucHJpbnQo
IiAiLCAqc3VjY2Vzc29yKTsKKyAgICAgICAgICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcuaXNW
YWxpZCgpKQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBtX3ByZVBvc3ROdW1iZXJp
bmcuZWRnZUtpbmQoYmxvY2ssIHN1Y2Nlc3NvciksICIpIik7CisgICAgICAgIH0KKyAgICB9IGVs
c2UKKyAgICAgICAgb3V0LnByaW50KCIgPGludmFsaWQ+Iik7CiAgICAgb3V0LnByaW50KCJcbiIp
OwogICAgIGlmIChtX2RvbWluYXRvcnMuaXNWYWxpZCgpKSB7CiAgICAgICAgIG91dC5wcmludChw
cmVmaXgsICIgIERvbWluYXRlZCBieTogIiwgbV9kb21pbmF0b3JzLmRvbWluYXRvcnNPZihibG9j
ayksICJcbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJz
dHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDE4Mjg1NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2Uo
QmFzaWNCbAogCiBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUb1N1Y2Nl
c3NvcnMoQmFzaWNCbG9jayogYmFzaWNCbG9jaykKIHsKLSAgICBOb2RlKiB0ZXJtaW5hbCA9IGJh
c2ljQmxvY2stPmxhc3QoKTsKKyAgICBOb2RlKiB0ZXJtaW5hbCA9IGJhc2ljQmxvY2stPnRlcm1p
bmFsKCk7CiAgICAgCiAgICAgQVNTRVJUKHRlcm1pbmFsLT5pc1Rlcm1pbmFsKCkpOwogICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkocmV2aXNp
b24gMTgyODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgcHJlSGVhZGVyID0gcHJlZGVjZXNzb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgcHJlSGVhZGVyLT5sYXN0KCksIHBy
ZUhlYWRlci0+bGFzdCgpLT5vcCgpID09IEp1bXApOworICAgICAgICAgICAgREZHX0FTU0VSVCht
X2dyYXBoLCBwcmVIZWFkZXItPnRlcm1pbmFsKCksIHByZUhlYWRlci0+dGVybWluYWwoKS0+b3Ao
KSA9PSBKdW1wKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZGF0YS5wcmVIZWFkZXIgPSBw
cmVIZWFkZXI7CiAgICAgICAgIH0KQEAgLTIzNywxMCArMjM3LDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGRhdGEucHJl
SGVhZGVyLT5pbnNlcnRCZWZvcmVMYXN0KG5vZGUpOworICAgICAgICBkYXRhLnByZUhlYWRlci0+
aW5zZXJ0QmVmb3JlVGVybWluYWwobm9kZSk7CiAgICAgICAgIG5vZGUtPm93bmVyID0gZGF0YS5w
cmVIZWFkZXI7CiAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luYWxPcmlnaW4gPSBub2RlLT5vcmln
aW47Ci0gICAgICAgIG5vZGUtPm9yaWdpbi5mb3JFeGl0ID0gZGF0YS5wcmVIZWFkZXItPmxhc3Qo
KS0+b3JpZ2luLmZvckV4aXQ7CisgICAgICAgIG5vZGUtPm9yaWdpbi5mb3JFeGl0ID0gZGF0YS5w
cmVIZWFkZXItPnRlcm1pbmFsKCktPm9yaWdpbi5mb3JFeGl0OwogICAgICAgICAKICAgICAgICAg
Ly8gTW9kaWZ5IHRoZSBzdGF0ZXMgYXQgdGhlIGVuZCBvZiB0aGUgcHJlSGVhZGVyIG9mIHRoZSBs
b29wIHdlIGhvaXN0ZWQgdG8sCiAgICAgICAgIC8vIGFuZCBhbGwgcHJlLWhlYWRlcnMgaW5zaWRl
IHRoZSBsb29wLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
CShyZXZpc2lvbiAxODI4NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4
aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIGJvb2wgbWF5RXhpdChHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIFBoYW50
b21Mb2NhbDoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgorICAgIGNhc2UgS2lsbEhpbnQ6CiAg
ICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE4Mjg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NDgsNiArNzQ4LDcgQEAgc3Ry
dWN0IE5vZGUgewogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgIGNhc2UgWm9tYmllSGlu
dDoKICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CisgICAgICAgIGNhc2UgS2lsbEhpbnQ6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJl
dmlzaW9uIDE4Mjg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAgICAgbWFjcm8oR2V0U3RhY2ssIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAg
ICBtYWNybyhNb3ZIaW50LCAwKSBcCi0gICAgbWFjcm8oWm9tYmllSGludCwgMCkgXAorICAgIG1h
Y3JvKFpvbWJpZUhpbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhLaWxsSGludCwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b20sIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhIYXJkUGhhbnRvbSwgTm9kZU11c3RHZW5lcmF0ZSkgLyogTGlrZSBQaGFu
dG9tLCBidXQgd2UgbmV2ZXIgcmVtb3ZlIGFueSBvZiBpdHMgY2hpbGRyZW4uICovIFwKICAgICBt
YWNybyhDaGVjaywgTm9kZU11c3RHZW5lcmF0ZSkgLyogVXNlZCBpZiB3ZSB3YW50IGp1c3QgYSB0
eXBlIGNoZWNrIGJ1dCBub3QgbGl2ZW5lc3MuIE5vbi1jaGVja2luZyB1c2VzIHdpbGwgYmUgcmVt
b3ZlZC4gKi9cCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4Mjg1
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Miw3ICszNTIsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IGhhbmRsZWQgdGhlIGNhc2Ugd2hlcmUgdGhl
IHByZWRlY2Vzc29yIGhhcyBtdWx0aXBsZSBzdWNjZXNzb3JzLgogICAgICAgICAgICAgICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIGJsb2NrLCBibG9jay0+bnVtU3VjY2Vzc29ycygpID09IDEp
OwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlTWF0ZXJp
YWxpemUoYWxsb2NhdGlvbiwgYmxvY2stPmxhc3QoKSk7CisgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZU1hdGVyaWFsaXplKGFsbG9jYXRpb24sIGJsb2NrLT50ZXJtaW5hbCgpKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ2MSw4ICs0NjEsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAot
ICAgICAgICAgICAgc2l6ZV90IHVwc2lsb25JbnNlcnRpb25Qb2ludCA9IGJsb2NrLT5zaXplKCkg
LSAxOwotICAgICAgICAgICAgTm9kZSogdXBzaWxvbldoZXJlID0gYmxvY2stPmxhc3QoKTsKKyAg
ICAgICAgICAgIHNpemVfdCB1cHNpbG9uSW5zZXJ0aW9uUG9pbnQgPSBibG9jay0+ZmluZFRlcm1p
bmFsKCkuaW5kZXg7CisgICAgICAgICAgICBOb2RlKiB1cHNpbG9uV2hlcmUgPSBibG9jay0+dGVy
bWluYWwoKTsKICAgICAgICAgICAgIE5vZGVPcmlnaW4gdXBzaWxvbk9yaWdpbiA9IHVwc2lsb25X
aGVyZS0+b3JpZ2luOwogICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3JCbG9j
ayA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKFNTQUNhbGN1
bGF0b3I6OkRlZiogcGhpRGVmIDogbV9zc2FDYWxjdWxhdG9yLnBoaXNGb3JCbG9jayhzdWNjZXNz
b3JCbG9jaykpIHsKQEAgLTcwOCw4ICs3MDgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBHb3R0YSBkcm9wIHNvbWUgVXBzaWxvbnMuCi0g
ICAgICAgICAgICBzaXplX3QgdXBzaWxvbkluc2VydGlvblBvaW50ID0gYmxvY2stPnNpemUoKSAt
IDE7Ci0gICAgICAgICAgICBOb2RlT3JpZ2luIHVwc2lsb25PcmlnaW4gPSBibG9jay0+bGFzdCgp
LT5vcmlnaW47CisgICAgICAgICAgICBzaXplX3QgdXBzaWxvbkluc2VydGlvblBvaW50ID0gYmxv
Y2stPmZpbmRUZXJtaW5hbCgpLmluZGV4OworICAgICAgICAgICAgTm9kZU9yaWdpbiB1cHNpbG9u
T3JpZ2luID0gYmxvY2stPnRlcm1pbmFsKCktPm9yaWdpbjsKICAgICAgICAgICAgIGZvciAoQmFz
aWNCbG9jayogc3VjY2Vzc29yQmxvY2sgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CiAgICAgICAg
ICAgICAgICAgZm9yIChTU0FDYWxjdWxhdG9yOjpEZWYqIHBoaURlZiA6IG1fc3NhQ2FsY3VsYXRv
ci5waGlzRm9yQmxvY2soc3VjY2Vzc29yQmxvY2spKSB7CiAgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIHBoaU5vZGUgPSBwaGlEZWYtPnZhbHVlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAkocmV2aXNpb24gMTgyODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0Nyw2ICs2NDcs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgICAgICBjYXNlIENv
bnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgICAgIGNhc2UgTW92SGludDoKKyAgICAgICAgY2Fz
ZSBLaWxsSGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICBjYXNlIExvYWRW
YXJhcmdzOgogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMTgy
ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0MSw4ICs0NDEsOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgfSB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHNp
emVfdCB1cHNpbG9uSW5zZXJ0aW9uUG9pbnQgPSBibG9jay0+c2l6ZSgpIC0gMTsKLSAgICAgICAg
ICAgIE5vZGVPcmlnaW4gdXBzaWxvbk9yaWdpbiA9IGJsb2NrLT5sYXN0KCktPm9yaWdpbjsKKyAg
ICAgICAgICAgIHNpemVfdCB1cHNpbG9uSW5zZXJ0aW9uUG9pbnQgPSBibG9jay0+ZmluZFRlcm1p
bmFsKCkuaW5kZXg7CisgICAgICAgICAgICBOb2RlT3JpZ2luIHVwc2lsb25PcmlnaW4gPSBibG9j
ay0+dGVybWluYWwoKS0+b3JpZ2luOwogICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNj
ZXNzb3JCbG9jayA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAgICAgICAgICAgICAgICBmb3Ig
KFNTQUNhbGN1bGF0b3I6OkRlZiogcGhpRGVmIDogc3NhQ2FsY3VsYXRvci5waGlzRm9yQmxvY2so
c3VjY2Vzc29yQmxvY2spKSB7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSBw
aGlEZWYtPnZhbHVlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNv
bnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODI4NTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzNSw4ICszMzUsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBzZWVtcyBkYW5n
ZXJvdXMgYmVjYXVzZSB0aGUgVXBzaWxvbiB3aWxsIGhhdmUgYSBjaGVja2luZyBVc2VLaW5kLiBC
dXQsIHdlIHdpbGwgbm90CiAgICAgICAgICAgICAvLyBhY3R1YWxseSBiZSBwZXJmb3JtaW5nIHRo
ZSBjaGVjayBhdCB0aGUgcG9pbnQgb2YgdGhlIFVwc2lsb247IHRoZSBjaGVjayB3aWxsCiAgICAg
ICAgICAgICAvLyBhbHJlYWR5IGhhdmUgYmVlbiBwZXJmb3JtZWQgYXQgdGhlIHBvaW50IHdoZXJl
IHRoZSBvcmlnaW5hbCBTZXRMb2NhbCB3YXMuCi0gICAgICAgICAgICBzaXplX3QgdXBzaWxvbklu
c2VydGlvblBvaW50ID0gYmxvY2stPnNpemUoKSAtIDE7Ci0gICAgICAgICAgICBOb2RlT3JpZ2lu
IHVwc2lsb25PcmlnaW4gPSBibG9jay0+bGFzdCgpLT5vcmlnaW47CisgICAgICAgICAgICBzaXpl
X3QgdXBzaWxvbkluc2VydGlvblBvaW50ID0gYmxvY2stPmZpbmRUZXJtaW5hbCgpLmluZGV4Owor
ICAgICAgICAgICAgTm9kZU9yaWdpbiB1cHNpbG9uT3JpZ2luID0gYmxvY2stPnRlcm1pbmFsKCkt
Pm9yaWdpbjsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgc3VjY2Vzc29ySW5kZXggPSBibG9j
ay0+bnVtU3VjY2Vzc29ycygpOyBzdWNjZXNzb3JJbmRleC0tOykgewogICAgICAgICAgICAgICAg
IEJhc2ljQmxvY2sqIHN1Y2Nlc3NvckJsb2NrID0gYmxvY2stPnN1Y2Nlc3NvcihzdWNjZXNzb3JJ
bmRleCk7CiAgICAgICAgICAgICAgICAgZm9yIChTU0FDYWxjdWxhdG9yOjpEZWYqIHBoaURlZiA6
IG1fY2FsY3VsYXRvci5waGlzRm9yQmxvY2soc3VjY2Vzc29yQmxvY2spKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTgy
ODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJh
Y3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoK
ICAgICBjYXNlIE1vdkhpbnQ6CisgICAgY2FzZSBLaWxsSGludDoKICAgICBjYXNlIFpvbWJpZUhp
bnQ6CiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2UgSGFyZFBoYW50b206CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAJKHJldmlzaW9uIDE4Mjg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MzIsMTEgKzE4MzIsMTcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBjYXNlIE1vdkhpbnQ6Ci0gICAgY2FzZSBab21iaWVIaW50OiB7Cisg
ICAgY2FzZSBNb3ZIaW50OiB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBab21iaWVIaW50Ogor
ICAgICAgICByZWNvcmRTZXRMb2NhbChtX2N1cnJlbnROb2RlLT51bmxpbmtlZExvY2FsKCksIFZp
cnR1YWxSZWdpc3RlcigpLCBEYXRhRm9ybWF0RGVhZCk7CisgICAgICAgIGJyZWFrOworICAgICAg
ICAKKyAgICBjYXNlIEtpbGxIaW50OgorICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2V0TG9j
YWw6IHsKICAgICAgICAgc3dpdGNoIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hG
b3JtYXQoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxODI4NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIx
LDExICsxOTIxLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIE1vdkhpbnQ6Ci0gICAg
Y2FzZSBab21iaWVIaW50OiB7CisgICAgY2FzZSBNb3ZIaW50OiB7CiAgICAgICAgIERGR19DUkFT
SChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBab21iaWVIaW50OiB7CisgICAgICAgIHJlY29y
ZFNldExvY2FsKG1fY3VycmVudE5vZGUtPnVubGlua2VkTG9jYWwoKSwgVmlydHVhbFJlZ2lzdGVy
KCksIERhdGFGb3JtYXREZWFkKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKKyAg
ICBjYXNlIEtpbGxIaW50OgorICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2V0TG9jYWw6IHsK
ICAgICAgICAgc3dpdGNoIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQo
KSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHJldmlzaW9uIDE4Mjg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQyLDExICsxNDQyLDYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICAgICAg
ICAgIGNvbXBpbGVNb3ZIaW50KG1fY3VycmVudE5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBab21iaWVIaW50OiB7Ci0gICAg
ICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobV9jdXJyZW50Tm9kZS0+dW5saW5rZWRMb2NhbCgp
LCBWaXJ0dWFsUmVnaXN0ZXIoKSwgRGF0YUZvcm1hdERlYWQpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgIGlmIChiZWxvbmdzSW5NaW5pZmllZEdyYXBoKG1fY3VycmVudE5vZGUtPm9wKCkpKQogICAg
ICAgICAgICAgICAgICAgICBtX21pbmlmaWVkR3JhcGgtPmFwcGVuZChNaW5pZmllZE5vZGU6OmZy
b21Ob2RlKG1fY3VycmVudE5vZGUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE4Mjg1NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNjgx
LDcgKzY4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIC8vIENoZWNrIGlmIHRo
ZSBsYXN0Tm9kZSBpcyBhIGJyYW5jaCBvbiB0aGlzIG5vZGUuCi0gICAgICAgIE5vZGUqIGxhc3RO
b2RlID0gbV9ibG9jay0+bGFzdCgpOworICAgICAgICBOb2RlKiBsYXN0Tm9kZSA9IG1fYmxvY2st
PnRlcm1pbmFsKCk7CiAgICAgICAgIHJldHVybiBsYXN0Tm9kZS0+b3AoKSA9PSBCcmFuY2ggJiYg
bGFzdE5vZGUtPmNoaWxkMSgpID09IG1fY3VycmVudE5vZGUgPyBtX2Jsb2NrLT5zaXplKCkgLSAx
IDogVUlOVF9NQVg7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGlt
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4Mjg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC02MywxNiArNjMsMTYgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jaykK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3dp
dGNoIChibG9jay0+bGFzdCgpLT5vcCgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGJsb2NrLT50
ZXJtaW5hbCgpLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIEJyYW5jaDogewotICAgICAgICAg
ICAgICAgIEJyYW5jaERhdGEqIGRhdGEgPSBibG9jay0+bGFzdCgpLT5icmFuY2hEYXRhKCk7Cisg
ICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogZGF0YSA9IGJsb2NrLT50ZXJtaW5hbCgpLT5icmFu
Y2hEYXRhKCk7CiAgICAgICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+dGFrZW4pOwogICAg
ICAgICAgICAgICAgIGFwcGx5Q291bnRzKGRhdGEtPm5vdFRha2VuKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNh
c2UgU3dpdGNoOiB7Ci0gICAgICAgICAgICAgICAgU3dpdGNoRGF0YSogZGF0YSA9IGJsb2NrLT5s
YXN0KCktPnN3aXRjaERhdGEoKTsKKyAgICAgICAgICAgICAgICBTd2l0Y2hEYXRhKiBkYXRhID0g
YmxvY2stPnRlcm1pbmFsKCktPnN3aXRjaERhdGEoKTsKICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBkYXRhLT5jYXNlcy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICAgICAgICAg
IGFwcGx5Q291bnRzKGRhdGEtPmNhc2VzW2ldLnRhcmdldCk7CiAgICAgICAgICAgICAgICAgYXBw
bHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxODI4NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENo
ZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMyw5ICsxMDMsMTAg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAoYmxvY2stPmxhc3QoKS0+b3AoKSA9PSBSZXR1cm4pIHsK
KyAgICAgICAgICAgIGlmIChibG9jay0+dGVybWluYWwoKS0+b3AoKSA9PSBSZXR1cm4pIHsKICAg
ICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAg
ICAgYmxvY2stPnNpemUoKSAtIDEsIFNwZWNOb25lLCBDaGVja1RpZXJVcEF0UmV0dXJuLCBibG9j
ay0+bGFzdCgpLT5vcmlnaW4pOworICAgICAgICAgICAgICAgICAgICBibG9jay0+ZmluZFRlcm1p
bmFsKCkuaW5kZXgsIFNwZWNOb25lLCBDaGVja1RpZXJVcEF0UmV0dXJuLAorICAgICAgICAgICAg
ICAgICAgICBibG9jay0+dGVybWluYWwoKS0+b3JpZ2luKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE4Mjg1
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODksMTAgKzE4OSwxOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
IFZfRVFVQUwoKG5vZGUpLCBtX215UmVmQ291bnRzLmdldChub2RlKSwgbm9kZS0+YWRqdXN0ZWRS
ZWZDb3VudCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDAgOyBpIDwgYmxvY2stPnNpemUoKSAtIDE7ICsraSkgeworICAgICAgICAg
ICAgYm9vbCBmb3VuZFRlcm1pbmFsID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMCA7IGkgPCBibG9jay0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5v
ZGUtPmlzVGVybWluYWwoKSk7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwo
KSkgeworICAgICAgICAgICAgICAgICAgICBmb3VuZFRlcm1pbmFsID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwgYmxvY2stPnNpemUoKTsgKytq
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gYmxvY2stPmF0KGopOworICAgICAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5vcCgpID09IFBoYW50b20g
fHwgbm9kZS0+b3AoKSA9PSBLaWxsSGludCB8fCBub2RlLT5vcCgpID09IFBoYW50b21Mb2NhbCk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgVkFMSURBVEUoKGJsb2Nr
KSwgZm91bmRUZXJtaW5hbCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgTm9kZSog
bm9kZSA9IGJsb2NrLT5hdChpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE4Mjg1NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2Fz
ZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoKICAgICBjYXNlIE1vdkhpbnQ6CisgICAg
Y2FzZSBLaWxsSGludDoKICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgY2FzZSBQaGFudG9tOgog
ICAgIGNhc2UgSGFyZFBoYW50b206CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTgyODU3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg0OCw2ICs4NDgsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIExvb3BIaW50OgogICAgICAg
ICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBNb3ZIaW50
OgorICAgICAgICBjYXNlIEtpbGxIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAg
ICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJn
dW1lbnRzOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251626</attachid>
            <date>2015-04-25 01:38:01 -0700</date>
            <delta_ts>2015-04-27 11:09:42 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>9399</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDE1LTA0LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VmFyYXJnc0ZvcndhcmRpbmdQaGFzZSBzaG91bGQgdXNlIGJ5dGVjb2RlIGxpdmVuZXNzIGluIGFk
ZGl0aW9uIHRvIG90aGVyIHVzZXMgdG8gZGV0ZXJtaW5lIHRoZSBsYXN0IHBvaW50IHRoYXQgYSBj
YW5kaWRhdGUgaXMgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQzODQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIAorICAgICAgICBJdCB3aWxsIHNvb24gY29tZSB0byBwYXNzIHRoYXQgUGhhbnRvbSBp
c24ndCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhhdAorICAgICAgICBWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlIHJ1bnMuIFNvLCBpdCBuZWVkcyB0byB1c2Ugc29tZSBvdGhlciBtZWNoYW5pc20gZm9y
IGRpc2NvdmVyaW5nIHdoZW4KKyAgICAgICAgYSB2YWx1ZSBkaWVzIGZvciBPU1IuCisgICAgICAg
IAorICAgICAgICBUaGlzIGlzIHNpbXBsaWZpZWQgYnkgdHdvIHRoaW5nczoKKyAgICAgICAgCisg
ICAgICAgIDEpIFRoZSBieXRlY29kZSBraWxsIGFuYWx5c2lzIGlzIG5vdyByZXVzYWJsZS4gVGhp
cyBwYXRjaCBtYWtlcyBpdCBldmVuIG1vcmUgcmV1c2FibGUgdGhhbgorICAgICAgICAgICBiZWZv
cmUgYnkgcG9saXNoaW5nIHRoZSBBUEkuCisgICAgICAgIAorICAgICAgICAyKSBUaGlzIHBoYXNl
IGFscmVhZHkgb3BlcmF0ZXMgb24gb25lIG5vZGUgYXQgYSB0aW1lIGFuZCBhbGxvd3MgaXRzZWxm
IHRvIGRvIGEgZnVsbCBzZWFyY2gKKyAgICAgICAgICAgb2YgdGhlIGVuY2xvc2luZyBiYXNpYyBi
bG9jayBmb3IgdGhhdCBub2RlLiBUaGlzIGlzIGZpbmUgYmVjYXVzZSBDcmVhdGVEaXJlY3RBcmd1
bWVudHMKKyAgICAgICAgICAgYW5kIGZyaWVuZHMgaXMgYSByYXJlbHkgb2NjdXJyaW5nIG5vZGUu
IFRoZSBmYWN0IHRoYXQgaXQgb3BlcmF0ZXMgb24gb25lIG5vZGUgYXQgYSB0aW1lCisgICAgICAg
ICAgIG1ha2VzIGl0IGV2ZW4gZWFzaWVyIHRvIHJlYXNvbiBhYm91dCBPU1IgbGl2ZW5lc3MgLSB3
ZSBqdXN0IHRyYWNrIHRoZSBsaXN0IG9mIGxvY2FscyBpbgorICAgICAgICAgICB3aGljaCBpdCBp
cyBsaXZlLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgaGFzIG5vIGVmZmVjdCByaWdo
dCBub3cgYnV0IGl0IGlzIGEgbmVjZXNzYXJ5IHByZXJlcXVpc2l0ZSB0byBpbXBsZW1lbnRpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzczNi4K
KworICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkRGRzo6QmFz
aWNCbG9jazo6dHJ5QXQpOgorICAgICAgICAqIGRmZy9ERkdGb3JBbGxLaWxscy5oOgorICAgICAg
ICAoSlNDOjpERkc6OmZvckFsbEtpbGxlZE9wZXJhbmRzKToKKyAgICAgICAgKiBkZmcvREZHUGhh
bnRvbUluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRp
bmdQaGFzZS5jcHA6CisKIDIwMTUtMDQtMjQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODMyODguCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24g
MTgzMzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEyIEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291
bnRlZDxCYXNpY0Jsb2MKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgp
OyB9CiAgICAgTm9kZSomIGF0KHNpemVfdCBpKSB7IHJldHVybiBtX25vZGVzW2ldOyB9CiAgICAg
Tm9kZSogYXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXNbaV07IH0KKyAgICBOb2Rl
KiB0cnlBdChzaXplX3QgaSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpID49IHNpemUoKSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gYXQoaSk7CisgICAg
fQogICAgIE5vZGUqJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBhdChpKTsgfQogICAg
IE5vZGUqIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCShyZXZp
c2lvbiAxODMzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+CiB2b2lkIGZvckFsbEtpbGxlZE9wZXJhbmRzKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZUJlZm9yZSwgTm9kZSogbm9kZUFmdGVyLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAg
IENvZGVPcmlnaW4gYmVmb3JlID0gbm9kZUJlZm9yZS0+b3JpZ2luLmZvckV4aXQ7CisKKyAgICBp
ZiAoIW5vZGVBZnRlcikgeworICAgICAgICBncmFwaC5mb3JBbGxMaXZlSW5CeXRlY29kZShiZWZv
cmUsIGZ1bmN0b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIENvZGVPcmln
aW4gYWZ0ZXIgPSBub2RlQWZ0ZXItPm9yaWdpbi5mb3JFeGl0OwogICAgIAogICAgIFZpcnR1YWxS
ZWdpc3RlciBhbHJlYWR5Tm90ZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODMzMDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw0MiArMTIyLDM1IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG5vZGUtPnNldEVwb2NoKGN1cnJlbnRFcG9jaCk7CiAKLSAgICAg
ICAgICAgIGF1dG8ga2lsbEFjdGlvbiA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIHJlZykgewotICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgS2lsbGVkIG9wZXJhbmQ6ICIsIHJlZywgIlxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBOb2RlKiBraWxsZWROb2RlID0gbV92YWx1ZXMub3BlcmFuZChy
ZWcpOwotICAgICAgICAgICAgICAgIGlmICgha2lsbGVkTm9kZSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkg
bmVlZCB0byBpbnNlcnQgYSBQaGFudG9tIGlmIHRoZSBub2RlIGhhc24ndCBiZWVuIHVzZWQgc2lu
Y2UgdGhlIGxhc3QKLSAgICAgICAgICAgICAgICAvLyBleGl0LCBhbmQgd2FzIGJvcm4gYmVmb3Jl
IHRoZSBsYXN0IGV4aXQuCi0gICAgICAgICAgICAgICAgaWYgKGtpbGxlZE5vZGUtPmVwb2NoKCkg
PT0gY3VycmVudEVwb2NoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygKLSAgICAgICAgICAgICAgICAgICAgICAgICIgICAgSW5zZXJ0aW5nIFBoYW50
b20gb24gIiwga2lsbGVkTm9kZSwgIiBhZnRlciAiLAotICAgICAgICAgICAgICAgICAgICAgICAg
YmxvY2stPmF0KGxhc3RFeGl0aW5nSW5kZXgpLCAiXG4iKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBleGFjdCByZWYgY291
bnRzLCBzbyBjcmVhdGluZyBhIG5ldyB1c2UgbWVhbnMgdGhhdCB3ZSBoYXZlIHRvIGluY3JlbWVu
dAotICAgICAgICAgICAgICAgIC8vIHRoZSByZWYgY291bnQuCi0gICAgICAgICAgICAgICAga2ls
bGVkTm9kZS0+cG9zdGZpeFJlZigpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIGxhc3RFeGl0
aW5nSW5kZXggKyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwgYmxvY2stPmF0KGxhc3RFeGl0aW5nSW5k
ZXgpLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIGtpbGxlZE5vZGUtPmRlZmF1bHRFZGdl
KCkpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG5vZGVJ
bmRleCArIDEgPT0gYmxvY2stPnNpemUoKSkgewotICAgICAgICAgICAgICAgIC8vIFNob3VsZCBh
IE1vdkhpbnRlZCB2YWx1ZSBiZSBrZXB0IGFsaXZlPyBJZiB0aGUgdmFsdWUgaGFzIGJlZW4gU2V0
TG9jYWwnZCB0aGVuCi0gICAgICAgICAgICAgICAgLy8gdGhlIGFuc3dlciBpcyBuby4gQnV0IHdl
IG1heSBoYXZlIGEgdmFsdWUgdGhhdCBpcyBsaXZlIGhlcmUgYW5kIGRlYWQgaW4KLSAgICAgICAg
ICAgICAgICAvLyBzdWNjZXNzb3JzIGJlY2F1c2Ugd2UgaGFkIGpldHRpc29uZWQgdGhvc2Ugc3Vj
Y2Vzc29ycyB0aGF0IHdvdWxkIGhhdmUgdXNlZCB0aGUKLSAgICAgICAgICAgICAgICAvLyB2YWx1
ZS4gSGVuY2UsIGFueXRoaW5nIGxpdmUgaGVyZSBzaG91bGQgYmUga2VwdCBhbGl2ZS4KLSAgICAg
ICAgICAgICAgICBtX2dyYXBoLmZvckFsbExpdmVJbkJ5dGVjb2RlKG5vZGUtPm9yaWdpbi5mb3JF
eGl0LCBraWxsQWN0aW9uKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGZv
ckFsbEtpbGxlZE9wZXJhbmRzKG1fZ3JhcGgsIG5vZGUsIGJsb2NrLT5hdChub2RlSW5kZXggKyAx
KSwga2lsbEFjdGlvbik7CisgICAgICAgICAgICBmb3JBbGxLaWxsZWRPcGVyYW5kcygKKyAgICAg
ICAgICAgICAgICBtX2dyYXBoLCBub2RlLCBibG9jay0+dHJ5QXQobm9kZUluZGV4ICsgMSksCisg
ICAgICAgICAgICAgICAgWyZdIChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAg
IEtpbGxlZCBvcGVyYW5kOiAiLCByZWcsICJcbiIpOworICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSoga2lsbGVkTm9kZSA9IG1fdmFsdWVzLm9wZXJhbmQocmVn
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFraWxsZWROb2RlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgLy8gV2Ugb25seSBuZWVkIHRvIGluc2VydCBhIFBoYW50b20gaWYgdGhlIG5vZGUgaGFzbid0
IGJlZW4gdXNlZCBzaW5jZSB0aGUgbGFzdAorICAgICAgICAgICAgICAgICAgICAvLyBleGl0LCBh
bmQgd2FzIGJvcm4gYmVmb3JlIHRoZSBsYXN0IGV4aXQuCisgICAgICAgICAgICAgICAgICAgIGlm
IChraWxsZWROb2RlLT5lcG9jaCgpID09IGN1cnJlbnRFcG9jaCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgSW5zZXJ0aW5nIFBoYW50b20gb24gIiwga2lsbGVk
Tm9kZSwgIiBhZnRlciAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hdChs
YXN0RXhpdGluZ0luZGV4KSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgZXhhY3QgcmVmIGNv
dW50cywgc28gY3JlYXRpbmcgYSBuZXcgdXNlIG1lYW5zIHRoYXQgd2UgaGF2ZSB0bworICAgICAg
ICAgICAgICAgICAgICAvLyBpbmNyZW1lbnQgdGhlIHJlZiBjb3VudC4KKyAgICAgICAgICAgICAg
ICAgICAga2lsbGVkTm9kZS0+cG9zdGZpeFJlZigpOworICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxhc3RFeGl0aW5nSW5kZXggKyAxLCBTcGVjTm9uZSwgUGhhbnRvbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hdChsYXN0RXhpdGluZ0luZGV4KS0+b3JpZ2lu
LCBraWxsZWROb2RlLT5kZWZhdWx0RWRnZSgpKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2Fy
ZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTgzMzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NiArMzAsNyBAQAogCiAjaW5jbHVkZSAiREZHQXJndW1lbnRzVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiREZHQ2xvYmJlcml6ZS5oIgorI2luY2x1ZGUgIkRGR0ZvckFsbEtpbGxzLmgiCiAjaW5jbHVk
ZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKQEAgLTQ5LDYgKzUwLDggQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAg
ICB7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0g
IT0gU1NBKTsKKyAgICAgICAgCiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBk
YXRhTG9nKCJHcmFwaCBiZWZvcmUgdmFyYXJncyBmb3J3YXJkaW5nOlxuIik7CiAgICAgICAgICAg
ICBtX2dyYXBoLmR1bXAoKTsKQEAgLTg3LDE0ICs5MCwyMCBAQCBwcml2YXRlOgogICAgICAgICAv
LyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub2RlIGluIHRoaXMgYmxvY2sgdG8gdXNlIHRo
ZSBjYW5kaWRhdGUsIGFuZCBsb29rIGZvciBlc2NhcGluZwogICAgICAgICAvLyBzaXRlcy4KICAg
ICAgICAgdW5zaWduZWQgbGFzdFVzZXJJbmRleCA9IGNhbmRpZGF0ZU5vZGVJbmRleDsKKyAgICAg
ICAgVmVjdG9yPFZpcnR1YWxSZWdpc3RlciwgMj4gcmVsZXZhbnRMb2NhbHM7IC8vIFRoaXMgaXMg
YSBzZXQuIFdlIGV4cGVjdCBpdCB0byBiZSBhIHNtYWxsIHNldC4KICAgICAgICAgZm9yICh1bnNp
Z25lZCBub2RlSW5kZXggPSBjYW5kaWRhdGVOb2RlSW5kZXggKyAxOyBub2RlSW5kZXggPCBibG9j
ay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2Nr
LT5hdChub2RlSW5kZXgpOworICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUt
Pm9wKCkpIHsKKyAgICAgICAgICAgIGNhc2UgTW92SGludDoKKyAgICAgICAgICAgICAgICBsYXN0
VXNlckluZGV4ID0gbm9kZUluZGV4OworICAgICAgICAgICAgICAgIGlmICghcmVsZXZhbnRMb2Nh
bHMuY29udGFpbnMobm9kZS0+dW5saW5rZWRMb2NhbCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
cmVsZXZhbnRMb2NhbHMuYXBwZW5kKG5vZGUtPnVubGlua2VkTG9jYWwoKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFBoYW50b206
CiAgICAgICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICAgICAgY2FzZSBNdXN0R2VuZXJhdGU6
Ci0gICAgICAgICAgICBjYXNlIE1vdkhpbnQ6Ci0gICAgICAgICAgICBjYXNlIFB1dEhpbnQ6CiAg
ICAgICAgICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
LnVzZXMobm9kZSwgY2FuZGlkYXRlKSkKICAgICAgICAgICAgICAgICAgICAgbGFzdFVzZXJJbmRl
eCA9IG5vZGVJbmRleDsKQEAgLTEyNiw2ICsxMzUsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZm9yQWxsS2lsbGVkT3BlcmFuZHMoCisgICAgICAgICAgICAg
ICAgbV9ncmFwaCwgbm9kZSwgYmxvY2stPnRyeUF0KG5vZGVJbmRleCArIDEpLAorICAgICAgICAg
ICAgICAgIFsmXSAoVmlydHVhbFJlZ2lzdGVyIHJlZykgeworICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVsZXZhbnRMb2NhbHMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxldmFudExvY2Fsc1tpXSA9PSByZWcpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWxldmFudExvY2Fsc1tpLS1dID0gcmVsZXZhbnRM
b2NhbHMubGFzdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGV2YW50TG9jYWxz
LnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0VXNlckluZGV4
ID0gbm9kZUluZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJTZWxlY3RlZCBsYXN0VXNlckluZGV4ID0gIiwgbGFz
dFVzZXJJbmRleCwgIiwgIiwgYmxvY2stPmF0KGxhc3RVc2VySW5kZXgpLCAiXG4iKTsK
</data>
<flag name="review"
          id="276404"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>