<?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>125979</bug_id>
          
          <creation_ts>2013-12-18 22:10:11 -0800</creation_ts>
          <short_desc>Clarified stack maintenance code</short_desc>
          <delta_ts>2013-12-19 09:19:23 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>961274</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-18 22:10:11 -0800</bug_when>
    <thetext>Clarified stack maintainence code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961276</commentid>
    <comment_count>1</comment_count>
      <attachid>219616</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-18 22:25:57 -0800</bug_when>
    <thetext>Created attachment 219616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961290</commentid>
    <comment_count>2</comment_count>
      <attachid>219616</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-18 23:26:12 -0800</bug_when>
    <thetext>Comment on attachment 219616
Patch

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

Nice. r=me too with unused code removed.

&gt; Source/JavaScriptCore/llint/LLIntEntrypoint.cpp:137
&gt; +int stackPointerOffsetFor(CodeBlock* codeBlock)
&gt; +{
&gt; +    return virtualRegisterForLocal(frameRegisterCountFor(codeBlock) - 1).offset();
&gt; +}
&gt; +

Is this used anywhere?  If not, it’s better to remove it.

&gt; Source/JavaScriptCore/llint/LLIntEntrypoint.h:45
&gt; +int stackPointerOffsetFor(CodeBlock*);

Ditto ... not used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961297</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-18 23:53:18 -0800</bug_when>
    <thetext>I see that DFGOSREntry.cpp and FTLOSREntry.cpp still uses JSStack::grow() with the expectation that it takes a &quot;past the end&quot; pointer, but that is inconsequential considering they should be checking against the C stack limits instead of the JSStack (via grow()).  These appear to be part of several stack checking issues which still remains broken in the jsCStack branch.  I&apos;ll take care of these in https://bugs.webkit.org/show_bug.cgi?id=125928 when I fix the other stack issues I reported there later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961402</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-19 09:00:31 -0800</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/llint/LLIntEntrypoint.cpp:137
&gt; &gt; +int stackPointerOffsetFor(CodeBlock* codeBlock)
&gt; &gt; +{
&gt; &gt; +    return virtualRegisterForLocal(frameRegisterCountFor(codeBlock) - 1).offset();
&gt; &gt; +}
&gt; &gt; +
&gt; 
&gt; Is this used anywhere?  If not, it’s better to remove it.

Oops! Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961409</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-19 09:19:23 -0800</bug_when>
    <thetext>&lt;http://trac.webkit.org/changeset/160835&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219616</attachid>
            <date>2013-12-18 22:25:57 -0800</date>
            <delta_ts>2013-12-18 23:26:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125979-20131218222556.patch</filename>
            <type>text/plain</type>
            <size>25399</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwODI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBA
CisyMDEzLTEyLTE4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ2xhcmlmaWVkIHN0YWNrIG1haW50YWluZW5jZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU5NzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdXIgaWRpb20gaXM6CisgICAgICAgICAgICAq
IGZyYW1lUmVnaXN0ZXJDb3VudCgpIGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIEJQIGFuZCBTUAor
ICAgICAgICAgICAgKiBzdGFja1BvaW50ZXJPZmZzZXQoKSBpcyBmcmFtZVJlZ2lzdGVyQ291bnQo
KSBjb252ZXJ0ZWQgdG8gYSBzdGFjayBvZmZzZXQKKyAgICAgICAgICAgICogU3RhY2sgY2hlY2tz
IGRvbid0IG5lZWQgdG8gY2hlY2sgdGhlIHN0YWNrIHVzZWQgYnkgQyBoZWxwZXIgZnVuY3Rpb25z
LAorICAgICAgICAgICAgc2luY2Ugb3VyIHJlc2VydmVkIGhvc3Qgem9uZSB3aWxsIGNvdmVyIHRo
YXQuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwu
aDogUmV2ZXJ0ZWQgc29tZSBwaWVjZXMgb2YKKyAgICAgICAgPGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzE2MDc0NT4uIFdlIGRvbid0IGNvbnNpZGVyIG91cgorICAgICAgICBjYWxs
ZWUncyBzYXZlZCBQQyBhbmQgQlAgYSBwYXJ0IG9mIG91ciBzdGFjayBmcmFtZSBiZWNhdXNlIHRo
ZXkgbGllCisgICAgICAgIGJlbmVhdGggb3VyIFNQLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpzdGFja1BvaW50ZXJPZmZzZXQpOiBOZXcgaGVscGVyIGZ1bmN0aW9uLiBM
b3RzIG9mCisgICAgICAgIGNhbGxlcnMgd2VyZSBkdXBsaWNhdGluZyB0aGlzLCBzbyBJIG1hZGUg
YSBoZWxwZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6IEZpeGVkIGEgYnVnIGluIHRo
ZSBjYWxjdWxhdGlvbgorICAgICAgICBvZiBtX3BhcmFtZXRlclNsb3RzLiBXaXRoaW4gb3VyIHN0
YWNrIGZyYW1lLCB3ZSBkb24ndCByZXNlcnZlIHNwYWNlIGZvcgorICAgICAgICBvdXIgY2FsbGVl
J3Mgc2F2ZWQgUEMgYW5kIEJQLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGFkZCB0aGVtIHRvCisgICAg
ICAgIG1fcGFyYW1ldGVyU2xvdHMuCisKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpzdGFja1Bv
aW50ZXJPZmZzZXQpOiBOZXcgaGVscGVyIGZ1bmN0aW9uLiBMb3RzIG9mCisgICAgICAgIGNhbGxl
cnMgd2VyZSBkdXBsaWNhdGluZyB0aGlzLCBzbyBJIG1hZGUgYSBoZWxwZXIgZnVuY3Rpb24uCisK
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJ
VENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29t
cGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJnZXQpOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdU
b0xMVk06OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAqIGludGVycHJldGVyL0Nh
bGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6dG9wT2ZGcmFtZUludGVybmFs
KTogVXNlIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9uLCBzbworICAgICAgICBldmVyeWJvZHkgY2Fs
Y3VsYXRlcyBTUCB0aGUgc2FtZSB3YXkuIFRoaXMgcmVtb3ZlcyB0aGUgdHdvIGlkaW9zeW5jcmF0
aWMKKyAgICAgICAgcGxhY2VzIHRoYXQgcmVzZXJ2ZWQgZXh0cmEgc3BhY2UgZm9yIG91ciBjYWxs
ZWUncyBDYWxsZXJGcmFtZUFuZFBDU2l6ZS4KKworICAgICAgICAqIGludGVycHJldGVyL0pTU3Rh
Y2suaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU1N0YWNrOjplbnRyeUNoZWNrKToKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6cHVzaEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6Z3Jvdyk6IENoYW5nZWQgdGhlIGludGVyZmFj
ZSBoZXJlIHRvIGFjY2VwdCBhIHRvcC1vZi1zdGFjaworICAgICAgICBwb2ludGVyIGluc3RlYWQg
b2YgYSBwYXN0LXRoZS1lbmQgcG9pbnRlci4gVGhlIGVuZ2luZSBubyBsb25nZXIgY29tcHV0ZXMK
KyAgICAgICAgYSBwYXN0LXRoZS1lbmQgcG9pbnRlciwgc28gdGhpcyBpcyBtb3JlIGNvbnZlbmll
bnQuCisKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZSk6CisgICAgICAgIChKU0M6OkpJVDo6c3RhY2tQb2ludGVyT2Zmc2V0Rm9yKTogVXNl
IHRoZSBoZWxwZXIgZnVuY3Rpb24sIGZpeGluZyBhIGJ1ZworICAgICAgICB3aGVyZSwgaW5jb3Jy
ZWN0bHksIHdlIHN1YnRyYWN0ZWQgb3V0IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLgor
CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxl
T3BDYWxsU2xvd0Nhc2UpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6IFVzZSB0aGUgaGVscGVyIGZ1bmN0aW9uLCBzbyBldmVyeWJvZHkg
ZG9lcyB0aGlzCisgICAgICAgIGNhbGN1bGF0aW9uIHRoZSBzYW1lIHdheS4KKworICAgICAgICAq
IGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3Jt
QXNzZXJ0aW9ucyk6IFJldmVydGVkIHNvbWUgcGllY2VzIG9mCisgICAgICAgIDxodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xNjA3NDU+LCBhcyBhYm92ZS4KKworICAgICAgICAqIGxs
aW50L0xMSW50RW50cnlwb2ludC5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50
Lmg6CisgICAgICAgIChKU0M6OkxMSW50OjpzdGFja1BvaW50ZXJPZmZzZXRGb3IpOiBIZWxwZXIg
ZnVuY3Rpb24sIGFzIGFib3ZlLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206IFJldmVydGVkIHNvbWUgcGllY2VzIG9mCisgICAgICAgIDxodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xNjA3NDU+LCBhcyBhYm92ZS4KKwogMjAxMy0xMi0xOCAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQ1N0YWNrOiBSZW5hbWUgZnVuY3Rp
b25zIGluIEpTU3RhY2sgdG8gZml0IFdlYktpdCBDb2RpbmcgU3R5bGUuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbC5oCShyZXZpc2lvbiAxNjA4MjMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDQzICszNSwzNiBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIHRoYXQgY2Fu
IGJlIHVzZWQgZm9yIG91dGdvaW5nIGFyZ3Mgd2hlbiBjYWxsaW5nIGEgc2xvdyBwYXRoIEMgZnVu
Y3Rpb24KIC8vIGZyb20gSlMgY29kZS4KIAotLy8gV2UgYWxzbyBuZWVkIHRvIGFkZCBzcGFjZSB0
byBhY2NvdW50IGZvciBDYWxsZXJGcmFtZUFuZFBDU2l6ZSAoMiBwb2ludGVycykKLS8vIGFuZCBw
YWQgdGhlIHN1bSB1cCB0byBhIG11bHRpcGxlIG9mIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKS4KLQog
I2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsID0gMDsKIAogI2VsaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9X
UykKLS8vIDQgYXJncyBpbiByZWdpc3RlcnMsIGJ1dCBzdGFjayBzcGFjZSBuZWVkcyB0byBiZSBh
bGxvY2F0ZWQgZm9yIGFsbCBhcmdzLAotLy8gcGx1cyAxNiBieXRlcyBmb3IgQ2FsbGVyRnJhbWVB
bmRQQ1NpemUuCi1zdGF0aWMgY29uc3Qgc2l6ZV90IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsID0gNjQ7CisvLyA0IGFyZ3MgaW4gcmVnaXN0ZXJzLCBidXQgc3RhY2sgc3BhY2UgbmVlZHMg
dG8gYmUgYWxsb2NhdGVkIGZvciBhbGwgYXJncy4KK3N0YXRpYyBjb25zdCBzaXplX3QgbWF4RnJh
bWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSA0ODsKIAogI2VsaWYgQ1BVKFg4Nl82NCkKLS8vIEFs
bCBhcmdzIGluIHJlZ2lzdGVycywgcGx1cyAxNiBieXRlcyBmb3IgQ2FsbGVyRnJhbWVBbmRQQ1Np
emUuCi1zdGF0aWMgY29uc3Qgc2l6ZV90IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID0g
MTY7CisvLyBBbGwgYXJncyBpbiByZWdpc3RlcnMuCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID0gMDsKIAogI2VsaWYgQ1BVKFg4NikKLS8vIDYgYXJn
cyBvbiBzdGFjayAoMjQgYnl0ZXMpIHBsdXMgOCBieXRlcyBmb3IgQ2FsbGVyRnJhbWVBbmRQQ1Np
emUuCisvLyA2IGFyZ3Mgb24gc3RhY2sgKDI0IGJ5dGVzKSArIDggYnl0ZXMgdG8gYWxpZ24gdGhl
IHN0YWNrLgogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCA9IDMyOwogCiAjZWxpZiBDUFUoQVJNNjQpCi0vLyBBbGwgYXJncyBpbiByZWdpc3RlcnMsIHBs
dXMgMTYgYnl0ZXMgZm9yIENhbGxlckZyYW1lQW5kUENTaXplLgotc3RhdGljIGNvbnN0IHNpemVf
dCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9IDE2OworLy8gQWxsIGFyZ3MgaW4gcmVn
aXN0ZXJzLgorc3RhdGljIGNvbnN0IHNpemVfdCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCA9IDA7CiAKICNlbGlmIENQVShBUk0pCi0vLyBGaXJzdCBmb3VyIGFyZ3MgaW4gcmVnaXN0ZXJz
LCByZW1haW5pbmcgNCBhcmdzIG9uIHN0YWNrLAotLy8gcGx1cyA4IGJ5dGUgZm9yIENhbGxlckZy
YW1lQW5kUENTaXplIGFuZCA4IGJ5dGVzIHBhZGRpbmcuCi1zdGF0aWMgY29uc3Qgc2l6ZV90IG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID0gMzI7CisvLyBGaXJzdCBmb3VyIGFyZ3MgaW4g
cmVnaXN0ZXJzLCByZW1haW5pbmcgNCBhcmdzIG9uIHN0YWNrLgorc3RhdGljIGNvbnN0IHNpemVf
dCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9IDE2OwogCiAjZWxpZiBDUFUoU0g0KQot
Ly8gRmlyc3QgZm91ciBhcmdzIGluIHJlZ2lzdGVycywgcmVtYWluaW5nIDQgYXJncyBvbiBzdGFj
aywKLS8vIHBsdXMgOCBieXRlIGZvciBDYWxsZXJGcmFtZUFuZFBDU2l6ZSBhbmQgOCBieXRlcyBw
YWRkaW5nLgotc3RhdGljIGNvbnN0IHNpemVfdCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCA9IDMyOworLy8gRmlyc3QgZm91ciBhcmdzIGluIHJlZ2lzdGVycywgcmVtYWluaW5nIDQgYXJn
cyBvbiBzdGFjay4KK3N0YXRpYyBjb25zdCBzaXplX3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0
aENhbGwgPSAxNjsKIAogI2VsaWYgQ1BVKE1JUFMpCi0vLyBUaG91Z2ggYXJncyBhcmUgaW4gcmVn
aXN0ZXJzLCB0aGVyZSBuZWVkIHRvIGJlIHNwYWNlIG9uIHRoZSBzdGFjayBmb3IgYWxsIGFyZ3Ms
Ci0vLyBwbHVzIDggYnl0ZXMgQ2FsbGVyRnJhbWVBbmRQQ1NpemUgYW5kIDggYnl0ZXMgcGFkZGlu
Zy4KLXN0YXRpYyBjb25zdCBzaXplX3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSA0
ODsKKy8vIFRob3VnaCBhcmdzIGFyZSBpbiByZWdpc3RlcnMsIHRoZXJlIG5lZWQgdG8gYmUgc3Bh
Y2Ugb24gdGhlIHN0YWNrIGZvciBhbGwgYXJncy4KK3N0YXRpYyBjb25zdCBzaXplX3QgbWF4RnJh
bWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPSAzMjsKIAogI2Vsc2UKICNlcnJvciAiVW5zdXBwb3J0
ZWQgQ1BVOiBuZWVkIHZhbHVlIGZvciBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCIKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAxNjA4MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM4Miw2ICszMzgyLDExIEBAIHVuc2lnbmVkIENvZGVC
bG9jazo6ZnJhbWVSZWdpc3RlckNvdW50KCkKICAgICB9CiB9CiAKK2ludCBDb2RlQmxvY2s6OnN0
YWNrUG9pbnRlck9mZnNldCgpCit7CisgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGZyYW1lUmVnaXN0ZXJDb3VudCgpIC0gMSkub2Zmc2V0KCk7Cit9CisKIHNpemVfdCBDb2RlQmxv
Y2s6OnByZWRpY3RlZE1hY2hpbmVDb2RlU2l6ZSgpCiB7CiAgICAgLy8gVGhpcyB3aWxsIGJlIGNh
bGxlZCBmcm9tIENvZGVCbG9jazo6Q29kZUJsb2NrIGJlZm9yZSBlaXRoZXIgbV92bSBvciB0aGUK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlz
aW9uIDE2MDgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtOTAxLDYgKzkwMSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IAogICAgIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudCgpOworICAgIGludCBzdGFja1BvaW50
ZXJPZmZzZXQoKTsKIAogICAgIC8vIEZJWE1FOiBNYWtlIHRoZXNlIHJlbWFpbmluZyBtZW1iZXJz
IHByaXZhdGUuCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNjA4MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAyLDggKzgw
Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7CiAgICAgICAg
IGludCBhcmdDb3VudCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgICAg
IGlmIChKU1N0YWNrOjpUaGlzQXJndW1lbnQgKyAodW5zaWduZWQpYXJnQ291bnQgPiBtX3BhcmFt
ZXRlclNsb3RzKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJTbG90cyA9IEpTU3RhY2s6OlRoaXNB
cmd1bWVudCArIGFyZ0NvdW50OworICAgICAgICBzaXplX3QgcGFyYW1ldGVyU2xvdHMgPSBKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUg
KyBhcmdDb3VudDsKKyAgICAgICAgaWYgKHBhcmFtZXRlclNsb3RzID4gbV9wYXJhbWV0ZXJTbG90
cykKKyAgICAgICAgICAgIG1fcGFyYW1ldGVyU2xvdHMgPSBwYXJhbWV0ZXJTbG90czsKIAogICAg
ICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFu
ZDsKICAgICAgICAgaW50IGR1bW15VGhpc0FyZ3VtZW50ID0gb3AgPT0gQ2FsbCA/IDAgOiAxOwpA
QCAtMTAxNiw5ICsxMDE3LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIG51bWJlciBvZiBsb2Nh
bHMgKHZhcnMgKyB0ZW1wb3JhcmllcykgdXNlZCBpbiB0aGUgZnVuY3Rpb24uCiAgICAgdW5zaWdu
ZWQgbV9udW1Mb2NhbHM7CiAgICAgLy8gVGhlIG51bWJlciBvZiBzbG90cyAoaW4gdW5pdHMgb2Yg
c2l6ZW9mKFJlZ2lzdGVyKSkgdGhhdCB3ZSBuZWVkIHRvCi0gICAgLy8gcHJlYWxsb2NhdGUgZm9y
IGNhbGxzIGVtYW5hdGluZyBmcm9tIHRoaXMgZnJhbWUuIFRoaXMgaW5jbHVkZXMgdGhlCi0gICAg
Ly8gc2l6ZSBvZiB0aGUgQ2FsbEZyYW1lLCBvbmx5IGlmIHRoaXMgaXMgbm90IGEgbGVhZiBmdW5j
dGlvbi4gIChJLmUuCi0gICAgLy8gdGhpcyBpcyAwIGlmIGFuZCBvbmx5IGlmIHRoaXMgZnVuY3Rp
b24gaXMgYSBsZWFmLikKKyAgICAvLyBwcmVhbGxvY2F0ZSBmb3IgYXJndW1lbnRzIHRvIG91dGdv
aW5nIGNhbGxzIGZyb20gdGhpcyBmcmFtZS4gVGhpcworICAgIC8vIG51bWJlciBpbmNsdWRlcyB0
aGUgQ2FsbEZyYW1lIHNsb3RzIHRoYXQgd2UgaW5pdGlhbGl6ZSBmb3IgdGhlIGNhbGxlZQorICAg
IC8vIChidXQgbm90IHRoZSBjYWxsZWUtaW5pdGlhbGl6ZWQgQ2FsbGVyRnJhbWUgYW5kIFJldHVy
blBDIHNsb3RzKS4KKyAgICAvLyBUaGlzIG51bWJlciBpcyAwIGlmIGFuZCBvbmx5IGlmIHRoaXMg
ZnVuY3Rpb24gaXMgYSBsZWFmLgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyU2xvdHM7CiAgICAg
Ly8gVGhlIG51bWJlciBvZiB2YXIgYXJncyBwYXNzZWQgdG8gdGhlIG5leHQgdmFyIGFyZyBub2Rl
LgogICAgIHVuc2lnbmVkIG1fbnVtUGFzc2VkVmFyQXJnczsKQEAgLTI5OTYsMTAgKzI5OTgsMTEg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQpOwotICAg
ICAgICAgICAgCisKICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ0NvdW50ID0gaW5saW5lQ2FsbEZy
YW1lKCktPmFyZ3VtZW50cy5zaXplKCk7Ci0gICAgICAgICAgICBpZiAoSlNTdGFjazo6VGhpc0Fy
Z3VtZW50ICsgYXJnQ291bnQgPiBtX3BhcmFtZXRlclNsb3RzKQotICAgICAgICAgICAgICAgIG1f
cGFyYW1ldGVyU2xvdHMgPSBKU1N0YWNrOjpUaGlzQXJndW1lbnQgKyBhcmdDb3VudDsKKyAgICAg
ICAgICAgIHNpemVfdCBwYXJhbWV0ZXJTbG90cyA9IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNp
emUgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSArIGFyZ0NvdW50OworICAgICAgICAg
ICAgaWYgKHBhcmFtZXRlclNsb3RzID4gbV9wYXJhbWV0ZXJTbG90cykKKyAgICAgICAgICAgICAg
ICBtX3BhcmFtZXRlclNsb3RzID0gcGFyYW1ldGVyU2xvdHM7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpKTsgLy8gY2FsbGVlCiAgICAgICAgICAgICBhZGRWYXJBcmdDaGls
ZChnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7
IC8vIHRoaXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZp
c2lvbiAxNjA4MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzEwLDYgKzcxMCwxMSBAQCB1bnNpZ25lZCBHcmFwaDo6ZnJhbWVS
ZWdpc3RlckNvdW50KCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit1bnNpZ25lZCBHcmFwaDo6
c3RhY2tQb2ludGVyT2Zmc2V0KCkKK3sKKyAgICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoZnJhbWVSZWdpc3RlckNvdW50KCkgLSAxKS5vZmZzZXQoKTsKK30KKwogdW5zaWduZWQgR3Jh
cGg6OnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQoKQogewogICAgIHVuc2lnbmVkIGNvdW50
ID0gSklUOjpmcmFtZVJlZ2lzdGVyQ291bnRGb3IobV9wcm9maWxlZEJsb2NrKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE2MDgyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNzg4LDYg
Kzc4OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTGl2ZUluQnl0ZWNvZGUoVmlydHVhbFJlZ2lz
dGVyLCBDb2RlT3JpZ2luKTsKICAgICAKICAgICB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVyQ291bnQo
KTsKKyAgICB1bnNpZ25lZCBzdGFja1BvaW50ZXJPZmZzZXQoKTsKICAgICB1bnNpZ25lZCByZXF1
aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCk7CiAgICAgdW5zaWduZWQgcmVxdWlyZWRSZWdpc3Rl
ckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE2MDgyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgY29t
cGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IGFkb3B0UHRyKG5ldyBTcGVjdWxhdGl2
ZUpJVCgqdGhpcykpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7Ci0gICAgYWRk
UHRyKFRydXN0ZWRJbW0zMigtKG1fZ3JhcGguZnJhbWVSZWdpc3RlckNvdW50KCkgLSBKU1N0YWNr
OjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwg
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBj
aGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwogICAgIGNvbXBpbGVCb2R5KCk7CiAgICAgc2V0
RW5kT2ZNYWluUGF0aCgpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNv
bXBpbGVGdW5jdGlvbigpCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIAogICAg
IC8vIE1vdmUgdGhlIHN0YWNrIHBvaW50ZXIgZG93biB0byBhY2NvbW1vZGF0ZSBsb2NhbHMKLSAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKC0obV9ncmFwaC5mcmFtZVJlZ2lzdGVyQ291bnQoKSAtIEpT
U3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXplKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGFkZFB0cihU
cnVzdGVkSW1tMzIobV9ncmFwaC5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rl
cikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwog
ICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKICAgICAvLyA9PT0gRnVuY3Rpb24g
Ym9keSBjb2RlIGdlbmVyYXRpb24gPT09CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAxNjA4
MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIGFkanVzdEFuZEp1
bXBUb1RhcmdldChDQ2FsbEhlbHBlcnMmCiAgICAgCiAgICAgdm9pZCoganVtcFRhcmdldCA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5qaXRDb2RlKCktPmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQobWFw
cGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CiAKLSAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKC1KSVQ6OmZyYW1lUmVnaXN0ZXJDb3VudEZvcihiYXNlbGluZUNv
ZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEFzc2VtYmx5SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5hZGRQdHIo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSklUOjpzdGFja1BvaW50ZXJPZmZzZXRGb3Io
YmFzZWxpbmVDb2RlQmxvY2spICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBBc3NlbWJseUhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAogICAg
IGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFyZ2V0KSwgR1BS
SW5mbzo6cmVnVDIpOwogICAgIGppdC5qdW1wKEdQUkluZm86OnJlZ1QyKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lv
biAxNjA4MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ0OSw3ICsyNDQ5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIExWYWx1ZSBjYWxsZWVGcmFtZSA9IG1fb3V0LmFkZCgKICAgICAgICAgICAg
IG1fY2FsbEZyYW1lLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKFJlZ2lz
dGVyKSAqIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fZ3JhcGguZnJhbWVSZWdpc3RlckNvdW50
KCkpLm9mZnNldCgpKSk7CisgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX2dyYXBoLnN0
YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSk7CiAgICAgICAgIAogICAgICAg
ICBtX291dC5zdG9yZTMyKAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRB
cmdzICsgZHVtbXlUaGlzQXJndW1lbnQpLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDE2MDgyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjAsNyArMTIwLDcgQEAgUmVnaXN0ZXIqIENhbGxGcmFtZTo6dG9wT2ZGcmFtZUludGVy
bmFsKAogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCk7CiAg
ICAgQVNTRVJUKGNvZGVCbG9jayk7Ci0gICAgcmV0dXJuIHJlZ2lzdGVycygpICsgdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoY29kZUJsb2NrLT5mcmFtZVJlZ2lzdGVyQ291bnQoKSAtIDEpLm9mZnNl
dCgpOworICAgIHJldHVybiByZWdpc3RlcnMoKSArIGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zm
c2V0KCk7CiB9CiAKIEpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmpl
Y3QoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5o
CShyZXZpc2lvbiAxNjA4MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SlNTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gaGlnaEFkZHJlc3MoKSAt
IGxvd0FkZHJlc3MoKTsgfQogCi0gICAgICAgIGJvb2wgZ3JvdyhSZWdpc3RlciopOworICAgICAg
ICBib29sIGdyb3coUmVnaXN0ZXIqIHRvcE9mU3RhY2spOwogICAgICAgICAKICAgICAgICAgc3Rh
dGljIHNpemVfdCBjb21taXR0ZWRCeXRlQ291bnQoKTsKICAgICAgICAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZVRocmVhZGluZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0pTU3RhY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0pTU3RhY2tJbmxpbmVzLmgJKHJldmlzaW9uIDE2MDgyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OSwxMiArNjksMTIgQEAgaW5saW5lIGJvb2wgSlNTdGFjazo6ZW50cnlDaGVjayhj
bGFzcyBDbwogICAgIG5ld0NhbGxGcmFtZVNsb3QgLT0gSlNTdGFjazo6RmVuY2VTaXplOwogI2Vu
ZGlmCiAKLSAgICBSZWdpc3RlciogbmV3RW5kID0gbmV3Q2FsbEZyYW1lU2xvdDsKKyAgICBSZWdp
c3RlciogdG9wT2ZTdGFjayA9IG5ld0NhbGxGcmFtZVNsb3Q7CiAgICAgaWYgKCEhY29kZUJsb2Nr
KQotICAgICAgICBuZXdFbmQgKz0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoY29kZUJsb2NrLT5m
cmFtZVJlZ2lzdGVyQ291bnQoKSkub2Zmc2V0KCk7CisgICAgICAgIHRvcE9mU3RhY2sgKz0gY29k
ZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKTsKIAogICAgIC8vIEVuc3VyZSB0aGF0IHdlIGhh
dmUgdGhlIG5lZWRlZCBzdGFjayBjYXBhY2l0eSB0byBwdXNoIHRoZSBuZXcgZnJhbWU6Ci0gICAg
aWYgKCFncm93KG5ld0VuZCkpCisgICAgaWYgKCFncm93KHRvcE9mU3RhY2spKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk5LDEyICs5OSwxMiBAQCBpbmxp
bmUgQ2FsbEZyYW1lKiBKU1N0YWNrOjpwdXNoRnJhbWUoY2xhCiAgICAgbmV3Q2FsbEZyYW1lU2xv
dCAtPSBKU1N0YWNrOjpGZW5jZVNpemU7CiAjZW5kaWYKIAotICAgIFJlZ2lzdGVyKiBuZXdFbmQg
PSBuZXdDYWxsRnJhbWVTbG90OworICAgIFJlZ2lzdGVyKiB0b3BPZlN0YWNrID0gbmV3Q2FsbEZy
YW1lU2xvdDsKICAgICBpZiAoISFjb2RlQmxvY2spCi0gICAgICAgIG5ld0VuZCArPSB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChjb2RlQmxvY2stPmZyYW1lUmVnaXN0ZXJDb3VudCgpKS5vZmZzZXQo
KTsKKyAgICAgICAgdG9wT2ZTdGFjayArPSBjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgp
OwogCiAgICAgLy8gRW5zdXJlIHRoYXQgd2UgaGF2ZSB0aGUgbmVlZGVkIHN0YWNrIGNhcGFjaXR5
IHRvIHB1c2ggdGhlIG5ldyBmcmFtZToKLSAgICBpZiAoIWdyb3cobmV3RW5kKSkKKyAgICBpZiAo
IWdyb3codG9wT2ZTdGFjaykpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gQ29tcHV0ZSB0
aGUgYWRkcmVzcyBvZiB0aGUgbmV3IFZNIHNlbnRpbmVsIGZyYW1lIGZvciB0aGlzIGludm9jYXRp
b246CkBAIC0xNzMsOCArMTczLDkgQEAgaW5saW5lIHZvaWQgSlNTdGFjazo6c2hyaW5rKFJlZ2lz
dGVyKiBuZQogICAgICAgICByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKIH0KIAotaW5saW5lIGJv
b2wgSlNTdGFjazo6Z3JvdyhSZWdpc3RlciogbmV3RW5kKQoraW5saW5lIGJvb2wgSlNTdGFjazo6
Z3JvdyhSZWdpc3RlciogdG9wT2ZTdGFjaykKIHsKKyAgICBSZWdpc3RlciogbmV3RW5kID0gdG9w
T2ZTdGFjayAtIDE7CiAgICAgaWYgKG5ld0VuZCA+PSBtX2VuZCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgcmV0dXJuIGdyb3dTbG93Q2FzZShuZXdFbmQpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTYwODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDEsMTQgKzU0MSwxNCBAQCBDb21waWxh
dGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJCiAgICAgICAgIH0KICNlbmRpZgogCi0g
ICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVS
ZWdpc3RlckNvdW50Rm9yKG1fY29kZUJsb2NrKSAtIDEpLm9mZnNldEluQnl0ZXMoKSksIGNhbGxG
cmFtZVJlZ2lzdGVyLCByZWdUMSk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQ
b2ludGVyT2Zmc2V0Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJh
bWVSZWdpc3RlciwgcmVnVDEpOwogICAgICAgICBzdGFja0NoZWNrID0gYnJhbmNoUHRyKEFib3Zl
LCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+YWRkcmVzc09mSlNTdGFja0xpbWl0KCkpLCByZWdUMSk7
CiAgICAgfQogCiAgICAgTGFiZWwgZnVuY3Rpb25Cb2R5ID0gbGFiZWwoKTsKIAogICAgIGNoZWNr
U3RhY2tQb2ludGVyQWxpZ25tZW50KCk7Ci0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtZnJhbWVS
ZWdpc3RlckNvdW50Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikgLSBtYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzdGFja1BvaW50ZXJPZmZzZXRGb3Io
bV9jb2RlQmxvY2spICogc2l6ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKIAog
ICAgIHByaXZhdGVDb21waWxlTWFpblBhc3MoKTsKQEAgLTc4OCw2ICs3ODgsMTEgQEAgdW5zaWdu
ZWQgSklUOjpmcmFtZVJlZ2lzdGVyQ291bnRGb3IoQ29kZQogICAgIHJldHVybiByZWdpc3RlckNv
dW50OwogfQogCitpbnQgSklUOjpzdGFja1BvaW50ZXJPZmZzZXRGb3IoQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCit7CisgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGZyYW1lUmVnaXN0
ZXJDb3VudEZvcihjb2RlQmxvY2spIC0gMSkub2Zmc2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAkocmV2aXNpb24gMTYwODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgdm9pZCBsaW5rU2xvd0NhbGwoQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2ssIENh
bGxMaW5rSW5mbyopOwogICAgICAgICAKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGZyYW1lUmVn
aXN0ZXJDb3VudEZvcihDb2RlQmxvY2sqKTsKKyAgICAgICAgc3RhdGljIGludCBzdGFja1BvaW50
ZXJPZmZzZXRGb3IoQ29kZUJsb2NrKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBKSVQoVk0q
LCBDb2RlQmxvY2sqID0gMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5j
cHAJKHJldmlzaW9uIDE2MDgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIEpJVDo6Y29tcGls
ZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAKICAgICBtX2NhbGxTdHJ1Y3R1cmVTdHViQ29tcGls
YXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5ob3RQYXRoT3RoZXIgPSBlbWl0TmFrZWRDYWxs
KCk7CiAKLSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1mcmFtZVJlZ2lzdGVyQ291bnRGb3IobV9j
b2RlQmxvY2spICogc2l6ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7CisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzdGFja1BvaW50ZXJPZmZz
ZXRGb3IobV9jb2RlQmxvY2spICogc2l6ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVy
LCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQo
KTsKIAogICAgIHNhbXBsZUNvZGVCbG9jayhtX2NvZGVCbG9jayk7CkBAIC0yMjksNyArMjI5LDcg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShPcGNvZGVJRAogCiAgICAgbV9jYWxs
U3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVy
bkxvY2F0aW9uID0gZW1pdE5ha2VkQ2FsbChvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3QgPyBtX3Zt
LT5nZXRDVElTdHViKGxpbmtDb25zdHJ1Y3RUaHVua0dlbmVyYXRvcikuY29kZSgpIDogbV92bS0+
Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpOwogCi0gICAgYWRkUHRy
KFRydXN0ZWRJbW0zMigtZnJhbWVSZWdpc3RlckNvdW50Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVv
ZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKG1fY29kZUJsb2Nr
KSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKICAgICBzYW1wbGVD
b2RlQmxvY2sobV9jb2RlQmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTYwODIzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjQs
OCArOTI0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cgogICAg
IC8vIG9wZXJhdGlvblRocm93IHJldHVybnMgdGhlIGNhbGxGcmFtZSBmb3IgdGhlIGhhbmRsZXIu
CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDMsIFZNOjpjYWxsRnJhbWVGb3JUaHJvd09mZnNldCgp
KSwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogCi0gICAgaW50IG9mZnNldCA9IHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGZyYW1lUmVnaXN0ZXJDb3VudEZvcihjb2RlQmxvY2soKSkgLSAxKS5vZmZzZXRJ
bkJ5dGVzKCk7Ci0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMihvZmZzZXQpLCBjYWxsRnJhbWVSZWdp
c3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3Rh
Y2tQb2ludGVyT2Zmc2V0Rm9yKGNvZGVCbG9jaygpKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxs
RnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCiAgICAgLy8gTm93IHN0b3Jl
IHRoZSBleGNlcHRpb24gcmV0dXJuZWQgYnkgb3BlcmF0aW9uVGhyb3cuCiAgICAgbG9hZDMyKEFk
ZHJlc3MocmVnVDMsIFZNOjpleGNlcHRpb25PZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1Zh
bHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTYwODIzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM3LDggKzYz
Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIobV92bSksIHJlZ1QzKTsKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMywg
Vk06OmNhbGxGcmFtZUZvclRocm93T2Zmc2V0KCkpLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiAKLSAg
ICBpbnQgb2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVSZWdpc3RlckNvdW50
Rm9yKGNvZGVCbG9jaygpKSAtIDEpLm9mZnNldEluQnl0ZXMoKTsKLSAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKG9mZnNldCksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzdGFja1BvaW50ZXJPZmZzZXRGb3IoY29kZUJsb2Nr
KCkpICogc2l6ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CiAKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMywgVk06OmV4Y2VwdGlvbk9mZnNl
dCgpKSwgcmVnVDApOwogICAgIHN0b3JlNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKCkpKSwgQWRkcmVzcyhyZWdUMywgVk06OmV4Y2VwdGlvbk9mZnNldCgpKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDE2MDgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblN0YWNrQ2hlY2soRQogCiAgICAgSlNTdGFjayYgc3RhY2sgPSB2bS0+aW50ZXJwcmV0ZXIt
PnN0YWNrKCk7CiAKLSAgICBpZiAoVU5MSUtFTFkoIXN0YWNrLmdyb3coJmV4ZWMtPnJlZ2lzdGVy
cygpW3ZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGNvZGVCbG9jay0+ZnJhbWVSZWdpc3RlckNvdW50
KCkpLm9mZnNldCgpXSkpKQorICAgIGlmIChVTkxJS0VMWSghc3RhY2suZ3JvdygmZXhlYy0+cmVn
aXN0ZXJzKClbY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKV0pKSkKICAgICAgICAgdm0t
PnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2Fs
bGVyRnJhbWUpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAJKHJldmlzaW9uIDE2MDgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsMTYgKzEyNSwxMiBAQCB2b2lk
IERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQoVmFsdWVVbmRlZmlu
ZWQgPT0gKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdFVuZGVmaW5lZCkpOwogICAgIEFTU0VSVChW
YWx1ZU51bGwgPT0gVGFnQml0VHlwZU90aGVyKTsKICNlbmRpZgotI2lmIEVOQUJMRShMTElOVF9D
X0xPT1ApCisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KSB8fCBFTkFCTEUoTExJTlRfQ19M
T09QKQogICAgIEFTU0VSVChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9PSAwKTsKLSNl
bGlmIENQVShYODZfNjQpICYmIE9TKFdJTkRPV1MpCi0gICAgQVNTRVJUKG1heEZyYW1lRXh0ZW50
Rm9yU2xvd1BhdGhDYWxsID09IDY0KTsKLSNlbGlmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkK
KyNlbGlmIENQVShBUk0pIHx8IENQVShTSDQpCiAgICAgQVNTRVJUKG1heEZyYW1lRXh0ZW50Rm9y
U2xvd1BhdGhDYWxsID09IDE2KTsKLSNlbGlmIENQVShYODYpIHx8IENQVShBUk0pIHx8IENQVShT
SDQpCisjZWxpZiBDUFUoWDg2KSB8fCBDUFUoTUlQUykKICAgICBBU1NFUlQobWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwgPT0gMzIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgQVNTRVJUKG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID09IDQ4KTsKICNlbmRpZgogICAgIEFTU0VSVChT
dHJpbmdUeXBlID09IDUpOwogICAgIEFTU0VSVChPYmplY3RUeXBlID09IDE3KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCShyZXZp
c2lvbiAxNjA4MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBv
aW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCwxMSBAQCB1bnNpZ25lZCBmcmFt
ZVJlZ2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrCiAgICAgcmV0dXJuIHJlZ2lzdGVyQ291bnQ7CiB9
CiAKK2ludCBzdGFja1BvaW50ZXJPZmZzZXRGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7Cisg
ICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGZyYW1lUmVnaXN0ZXJDb3VudEZvcihj
b2RlQmxvY2spIC0gMSkub2Zmc2V0KCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAogCiAjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaAkocmV2aXNpb24gMTYwODIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBMTEludCB7CiB2b2lkIHNldEVudHJ5cG9pbnQoVk0m
LCBDb2RlQmxvY2sqKTsKIAogdW5zaWduZWQgZnJhbWVSZWdpc3RlckNvdW50Rm9yKENvZGVCbG9j
ayopOworaW50IHN0YWNrUG9pbnRlck9mZnNldEZvcihDb2RlQmxvY2sqKTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE2MDgyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsMTQgKzczLDEyIEBAIGNvbnN0IERlbGV0ZWRWYWx1ZVRhZyA9IC03CiBj
b25zdCBMb3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKIGVuZAogCi1pZiBDX0xPT1AKK2lmIFg4
Nl82NCBvciBBUk02NCBvciBDX0xPT1AKIGNvbnN0IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsID0gMAotZWxzaWYgWDg2XzY0IG9yIEFSTTY0CitlbHNpZiBBUk0gb3IgQVJNdjdfVFJBRElU
SU9OQUwgb3IgQVJNdjcgb3IgU0g0CiBjb25zdCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCA9IDE2Ci1lbHNpZiBYODYgb3IgQVJNIG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIEFSTXY3IG9y
IFNINAorZWxzaWYgWDg2IG9yIE1JUFMKIGNvbnN0IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsID0gMzIKLWVsc2lmIE1JUFMKLWNvbnN0IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
ID0gNDgKIGVuZAogCiAjIFdhdGNocG9pbnQgc3RhdGVzCg==
</data>
<flag name="review"
          id="243263"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>