<?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>152105</bug_id>
          
          <creation_ts>2015-12-09 21:37:58 -0800</creation_ts>
          <short_desc>FTL B3 should be able to run quicksort asm.js test</short_desc>
          <delta_ts>2015-12-10 20:04:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit 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>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1148067</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-09 21:37:58 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148071</commentid>
    <comment_count>1</comment_count>
      <attachid>267070</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-09 22:11:34 -0800</bug_when>
    <thetext>Created attachment 267070
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148087</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-10 00:18:27 -0800</bug_when>
    <thetext>Attachment 267070 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLB3Output.h:215:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLB3Output.h:215:  The parameter name &quot;pointer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLB3Output.h:216:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLB3Output.h:216:  The parameter name &quot;pointer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 18 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>1148220</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-10 09:20:55 -0800</bug_when>
    <thetext>*** Bug 152125 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148312</commentid>
    <comment_count>4</comment_count>
      <attachid>267070</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-12-10 15:36:37 -0800</bug_when>
    <thetext>Comment on attachment 267070
the patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +        - Implemented Mod in B3 and wrote tests.

I wonder how this compares to https://bugs.webkit.org/show_bug.cgi?id=152110.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148315</commentid>
    <comment_count>5</comment_count>
      <attachid>267070</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-10 15:44:49 -0800</bug_when>
    <thetext>Comment on attachment 267070
the patch

Oops, wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148343</commentid>
    <comment_count>6</comment_count>
      <attachid>267140</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-10 17:08:19 -0800</bug_when>
    <thetext>Created attachment 267140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148344</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-10 17:08:52 -0800</bug_when>
    <thetext>Same patch, rebaselined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148411</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-10 20:04:19 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/193943</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267070</attachid>
            <date>2015-12-09 22:11:34 -0800</date>
            <delta_ts>2015-12-10 17:08:15 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>35725</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkzODkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMSBA
QAorMjAxNS0xMi0wOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBCMyBzaG91bGQgYmUgYWJsZSB0byBydW4gcXVpY2tzb3J0IGFzbS5qcyB0ZXN0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIxMDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvdmVycyBt
YWtpbmcgYWxsIG9mIHRoZSBjaGFuZ2VzIG5lZWRlZCB0byBydW4gcXVpY2tzb3J0LmpzIGZyb20g
QXNtQmVuY2guCisKKyAgICAgICAgLSBSZWludHJvZHVjZWQgZmxvYXQgdHlwZXMgdG8gRlRMTG93
ZXIgc2luY2Ugd2Ugbm93IGhhdmUgQjM6OkZsb2F0LgorCisgICAgICAgIC0gR2F2ZSBGVEw6Ok91
dHB1dCB0aGUgYWJpbGl0eSB0byBzcGVhayBvZiBsb2FkIHR5cGVzIGFuZCBzdG9yZSB0eXBlcyBz
ZXBhcmF0ZWx5IGZyb20gTFZhbHVlCisgICAgICAgICAgdHlwZXMuIFRoaXMgZG9kZ2VzIHRoZSBw
cm9ibGVtIHRoYXQgQjMgZG9lc24ndCBoYXZlIHR5cGVzIGZvciBJbnQ4IGFuZCBJbnQxNiBidXQg
c3VwcG9ydHMgbG9hZHMKKyAgICAgICAgICBhbmQgc3RvcmVzIG9mIHRoYXQgdHlwZS4KKworICAg
ICAgICAtIEltcGxlbWVudGVkIE1vZCBpbiBCMyBhbmQgd3JvdGUgdGVzdHMuCisKKyAgICAgICAg
SSBhbHNvIGZpeGVkIGEgcHJlLWV4aXN0aW5nIGJ1ZyBpbiBhIHRlc3QgdGhhdCBhcHBlYXJlZCB0
byBvbmx5IG1hbmlmZXN0IGluIHJlbGVhc2UgYnVpbGRzLgorCisgICAgICAgIEN1cnJlbnRseSwg
QjMncyBwZXJmb3JtYW5jZSBvbiBhc20uanMgdGVzdHMgaXMgbm90IGdvb2QuIEl0IHNob3VsZCBi
ZSBlYXN5IHRvIGZpeDoKKworICAgICAgICAtIEIzIHNob3VsZCBzdHJlbmd0aC1yZWR1Y2UgdGhl
IHNoaWZ0aW5nIG1hZG5lc3MgdGhhdCBoYXBwZW5zIGluIGFzbS5qcyBtZW1vcnkgYWNjZXNzZXMK
KyAgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMTA2
CisKKyAgICAgICAgLSBCMyBjb25zdGFudCBob2lzdGluZyBzaG91bGQgaGF2ZSBhIHN0b3J5IGZv
ciB0aGUgYXNtLmpzIGhlYXAgY29uc3RhbnQKKyAgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMTA3CisKKyAgICAgICAgKiBiMy9CM0NDYWxsVmFsdWUu
aDoKKyAgICAgICAgKiBiMy9CM0NvbW1vbi5oOgorICAgICAgICAoSlNDOjpCMzo6Y2hpbGxEaXYp
OgorICAgICAgICAoSlNDOjpCMzo6Y2hpbGxNb2QpOgorICAgICAgICAqIGIzL0IzQ29uc3QzMlZh
bHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6ZGl2Q29uc3RhbnQpOgor
ICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjptb2RDb25zdGFudCk6CisgICAgICAgIChK
U0M6OkIzOjpDb25zdDMyVmFsdWU6OmJpdEFuZENvbnN0YW50KToKKyAgICAgICAgKiBiMy9CM0Nv
bnN0MzJWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzQ29uc3Q2NFZhbHVlLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6ZGl2Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6
Q29uc3Q2NFZhbHVlOjptb2RDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdDY0VmFs
dWU6OmJpdEFuZENvbnN0YW50KToKKyAgICAgICAgKiBiMy9CM0NvbnN0NjRWYWx1ZS5oOgorICAg
ICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAg
ICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OlZhbHVlOjpkaXZDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1
ZTo6bW9kQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmJpdEFuZENvbnN0YW50
KToKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RDaGlsbERpdjY0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RN
b2QpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN3aXRjaCk6CisgICAgICAgIChKU0M6OkIzOjpy
dW4pOgorICAgICAgICAqIGZ0bC9GVExCM091dHB1dC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0Ojpsb2FkMTZaZXJvRXh0MzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3Rv
cmUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmUzMkFzOCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpzdG9yZTMyQXMxNik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojpsb2FkRmxvYXRUb0RvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZUTEIzT3V0cHV0
Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjptdWwpOgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6ZGl2KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNoaWxsRGl2KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnJlbSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
OjpuZWcpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9hZDMyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6OmxvYWQ2NCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2Fk
UHRyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWRGbG9hdCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0Ojpsb2FkRG91YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6
OnN0b3JlMzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmU2NCk6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0OjpzdG9yZVB0cik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
OjpzdG9yZUZsb2F0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN0b3JlRG91YmxlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFkZFB0cik6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y2FsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpvcGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVBcnJheVB1c2gpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVBcnJheVBvcCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpPdXRwdXQpOgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6c3RvcmUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y2hlY2spOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9hZCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1
dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9hZDMyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpPdXRwdXQ6OmxvYWQ2NCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkUHRy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWRGbG9hdCk6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0Ojpsb2FkRG91YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN0
b3JlMzJBczgpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmUzMkFzMTYpOgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmUzMik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjpzdG9yZTY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN0b3JlUHRyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN0b3JlRmxvYXQpOgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6c3RvcmVEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YWRkUHRy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWRGbG9hdFRvRG91YmxlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN0b3JlMTYpOiBEZWxldGVkLgorCiAyMDE1
LTEyLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRlRMIEIz
IHNob3VsZCBoYXZlIGJhc2ljIEdldEJ5SWQgc3VwcG9ydApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ0NhbGxWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NDYWxsVmFsdWUuaAkocmV2aXNpb24gMTkzODg5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ0NhbGxWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIDogVmFsdWUoaW5kZXgsIENoZWNrZWRPcGNvZGUsIENDYWxs
LCB0eXBlLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKICAgICAgICAgLCBlZmZlY3RzKEVmZmVjdHM6
OmZvckNhbGwoKSkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG51bUNoaWxkcmVuKCkg
Pj0gMSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgpAQCAt
NTYsNiArNTcsNyBAQCBwcml2YXRlOgogICAgICAgICA6IFZhbHVlKGluZGV4LCBDaGVja2VkT3Bj
b2RlLCBDQ2FsbCwgdHlwZSwgb3JpZ2luLCBhcmd1bWVudHMuLi4pCiAgICAgICAgICwgZWZmZWN0
cyhlZmZlY3RzKQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobnVtQ2hpbGRyZW4oKSA+
PSAxKTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21t
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uaAko
cmV2aXNpb24gMTkzODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsxMTIsMjQgQEAgaW5saW5lIGludDY0X3QgY2hpbGxE
aXYoaW50NjRfdCBudW0sIGludAogICAgIHJldHVybiBudW0gLyBkZW47CiB9CiAKK2lubGluZSBp
bnQzMl90IGNoaWxsTW9kKGludDMyX3QgbnVtLCBpbnQzMl90IGRlbikKK3sKKyAgICBpZiAoIWRl
bikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGRlbiA9PSAtMSAmJiBudW0gPT0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJl
dHVybiBudW0gJSBkZW47Cit9CisKK2lubGluZSBpbnQ2NF90IGNoaWxsTW9kKGludDY0X3QgbnVt
LCBpbnQ2NF90IGRlbikKK3sKKyAgICBpZiAoIWRlbikKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
aWYgKGRlbiA9PSAtMSAmJiBudW0gPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWlu
KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBudW0gJSBkZW47Cit9CisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcAkocmV2aXNpb24gMTkz
ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiwxMyBAQCBWYWx1ZSogQ29uc3QzMlZhbHVlOjpkaXZD
b25zdGFudChQcm9jZWR1CiAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2lu
KCksIGNoaWxsRGl2KG1fdmFsdWUsIG90aGVyLT5hc0ludDMyKCkpKTsKIH0KIAorVmFsdWUqIENv
bnN0MzJWYWx1ZTo6bW9kQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3Ro
ZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIGNo
aWxsTW9kKG1fdmFsdWUsIG90aGVyLT5hc0ludDMyKCkpKTsKK30KKwogVmFsdWUqIENvbnN0MzJW
YWx1ZTo6Yml0QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIp
IGNvbnN0CiB7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCShyZXZpc2lvbiAxOTM4ODkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGNoZWNrTXVsQ29uc3RhbnQoUHJvY2Vk
dXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogY2hl
Y2tOZWdDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogZGl2
Q29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsK
KyAgICBWYWx1ZSogbW9kQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBj
b25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogYml0QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29u
c3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogYml0T3JDb25zdGFu
dChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZh
bHVlKiBiaXRYb3JDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0
IG92ZXJyaWRlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFs
dWUuY3BwCShyZXZpc2lvbiAxOTM4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
b25zdDY0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDEzIEBAIFZhbHVl
KiBDb25zdDY0VmFsdWU6OmRpdkNvbnN0YW50KFByb2NlZHUKICAgICByZXR1cm4gcHJvYy5hZGQ8
Q29uc3Q2NFZhbHVlPihvcmlnaW4oKSwgY2hpbGxEaXYobV92YWx1ZSwgb3RoZXItPmFzSW50NjQo
KSkpOwogfQogCitWYWx1ZSogQ29uc3Q2NFZhbHVlOjptb2RDb25zdGFudChQcm9jZWR1cmUmIHBy
b2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNJbnQ2
NCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3Q2
NFZhbHVlPihvcmlnaW4oKSwgY2hpbGxNb2QobV92YWx1ZSwgb3RoZXItPmFzSW50NjQoKSkpOwor
fQorCiBWYWx1ZSogQ29uc3Q2NFZhbHVlOjpiaXRBbmRDb25zdGFudChQcm9jZWR1cmUmIHByb2Ms
IGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgp
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmgJKHJldmlz
aW9uIDE5Mzg4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogY2hl
Y2tNdWxDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFZhbHVlKiBjaGVja05lZ0NvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFZhbHVlKiBkaXZDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBtb2RDb25zdGFudChQcm9jZWR1cmUmLCBj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBiaXRBbmRDb25z
dGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFZhbHVlKiBiaXRPckNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGJpdFhvckNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0
IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMTkzODg5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NzIsNiAr
MTQ3MiwzMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBNb2Q6IHsKKyAgICAgICAgICAgIFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJz
OjplYXgpOworICAgICAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7CisK
KyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7CisgICAgICAgICAg
ICBBaXI6Ok9wY29kZSBkaXY7CisgICAgICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkg
eworICAgICAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAgICAgICAgICBjb252ZXJ0VG9Eb3Vi
bGVXb3JkID0gWDg2Q29udmVydFRvRG91YmxlV29yZDMyOworICAgICAgICAgICAgICAgIGRpdiA9
IFg4NkRpdjMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJbnQ2
NDoKKyAgICAgICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvUXVh
ZFdvcmQ2NDsKKyAgICAgICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFs
dWUtPmNoaWxkKDApKSwgZWF4KTsKKyAgICAgICAgICAgIGFwcGVuZChjb252ZXJ0VG9Eb3VibGVX
b3JkLCBlYXgsIGVkeCk7CisgICAgICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1f
dmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgICAgICBhcHBlbmQoTW92ZSwgZWR4LCB0bXAobV92
YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBC
aXRBbmQ6IHsKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBBbmQ2NCwgQ29tbXV0YXRp
dmU+KAogICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgx
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGgu
Y3BwCShyZXZpc2lvbiAxOTM4OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1
Y2VTdHJlbmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw2ICsyOTEsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUobV92YWx1ZS0+Y2hpbGQoMCktPmRp
dkNvbnN0YW50KG1fcHJvYywgbV92YWx1ZS0+Y2hpbGQoMSkpKTsKICAgICAgICAgICAgIGJyZWFr
OwogCisgICAgICAgIGNhc2UgTW9kOgorICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBNb2QoY29u
c3RhbnQxLCBjb25zdGFudDIpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IGNvbnN0YW50MSAv
IGNvbnN0YW50MgorICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgdXNlcyBDaGlsbE1vZCBz
ZW1hbnRpY3MuCisgICAgICAgICAgICByZXBsYWNlV2l0aE5ld1ZhbHVlKG1fdmFsdWUtPmNoaWxk
KDApLT5tb2RDb25zdGFudChtX3Byb2MsIG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgICAg
ICBicmVhazsKKwogICAgICAgICBjYXNlIEJpdEFuZDoKICAgICAgICAgICAgIGhhbmRsZUNvbW11
dGF0aXZpdHkoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNw
cAkocmV2aXNpb24gMTkzODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsOCArMjg4LDggQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDQ2FsbDoKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlz
IGEgd2lsZGNhcmQuIFlvdSBjYW4gcGFzcyBhbnkgbm9uLXZvaWQgYXJndW1lbnRzIGFuZCB5b3Ug
Y2FuIHNlbGVjdCBhbnkKLSAgICAgICAgICAgICAgICAvLyByZXR1cm4gdHlwZS4KKyAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA+PSAxLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09
IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFBhdGNocG9pbnQ6CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVl
LT50eXBlKCkgPT0gVm9pZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJ
KHJldmlzaW9uIDE5Mzg4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCwxMSBAQCBWYWx1ZSogVmFsdWU6OmRpdkNv
bnN0YW50KFByb2NlZHVyZSYsIGNvCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1ZhbHVlKiBW
YWx1ZTo6bW9kQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqKSBjb25zdAoreworICAg
IHJldHVybiBudWxscHRyOworfQorCiBWYWx1ZSogVmFsdWU6OmJpdEFuZENvbnN0YW50KFByb2Nl
ZHVyZSYsIGNvbnN0IFZhbHVlKikgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2aXNpb24gMTkzODg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDYgKzEy
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZhbHVlKiBjaGVja011bENvbnN0YW50KFByb2Nl
ZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogY2hl
Y2tOZWdDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBkaXZD
b25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OyAvLyBUaGlzIGNo
b29zZXMgQ2hpbGxEaXYgc2VtYW50aWNzIGZvciBpbnRlZ2Vycy4KKyAgICB2aXJ0dWFsIFZhbHVl
KiBtb2RDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OyAvLyBU
aGlzIGNob29zZXMgQ2hpbGxNb2Qgc2VtYW50aWNzLgogICAgIHZpcnR1YWwgVmFsdWUqIGJpdEFu
ZENvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CiAgICAgdmly
dHVhbCBWYWx1ZSogYml0T3JDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIp
IGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIGJpdFhvckNvbnN0YW50KFByb2NlZHVyZSYsIGNv
bnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcAkocmV2aXNpb24gMTkzODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
My5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NjEsMTIgKzI4NjEsMTMgQEAgdm9pZCB0ZXN0U3Fy
dEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZQogICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhc0RvdWJsZSk7CiAgICAgVmFs
dWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zs
b2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKICAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOwot
ICAgIFZhbHVlKiBkb3VibGVBZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIFZhbHVlKiBk
b3VibGVBZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZUFkZHJlc3MpOwog
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJlc3VsdDMyKTsKIAogICAgIGRvdWJsZSBlZmZlY3QgPSAwOwotICAgIENIRUNLKGlzSWRlbnRp
Y2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEp
LCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihzcXJ0
KGEpKSkpKTsKKyAgICBpbnQzMl90IHJlc3VsdFZhbHVlID0gY29tcGlsZUFuZFJ1bjxpbnQzMl90
Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksICZlZmZlY3QpOworICAgIENIRUNLKGlz
SWRlbnRpY2FsKHJlc3VsdFZhbHVlLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHNxcnQoYSkpKSkpOwogICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3FydChh
KSkpOwogfQogCkBAIC02MzAwLDYgKzYzMDEsNjUgQEAgdm9pZCB0ZXN0Q2hpbGxEaXY2NChpbnQ2
NF90IG51bSwgaW50NjRfdAogICAgIH0KIH0KIAordm9pZCB0ZXN0TW9kKGludCBudW0sIGludCBk
ZW4pCit7CisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBNb2QsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgICAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludD4ocHJvYywgbnVtLCBkZW4pID09IGNoaWxsTW9kKG51bSwgZGVuKSk7CisgICAgfQor
ICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9s
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTW9kLCBPcmln
aW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKSk7CisKKyAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90
Pihwcm9jLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW0pLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pihk
ZW4pKSA9PSBjaGlsbE1vZChzdGF0aWNfY2FzdDxpbnQ2NF90PihudW0pLCBzdGF0aWNfY2FzdDxp
bnQ2NF90PihkZW4pKSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgTW9kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZGVuKSkpOwor
CisgICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSBjaGlsbE1vZChudW0s
IGRlbikpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgTW9kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBkZW4pKSk7CisKKyAgICAgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSA9PSBjaGlsbE1vZChzdGF0aWNfY2Fz
dDxpbnQ2NF90PihudW0pLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihkZW4pKSk7CisgICAgfQorfQor
CiB2b2lkIHRlc3RTd2l0Y2godW5zaWduZWQgZGVncmVlLCB1bnNpZ25lZCBnYXAgPSAxKQogewog
ICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNjg4Myw5ICs2OTQzLDkgQEAgc3RhdGljIFZlY3RvcjxJ
bnQzMk9wZXJhbmQ+IGludDMyT3BlcmFuZAogICAgICAgICAgICAgY29udGludWU7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHRhc2tzLmFwcGVuZChjcmVhdGVT
aGFyZWRUYXNrPHZvaWQoKT4oICAgICAgICAgIFwKICAgICAgICAgICAgIFs9XSAoKSB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIGRhdGFMb2co
dGVzdFN0ciwgIi4uLlxuIik7ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZGF0YUxv
Zyh0b0NTdHJpbmcodGVzdFN0ciwgIi4uLlxuIikpOyAgIFwKICAgICAgICAgICAgICAgICB0ZXN0
KGEudmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIGRh
dGFMb2codGVzdFN0ciwgIjogT0shXG4iKTsgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
ZGF0YUxvZyh0b0NTdHJpbmcodGVzdFN0ciwgIjogT0shXG4iKSk7IFwKICAgICAgICAgICAgIH0p
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIApAQCAt
Njg5Nyw5ICs2OTU3LDkgQEAgc3RhdGljIFZlY3RvcjxJbnQzMk9wZXJhbmQ+IGludDMyT3BlcmFu
ZAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgICAgICAgICAgdGFza3MuYXBwZW5kKGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCgp
PiggICAgICAgICAgXAogICAgICAgICAgICAgICAgIFs9XSAoKSB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKHRlc3RTdHIs
ICIuLi5cbiIpOyAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKHRv
Q1N0cmluZyh0ZXN0U3RyLCAiLi4uXG4iKSk7ICAgXAogICAgICAgICAgICAgICAgICAgICB0ZXN0
KGEudmFsdWUsIGIudmFsdWUpOyAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKHRlc3RTdHIsICI6IE9LIVxuIik7ICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKHRvQ1N0cmluZyh0ZXN0U3RyLCAiOiBPSyFcbiIpKTsgXAogICAgICAg
ICAgICAgICAgIH0pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIH0KQEAgLTc2MzMsNiArNzY5MywxMSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBm
aWx0ZXIpCiAgICAgUlVOKHRlc3RDaGlsbERpdlR3aWNlKDQsIDAsIDYsIDIsIDMpKTsKICAgICBS
VU4odGVzdENoaWxsRGl2VHdpY2UoNCwgMiwgNiwgMCwgMikpOwogCisgICAgUlVOKHRlc3RNb2Qo
MTAsIDgpKTsKKyAgICBSVU4odGVzdE1vZCgxMCwgLTgpKTsKKyAgICBSVU4odGVzdE1vZCgtMTAs
IDgpKTsKKyAgICBSVU4odGVzdE1vZCgtMTAsIC04KSk7CisKICAgICBSVU4odGVzdFN3aXRjaCgw
LCAxKSk7CiAgICAgUlVOKHRlc3RTd2l0Y2goMSwgMSkpOwogICAgIFJVTih0ZXN0U3dpdGNoKDIs
IDEpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuY3BwCShy
ZXZpc2lvbiAxOTM4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsMTUgKzk3LDIxIEBAIExWYWx1ZSBPdXRwdXQ6Omxv
YWQxNlplcm9FeHQzMihUeXBlZFBvaW4KICAgICByZXR1cm4gbG9hZDsKIH0KIAotTFZhbHVlIE91
dHB1dDo6bG9hZEZsb2F0VG9Eb3VibGUoVHlwZWRQb2ludGVyIHBvaW50ZXIpCit2b2lkIE91dHB1
dDo6c3RvcmUoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikKIHsKLSAgICBMVmFs
dWUgbG9hZGVkRmxvYXQgPSBsb2FkKHBvaW50ZXIsIGZsb2F0VHlwZSk7Ci0gICAgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZsb2F0VG9Eb3VibGUsIG9y
aWdpbigpLCBsb2FkZWRGbG9hdCk7CisgICAgTFZhbHVlIHN0b3JlID0gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpNZW1vcnlWYWx1ZT4obV9wcm9jLCBCMzo6U3RvcmUsIG9yaWdpbigpLCB2YWx1ZSwg
cG9pbnRlci52YWx1ZSgpKTsKKyAgICBwb2ludGVyLmhlYXAoKS5kZWNvcmF0ZUluc3RydWN0aW9u
KHN0b3JlLCAqbV9oZWFwcyk7CiB9CiAKLXZvaWQgT3V0cHV0OjpzdG9yZShMVmFsdWUgdmFsdWUs
IFR5cGVkUG9pbnRlciBwb2ludGVyKQordm9pZCBPdXRwdXQ6OnN0b3JlMzJBczgoTFZhbHVlIHZh
bHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikKIHsKLSAgICBMVmFsdWUgc3RvcmUgPSBtX2Jsb2Nr
LT5hcHBlbmROZXc8QjM6Ok1lbW9yeVZhbHVlPihtX3Byb2MsIEIzOjpTdG9yZSwgb3JpZ2luKCks
IHZhbHVlLCBwb2ludGVyLnZhbHVlKCkpOworICAgIExWYWx1ZSBzdG9yZSA9IG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6TWVtb3J5VmFsdWU+KG1fcHJvYywgQjM6OlN0b3JlOCwgb3JpZ2luKCksIHZh
bHVlLCBwb2ludGVyLnZhbHVlKCkpOworICAgIHBvaW50ZXIuaGVhcCgpLmRlY29yYXRlSW5zdHJ1
Y3Rpb24oc3RvcmUsICptX2hlYXBzKTsKK30KKwordm9pZCBPdXRwdXQ6OnN0b3JlMzJBczE2KExW
YWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpCit7CisgICAgTFZhbHVlIHN0b3JlID0g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpNZW1vcnlWYWx1ZT4obV9wcm9jLCBCMzo6U3RvcmUxNiwg
b3JpZ2luKCksIHZhbHVlLCBwb2ludGVyLnZhbHVlKCkpOwogICAgIHBvaW50ZXIuaGVhcCgpLmRl
Y29yYXRlSW5zdHJ1Y3Rpb24oc3RvcmUsICptX2hlYXBzKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaAkocmV2aXNpb24gMTkzODg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgs
NyArMTI4LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBtdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSBy
aWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6
TXVsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIGRpdihMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPiht
X3Byb2MsIEIzOjpEaXYsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KICAgICBMVmFsdWUgY2hp
bGxEaXYoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Q2hpbGxEaXYsIG9yaWdpbigpLCBsZWZ0LCByaWdo
dCk7IH0KLSAgICBMVmFsdWUgcmVtKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0go
KTsgfQorICAgIExWYWx1ZSByZW0oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TW9kLCBvcmlnaW4oKSwg
bGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIG5lZyhMVmFsdWUgdmFsdWUpCiAgICAgewogICAg
ICAgICBMVmFsdWUgemVybyA9IG1fYmxvY2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgb3Jp
Z2luKCksIHZhbHVlLT50eXBlKCksIDApOwpAQCAtMjEwLDEyICsyMTAsNjEgQEAgcHVibGljOgog
ICAgIExWYWx1ZSBsb2FkMzIoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9p
bnRlciwgQjM6OkludDMyKTsgfQogICAgIExWYWx1ZSBsb2FkNjQoVHlwZWRQb2ludGVyIHBvaW50
ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwgQjM6OkludDY0KTsgfQogICAgIExWYWx1ZSBsb2Fk
UHRyKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIEIzOjpwb2lu
dGVyVHlwZSgpKTsgfQotICAgIExWYWx1ZSBsb2FkRmxvYXRUb0RvdWJsZShUeXBlZFBvaW50ZXIp
OworICAgIExWYWx1ZSBsb2FkRmxvYXQoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxv
YWQocG9pbnRlciwgQjM6OkZsb2F0KTsgfQogICAgIExWYWx1ZSBsb2FkRG91YmxlKFR5cGVkUG9p
bnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIEIzOjpEb3VibGUpOyB9Ci0gICAg
dm9pZCBzdG9yZTMyKExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgc3RvcmUo
dmFsdWUsIHBvaW50ZXIpOyB9Ci0gICAgdm9pZCBzdG9yZTY0KExWYWx1ZSB2YWx1ZSwgVHlwZWRQ
b2ludGVyIHBvaW50ZXIpIHsgc3RvcmUodmFsdWUsIHBvaW50ZXIpOyB9Ci0gICAgdm9pZCBzdG9y
ZVB0cihMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHN0b3JlKHZhbHVlLCBw
b2ludGVyKTsgfQotICAgIHZvaWQgc3RvcmVEb3VibGUoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50
ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlcik7IH0KKyAgICB2b2lkIHN0b3JlMzJB
czgoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcik7CisgICAgdm9pZCBzdG9yZTMy
QXMxNihMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKTsKKyAgICB2b2lkIHN0b3Jl
MzIoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVCh2YWx1ZS0+dHlwZSgpID09IEIzOjpJbnQzMik7CisgICAgICAgIHN0b3JlKHZhbHVlLCBw
b2ludGVyKTsKKyAgICB9CisgICAgdm9pZCBzdG9yZTY0KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2lu
dGVyIHBvaW50ZXIpCisgICAgeworICAgICAgICBBU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBCMzo6
SW50NjQpOworICAgICAgICBzdG9yZSh2YWx1ZSwgcG9pbnRlcik7CisgICAgfQorICAgIHZvaWQg
c3RvcmVQdHIoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikKKyAgICB7CisgICAg
ICAgIEFTU0VSVCh2YWx1ZS0+dHlwZSgpID09IEIzOjpwb2ludGVyVHlwZSgpKTsKKyAgICAgICAg
c3RvcmUodmFsdWUsIHBvaW50ZXIpOworICAgIH0KKyAgICB2b2lkIHN0b3JlRmxvYXQoTFZhbHVl
IHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikKKyAgICB7CisgICAgICAgIEFTU0VSVCh2YWx1
ZS0+dHlwZSgpID09IEIzOjpGbG9hdCk7CisgICAgICAgIHN0b3JlKHZhbHVlLCBwb2ludGVyKTsK
KyAgICB9CisgICAgdm9pZCBzdG9yZURvdWJsZShMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBw
b2ludGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbHVlLT50eXBlKCkgPT0gQjM6OkRvdWJs
ZSk7CisgICAgICAgIHN0b3JlKHZhbHVlLCBwb2ludGVyKTsKKyAgICB9CisKKyAgICBlbnVtIExv
YWRUeXBlIHsKKyAgICAgICAgTG9hZDhTaWduRXh0MzIsCisgICAgICAgIExvYWQ4WmVyb0V4dDMy
LAorICAgICAgICBMb2FkMTZTaWduRXh0MzIsCisgICAgICAgIExvYWQxNlplcm9FeHQzMiwKKyAg
ICAgICAgTG9hZDMyLAorICAgICAgICBMb2FkNjQsCisgICAgICAgIExvYWRQdHIsCisgICAgICAg
IExvYWRGbG9hdCwKKyAgICAgICAgTG9hZERvdWJsZQorICAgIH07CisKKyAgICBMVmFsdWUgbG9h
ZChUeXBlZFBvaW50ZXIsIExvYWRUeXBlKTsKKyAgICAKKyAgICBlbnVtIFN0b3JlVHlwZSB7Cisg
ICAgICAgIFN0b3JlMzJBczgsCisgICAgICAgIFN0b3JlMzJBczE2LAorICAgICAgICBTdG9yZTMy
LAorICAgICAgICBTdG9yZTY0LAorICAgICAgICBTdG9yZVB0ciwKKyAgICAgICAgU3RvcmVGbG9h
dCwKKyAgICAgICAgU3RvcmVEb3VibGUKKyAgICB9OworCisgICAgdm9pZCBzdG9yZShMVmFsdWUs
IFR5cGVkUG9pbnRlciwgU3RvcmVUeXBlKTsKIAogICAgIExWYWx1ZSBhZGRQdHIoTFZhbHVlIHZh
bHVlLCBwdHJkaWZmX3QgaW1tZWRpYXRlID0gMCkKICAgICB7CkBAIC0zNDEsMTEgKzM5MCwxNiBA
QCBwdWJsaWM6CiAgICAgTFZhbHVlIGV4dHJhY3RWYWx1ZShMVmFsdWUgYWdnVmFsLCB1bnNpZ25l
ZCBpbmRleCkgeyBDUkFTSCgpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBl
PgotICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5cGUsIExWYWx1ZSBmdW5jdGlvbiwgY29uc3QgVmVj
dG9yVHlwZSYgdmVjdG9yKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNDYWxsVmFs
dWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCksIEIzOjpWYWx1ZTo6QWRqYWNlbmN5TGlzdCh2ZWN0
b3IpKTsgfQotICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5cGUsIExWYWx1ZSBmdW5jdGlvbikgeyBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDQ2FsbFZhbHVlPihtX3Byb2MsIHR5cGUsIG9y
aWdpbigpKTsgfQotICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5cGUsIExWYWx1ZSBmdW5jdGlvbiwg
TFZhbHVlIGFyZzEpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q0NhbGxWYWx1ZT4o
bV9wcm9jLCB0eXBlLCBvcmlnaW4oKSwgYXJnMSk7IH0KKyAgICBMVmFsdWUgY2FsbChMVHlwZSB0
eXBlLCBMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikKKyAgICB7Cisg
ICAgICAgIEIzOjpDQ2FsbFZhbHVlKiByZXN1bHQgPSBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkND
YWxsVmFsdWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCksIGZ1bmN0aW9uKTsKKyAgICAgICAgcmVz
dWx0LT5jaGlsZHJlbigpLmFwcGVuZFZlY3Rvcih2ZWN0b3IpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICBMVmFsdWUgY2FsbChMVHlwZSB0eXBlLCBMVmFsdWUgZnVuY3Rpb24p
IHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q0NhbGxWYWx1ZT4obV9wcm9jLCB0eXBl
LCBvcmlnaW4oKSwgZnVuY3Rpb24pOyB9CisgICAgTFZhbHVlIGNhbGwoTFR5cGUgdHlwZSwgTFZh
bHVlIGZ1bmN0aW9uLCBMVmFsdWUgYXJnMSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpDQ2FsbFZhbHVlPihtX3Byb2MsIHR5cGUsIG9yaWdpbigpLCBmdW5jdGlvbiwgYXJnMSk7IH0K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgotICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5
cGUsIExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIEFyZ3MuLi4gYXJncykgeyByZXR1cm4g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDQ2FsbFZhbHVlPihtX3Byb2MsIHR5cGUsIG9yaWdpbigp
LCBhcmcxLCBhcmdzLi4uKTsgfQorICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5cGUsIExWYWx1ZSBm
dW5jdGlvbiwgTFZhbHVlIGFyZzEsIEFyZ3MuLi4gYXJncykgeyByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpDQ2FsbFZhbHVlPihtX3Byb2MsIHR5cGUsIG9yaWdpbigpLCBmdW5jdGlvbiwg
YXJnMSwgYXJncy4uLik7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4K
ICAgICBMVmFsdWUgb3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbikgeyByZXR1cm4gY29u
c3RJbnRQdHIoYml0d2lzZV9jYXN0PHZvaWQqPihmdW5jdGlvbikpOyB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24g
MTkzODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNTUsNyArMzA1NSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdDsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICAgICAgICAgICAgICBjYXNlIFR5cGVGbG9hdDMyOgotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBtX291dC5sb2FkRmxvYXRUb0RvdWJsZShwb2ludGVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gbV9vdXQuZnBDYXN0KG1fb3V0LmxvYWRGbG9hdChwb2ludGVyKSwgbV9v
dXQuZG91YmxlVHlwZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGNhc2UgVHlwZUZsb2F0NjQ6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0
LmxvYWREb3VibGUocG9pbnRlcik7CkBAIC0zMjIxLDEwICszMjIxLDYgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6Ci0jaWYgRlRMX1VTRVNfQjMK
LSAgICAgICAgICAgIFVOVVNFRF9QQVJBTShjaGlsZDUpOwotICAgICAgICAgICAgQ1JBU0goKTsK
LSNlbHNlCiAgICAgICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gbV9ub2RlLT5hcnJheU1v
ZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaXNU
eXBlZFZpZXcodHlwZSkpIHsKQEAgLTMyMzYsNyArMzIzMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQuemVyb0V4dChpbmRleCwgbV9vdXQuaW50UHRyKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihsb2dFbGVtZW50
U2l6ZSh0eXBlKSkpKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTFR5cGUg
cmVmVHlwZTsKKyAgICAgICAgICAgICAgICBPdXRwdXQ6OlN0b3JlVHlwZSBzdG9yZVR5cGU7CiAg
ICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlVG9TdG9yZTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBpZiAoaXNJbnQodHlwZSkpIHsKQEAgLTMzMTEsMTkgKzMzMDcsMTcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAg
ICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAg
ICAgICB2YWx1ZVRvU3RvcmUgPSBpbnRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZVRvU3RvcmUgPSBtX291dC5pbnRDYXN0KGludFZhbHVl
LCBtX291dC5pbnQ4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZlR5cGUgPSBtX291dC5y
ZWY4OworICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9yZTMy
QXM4OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVG9TdG9yZSA9IG1fb3V0Lmlu
dENhc3QoaW50VmFsdWUsIG1fb3V0LmludDE2KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
ZlR5cGUgPSBtX291dC5yZWYxNjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9
IE91dHB1dDo6U3RvcmUzMkFzMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVU
b1N0b3JlID0gaW50VmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWZUeXBlID0gbV9v
dXQucmVmMzI7CisgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0
b3JlMzI7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBt
X25vZGUsICJCYWQgZWxlbWVudCBzaXplIik7CkBAIC0zMzMyLDEyICszMzI2LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShjaGlsZDMp
OwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUeXBlRmxvYXQzMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVG9TdG9y
ZSA9IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVmVHlwZSA9IG1fb3V0LnJlZkZs
b2F0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVUb1N0b3JlID0gbV9vdXQuZnBDYXN0
KHZhbHVlLCBtX291dC5mbG9hdFR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVU
eXBlID0gT3V0cHV0OjpTdG9yZUZsb2F0OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVHlwZUZsb2F0NjQ6CiAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZVRvU3RvcmUgPSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
ZlR5cGUgPSBtX291dC5yZWZEb3VibGU7CisgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5
cGUgPSBPdXRwdXQ6OlN0b3JlRG91YmxlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBE
RkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHR5cGVkIGFycmF5IHR5cGUiKTsKQEAgLTMz
NDUsNyArMzMzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMo
KSB8fCBtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxBbGlhcykKLSAgICAgICAgICAgICAgICAgICAg
bV9vdXQuc3RvcmUodmFsdWVUb1N0b3JlLCBwb2ludGVyLCByZWZUeXBlKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuc3RvcmUodmFsdWVUb1N0b3JlLCBwb2ludGVyLCBzdG9yZVR5cGUpOwog
ICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBp
c0luQm91bmRzID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJQdXRCeVZhbCB0eXBlZCBhcnJheSBp
biBib3VuZHMgY2FzZSIpKTsKICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGlu
dWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJQdXRCeVZhbCB0eXBlZCBhcnJheSBjb250
aW51YXRpb24iKSk7CkBAIC0zMzU1LDcgKzMzNDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShpc0luQm91bmRzKSk7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW5Cb3VuZHMsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fb3V0LnN0b3JlKHZhbHVlVG9TdG9yZSwgcG9pbnRlciwgcmVmVHlwZSk7
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlKHZhbHVlVG9TdG9yZSwgcG9pbnRlciwg
c3RvcmVUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0zMzY1LDcgKzMzNTksNiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbV9ub2RlLCAiQmFkIGFycmF5IHR5cGUiKTsKLSNlbmRpZiAvLyBGVExfVVNFU19CMwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNDA2LDEwICszMzk5LDYg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVBcnJheVB1c2goKQogICAgIHsKLSNp
ZiBGVExfVVNFU19CMwotICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpIHx8
ICF2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBDUkFTSCgpOwotI2Vs
c2UKICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICBMVmFsdWUgc3RvcmFnZSA9IGxvd1N0b3JhZ2UobV9ub2RlLT5jaGlsZDMoKSk7CiAgICAg
ICAgIApAQCAtMzQxOCw3ICszNDA3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcnJheTo6
Q29udGlndW91czoKICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOiB7CiAgICAgICAgICAgICBM
VmFsdWUgdmFsdWU7Ci0gICAgICAgICAgICBMVHlwZSByZWZUeXBlOworICAgICAgICAgICAgT3V0
cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgIT0gQXJyYXk6OkRvdWJsZSkgewogICAgICAgICAg
ICAgICAgIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOwpAQCAtMzQyNiwxMyArMzQxNSwxMyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBGVExfVFlQRV9DSEVDSygKICAgICAgICAgICAgICAgICAgICAgICAgIGpzVmFs
dWVWYWx1ZSh2YWx1ZSksIG1fbm9kZS0+Y2hpbGQyKCksIFNwZWNJbnQzMiwgaXNOb3RJbnQzMih2
YWx1ZSkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZWZUeXBlID0gbV9v
dXQucmVmNjQ7CisgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9yZTY0Owog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBGVExfVFlQRV9DSEVDSygKICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBtX25vZGUtPmNoaWxkMigpLCBTcGVj
RG91YmxlUmVhbCwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxPclVu
b3JkZXJlZCh2YWx1ZSwgdmFsdWUpKTsKLSAgICAgICAgICAgICAgICByZWZUeXBlID0gbV9vdXQu
cmVmRG91YmxlOworICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmVEb3Vi
bGU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEluZGV4ZWRBYnN0
cmFjdEhlYXAmIGhlYXAgPSBtX2hlYXBzLmZvckFycmF5VHlwZShtX25vZGUtPmFycmF5TW9kZSgp
LnR5cGUoKSk7CkBAIC0zNDUwLDcgKzM0MzksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGZhc3RQYXRo
LCBzbG93UGF0aCk7CiAgICAgICAgICAgICBtX291dC5zdG9yZSgKLSAgICAgICAgICAgICAgICB2
YWx1ZSwgbV9vdXQuYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIocHJl
dkxlbmd0aCkpLCByZWZUeXBlKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSwgbV9vdXQuYmFzZUlu
ZGV4KGhlYXAsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIocHJldkxlbmd0aCkpLCBzdG9yZVR5
cGUpOwogICAgICAgICAgICAgTFZhbHVlIG5ld0xlbmd0aCA9IG1fb3V0LmFkZChwcmV2TGVuZ3Ro
LCBtX291dC5pbnQzMk9uZSk7CiAgICAgICAgICAgICBtX291dC5zdG9yZTMyKG5ld0xlbmd0aCwg
c3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKICAgICAgICAgICAgIApA
QCAtMzQ3Niw3ICszNDY1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIERGR19DUkFTSChtX2dy
YXBoLCBtX25vZGUsICJCYWQgYXJyYXkgdHlwZSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0jZW5kaWYKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJyYXlQb3AoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAkocmV2aXNpb24gMTkz
ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxMyArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1ZGUgIkZUTEIzT3V0cHV0LmgiCiAjaW5jbHVkZSAiRlRM
T3V0cHV0LmgiCiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKLSNpZiAhRlRMX1VTRVNfQjMKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCisjaWYgIUZUTF9VU0VTX0IzCisKIE91dHB1
dDo6T3V0cHV0KFN0YXRlJiBzdGF0ZSkKICAgICA6IEludHJpbnNpY1JlcG9zaXRvcnkoc3RhdGUu
Y29udGV4dCkKICAgICAsIG1fZnVuY3Rpb24oMCkKQEAgLTEzNiw4ICsxMzgsNiBAQCBMVmFsdWUg
T3V0cHV0Ojpsb2FkKFR5cGVkUG9pbnRlciBwb2ludGVyCiAKIHZvaWQgT3V0cHV0OjpzdG9yZShM
VmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyLCBMVHlwZSByZWZUeXBlKQogewotICAg
IGlmIChyZWZUeXBlID09IHJlZkZsb2F0KQotICAgICAgICB2YWx1ZSA9IGJ1aWxkRlBDYXN0KG1f
YnVpbGRlciwgdmFsdWUsIGZsb2F0VHlwZSk7CiAgICAgTFZhbHVlIHJlc3VsdCA9IHNldCh2YWx1
ZSwgaW50VG9QdHIocG9pbnRlci52YWx1ZSgpLCByZWZUeXBlKSk7CiAgICAgcG9pbnRlci5oZWFw
KCkuZGVjb3JhdGVJbnN0cnVjdGlvbihyZXN1bHQsICptX2hlYXBzKTsKIH0KQEAgLTE5Nyw4ICsx
OTcsNjMgQEAgdm9pZCBPdXRwdXQ6OmNoZWNrKExWYWx1ZSBjb25kaXRpb24sIFdlaQogICAgIGNo
ZWNrKGNvbmRpdGlvbiwgdGFrZW4sIHRha2VuLndlaWdodCgpLmludmVyc2UoKSk7CiB9CiAKKyNl
bmRpZiAvLyAhRlRMX1VTRVNfQjMKKworTFZhbHVlIE91dHB1dDo6bG9hZChUeXBlZFBvaW50ZXIg
cG9pbnRlciwgTG9hZFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IExvYWQ4U2lnbkV4dDMyOgorICAgICAgICByZXR1cm4gbG9hZDhTaWduRXh0MzIocG9pbnRlcik7
CisgICAgY2FzZSBMb2FkOFplcm9FeHQzMjoKKyAgICAgICAgcmV0dXJuIGxvYWQ4WmVyb0V4dDMy
KHBvaW50ZXIpOworICAgIGNhc2UgTG9hZDE2U2lnbkV4dDMyOgorICAgICAgICByZXR1cm4gbG9h
ZDhTaWduRXh0MzIocG9pbnRlcik7CisgICAgY2FzZSBMb2FkMTZaZXJvRXh0MzI6CisgICAgICAg
IHJldHVybiBsb2FkOFplcm9FeHQzMihwb2ludGVyKTsKKyAgICBjYXNlIExvYWQzMjoKKyAgICAg
ICAgcmV0dXJuIGxvYWQzMihwb2ludGVyKTsKKyAgICBjYXNlIExvYWQ2NDoKKyAgICAgICAgcmV0
dXJuIGxvYWQ2NChwb2ludGVyKTsKKyAgICBjYXNlIExvYWRQdHI6CisgICAgICAgIHJldHVybiBs
b2FkUHRyKHBvaW50ZXIpOworICAgIGNhc2UgTG9hZEZsb2F0OgorICAgICAgICByZXR1cm4gbG9h
ZEZsb2F0KHBvaW50ZXIpOworICAgIGNhc2UgTG9hZERvdWJsZToKKyAgICAgICAgcmV0dXJuIGxv
YWREb3VibGUocG9pbnRlcik7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgT3V0cHV0OjpzdG9yZShMVmFsdWUg
dmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyLCBTdG9yZVR5cGUgdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFN0b3JlMzJBczg6CisgICAgICAgIHN0b3JlMzJBczgodmFs
dWUsIHBvaW50ZXIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdG9yZTMyQXMxNjoKKyAg
ICAgICAgc3RvcmUzMkFzMTYodmFsdWUsIHBvaW50ZXIpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBTdG9yZTMyOgorICAgICAgICBzdG9yZTMyKHZhbHVlLCBwb2ludGVyKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgU3RvcmU2NDoKKyAgICAgICAgc3RvcmU2NCh2YWx1ZSwgcG9pbnRl
cik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0b3JlUHRyOgorICAgICAgICBzdG9yZVB0
cih2YWx1ZSwgcG9pbnRlcik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0b3JlRmxvYXQ6
CisgICAgICAgIHN0b3JlRmxvYXQodmFsdWUsIHBvaW50ZXIpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBTdG9yZURvdWJsZToKKyAgICAgICAgc3RvcmVEb3VibGUodmFsdWUsIHBvaW50ZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKIAotI2VuZGlmIC8vICFGVExfVVNF
U19CMwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDE5Mzg4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OSwxNCArMjU5LDQzIEBA
IHB1YmxpYzoKICAgICBMVmFsdWUgbG9hZDMyKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVy
biBsb2FkKHBvaW50ZXIsIHJlZjMyKTsgfQogICAgIExWYWx1ZSBsb2FkNjQoVHlwZWRQb2ludGVy
IHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwgcmVmNjQpOyB9CiAgICAgTFZhbHVlIGxv
YWRQdHIoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwgcmVmUHRy
KTsgfQotICAgIExWYWx1ZSBsb2FkRmxvYXRUb0RvdWJsZShUeXBlZFBvaW50ZXIgcG9pbnRlcikg
eyByZXR1cm4gYnVpbGRGUENhc3QobV9idWlsZGVyLCBsb2FkKHBvaW50ZXIsIHJlZkZsb2F0KSwg
ZG91YmxlVHlwZSk7IH0KKyAgICBMVmFsdWUgbG9hZEZsb2F0KFR5cGVkUG9pbnRlciBwb2ludGVy
KSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIHJlZkZsb2F0KTsgfQogICAgIExWYWx1ZSBsb2FkRG91
YmxlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIHJlZkRvdWJs
ZSk7IH0KLSAgICB2b2lkIHN0b3JlMTYoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRl
cikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlciwgcmVmMTYpOyB9CisKKyAgICBlbnVtIExvYWRUeXBl
IHsKKyAgICAgICAgTG9hZDhTaWduRXh0MzIsCisgICAgICAgIExvYWQ4WmVyb0V4dDMyLAorICAg
ICAgICBMb2FkMTZTaWduRXh0MzIsCisgICAgICAgIExvYWQxNlplcm9FeHQzMiwKKyAgICAgICAg
TG9hZDMyLAorICAgICAgICBMb2FkNjQsCisgICAgICAgIExvYWRQdHIsCisgICAgICAgIExvYWRG
bG9hdCwKKyAgICAgICAgTG9hZERvdWJsZQorICAgIH07CisKKyAgICBMVmFsdWUgbG9hZChUeXBl
ZFBvaW50ZXIsIExvYWRUeXBlKTsKKyAgICAKKyAgICB2b2lkIHN0b3JlMzJBczgoTFZhbHVlIHZh
bHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZShpbnRDYXN0KHZhbHVlLCBpbnQ4KSwg
cG9pbnRlciwgcmVmOCk7IH0KKyAgICB2b2lkIHN0b3JlMzJBczE2KExWYWx1ZSB2YWx1ZSwgVHlw
ZWRQb2ludGVyIHBvaW50ZXIpIHsgc3RvcmUoaW50Q2FzdCh2YWx1ZSwgaW50MTYpLCBwb2ludGVy
LCByZWYxNik7IH0KICAgICB2b2lkIHN0b3JlMzIoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIg
cG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlciwgcmVmMzIpOyB9CiAgICAgdm9pZCBzdG9y
ZTY0KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgc3RvcmUodmFsdWUsIHBv
aW50ZXIsIHJlZjY0KTsgfQogICAgIHZvaWQgc3RvcmVQdHIoTFZhbHVlIHZhbHVlLCBUeXBlZFBv
aW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlciwgcmVmUHRyKTsgfQorICAgIHZv
aWQgc3RvcmVGbG9hdChMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHN0b3Jl
KHZhbHVlLCBwb2ludGVyLCByZWZGbG9hdCk7IH0KICAgICB2b2lkIHN0b3JlRG91YmxlKExWYWx1
ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgc3RvcmUodmFsdWUsIHBvaW50ZXIsIHJl
ZkRvdWJsZSk7IH0KIAorICAgIGVudW0gU3RvcmVUeXBlIHsKKyAgICAgICAgU3RvcmUzMkFzOCwK
KyAgICAgICAgU3RvcmUzMkFzMTYsCisgICAgICAgIFN0b3JlMzIsCisgICAgICAgIFN0b3JlNjQs
CisgICAgICAgIFN0b3JlUHRyLAorICAgICAgICBTdG9yZUZsb2F0LAorICAgICAgICBTdG9yZURv
dWJsZQorICAgIH07CisKKyAgICB2b2lkIHN0b3JlKExWYWx1ZSwgVHlwZWRQb2ludGVyLCBTdG9y
ZVR5cGUpOworCiAgICAgTFZhbHVlIGFkZFB0cihMVmFsdWUgdmFsdWUsIHB0cmRpZmZfdCBpbW1l
ZGlhdGUgPSAwKQogICAgIHsKICAgICAgICAgaWYgKCFpbW1lZGlhdGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267140</attachid>
            <date>2015-12-10 17:08:19 -0800</date>
            <delta_ts>2015-12-10 17:08:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152105-20151210170747.patch</filename>
            <type>text/plain</type>
            <size>23710</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzOTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MmRhN2RlYjY4MWMzYzUyMjZlYjdjZTJhMTc1ODg5NWFmMTM5OThkLi4zNjVjYjcxZjg1NTE2NzIy
NDViNTRkNWE2ZjNlZDc1ZTkxMjExM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxNS0xMi0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIEZUTCBCMyBzaG91bGQgYmUgYWJsZSB0byBydW4gcXVpY2tzb3J0IGFzbS5qcyB0
ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIx
MDUKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBUaGlz
IGNvdmVycyBtYWtpbmcgYWxsIG9mIHRoZSBjaGFuZ2VzIG5lZWRlZCB0byBydW4gcXVpY2tzb3J0
LmpzIGZyb20gQXNtQmVuY2guCisKKyAgICAgICAgLSBSZWludHJvZHVjZWQgZmxvYXQgdHlwZXMg
dG8gRlRMTG93ZXIgc2luY2Ugd2Ugbm93IGhhdmUgQjM6OkZsb2F0LgorCisgICAgICAgIC0gR2F2
ZSBGVEw6Ok91dHB1dCB0aGUgYWJpbGl0eSB0byBzcGVhayBvZiBsb2FkIHR5cGVzIGFuZCBzdG9y
ZSB0eXBlcyBzZXBhcmF0ZWx5IGZyb20gTFZhbHVlCisgICAgICAgICAgdHlwZXMuIFRoaXMgZG9k
Z2VzIHRoZSBwcm9ibGVtIHRoYXQgQjMgZG9lc24ndCBoYXZlIHR5cGVzIGZvciBJbnQ4IGFuZCBJ
bnQxNiBidXQgc3VwcG9ydHMgbG9hZHMKKyAgICAgICAgICBhbmQgc3RvcmVzIG9mIHRoYXQgdHlw
ZS4KKworICAgICAgICBJIGFsc28gZml4ZWQgYSBwcmUtZXhpc3RpbmcgYnVnIGluIGEgdGVzdCB0
aGF0IGFwcGVhcmVkIHRvIG9ubHkgbWFuaWZlc3QgaW4gcmVsZWFzZSBidWlsZHMuCisKKyAgICAg
ICAgQ3VycmVudGx5LCBCMydzIHBlcmZvcm1hbmNlIG9uIGFzbS5qcyB0ZXN0cyBpcyBub3QgZ29v
ZC4gSXQgc2hvdWxkIGJlIGVhc3kgdG8gZml4OgorCisgICAgICAgIC0gQjMgc2hvdWxkIHN0cmVu
Z3RoLXJlZHVjZSB0aGUgc2hpZnRpbmcgbWFkbmVzcyB0aGF0IGhhcHBlbnMgaW4gYXNtLmpzIG1l
bW9yeSBhY2Nlc3NlcworICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTIxMDYKKworICAgICAgICAtIEIzIGNvbnN0YW50IGhvaXN0aW5nIHNob3VsZCBo
YXZlIGEgc3RvcnkgZm9yIHRoZSBhc20uanMgaGVhcCBjb25zdGFudAorICAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIxMDcKKworICAgICAgICAqIGIz
L0IzQ0NhbGxWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzVmFsaWRhdGUuY3BwOgorICAgICAgICAq
IGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3FydEFyZ1dpdGhFZmZlY3Rm
dWxEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKiBmdGwvRlRMQjNPdXRwdXQuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6c3RvcmUzMkFzOCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdG9yZTMyQXMxNik6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkRmxvYXRUb0RvdWJsZSk6IERlbGV0ZWQu
CisgICAgICAgICogZnRsL0ZUTEIzT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojpsb2FkRmxvYXQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmUzMik6CisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdG9yZTY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OnN0b3JlUHRyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN0b3JlRmxvYXQpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmVEb3VibGUpOgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6Y2FsbCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0QnlWYWwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFycmF5
UHVzaCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0Ojpsb2FkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN0b3JlKToKKyAgICAg
ICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkRmxv
YXQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmUzMkFzOCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpzdG9yZTMyQXMxNik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
OjpzdG9yZUZsb2F0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWRGbG9hdFRvRG91
YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN0b3JlMTYpOiBEZWxl
dGVkLgorCiAyMDE1LTEyLTEwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtKU0NdIEFkZCBhIE1vZHVsbyBvcGVyYXRvciB0byBCMywgYW5kIGEgY2hp
bGwgdmFyaWFudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ0NhbGxW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ0NhbGxWYWx1ZS5oCmluZGV4IDdm
MmNiOGJmOGEyZjQ0ZmJhNzBmZjhkZjdiN2MxNTk0ZjJjNTM0ZTEuLjMyN2Y2NGIzMzZhNTBkNmY1
YjAwYzY2ZTk2MmRjMmIzMTE0YmM1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0NDYWxsVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDQ2Fs
bFZhbHVlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgOiBWYWx1ZShpbmRl
eCwgQ2hlY2tlZE9wY29kZSwgQ0NhbGwsIHR5cGUsIG9yaWdpbiwgYXJndW1lbnRzLi4uKQogICAg
ICAgICAsIGVmZmVjdHMoRWZmZWN0czo6Zm9yQ2FsbCgpKQogICAgIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobnVtQ2hpbGRyZW4oKSA+PSAxKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+CkBAIC01Niw2ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIDog
VmFsdWUoaW5kZXgsIENoZWNrZWRPcGNvZGUsIENDYWxsLCB0eXBlLCBvcmlnaW4sIGFyZ3VtZW50
cy4uLikKICAgICAgICAgLCBlZmZlY3RzKGVmZmVjdHMpCiAgICAgeworICAgICAgICBSRUxFQVNF
X0FTU0VSVChudW1DaGlsZHJlbigpID49IDEpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAppbmRleCBlMDA5NjNjMmFlM2UwNTQ5NmFmZTI1OWM0MTA1
NDVlNjc5OGQyN2FiLi5mOTk2NWU2Yjc4ODc1ZTRjNjk5ZGVmN2ZmOGM1Mzg0ZDE1NmU5Yzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCkBAIC0yODksOCArMjg5LDgg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDQ2FsbDoKLSAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIGEgd2lsZGNhcmQuIFlvdSBjYW4gcGFzcyBhbnkgbm9uLXZvaWQg
YXJndW1lbnRzIGFuZCB5b3UgY2FuIHNlbGVjdCBhbnkKLSAgICAgICAgICAgICAgICAvLyByZXR1
cm4gdHlwZS4KKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA+
PSAxLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5j
aGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhdGNocG9pbnQ6CiAgICAgICAg
ICAgICAgICAgaWYgKHZhbHVlLT50eXBlKCkgPT0gVm9pZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5jcHAKaW5kZXggMDYwNGJiMDk0NDNkNGU4NGExNTcwZDNmMzUyMWIwOTcyZDlhYWFmMS4u
ZDc4NGM4ODgxNDZkMDUxYzUwMjljNDNkMzlhZDY3N2RhNTNiY2NkMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTMwMDAsMTIgKzMwMDAsMTMgQEAgdm9pZCB0ZXN0U3FydEFy
Z1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCiAgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwgT3JpZ2luKCksIGFzRG91Ymxl
KTsKICAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOwogICAgIFZhbHVlKiByZXN1bHQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9h
dFJlc3VsdCk7Ci0gICAgVmFsdWUqIGRvdWJsZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Cisg
ICAgVmFsdWUqIGRvdWJsZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91Ymxl
QWRkcmVzcyk7CiAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgcmVzdWx0MzIpOwogCiAgICAgZG91YmxlIGVmZmVjdCA9IDA7Ci0gICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oYSksICZlZmZlY3QpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHNxcnQoYSkpKSkpOworICAgIGludDMyX3QgcmVzdWx0VmFsdWUgPSBjb21waWxlQW5k
UnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgJmVmZmVjdCk7Cisg
ICAgQ0hFQ0soaXNJZGVudGljYWwocmVzdWx0VmFsdWUsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihz
dGF0aWNfY2FzdDxmbG9hdD4oc3FydChhKSkpKSk7CiAgICAgQ0hFQ0soaXNJZGVudGljYWwoZWZm
ZWN0LCBzcXJ0KGEpKSk7CiB9CiAKQEAgLTcyMDYsOSArNzIwNyw5IEBAIHN0YXRpYyBWZWN0b3I8
SW50MzJPcGVyYW5kPiBpbnQzMk9wZXJhbmRzKCkKICAgICAgICAgICAgIGNvbnRpbnVlOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB0YXNrcy5hcHBlbmQoY3Jl
YXRlU2hhcmVkVGFzazx2b2lkKCk+KCAgICAgICAgICBcCiAgICAgICAgICAgICBbPV0gKCkgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBkYXRh
TG9nKHRlc3RTdHIsICIuLi5cbiIpOyAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGRh
dGFMb2codG9DU3RyaW5nKHRlc3RTdHIsICIuLi5cbiIpKTsgICBcCiAgICAgICAgICAgICAgICAg
dGVzdChhLnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAg
ICBkYXRhTG9nKHRlc3RTdHIsICI6IE9LIVxuIik7ICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgIGRhdGFMb2codG9DU3RyaW5nKHRlc3RTdHIsICI6IE9LIVxuIikpOyBcCiAgICAgICAgICAg
ICB9KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CiAK
QEAgLTcyMjAsOSArNzIyMSw5IEBAIHN0YXRpYyBWZWN0b3I8SW50MzJPcGVyYW5kPiBpbnQzMk9w
ZXJhbmRzKCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHRhc2tzLmFwcGVuZChjcmVhdGVTaGFyZWRUYXNr
PHZvaWQoKT4oICAgICAgICAgIFwKICAgICAgICAgICAgICAgICBbPV0gKCkgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyh0
ZXN0U3RyLCAiLi4uXG4iKTsgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZyh0b0NTdHJpbmcodGVzdFN0ciwgIi4uLlxuIikpOyAgIFwKICAgICAgICAgICAgICAgICAg
ICAgdGVzdChhLnZhbHVlLCBiLnZhbHVlKTsgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZyh0ZXN0U3RyLCAiOiBPSyFcbiIpOyAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZyh0b0NTdHJpbmcodGVzdFN0ciwgIjogT0shXG4iKSk7IFwK
ICAgICAgICAgICAgICAgICB9KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEIzT3V0cHV0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQu
Y3BwCmluZGV4IDVlZmM2N2RlMTlmMzY0ZDc3YTIwOGFkNWM4OGIxNGQwNTVkNzYzMzYuLjI5M2Iz
ZTlmMThhOTQ4YmVmZGY3YWVkOTc0NjA1ODA3NTUxY2UxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQjNPdXRwdXQuY3BwCkBAIC05NywxNSArOTcsMjEgQEAgTFZhbHVlIE91dHB1
dDo6bG9hZDE2WmVyb0V4dDMyKFR5cGVkUG9pbnRlciBwb2ludGVyKQogICAgIHJldHVybiBsb2Fk
OwogfQogCi1MVmFsdWUgT3V0cHV0Ojpsb2FkRmxvYXRUb0RvdWJsZShUeXBlZFBvaW50ZXIgcG9p
bnRlcikKK3ZvaWQgT3V0cHV0OjpzdG9yZShMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2lu
dGVyKQogewotICAgIExWYWx1ZSBsb2FkZWRGbG9hdCA9IGxvYWQocG9pbnRlciwgZmxvYXRUeXBl
KTsKLSAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6
RmxvYXRUb0RvdWJsZSwgb3JpZ2luKCksIGxvYWRlZEZsb2F0KTsKKyAgICBMVmFsdWUgc3RvcmUg
PSBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6Ok1lbW9yeVZhbHVlPihtX3Byb2MsIEIzOjpTdG9yZSwg
b3JpZ2luKCksIHZhbHVlLCBwb2ludGVyLnZhbHVlKCkpOworICAgIHBvaW50ZXIuaGVhcCgpLmRl
Y29yYXRlSW5zdHJ1Y3Rpb24oc3RvcmUsICptX2hlYXBzKTsKIH0KIAotdm9pZCBPdXRwdXQ6OnN0
b3JlKExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpCit2b2lkIE91dHB1dDo6c3Rv
cmUzMkFzOChMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKQogewotICAgIExWYWx1
ZSBzdG9yZSA9IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6TWVtb3J5VmFsdWU+KG1fcHJvYywgQjM6
OlN0b3JlLCBvcmlnaW4oKSwgdmFsdWUsIHBvaW50ZXIudmFsdWUoKSk7CisgICAgTFZhbHVlIHN0
b3JlID0gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpNZW1vcnlWYWx1ZT4obV9wcm9jLCBCMzo6U3Rv
cmU4LCBvcmlnaW4oKSwgdmFsdWUsIHBvaW50ZXIudmFsdWUoKSk7CisgICAgcG9pbnRlci5oZWFw
KCkuZGVjb3JhdGVJbnN0cnVjdGlvbihzdG9yZSwgKm1faGVhcHMpOworfQorCit2b2lkIE91dHB1
dDo6c3RvcmUzMkFzMTYoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikKK3sKKyAg
ICBMVmFsdWUgc3RvcmUgPSBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6Ok1lbW9yeVZhbHVlPihtX3By
b2MsIEIzOjpTdG9yZTE2LCBvcmlnaW4oKSwgdmFsdWUsIHBvaW50ZXIudmFsdWUoKSk7CiAgICAg
cG9pbnRlci5oZWFwKCkuZGVjb3JhdGVJbnN0cnVjdGlvbihzdG9yZSwgKm1faGVhcHMpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKaW5kZXggZjdlZWU1MmNkY2Nh
ZTIzNjM1NzcxMWRiNzVjZWQyMTA2ZDE3YmQwMS4uMWE2ZGU3ODE4ZmY5ZWQwM2RkNTU2N2JhNjdj
OTQwN2I5OWY1OWM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExC
M091dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaApA
QCAtMjExLDEyICsyMTEsNjEgQEAgcHVibGljOgogICAgIExWYWx1ZSBsb2FkMzIoVHlwZWRQb2lu
dGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwgQjM6OkludDMyKTsgfQogICAgIExW
YWx1ZSBsb2FkNjQoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwg
QjM6OkludDY0KTsgfQogICAgIExWYWx1ZSBsb2FkUHRyKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7
IHJldHVybiBsb2FkKHBvaW50ZXIsIEIzOjpwb2ludGVyVHlwZSgpKTsgfQotICAgIExWYWx1ZSBs
b2FkRmxvYXRUb0RvdWJsZShUeXBlZFBvaW50ZXIpOworICAgIExWYWx1ZSBsb2FkRmxvYXQoVHlw
ZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwgQjM6OkZsb2F0KTsgfQog
ICAgIExWYWx1ZSBsb2FkRG91YmxlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2Fk
KHBvaW50ZXIsIEIzOjpEb3VibGUpOyB9Ci0gICAgdm9pZCBzdG9yZTMyKExWYWx1ZSB2YWx1ZSwg
VHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgc3RvcmUodmFsdWUsIHBvaW50ZXIpOyB9Ci0gICAgdm9p
ZCBzdG9yZTY0KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgc3RvcmUodmFs
dWUsIHBvaW50ZXIpOyB9Ci0gICAgdm9pZCBzdG9yZVB0cihMVmFsdWUgdmFsdWUsIFR5cGVkUG9p
bnRlciBwb2ludGVyKSB7IHN0b3JlKHZhbHVlLCBwb2ludGVyKTsgfQotICAgIHZvaWQgc3RvcmVE
b3VibGUoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwg
cG9pbnRlcik7IH0KKyAgICB2b2lkIHN0b3JlMzJBczgoTFZhbHVlLCBUeXBlZFBvaW50ZXIpOwor
ICAgIHZvaWQgc3RvcmUzMkFzMTYoTFZhbHVlLCBUeXBlZFBvaW50ZXIpOworICAgIHZvaWQgc3Rv
cmUzMihMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHZhbHVlLT50eXBlKCkgPT0gQjM6OkludDMyKTsKKyAgICAgICAgc3RvcmUodmFsdWUs
IHBvaW50ZXIpOworICAgIH0KKyAgICB2b2lkIHN0b3JlNjQoTFZhbHVlIHZhbHVlLCBUeXBlZFBv
aW50ZXIgcG9pbnRlcikKKyAgICB7CisgICAgICAgIEFTU0VSVCh2YWx1ZS0+dHlwZSgpID09IEIz
OjpJbnQ2NCk7CisgICAgICAgIHN0b3JlKHZhbHVlLCBwb2ludGVyKTsKKyAgICB9CisgICAgdm9p
ZCBzdG9yZVB0cihMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHZhbHVlLT50eXBlKCkgPT0gQjM6OnBvaW50ZXJUeXBlKCkpOworICAgICAg
ICBzdG9yZSh2YWx1ZSwgcG9pbnRlcik7CisgICAgfQorICAgIHZvaWQgc3RvcmVGbG9hdChMVmFs
dWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZh
bHVlLT50eXBlKCkgPT0gQjM6OkZsb2F0KTsKKyAgICAgICAgc3RvcmUodmFsdWUsIHBvaW50ZXIp
OworICAgIH0KKyAgICB2b2lkIHN0b3JlRG91YmxlKExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVy
IHBvaW50ZXIpCisgICAgeworICAgICAgICBBU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBCMzo6RG91
YmxlKTsKKyAgICAgICAgc3RvcmUodmFsdWUsIHBvaW50ZXIpOworICAgIH0KKworICAgIGVudW0g
TG9hZFR5cGUgeworICAgICAgICBMb2FkOFNpZ25FeHQzMiwKKyAgICAgICAgTG9hZDhaZXJvRXh0
MzIsCisgICAgICAgIExvYWQxNlNpZ25FeHQzMiwKKyAgICAgICAgTG9hZDE2WmVyb0V4dDMyLAor
ICAgICAgICBMb2FkMzIsCisgICAgICAgIExvYWQ2NCwKKyAgICAgICAgTG9hZFB0ciwKKyAgICAg
ICAgTG9hZEZsb2F0LAorICAgICAgICBMb2FkRG91YmxlCisgICAgfTsKKworICAgIExWYWx1ZSBs
b2FkKFR5cGVkUG9pbnRlciwgTG9hZFR5cGUpOworICAgIAorICAgIGVudW0gU3RvcmVUeXBlIHsK
KyAgICAgICAgU3RvcmUzMkFzOCwKKyAgICAgICAgU3RvcmUzMkFzMTYsCisgICAgICAgIFN0b3Jl
MzIsCisgICAgICAgIFN0b3JlNjQsCisgICAgICAgIFN0b3JlUHRyLAorICAgICAgICBTdG9yZUZs
b2F0LAorICAgICAgICBTdG9yZURvdWJsZQorICAgIH07CisKKyAgICB2b2lkIHN0b3JlKExWYWx1
ZSwgVHlwZWRQb2ludGVyLCBTdG9yZVR5cGUpOwogCiAgICAgTFZhbHVlIGFkZFB0cihMVmFsdWUg
dmFsdWUsIHB0cmRpZmZfdCBpbW1lZGlhdGUgPSAwKQogICAgIHsKQEAgLTM0MiwxMSArMzkxLDE2
IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgZXh0cmFjdFZhbHVlKExWYWx1ZSBhZ2dWYWwsIHVuc2ln
bmVkIGluZGV4KSB7IENSQVNIKCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5
cGU+Ci0gICAgTFZhbHVlIGNhbGwoTFR5cGUgdHlwZSwgTFZhbHVlIGZ1bmN0aW9uLCBjb25zdCBW
ZWN0b3JUeXBlJiB2ZWN0b3IpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q0NhbGxW
YWx1ZT4obV9wcm9jLCB0eXBlLCBvcmlnaW4oKSwgQjM6OlZhbHVlOjpBZGphY2VuY3lMaXN0KHZl
Y3RvcikpOyB9Ci0gICAgTFZhbHVlIGNhbGwoTFR5cGUgdHlwZSwgTFZhbHVlIGZ1bmN0aW9uKSB7
IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNDYWxsVmFsdWU+KG1fcHJvYywgdHlwZSwg
b3JpZ2luKCkpOyB9Ci0gICAgTFZhbHVlIGNhbGwoTFR5cGUgdHlwZSwgTFZhbHVlIGZ1bmN0aW9u
LCBMVmFsdWUgYXJnMSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDQ2FsbFZhbHVl
PihtX3Byb2MsIHR5cGUsIG9yaWdpbigpLCBhcmcxKTsgfQorICAgIExWYWx1ZSBjYWxsKExUeXBl
IHR5cGUsIExWYWx1ZSBmdW5jdGlvbiwgY29uc3QgVmVjdG9yVHlwZSYgdmVjdG9yKQorICAgIHsK
KyAgICAgICAgQjM6OkNDYWxsVmFsdWUqIHJlc3VsdCA9IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
Q0NhbGxWYWx1ZT4obV9wcm9jLCB0eXBlLCBvcmlnaW4oKSwgZnVuY3Rpb24pOworICAgICAgICBy
ZXN1bHQtPmNoaWxkcmVuKCkuYXBwZW5kVmVjdG9yKHZlY3Rvcik7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5cGUsIExWYWx1ZSBmdW5jdGlv
bikgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDQ2FsbFZhbHVlPihtX3Byb2MsIHR5
cGUsIG9yaWdpbigpLCBmdW5jdGlvbik7IH0KKyAgICBMVmFsdWUgY2FsbChMVHlwZSB0eXBlLCBM
VmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8
QjM6OkNDYWxsVmFsdWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCksIGZ1bmN0aW9uLCBhcmcxKTsg
fQogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgTFZhbHVlIGNhbGwoTFR5cGUg
dHlwZSwgTFZhbHVlIGZ1bmN0aW9uLCBMVmFsdWUgYXJnMSwgQXJncy4uLiBhcmdzKSB7IHJldHVy
biBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNDYWxsVmFsdWU+KG1fcHJvYywgdHlwZSwgb3JpZ2lu
KCksIGFyZzEsIGFyZ3MuLi4pOyB9CisgICAgTFZhbHVlIGNhbGwoTFR5cGUgdHlwZSwgTFZhbHVl
IGZ1bmN0aW9uLCBMVmFsdWUgYXJnMSwgQXJncy4uLiBhcmdzKSB7IHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OkNDYWxsVmFsdWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCksIGZ1bmN0aW9u
LCBhcmcxLCBhcmdzLi4uKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBl
PgogICAgIExWYWx1ZSBvcGVyYXRpb24oRnVuY3Rpb25UeXBlIGZ1bmN0aW9uKSB7IHJldHVybiBj
b25zdEludFB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggZWUzNWQyZjk2
NDRlN2ZjOGMwNWNjMzAxMjExZmE5NTM4NWU4NjRkNy4uMTc1MzljMWY5YzU5YjhlZTAxOTg2Yjcw
Y2FhYjU2MmE4ODdiYmZmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKQEAgLTMwMjAsNyArMzAyMCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdDsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICAgICAgICAgICAgICBjYXNlIFR5cGVGbG9hdDMyOgotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBtX291dC5sb2FkRmxvYXRUb0RvdWJsZShwb2ludGVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gbV9vdXQuZnBDYXN0KG1fb3V0LmxvYWRGbG9hdChwb2ludGVyKSwgbV9v
dXQuZG91YmxlVHlwZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGNhc2UgVHlwZUZsb2F0NjQ6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0
LmxvYWREb3VibGUocG9pbnRlcik7CkBAIC0zMTg2LDEwICszMTg2LDYgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6Ci0jaWYgRlRMX1VTRVNfQjMK
LSAgICAgICAgICAgIFVOVVNFRF9QQVJBTShjaGlsZDUpOwotICAgICAgICAgICAgQ1JBU0goKTsK
LSNlbHNlCiAgICAgICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gbV9ub2RlLT5hcnJheU1v
ZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaXNU
eXBlZFZpZXcodHlwZSkpIHsKQEAgLTMyMDEsNyArMzE5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQuemVyb0V4dChpbmRleCwgbV9vdXQuaW50UHRyKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihsb2dFbGVtZW50
U2l6ZSh0eXBlKSkpKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTFR5cGUg
cmVmVHlwZTsKKyAgICAgICAgICAgICAgICBPdXRwdXQ6OlN0b3JlVHlwZSBzdG9yZVR5cGU7CiAg
ICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlVG9TdG9yZTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBpZiAoaXNJbnQodHlwZSkpIHsKQEAgLTMyNzYsMTkgKzMyNzIsMTcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAg
ICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAg
ICAgICB2YWx1ZVRvU3RvcmUgPSBpbnRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZVRvU3RvcmUgPSBtX291dC5pbnRDYXN0KGludFZhbHVl
LCBtX291dC5pbnQ4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZlR5cGUgPSBtX291dC5y
ZWY4OworICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9yZTMy
QXM4OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVG9TdG9yZSA9IG1fb3V0Lmlu
dENhc3QoaW50VmFsdWUsIG1fb3V0LmludDE2KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
ZlR5cGUgPSBtX291dC5yZWYxNjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9
IE91dHB1dDo6U3RvcmUzMkFzMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVU
b1N0b3JlID0gaW50VmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWZUeXBlID0gbV9v
dXQucmVmMzI7CisgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0
b3JlMzI7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBt
X25vZGUsICJCYWQgZWxlbWVudCBzaXplIik7CkBAIC0zMjk3LDEyICszMjkxLDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShjaGlsZDMp
OwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUeXBlRmxvYXQzMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVG9TdG9y
ZSA9IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVmVHlwZSA9IG1fb3V0LnJlZkZs
b2F0OworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVUb1N0b3JlID0gbV9vdXQuZnBDYXN0
KHZhbHVlLCBtX291dC5mbG9hdFR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVU
eXBlID0gT3V0cHV0OjpTdG9yZUZsb2F0OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVHlwZUZsb2F0NjQ6CiAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZVRvU3RvcmUgPSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
ZlR5cGUgPSBtX291dC5yZWZEb3VibGU7CisgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5
cGUgPSBPdXRwdXQ6OlN0b3JlRG91YmxlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBE
RkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHR5cGVkIGFycmF5IHR5cGUiKTsKQEAgLTMz
MTAsNyArMzMwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMo
KSB8fCBtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxBbGlhcykKLSAgICAgICAgICAgICAgICAgICAg
bV9vdXQuc3RvcmUodmFsdWVUb1N0b3JlLCBwb2ludGVyLCByZWZUeXBlKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuc3RvcmUodmFsdWVUb1N0b3JlLCBwb2ludGVyLCBzdG9yZVR5cGUpOwog
ICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBp
c0luQm91bmRzID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJQdXRCeVZhbCB0eXBlZCBhcnJheSBp
biBib3VuZHMgY2FzZSIpKTsKICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGlu
dWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJQdXRCeVZhbCB0eXBlZCBhcnJheSBjb250
aW51YXRpb24iKSk7CkBAIC0zMzIwLDcgKzMzMTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShpc0luQm91bmRzKSk7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW5Cb3VuZHMsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fb3V0LnN0b3JlKHZhbHVlVG9TdG9yZSwgcG9pbnRlciwgcmVmVHlwZSk7
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlKHZhbHVlVG9TdG9yZSwgcG9pbnRlciwg
c3RvcmVUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0zMzMwLDcgKzMzMjQsNiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbV9ub2RlLCAiQmFkIGFycmF5IHR5cGUiKTsKLSNlbmRpZiAvLyBGVExfVVNFU19CMwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMzcxLDEwICszMzY0LDYg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVBcnJheVB1c2goKQogICAgIHsKLSNp
ZiBGVExfVVNFU19CMwotICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpIHx8
ICF2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBDUkFTSCgpOwotI2Vs
c2UKICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICBMVmFsdWUgc3RvcmFnZSA9IGxvd1N0b3JhZ2UobV9ub2RlLT5jaGlsZDMoKSk7CiAgICAg
ICAgIApAQCAtMzM4Myw3ICszMzcyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcnJheTo6
Q29udGlndW91czoKICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOiB7CiAgICAgICAgICAgICBM
VmFsdWUgdmFsdWU7Ci0gICAgICAgICAgICBMVHlwZSByZWZUeXBlOworICAgICAgICAgICAgT3V0
cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgIT0gQXJyYXk6OkRvdWJsZSkgewogICAgICAgICAg
ICAgICAgIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOwpAQCAtMzM5MSwxMyArMzM4MCwxMyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBGVExfVFlQRV9DSEVDSygKICAgICAgICAgICAgICAgICAgICAgICAgIGpzVmFs
dWVWYWx1ZSh2YWx1ZSksIG1fbm9kZS0+Y2hpbGQyKCksIFNwZWNJbnQzMiwgaXNOb3RJbnQzMih2
YWx1ZSkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZWZUeXBlID0gbV9v
dXQucmVmNjQ7CisgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9yZTY0Owog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBGVExfVFlQRV9DSEVDSygKICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBtX25vZGUtPmNoaWxkMigpLCBTcGVj
RG91YmxlUmVhbCwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxPclVu
b3JkZXJlZCh2YWx1ZSwgdmFsdWUpKTsKLSAgICAgICAgICAgICAgICByZWZUeXBlID0gbV9vdXQu
cmVmRG91YmxlOworICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmVEb3Vi
bGU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEluZGV4ZWRBYnN0
cmFjdEhlYXAmIGhlYXAgPSBtX2hlYXBzLmZvckFycmF5VHlwZShtX25vZGUtPmFycmF5TW9kZSgp
LnR5cGUoKSk7CkBAIC0zNDE1LDcgKzM0MDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGZhc3RQYXRo
LCBzbG93UGF0aCk7CiAgICAgICAgICAgICBtX291dC5zdG9yZSgKLSAgICAgICAgICAgICAgICB2
YWx1ZSwgbV9vdXQuYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIocHJl
dkxlbmd0aCkpLCByZWZUeXBlKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSwgbV9vdXQuYmFzZUlu
ZGV4KGhlYXAsIHN0b3JhZ2UsIG1fb3V0Lnplcm9FeHRQdHIocHJldkxlbmd0aCkpLCBzdG9yZVR5
cGUpOwogICAgICAgICAgICAgTFZhbHVlIG5ld0xlbmd0aCA9IG1fb3V0LmFkZChwcmV2TGVuZ3Ro
LCBtX291dC5pbnQzMk9uZSk7CiAgICAgICAgICAgICBtX291dC5zdG9yZTMyKG5ld0xlbmd0aCwg
c3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKICAgICAgICAgICAgIApA
QCAtMzQ0MSw3ICszNDMwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIERGR19DUkFTSChtX2dy
YXBoLCBtX25vZGUsICJCYWQgYXJyYXkgdHlwZSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0jZW5kaWYKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJyYXlQb3AoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCmluZGV4IGFhMDI1YWUzY2ZmZWI0
N2Q3YjFmYjQyMWMzM2ExNGQzZDY5YzQ3YjguLjVkNjdkY2IyYTBiMjkyN2Q5MTA5NjQ4ZjQ1ZTU4
NjlmYmM2NTgwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0
cHV0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKQEAg
LTI2LDEzICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiREZHQ29t
bW9uLmgiCisjaW5jbHVkZSAiRlRMQjNPdXRwdXQuaCIKICNpbmNsdWRlICJGVExPdXRwdXQuaCIK
IAogI2lmIEVOQUJMRShGVExfSklUKQotI2lmICFGVExfVVNFU19CMwogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEZUTCB7CiAKKyNpZiAhRlRMX1VTRVNfQjMKKwogT3V0cHV0OjpPdXRwdXQo
U3RhdGUmIHN0YXRlKQogICAgIDogSW50cmluc2ljUmVwb3NpdG9yeShzdGF0ZS5jb250ZXh0KQog
ICAgICwgbV9mdW5jdGlvbigwKQpAQCAtMTc3LDggKzE3OSw2IEBAIExWYWx1ZSBPdXRwdXQ6Omxv
YWQoVHlwZWRQb2ludGVyIHBvaW50ZXIsIExUeXBlIHJlZlR5cGUpCiAKIHZvaWQgT3V0cHV0Ojpz
dG9yZShMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyLCBMVHlwZSByZWZUeXBlKQog
ewotICAgIGlmIChyZWZUeXBlID09IHJlZkZsb2F0KQotICAgICAgICB2YWx1ZSA9IGJ1aWxkRlBD
YXN0KG1fYnVpbGRlciwgdmFsdWUsIGZsb2F0VHlwZSk7CiAgICAgTFZhbHVlIHJlc3VsdCA9IHNl
dCh2YWx1ZSwgaW50VG9QdHIocG9pbnRlci52YWx1ZSgpLCByZWZUeXBlKSk7CiAgICAgcG9pbnRl
ci5oZWFwKCkuZGVjb3JhdGVJbnN0cnVjdGlvbihyZXN1bHQsICptX2hlYXBzKTsKIH0KQEAgLTIz
OCw4ICsyMzgsNjMgQEAgdm9pZCBPdXRwdXQ6OmNoZWNrKExWYWx1ZSBjb25kaXRpb24sIFdlaWdo
dGVkVGFyZ2V0IHRha2VuKQogICAgIGNoZWNrKGNvbmRpdGlvbiwgdGFrZW4sIHRha2VuLndlaWdo
dCgpLmludmVyc2UoKSk7CiB9CiAKKyNlbmRpZiAvLyAhRlRMX1VTRVNfQjMKKworTFZhbHVlIE91
dHB1dDo6bG9hZChUeXBlZFBvaW50ZXIgcG9pbnRlciwgTG9hZFR5cGUgdHlwZSkKK3sKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIExvYWQ4U2lnbkV4dDMyOgorICAgICAgICByZXR1cm4g
bG9hZDhTaWduRXh0MzIocG9pbnRlcik7CisgICAgY2FzZSBMb2FkOFplcm9FeHQzMjoKKyAgICAg
ICAgcmV0dXJuIGxvYWQ4WmVyb0V4dDMyKHBvaW50ZXIpOworICAgIGNhc2UgTG9hZDE2U2lnbkV4
dDMyOgorICAgICAgICByZXR1cm4gbG9hZDhTaWduRXh0MzIocG9pbnRlcik7CisgICAgY2FzZSBM
b2FkMTZaZXJvRXh0MzI6CisgICAgICAgIHJldHVybiBsb2FkOFplcm9FeHQzMihwb2ludGVyKTsK
KyAgICBjYXNlIExvYWQzMjoKKyAgICAgICAgcmV0dXJuIGxvYWQzMihwb2ludGVyKTsKKyAgICBj
YXNlIExvYWQ2NDoKKyAgICAgICAgcmV0dXJuIGxvYWQ2NChwb2ludGVyKTsKKyAgICBjYXNlIExv
YWRQdHI6CisgICAgICAgIHJldHVybiBsb2FkUHRyKHBvaW50ZXIpOworICAgIGNhc2UgTG9hZEZs
b2F0OgorICAgICAgICByZXR1cm4gbG9hZEZsb2F0KHBvaW50ZXIpOworICAgIGNhc2UgTG9hZERv
dWJsZToKKyAgICAgICAgcmV0dXJuIGxvYWREb3VibGUocG9pbnRlcik7CisgICAgfQorICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Zv
aWQgT3V0cHV0OjpzdG9yZShMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyLCBTdG9y
ZVR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFN0b3JlMzJBczg6
CisgICAgICAgIHN0b3JlMzJBczgodmFsdWUsIHBvaW50ZXIpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBTdG9yZTMyQXMxNjoKKyAgICAgICAgc3RvcmUzMkFzMTYodmFsdWUsIHBvaW50ZXIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdG9yZTMyOgorICAgICAgICBzdG9yZTMyKHZh
bHVlLCBwb2ludGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RvcmU2NDoKKyAgICAg
ICAgc3RvcmU2NCh2YWx1ZSwgcG9pbnRlcik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0
b3JlUHRyOgorICAgICAgICBzdG9yZVB0cih2YWx1ZSwgcG9pbnRlcik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIFN0b3JlRmxvYXQ6CisgICAgICAgIHN0b3JlRmxvYXQodmFsdWUsIHBvaW50
ZXIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdG9yZURvdWJsZToKKyAgICAgICAgc3Rv
cmVEb3VibGUodmFsdWUsIHBvaW50ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpG
VEwKIAotI2VuZGlmIC8vICFGVExfVVNFU19CMwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAppbmRleCA0NDgxODliNDEyODk1MmJm
ZWQ0Y2FhNmYyMTVkMTE3Nzk1ZWZhYTI3Li4zNmJhMWNhNWRjNzJjMTg1MjQ1ZTA4MTE5NTBjOWVm
YTNjOWE5NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKQEAgLTI2MCwx
NCArMjYwLDQzIEBAIHB1YmxpYzoKICAgICBMVmFsdWUgbG9hZDMyKFR5cGVkUG9pbnRlciBwb2lu
dGVyKSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIHJlZjMyKTsgfQogICAgIExWYWx1ZSBsb2FkNjQo
VHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwgcmVmNjQpOyB9CiAg
ICAgTFZhbHVlIGxvYWRQdHIoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9p
bnRlciwgcmVmUHRyKTsgfQotICAgIExWYWx1ZSBsb2FkRmxvYXRUb0RvdWJsZShUeXBlZFBvaW50
ZXIgcG9pbnRlcikgeyByZXR1cm4gYnVpbGRGUENhc3QobV9idWlsZGVyLCBsb2FkKHBvaW50ZXIs
IHJlZkZsb2F0KSwgZG91YmxlVHlwZSk7IH0KKyAgICBMVmFsdWUgbG9hZEZsb2F0KFR5cGVkUG9p
bnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIHJlZkZsb2F0KTsgfQogICAgIExW
YWx1ZSBsb2FkRG91YmxlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkKHBvaW50
ZXIsIHJlZkRvdWJsZSk7IH0KLSAgICB2b2lkIHN0b3JlMTYoTFZhbHVlIHZhbHVlLCBUeXBlZFBv
aW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlciwgcmVmMTYpOyB9CisKKyAgICBl
bnVtIExvYWRUeXBlIHsKKyAgICAgICAgTG9hZDhTaWduRXh0MzIsCisgICAgICAgIExvYWQ4WmVy
b0V4dDMyLAorICAgICAgICBMb2FkMTZTaWduRXh0MzIsCisgICAgICAgIExvYWQxNlplcm9FeHQz
MiwKKyAgICAgICAgTG9hZDMyLAorICAgICAgICBMb2FkNjQsCisgICAgICAgIExvYWRQdHIsCisg
ICAgICAgIExvYWRGbG9hdCwKKyAgICAgICAgTG9hZERvdWJsZQorICAgIH07CisKKyAgICBMVmFs
dWUgbG9hZChUeXBlZFBvaW50ZXIsIExvYWRUeXBlKTsKKyAgICAKKyAgICB2b2lkIHN0b3JlMzJB
czgoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZShpbnRDYXN0KHZh
bHVlLCBpbnQ4KSwgcG9pbnRlciwgcmVmOCk7IH0KKyAgICB2b2lkIHN0b3JlMzJBczE2KExWYWx1
ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgc3RvcmUoaW50Q2FzdCh2YWx1ZSwgaW50
MTYpLCBwb2ludGVyLCByZWYxNik7IH0KICAgICB2b2lkIHN0b3JlMzIoTFZhbHVlIHZhbHVlLCBU
eXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlciwgcmVmMzIpOyB9CiAg
ICAgdm9pZCBzdG9yZTY0KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgc3Rv
cmUodmFsdWUsIHBvaW50ZXIsIHJlZjY0KTsgfQogICAgIHZvaWQgc3RvcmVQdHIoTFZhbHVlIHZh
bHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlciwgcmVmUHRy
KTsgfQorICAgIHZvaWQgc3RvcmVGbG9hdChMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2lu
dGVyKSB7IHN0b3JlKHZhbHVlLCBwb2ludGVyLCByZWZGbG9hdCk7IH0KICAgICB2b2lkIHN0b3Jl
RG91YmxlKExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgc3RvcmUodmFsdWUs
IHBvaW50ZXIsIHJlZkRvdWJsZSk7IH0KIAorICAgIGVudW0gU3RvcmVUeXBlIHsKKyAgICAgICAg
U3RvcmUzMkFzOCwKKyAgICAgICAgU3RvcmUzMkFzMTYsCisgICAgICAgIFN0b3JlMzIsCisgICAg
ICAgIFN0b3JlNjQsCisgICAgICAgIFN0b3JlUHRyLAorICAgICAgICBTdG9yZUZsb2F0LAorICAg
ICAgICBTdG9yZURvdWJsZQorICAgIH07CisKKyAgICB2b2lkIHN0b3JlKExWYWx1ZSwgVHlwZWRQ
b2ludGVyLCBTdG9yZVR5cGUpOworCiAgICAgTFZhbHVlIGFkZFB0cihMVmFsdWUgdmFsdWUsIHB0
cmRpZmZfdCBpbW1lZGlhdGUgPSAwKQogICAgIHsKICAgICAgICAgaWYgKCFpbW1lZGlhdGUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>