<?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>166199</bug_id>
          
          <creation_ts>2016-12-20 11:52:01 -0800</creation_ts>
          <short_desc>WebAssembly: construct 32-bit encodedJSValue properly</short_desc>
          <delta_ts>2016-12-20 14:17:13 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>165805</dependson>
          <blocked>159775</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1261621</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-20 11:52:01 -0800</bug_when>
    <thetext>Mark pointed out here: https://bugs.webkit.org/show_bug.cgi?id=165805#c3
That I was using { } to construct default encodedJSValue, and that&apos;s wrong on 32-bit. I think I changed to { } based on a review, but that was wrong. wasm doesn&apos;t do 64-bit, but we may as well Do It Right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261632</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-20 11:58:25 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Mark pointed out here: https://bugs.webkit.org/show_bug.cgi?id=165805#c3
&gt; That I was using { } to construct default encodedJSValue, and that&apos;s wrong
&gt; on 32-bit. I think I changed to { } based on a review, but that was wrong.
&gt; wasm doesn&apos;t do 64-bit, but we may as well Do It Right.

I think you mean &quot;wasm doesn&apos;t do 32-bit&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261635</commentid>
    <comment_count>2</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-20 12:01:10 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; (In reply to comment #0)
&gt; &gt; Mark pointed out here: https://bugs.webkit.org/show_bug.cgi?id=165805#c3
&gt; &gt; That I was using { } to construct default encodedJSValue, and that&apos;s wrong
&gt; &gt; on 32-bit. I think I changed to { } based on a review, but that was wrong.
&gt; &gt; wasm doesn&apos;t do 64-bit, but we may as well Do It Right.
&gt; 
&gt; I think you mean &quot;wasm doesn&apos;t do 32-bit&quot;.

Oops yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261636</commentid>
    <comment_count>3</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-20 12:02:40 -0800</bug_when>
    <thetext>I&apos;m making this change semi-automatically. First I run:
  git grep RETURN ./Source/JavaScriptCore/wasm/ | grep &quot;{ })&quot; | cut -f1 -d: | sort -u | xargs -n1 -I{} gsed -i &apos;s/RETURN_IF_EXCEPTION(\([a-zA-Z]*\), { });/RETURN_IF_EXCEPTION(\1, encodedJSValue());/&apos; {}

And then I switch back all returns which were actually JSValue (the compiler chokes on these bad conversions).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261646</commentid>
    <comment_count>4</comment_count>
      <attachid>297545</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-20 12:06:38 -0800</bug_when>
    <thetext>Created attachment 297545
patch

It compiles and passes all tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261652</commentid>
    <comment_count>5</comment_count>
      <attachid>297545</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-20 12:09:46 -0800</bug_when>
    <thetext>Comment on attachment 297545
patch

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

r=me with the bug fixed.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:40
&gt; -    RETURN_IF_EXCEPTION(throwScope, { });
&gt; +    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());

This one is not right.  The return type is uint32_t.  It&apos;s proper to return {} here and wrong to return encodedJSValue().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261749</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-12-20 13:59:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/29759741&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261750</commentid>
    <comment_count>7</comment_count>
      <attachid>297553</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-20 13:59:30 -0800</bug_when>
    <thetext>Created attachment 297553
patch

(In reply to comment #5)
&gt; Comment on attachment 297545 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=297545&amp;action=review
&gt; 
&gt; r=me with the bug fixed.
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:40
&gt; &gt; -    RETURN_IF_EXCEPTION(throwScope, { });
&gt; &gt; +    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
&gt; 
&gt; This one is not right.  The return type is uint32_t.  It&apos;s proper to return
&gt; {} here and wrong to return encodedJSValue().

Oops yes, I hadn&apos;t seen that! Good catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261753</commentid>
    <comment_count>8</comment_count>
      <attachid>297553</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-20 14:17:09 -0800</bug_when>
    <thetext>Comment on attachment 297553
patch

Clearing flags on attachment: 297553

Committed r210038: &lt;http://trac.webkit.org/changeset/210038&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261754</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-20 14:17:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297545</attachid>
            <date>2016-12-20 12:06:38 -0800</date>
            <delta_ts>2016-12-20 13:59:30 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-encodedJSValue.patch</filename>
            <type>text/plain</type>
            <size>18609</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA4NjlmZmRkYmZlYTk5MDcxMDgwNjU5NGFmYWM2NTZjMjQxMjlhNDcyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDIwIERlYyAyMDE2IDEyOjAzOjE0IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gZW5jb2Rl
ZEpTVmFsdWUKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgfCAzNiArKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9KU1dlYkFzc2VtYmx5LmNwcCAgICAgICB8ICA0ICstLQogLi4uL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaCAgfCAgMiArLQogLi4uL3dhc20vanMv
V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgfCAgMiArLQogLi4uL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgfCAgMiArLQogLi4uL3dh
c20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCAgICAgfCAxNCArKysrLS0t
LS0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwICAgICAgIHwg
MTAgKysrLS0tCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcCAg
ICAgICB8ICAyICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVj
dG9yLmNwcCB8ICAyICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3Iu
Y3BwICAgICAgICB8IDE0ICsrKystLS0tLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVBy
b3RvdHlwZS5jcHAgICAgICAgICAgfCAxNCArKysrLS0tLS0KIDExIGZpbGVzIGNoYW5nZWQsIDY5
IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDJiYzIzNWQuLmU3MDEzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDQxIEBACiAyMDE2LTEyLTIwICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWJBc3NlbWJseTogY29uc3RydWN0IDMyLWJpdCBlbmNvZGVkSlNWYWx1ZSBwcm9w
ZXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2
MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29u
c3RydWN0aW5nIGFuIGVuY29kZWRKU1ZhbHVlIHVzaW5nIGB7IH1gIHlpZWxkcyB0aGUgd3Jvbmcg
dmFsdWUKKyAgICAgICAgb24gMzItYml0IHBsYXRmb3Jtcy4gV2ViQXNzZW1ibHkgZG9lc24ndCBj
dXJyZW50bHkgdGFyZ2V0IDMyLWJpdAorICAgICAgICBwbGF0Zm9ybXMsIGJ1dCB3ZSBtYXkgYXMg
d2VsbCBnZXQgaXQgcmlnaHQuCisKKyAgICAgICAgKiB3YXNtL0pTV2ViQXNzZW1ibHkuY3BwOgor
ICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKToKKyAgICAgICAgKEpTQzo6d2Vi
QXNzZW1ibHlWYWxpZGF0ZUZ1bmMpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6dG9Ob25XcmFwcGluZ1VpbnQzMik6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6CisgICAgICAgICogd2Fz
bS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYkFzc2Vt
Ymx5RnVuY3Rpb24pOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNl
KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5KToKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpj
b25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RK
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
VGFibGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1i
bHlUYWJsZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCk6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93KToKKyAgICAgICAgKEpTQzo6
d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldCk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5
VGFibGVQcm90b0Z1bmNTZXQpOgorCisyMDE2LTEyLTIwICBKRiBCYXN0aWVuICA8amZiYXN0aWVu
QGFwcGxlLmNvbT4KKwogICAgICAgICBXZWJBc3NlbWJseTogdW5pcXVlIGZ1bmN0aW9uIHNpZ25h
dHVyZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NTk1NwogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk3MzU3Mzc+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuY3BwCmluZGV4IDE2MWU5NGIuLmE2ZmM0MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxl
RnVuYyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CiAKICAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlz
ZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKGNhdGNoU2NvcGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihjYXRjaFNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIEZJWE1FOiBN
YWtlIHRoaXMgdHJ1bHkgYXN5bmNocm9ub3VzOgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjYwMTYKQEAgLTcyLDcgKzcyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgc2l6ZV90IGJ5dGVPZmZzZXQ7CiAgICAgc2l6ZV90IGJ5dGVTaXplOwogICAgIHVpbnQ4
X3QqIGJhc2UgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDAp
LCBieXRlT2Zmc2V0LCBieXRlU2l6ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBXYXNtOjpQbGFuIHBsYW4oJnZtLCBiYXNlICsgYnl0ZU9mZnNldCwgYnl0ZVNpemUpOwog
ICAgIC8vIEZJWE1FOiBXZSBtaWdodCB3YW50IHRvIHRocm93IGFuIE9PTSBleGNlcHRpb24gaGVy
ZSBpZiB3ZSBkZXRlY3QgdGhhdCBzb21ldGhpbmcgd2lsbCBPT00uCiAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjAxNQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggYWJkOTgw
NC4uYzJhNzhiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SGVscGVycy5oCkBAIC0zNyw3ICszNyw3IEBAIEFMV0FZU19JTkxJTkUgdWlu
dDMyX3QgdG9Ob25XcmFwcGluZ1VpbnQzMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBkb3VibGUgZG91YmxlVmFsdWUgPSB2YWx1ZS50b0ludGVn
ZXIoZXhlYyk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
aWYgKGRvdWJsZVZhbHVlIDwgMCB8fCBkb3VibGVWYWx1ZSA+IFVJTlRfTUFYKSB7CiAgICAgICAg
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsCiAgICAgICAgICAgICBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0IGFuIGludGVnZXIgYXJndW1lbnQgaW4g
dGhlIHJhbmdlOiBbMCwgMl4zMiAtIDFdIikpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggMGEwYTJhYi4uZDY4NTY3YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihFeGVj
U3RhdGUKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNW
YWx1ZSBtZXNzYWdlID0gc3RhdGUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8qIHN0cnVjdHVyZSA9
IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRlLCBzdGF0ZS0+
bmV3VGFyZ2V0KCksIGFzSW50ZXJuYWxGdW5jdGlvbihzdGF0ZS0+anNDYWxsZWUoKSktPmdsb2Jh
bE9iamVjdCgpLT5XZWJBc3NlbWJseUNvbXBpbGVFcnJvclN0cnVjdHVyZSgpKTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXZWJB
c3NlbWJseUNvbXBpbGVFcnJvcjo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UsIGZh
bHNlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggMGZhMmVmNy4uNGYwZDdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAK
QEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBjYXNlIFdhc206
OkFueWZ1bmM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICB9Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBi
b3hlZEFyZ3MuYXBwZW5kKGFyZyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9y
LmNwcAppbmRleCA5ZDk1OTI2Li40ODRiZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTc2LDEzICs3NiwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleAogCiAgICAg
SWRlbnRpZmllciBtb2R1bGVLZXkgPSBJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKFBy
aXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwgIldlYkFzc2VtYmx5SW5zdGFuY2UiKSk7CiAgICAgV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpjcmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmRTdHJ1Y3R1cmUoKSwgbW9kdWxlS2V5LCBtb2R1bGVJbmZvcm1hdGlvbik7Ci0gICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBTdHJ1Y3R1cmUqIGluc3RhbmNl
U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhl
YywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0
cnVjdHVyZSgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6OmNyZWF0ZSh2bSwgaW5zdGFuY2VTdHJ1Y3R1cmUsIGpzTW9kdWxlLCBtb2R1bGVSZWNvcmQt
PmdldE1vZHVsZU5hbWVzcGFjZShleGVjKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICAvLyBMZXQgZnVuY3MsIG1lbW9yaWVzIGFuZCB0YWJsZXMgYmUg
aW5pdGlhbGx5LWVtcHR5IGxpc3RzIG9mIGNhbGxhYmxlIEphdmFTY3JpcHQgb2JqZWN0cywgV2Vi
QXNzZW1ibHkuTWVtb3J5IG9iamVjdHMgYW5kIFdlYkFzc2VtYmx5LlRhYmxlIG9iamVjdHMsIHJl
c3BlY3RpdmVseS4KICAgICAvLyBMZXQgaW1wb3J0cyBiZSBhbiBpbml0aWFsbHktZW1wdHkgbGlz
dCBvZiBleHRlcm5hbCB2YWx1ZXMuCkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVjU3Rh
dGUqIGV4CiAgICAgZm9yIChhdXRvJiBpbXBvcnQgOiBtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRz
KSB7CiAgICAgICAgIC8vIDEuIExldCBvIGJlIHRoZSByZXN1bHRhbnQgdmFsdWUgb2YgcGVyZm9y
bWluZyBHZXQoaW1wb3J0T2JqZWN0LCBpLm1vZHVsZV9uYW1lKS4KICAgICAgICAgSlNWYWx1ZSBp
bXBvcnRNb2R1bGVWYWx1ZSA9IGltcG9ydE9iamVjdC0+Z2V0KGV4ZWMsIGltcG9ydC5tb2R1bGUp
OwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
ICAgIC8vIDIuIElmIFR5cGUobykgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IuCiAg
ICAgICAgIGlmICghaW1wb3J0TW9kdWxlVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW1wb3J0IG11c3QgYmUgYW4gb2JqZWN0
IiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZShpbXBvcnRNb2R1
bGVWYWx1ZSkpKSk7CkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXgK
ICAgICAgICAgLy8gMy4gTGV0IHYgYmUgdGhlIHZhbHVlIG9mIHBlcmZvcm1pbmcgR2V0KG8sIGku
aXRlbV9uYW1lKQogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4o
aW1wb3J0TW9kdWxlVmFsdWUpOwogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQo
ZXhlYywgaW1wb3J0LmZpZWxkKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgICAgIHN3aXRjaCAoaW1wb3J0LmtpbmQpIHsKICAgICAgICAg
Y2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OkZ1bmN0aW9uOiB7CkBAIC0yNzAsMTMgKzI3MCwxMyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleAogICAgIH0KIAogICAgIG1vZHVsZVJlY29yZC0+bGlu
ayhleGVjLCBpbnN0YW5jZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgbW9kdWxlUmVjb3JkLT5kdW1wKCk7CiAg
ICAgSlNWYWx1ZSBzdGFydFJlc3VsdCA9IG1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZXhlYyk7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXJ0UmVzdWx0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFuY2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
ZW1vcnlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAppbmRleCBmNGI0MTAzLi4zZjg4ZWQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcApAQCAtNjcsOSArNjcsOSBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5KEV4ZWNT
dGF0ZSogZXhlYwogICAgIHsKICAgICAgICAgSWRlbnRpZmllciBpbml0aWFsID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJpbml0aWFsIik7CiAgICAgICAgIEpTVmFsdWUgbWluU2l6ZVZh
bHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGV4ZWMsIGluaXRpYWwpOwotICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIHVpbnQzMl90IHNp
emUgPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIG1pblNpemVWYWx1ZSk7Ci0gICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKCFXYXNt
OjpQYWdlQ291bnQ6OmlzVmFsaWQoc2l6ZSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5NZW1vcnkgJ2luaXRpYWwnIHBhZ2UgY291
bnQgaXMgdG9vIGxhcmdlIikpKSk7CiAgICAgICAgIGluaXRpYWxQYWdlQ291bnQgPSBXYXNtOjpQ
YWdlQ291bnQoc2l6ZSk7CkBAIC03OSwxMiArNzksMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9yeShFeGVjU3RhdGUqIGV4
ZWMKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgbWF4aW11bSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAibWF4aW11bSIpOwogICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gbWVtb3J5
RGVzY3JpcHRvci0+aGFzUHJvcGVydHkoZXhlYywgbWF4aW11bSk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKGhhc1Byb3BlcnR5
KSB7CiAgICAgICAgICAgICBKU1ZhbHVlIG1heFNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3It
PmdldChleGVjLCBtYXhpbXVtKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB1aW50MzJfdCBzaXplID0gdG9Ob25X
cmFwcGluZ1VpbnQzMihleGVjLCBtYXhTaXplVmFsdWUpOwotICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIGlmICghV2Fz
bTo6UGFnZUNvdW50Ojppc1ZhbGlkKHNpemUpKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5Lk1lbW9yeSAnbWF4aW11bScgcGFn
ZSBjb3VudCBpcyB0b28gbGFyZ2UiKSkpKTsKICAgICAgICAgICAgIG1heGltdW1QYWdlQ291bnQg
PSBXYXNtOjpQYWdlQ291bnQoc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCmluZGV4
IDI2NzNmYzAuLjczY2E3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT
V2ViQXNzZW1ibHlNb2R1bGUoRXhlY1N0YXRlKiBleGVjCiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBh
dXRvKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVy
ZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5X
ZWJBc3NlbWJseU1vZHVsZVN0cnVjdHVyZSgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZShl
eGVjLCBzdHJ1Y3R1cmUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggN2VmMTAyZS4uOTIwZGI4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihFeGVjU3RhdGUKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBtZXNz
YWdlID0gc3RhdGUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRlLCBzdGF0ZS0+bmV3VGFyZ2V0
KCksIGFzSW50ZXJuYWxGdW5jdGlvbihzdGF0ZS0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVjdCgp
LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpKTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcjo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UsIGZhbHNlKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
VGFibGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCmluZGV4IGE5YWMxNTIuLjEyZDI3YWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUYWJsZUNvbnN0cnVjdG9yLmNwcApAQCAtNjEsMjggKzYxLDI4IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlUYWJsZShFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGVsZW1lbnRJZGVudCA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZWxlbWVudCIpOwogICAgICAgICBKU1ZhbHVlIGVsZW1l
bnRWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChleGVjLCBlbGVtZW50SWRlbnQpOwotICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIFN0
cmluZyBlbGVtZW50U3RyaW5nID0gZWxlbWVudFZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwotICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlm
IChlbGVtZW50U3RyaW5nICE9ICJhbnlmdW5jIikKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuVGFibGUgZXhwZWN0cyBpdHMgJ2VsZW1l
bnQnIGZpZWxkIHRvIGJlIHRoZSBzdHJpbmcgJ2FueWZ1bmMnIikpKSk7CiAgICAgfQogCiAgICAg
SWRlbnRpZmllciBpbml0aWFsSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlu
aXRpYWwiKTsKICAgICBKU1ZhbHVlIGluaXRpYWxTaXplVmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9y
LT5nZXQoZXhlYywgaW5pdGlhbElkZW50KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICB1aW50MzJfdCBpbml0aWFsID0gdG9Ob25XcmFwcGluZ1VpbnQzMihl
eGVjLCBpbml0aWFsU2l6ZVZhbHVlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1heGltdW07CiAgICAgSWRl
bnRpZmllciBtYXhpbXVtSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIm1heGlt
dW0iKTsKICAgICBib29sIGhhc1Byb3BlcnR5ID0gbWVtb3J5RGVzY3JpcHRvci0+aGFzUHJvcGVy
dHkoZXhlYywgbWF4aW11bUlkZW50KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBpZiAoaGFzUHJvcGVydHkpIHsKICAgICAgICAgSlNWYWx1ZSBtYXhTaXpl
VmFsdWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZXhlYywgbWF4aW11bUlkZW50KTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBtYXhp
bXVtID0gdG9Ob25XcmFwcGluZ1VpbnQzMihleGVjLCBtYXhTaXplVmFsdWUpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAgICAgaWYgKGlu
aXRpYWwgPiAqbWF4aW11bSkgewogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAppbmRl
eCAzYjFhMDY0Li44MzM5MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1
bmNMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRh
YmxlKGV4ZWMsIHZtLCBleGVjLT50aGlzVmFsdWUoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0
YWJsZS0+c2l6ZSgpKSk7CiB9CiAKQEAgLTc3LDEwICs3NywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93KEV4ZWNTdGF0ZSogZXhl
YykKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShleGVjLCB2bSwgZXhlYy0+dGhp
c1ZhbHVlKCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgdWludDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBp
ZiAoIXRhYmxlLT5ncm93KGluZGV4KSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLAogICAgICAgICAgICAgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLmdyb3cgY291bGQgbm90IGdyb3cgdGhlIHRh
YmxlIikpKTsKQEAgLTk2LDEwICs5NiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKiBleGVjKQogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNXZWJBc3NlbWJs
eVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVjLT50aGlzVmFsdWUoKSk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICB1aW50MzJfdCBp
bmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChpbmRleCA+PSB0
YWJsZS0+c2l6ZSgpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUs
CiAgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNz
ZW1ibHkuVGFibGUucHJvdG90eXBlLmdldCBleHBlY3RzIGFuIGludGVnZXIgbGVzcyB0aGFuIHRo
ZSBzaXplIG9mIHRoZSB0YWJsZSIpKSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBnZXRUYWJsZShleGVjLCB2bSwgZXhlYy0+
dGhpc1ZhbHVlKCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIFdlYkFzc2VtYmx5
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxXZWJBc3NlbWJseUZ1bmN0aW9uKj4o
dmFsdWUpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogCiAg
ICAgdWludDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IGlmIChpbmRleCA+PSB0YWJsZS0+c2l6ZSgpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4
ZWMsIHRocm93U2NvcGUsCi0tIAoyLjkuMwoK
</data>
<flag name="review"
          id="319849"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="319850"
          type_id="3"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297553</attachid>
            <date>2016-12-20 13:59:30 -0800</date>
            <delta_ts>2016-12-20 14:17:09 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-encodedJSValue.patch</filename>
            <type>text/plain</type>
            <size>17753</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAxYjRiZmQ4MDZjNTM4NjFkZjNlN2I1NjE2MDcwOThlYzY5YWEzMTk2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDIwIERlYyAyMDE2IDEyOjAzOjE0IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gZW5jb2Rl
ZEpTVmFsdWUKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgfCAzNiArKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9KU1dlYkFzc2VtYmx5LmNwcCAgICAgICB8ICA0ICstLQogLi4uL3dhc20vanMvV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgfCAgMiArLQogLi4uL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgfCAgMiArLQogLi4uL3dhc20v
anMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCAgICAgfCAxNCArKysrLS0tLS0K
IC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwICAgICAgIHwgMTAg
KysrLS0tCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcCAgICAg
ICB8ICAyICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9y
LmNwcCB8ICAyICstCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3Bw
ICAgICAgICB8IDE0ICsrKystLS0tLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3Rv
dHlwZS5jcHAgICAgICAgICAgfCAxNCArKysrLS0tLS0KIDEwIGZpbGVzIGNoYW5nZWQsIDY4IGlu
c2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4
IDJiYzIzNWQuLjZmZTM4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQx
IEBACiAyMDE2LTEyLTIwICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAorICAg
ICAgICBXZWJBc3NlbWJseTogY29uc3RydWN0IDMyLWJpdCBlbmNvZGVkSlNWYWx1ZSBwcm9wZXJs
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2MTk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgQ29uc3RydWN0aW5n
IGFuIGVuY29kZWRKU1ZhbHVlIHVzaW5nIGB7IH1gIHlpZWxkcyB0aGUgd3JvbmcgdmFsdWUKKyAg
ICAgICAgb24gMzItYml0IHBsYXRmb3Jtcy4gV2ViQXNzZW1ibHkgZG9lc24ndCBjdXJyZW50bHkg
dGFyZ2V0IDMyLWJpdAorICAgICAgICBwbGF0Zm9ybXMsIGJ1dCB3ZSBtYXkgYXMgd2VsbCBnZXQg
aXQgcmlnaHQuCisKKyAgICAgICAgKiB3YXNtL0pTV2ViQXNzZW1ibHkuY3BwOgorICAgICAgICAo
SlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlW
YWxpZGF0ZUZ1bmMpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaDoK
KyAgICAgICAgKEpTQzo6dG9Ob25XcmFwcGluZ1VpbnQzMik6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYkFzc2VtYmx5RnVuY3Rp
b24pOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKToKKyAgICAg
ICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5KToKKyAgICAgICAgKiB3YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RK
U1dlYkFzc2VtYmx5TW9kdWxlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlUYWJsZSk6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1i
bHlUYWJsZVByb3RvRnVuY0dldCk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90
b0Z1bmNTZXQpOgorCisyMDE2LTEyLTIwICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNv
bT4KKwogICAgICAgICBXZWJBc3NlbWJseTogdW5pcXVlIGZ1bmN0aW9uIHNpZ25hdHVyZXMKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTk1NwogICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjk3MzU3Mzc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL0pTV2ViQXNzZW1ibHkuY3BwCmluZGV4IDE2MWU5NGIuLmE2ZmM0MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuY3BwCkBAIC00OSw3ICs0OSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2
bSk7CiAKICAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVk
OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKGNhdGNoU2NvcGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihj
YXRjaFNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMg
dHJ1bHkgYXN5bmNocm9ub3VzOgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjYwMTYKQEAgLTcyLDcgKzcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgc2l6
ZV90IGJ5dGVPZmZzZXQ7CiAgICAgc2l6ZV90IGJ5dGVTaXplOwogICAgIHVpbnQ4X3QqIGJhc2Ug
PSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBieXRlT2Zm
c2V0LCBieXRlU2l6ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBXYXNt
OjpQbGFuIHBsYW4oJnZtLCBiYXNlICsgYnl0ZU9mZnNldCwgYnl0ZVNpemUpOwogICAgIC8vIEZJ
WE1FOiBXZSBtaWdodCB3YW50IHRvIHRocm93IGFuIE9PTSBleGNlcHRpb24gaGVyZSBpZiB3ZSBk
ZXRlY3QgdGhhdCBzb21ldGhpbmcgd2lsbCBPT00uCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjAxNQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0
cnVjdG9yLmNwcAppbmRleCAwYTBhMmFiLi5kNjg1NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4ZWNT
dGF0ZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Zh
bHVlIG1lc3NhZ2UgPSBzdGF0ZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byogc3RydWN0dXJlID0g
SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRlLT5u
ZXdUYXJnZXQoKSwgYXNJbnRlcm5hbEZ1bmN0aW9uKHN0YXRlLT5qc0NhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KCktPldlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCkpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgbWVzc2FnZSwgZmFs
c2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCAwZmEyZWY3Li40ZjBkN2E4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApA
QCAtNzksNyArNzksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
V2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGNhc2UgV2FzbTo6
QW55ZnVuYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGJv
eGVkQXJncy5hcHBlbmQoYXJnKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDlkOTU5MjYuLjQ4NGJlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9y
LmNwcApAQCAtNzYsMTMgKzc2LDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVjU3RhdGUqIGV4CiAKICAgICBJ
ZGVudGlmaWVyIG1vZHVsZUtleSA9IElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoUHJp
dmF0ZU5hbWU6OkRlc2NyaXB0aW9uLCAiV2ViQXNzZW1ibHlJbnN0YW5jZSIpKTsKICAgICBXZWJB
c3NlbWJseU1vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQ6OmNyZWF0ZShleGVjLCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1vZHVsZVJlY29y
ZFN0cnVjdHVyZSgpLCBtb2R1bGVLZXksIG1vZHVsZUluZm9ybWF0aW9uKTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIFN0cnVjdHVyZSogaW5zdGFuY2VT
dHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVj
LCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseUluc3RhbmNlU3Ry
dWN0dXJlKCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6Y3JlYXRlKHZtLCBpbnN0YW5jZVN0cnVjdHVyZSwganNNb2R1bGUsIG1vZHVsZVJlY29yZC0+
Z2V0TW9kdWxlTmFtZXNwYWNlKGV4ZWMpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAogICAgIC8vIExldCBmdW5jcywgbWVtb3JpZXMgYW5kIHRhYmxlcyBiZSBp
bml0aWFsbHktZW1wdHkgbGlzdHMgb2YgY2FsbGFibGUgSmF2YVNjcmlwdCBvYmplY3RzLCBXZWJB
c3NlbWJseS5NZW1vcnkgb2JqZWN0cyBhbmQgV2ViQXNzZW1ibHkuVGFibGUgb2JqZWN0cywgcmVz
cGVjdGl2ZWx5LgogICAgIC8vIExldCBpbXBvcnRzIGJlIGFuIGluaXRpYWxseS1lbXB0eSBsaXN0
IG9mIGV4dGVybmFsIHZhbHVlcy4KQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0
ZSogZXgKICAgICBmb3IgKGF1dG8mIGltcG9ydCA6IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydHMp
IHsKICAgICAgICAgLy8gMS4gTGV0IG8gYmUgdGhlIHJlc3VsdGFudCB2YWx1ZSBvZiBwZXJmb3Jt
aW5nIEdldChpbXBvcnRPYmplY3QsIGkubW9kdWxlX25hbWUpLgogICAgICAgICBKU1ZhbHVlIGlt
cG9ydE1vZHVsZVZhbHVlID0gaW1wb3J0T2JqZWN0LT5nZXQoZXhlYywgaW1wb3J0Lm1vZHVsZSk7
Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAg
ICAgLy8gMi4gSWYgVHlwZShvKSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvci4KICAg
ICAgICAgaWYgKCFpbXBvcnRNb2R1bGVWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJpbXBvcnQgbXVzdCBiZSBhbiBvYmplY3Qi
KSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKGltcG9ydE1vZHVs
ZVZhbHVlKSkpKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleAog
ICAgICAgICAvLyAzLiBMZXQgdiBiZSB0aGUgdmFsdWUgb2YgcGVyZm9ybWluZyBHZXQobywgaS5p
dGVtX25hbWUpCiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihp
bXBvcnRNb2R1bGVWYWx1ZSk7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChl
eGVjLCBpbXBvcnQuZmllbGQpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICAgICAgc3dpdGNoIChpbXBvcnQua2luZCkgewogICAgICAgICBj
YXNlIFdhc206OkV4dGVybmFsS2luZDo6RnVuY3Rpb246IHsKQEAgLTI3MCwxMyArMjcwLDEzIEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1i
bHlJbnN0YW5jZShFeGVjU3RhdGUqIGV4CiAgICAgfQogCiAgICAgbW9kdWxlUmVjb3JkLT5saW5r
KGV4ZWMsIGluc3RhbmNlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBtb2R1bGVSZWNvcmQtPmR1bXAoKTsKICAg
ICBKU1ZhbHVlIHN0YXJ0UmVzdWx0ID0gbW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShleGVjKTsKICAg
ICBVTlVTRURfUEFSQU0oc3RhcnRSZXN1bHQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1l
bW9yeUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCmluZGV4IGY0YjQxMDMuLjNmODhlZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCkBAIC02Nyw5ICs2Nyw5IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNZW1vcnkoRXhlY1N0
YXRlKiBleGVjCiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGluaXRpYWwgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImluaXRpYWwiKTsKICAgICAgICAgSlNWYWx1ZSBtaW5TaXplVmFs
dWUgPSBtZW1vcnlEZXNjcmlwdG9yLT5nZXQoZXhlYywgaW5pdGlhbCk7Ci0gICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgdWludDMyX3Qgc2l6
ZSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgbWluU2l6ZVZhbHVlKTsKLSAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoIVdhc206
OlBhZ2VDb3VudDo6aXNWYWxpZChzaXplKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5Lk1lbW9yeSAnaW5pdGlhbCcgcGFnZSBjb3Vu
dCBpcyB0b28gbGFyZ2UiKSkpKTsKICAgICAgICAgaW5pdGlhbFBhZ2VDb3VudCA9IFdhc206OlBh
Z2VDb3VudChzaXplKTsKQEAgLTc5LDEyICs3OSwxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5KEV4ZWNTdGF0ZSogZXhl
YwogICAgIHsKICAgICAgICAgSWRlbnRpZmllciBtYXhpbXVtID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJtYXhpbXVtIik7CiAgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBtZW1vcnlE
ZXNjcmlwdG9yLT5oYXNQcm9wZXJ0eShleGVjLCBtYXhpbXVtKTsKLSAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoaGFzUHJvcGVydHkp
IHsKICAgICAgICAgICAgIEpTVmFsdWUgbWF4U2l6ZVZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+
Z2V0KGV4ZWMsIG1heGltdW0pOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgICAgIHVpbnQzMl90IHNpemUgPSB0b05vbldy
YXBwaW5nVWludDMyKGV4ZWMsIG1heFNpemVWYWx1ZSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKCFXYXNt
OjpQYWdlQ291bnQ6OmlzVmFsaWQoc2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuTWVtb3J5ICdtYXhpbXVtJyBwYWdl
IGNvdW50IGlzIHRvbyBsYXJnZSIpKSkpOwogICAgICAgICAgICAgbWF4aW11bVBhZ2VDb3VudCA9
IFdhc206OlBhZ2VDb3VudChzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
MjY3M2ZjMC4uNzNjYTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNX
ZWJBc3NlbWJseU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1
dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
KGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPldl
YkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlTW9kdWxlKGV4
ZWMsIHN0cnVjdHVyZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNw
cAppbmRleCA3ZWYxMDJlLi45MjBkYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0
cnVjdG9yLmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEV4ZWNTdGF0ZQogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIG1lc3Nh
Z2UgPSBzdGF0ZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRlLT5uZXdUYXJnZXQo
KSwgYXNJbnRlcm5hbEZ1bmN0aW9uKHN0YXRlLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCkt
PldlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCkpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yOjpjcmVhdGUoc3RhdGUsIHN0cnVjdHVyZSwgbWVzc2FnZSwgZmFsc2UpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlU
YWJsZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTlhYzE1Mi4uMTJkMjdhYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlQ29uc3RydWN0b3IuY3BwCkBAIC02MSwyOCArNjEsMjggQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVRhYmxlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgZWxlbWVudElkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJlbGVtZW50Iik7CiAgICAgICAgIEpTVmFsdWUgZWxlbWVu
dFZhbHVlID0gbWVtb3J5RGVzY3JpcHRvci0+Z2V0KGV4ZWMsIGVsZW1lbnRJZGVudCk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgU3Ry
aW5nIGVsZW1lbnRTdHJpbmcgPSBlbGVtZW50VmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgaWYg
KGVsZW1lbnRTdHJpbmcgIT0gImFueWZ1bmMiKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZSBleHBlY3RzIGl0cyAnZWxlbWVu
dCcgZmllbGQgdG8gYmUgdGhlIHN0cmluZyAnYW55ZnVuYyciKSkpKTsKICAgICB9CiAKICAgICBJ
ZGVudGlmaWVyIGluaXRpYWxJZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW5p
dGlhbCIpOwogICAgIEpTVmFsdWUgaW5pdGlhbFNpemVWYWx1ZSA9IG1lbW9yeURlc2NyaXB0b3It
PmdldChleGVjLCBpbml0aWFsSWRlbnQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgeyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIHVpbnQzMl90IGluaXRpYWwgPSB0b05vbldyYXBwaW5nVWludDMyKGV4
ZWMsIGluaXRpYWxTaXplVmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogCiAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bTsKICAgICBJZGVu
dGlmaWVyIG1heGltdW1JZGVudCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAibWF4aW11
bSIpOwogICAgIGJvb2wgaGFzUHJvcGVydHkgPSBtZW1vcnlEZXNjcmlwdG9yLT5oYXNQcm9wZXJ0
eShleGVjLCBtYXhpbXVtSWRlbnQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIGlmIChoYXNQcm9wZXJ0eSkgewogICAgICAgICBKU1ZhbHVlIG1heFNpemVW
YWx1ZSA9IG1lbW9yeURlc2NyaXB0b3ItPmdldChleGVjLCBtYXhpbXVtSWRlbnQpOwotICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIG1heGlt
dW0gPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIG1heFNpemVWYWx1ZSk7Ci0gICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgICAgICBpZiAoaW5p
dGlhbCA+ICptYXhpbXVtKSB7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCmluZGV4
IDNiMWEwNjQuLjgzMzkyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVu
Y0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0gZ2V0VGFi
bGUoZXhlYywgdm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRh
YmxlLT5zaXplKCkpKTsKIH0KIApAQCAtNzcsMTAgKzc3LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKiBleGVj
KQogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
SlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVjLT50aGlz
VmFsdWUoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAg
ICB1aW50MzJfdCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlm
ICghdGFibGUtPmdyb3coaW5kZXgpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRo
cm93U2NvcGUsCiAgICAgICAgICAgICBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBjb3VsZCBub3QgZ3JvdyB0aGUgdGFi
bGUiKSkpOwpAQCAtOTYsMTAgKzk2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1dlYkFzc2VtYmx5
VGFibGUqIHRhYmxlID0gZ2V0VGFibGUoZXhlYywgdm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIHVpbnQzMl90IGlu
ZGV4ID0gdG9Ob25XcmFwcGluZ1VpbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKGluZGV4ID49IHRh
YmxlLT5zaXplKCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwK
ICAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3Nl
bWJseS5UYWJsZS5wcm90b3R5cGUuZ2V0IGV4cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhl
IHNpemUgb2YgdGhlIHRhYmxlIikpKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBl
eGVjKQogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgSlNXZWJBc3NlbWJseVRhYmxlKiB0YWJsZSA9IGdldFRhYmxlKGV4ZWMsIHZtLCBleGVjLT50
aGlzVmFsdWUoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgV2ViQXNzZW1ibHlG
dW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PFdlYkFzc2VtYmx5RnVuY3Rpb24qPih2
YWx1ZSk7CkBAIC0xMjgsNyArMTI4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAg
ICB1aW50MzJfdCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAg
aWYgKGluZGV4ID49IHRhYmxlLT5zaXplKCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwKLS0gCjIuOS4zCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>