<?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>165591</bug_id>
          
          <creation_ts>2016-12-07 21:33:46 -0800</creation_ts>
          <short_desc>WebAssembly: JSC::link* shouldn&apos;t need a CodeBlock</short_desc>
          <delta_ts>2016-12-08 22:53:24 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>165118</dependson>
          <blocked>161709</blocked>
    
    <blocked>165639</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1257599</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-07 21:33:46 -0800</bug_when>
    <thetext>test_Imports.js (and all imports) are currently blocked on this being fixed because the wasm -&gt; JS stub has an IC, and on first call it fails because the CodeBlock for the stub&apos;s caller frame is currently 0.

As a follow-up to but #165118, teach JSC::linkFor to live without a CodeBlock: wasm doesn&apos;t have one and the IC patching is sad. We&apos;ll switch on the callee (or its type?) and then use that as the owner (because the callee is alive if the instance is alive, ditto module, and module owns the CallLinkInfo).

This means an extra test in JSC::linkFor, but then all wasm frames are free to stop having space for CodeBlock, and we don&apos;t need to allocate a wasm CodeBlock at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257656</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-08 00:04:19 -0800</bug_when>
    <thetext>FWIW, you might have to teach more than linkFor about not having a caller CodeBlock. I would leave this bug more general for now until you audit all the JS call related machinery to ensure nothing other than linkFor expects a valid caller CodeBlock</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257762</commentid>
    <comment_count>2</comment_count>
      <attachid>296533</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-08 10:36:40 -0800</bug_when>
    <thetext>Created attachment 296533
patch

Is there more code that needs to get audited? This seems to work: I&apos;m calling JS -&gt; wasm -&gt; JS in a loop, and then back.

Before fixing this, the crash was:

Crash before fixing JSC::linkFor:

* thread #1: tid = 0x6c58df, 0x000000010069deec JavaScriptCore`JSC::CodeBlock::vm(this=0x0000000000000000) const + 12 at CodeBlock.h:355, queue = &apos;com.apple.main-thread&apos;, stop reason = EXC_BAD_ACCESS (code=1, address=0x38)
    frame #0: 0x000000010069deec JavaScriptCore`JSC::CodeBlock::vm(this=0x0000000000000000) const + 12 at CodeBlock.h:355
   352 	    ExecutableBase* ownerExecutable() const { return m_ownerExecutable.get(); }
   353 	    ScriptExecutable* ownerScriptExecutable() const { return jsCast&lt;ScriptExecutable*&gt;(m_ownerExecutable.get()); }
   354 	
-&gt; 355 	    VM* vm() const { return m_vm; }
   356 	
   357 	    void setThisRegister(VirtualRegister thisRegister) { m_thisRegister = thisRegister; }
   358 	    VirtualRegister thisRegister() const { return m_thisRegister; }
(lldb) bt
* thread #1: tid = 0x6c58df, 0x000000010069deec JavaScriptCore`JSC::CodeBlock::vm(this=0x0000000000000000) const + 12 at CodeBlock.h:355, queue = &apos;com.apple.main-thread&apos;, stop reason = EXC_BAD_ACCESS (code=1, address=0x38)
  * frame #0: 0x000000010069deec JavaScriptCore`JSC::CodeBlock::vm(this=0x0000000000000000) const + 12 at CodeBlock.h:355
    frame #1: 0x0000000100f86c2a JavaScriptCore`JSC::linkFor(exec=0x00007fff5fbfd8f0, callLinkInfo=0x0000000104874880, calleeCodeBlock=0x0000000105caefe0, callee=0x0000000105cc2920, codePtr=(m_value = 0x000049a08f801640)) + 122 at Repatch.cpp:567
    frame #2: 0x0000000100f4901c JavaScriptCore`::operationLinkCall(execCallee=0x00007fff5fbfd8f0, callLinkInfo=0x0000000104874880) + 1900 at JITOperations.cpp:927</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257766</commentid>
    <comment_count>3</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-08 10:48:12 -0800</bug_when>
    <thetext>This patch is based on changes from #165118. I can rebase from master instead if you think I should commit this before #165118.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257793</commentid>
    <comment_count>4</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-08 11:49:58 -0800</bug_when>
    <thetext>Saam points out that I should also test the polymorphic and virtual IC call paths, as they may have the same issue as linkFor. I&apos;ll do this by creating multiple instances (2 and 3 for poly, more for virt). They can&apos;t be with the same instance since imports are captures in the closure at instance creation time, but stubs are shared between instances (so they&apos;ll hit poly / virt).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257856</commentid>
    <comment_count>5</comment_count>
      <attachid>296560</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-08 13:42:43 -0800</bug_when>
    <thetext>Created attachment 296560
WIP

Bug #165118 made it through. Here&apos;s a rebased patch, with the test updated as suggested. Saam was right, there&apos;s more code to audit. Current failure is:

* thread #1: tid = 0x70995a, 0x000000010069d92c JavaScriptCore`JSC::CodeBlock::vm(this=0x0000000000000000) const + 12 at CodeBlock.h:355, queue = &apos;com.apple.main-thread&apos;, stop reason = EXC_BAD_ACCESS (code=1, address=0x38)
    frame #0: 0x000000010069d92c JavaScriptCore`JSC::CodeBlock::vm(this=0x0000000000000000) const + 12 at CodeBlock.h:355
   352 	    ExecutableBase* ownerExecutable() const { return m_ownerExecutable.get(); }
   353 	    ScriptExecutable* ownerScriptExecutable() const { return jsCast&lt;ScriptExecutable*&gt;(m_ownerExecutable.get()); }
   354 	
-&gt; 355 	    VM* vm() const { return m_vm; }
   356 	
   357 	    void setThisRegister(VirtualRegister thisRegister) { m_thisRegister = thisRegister; }
   358 	    VirtualRegister thisRegister() const { return m_thisRegister; }
(lldb) bt
* thread #1: tid = 0x70995a, 0x000000010069d92c JavaScriptCore`JSC::CodeBlock::vm(this=0x0000000000000000) const + 12 at CodeBlock.h:355, queue = &apos;com.apple.main-thread&apos;, stop reason = EXC_BAD_ACCESS (code=1, address=0x38)
  * frame #0: 0x000000010069d92c JavaScriptCore`JSC::CodeBlock::vm(this=0x0000000000000000) const + 12 at CodeBlock.h:355
    frame #1: 0x0000000100f87580 JavaScriptCore`JSC::linkPolymorphicCall(exec=0x00007fff5fbfd950, callLinkInfo=0x00000001048a2780, newVariant=CallVariant @ 0x00007fff5fbfce70) + 208 at Repatch.cpp:691
    frame #2: 0x0000000100f49e08 JavaScriptCore`::operationLinkPolymorphicCall(execCallee=0x00007fff5fbfd950, callLinkInfo=0x00000001048a2780) + 152 at JITOperations.cpp:1034


I&apos;ll get on that now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257879</commentid>
    <comment_count>6</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-08 14:05:58 -0800</bug_when>
    <thetext>I&apos;ll need to fix at least linkPolymorphicCall and linkVirtualFor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258026</commentid>
    <comment_count>7</comment_count>
      <attachid>296618</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-08 19:24:37 -0800</bug_when>
    <thetext>Created attachment 296618
patch

🎉 It works. wasm can call into JS polymorphically and virtually, get all that great IC benefit, amazing speed. 🎉</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258037</commentid>
    <comment_count>8</comment_count>
      <attachid>296618</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-12-08 19:43:44 -0800</bug_when>
    <thetext>Comment on attachment 296618
patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258043</commentid>
    <comment_count>9</comment_count>
      <attachid>296626</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-08 19:59:48 -0800</bug_when>
    <thetext>Created attachment 296626
patch

Fix build when ENABLE(WEBASSEMBLY) == false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258048</commentid>
    <comment_count>10</comment_count>
      <attachid>296626</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-08 20:20:17 -0800</bug_when>
    <thetext>Comment on attachment 296626
patch

Rejecting attachment 296626 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 296626, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in JSTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/2660694</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258052</commentid>
    <comment_count>11</comment_count>
      <attachid>296630</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-08 20:27:53 -0800</bug_when>
    <thetext>Created attachment 296630
patch

Fix OOPS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258079</commentid>
    <comment_count>12</comment_count>
      <attachid>296630</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-08 22:53:20 -0800</bug_when>
    <thetext>Comment on attachment 296630
patch

Clearing flags on attachment: 296630

Committed r209597: &lt;http://trac.webkit.org/changeset/209597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258080</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-08 22:53:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296533</attachid>
            <date>2016-12-08 10:36:40 -0800</date>
            <delta_ts>2016-12-08 13:42:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-JSC-linkFor-shouldn-t-need-a-CodeBlock.patch</filename>
            <type>text/plain</type>
            <size>6531</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBlMTdlOGZjMjEwYTJiMTcxZDA4MzVkNGRkZTA3MjYzMGM1NmUwYWViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDggRGVjIDIwMTYgMTA6MzI6NDQgLTA4MDAKU3ViamVjdDogW1BBVENIXSBXZWJBc3Nl
bWJseTogSlNDOjpsaW5rRm9yIHNob3VsZG4ndCBuZWVkIGEgQ29kZUJsb2NrCgotLS0KIEpTVGVz
dHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrKysrKwogSlNU
ZXN0cy93YXNtL2pzLWFwaS90ZXN0X0luc3RhbmNlLmpzICAgICAgIHwgMTMgKysrKystLS0tLS0t
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgfCAxMiArKysrKysr
KysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCAgICAgIHwgMzMgKysr
KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQmluZGluZy5jcHAgfCAgMSAtCiA1IGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyks
IDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZDgwMjY0OS4uZWMxYTY3OCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0x
Mi0wOCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNz
ZW1ibHk6IEpTQzo6bGlua0ZvciBzaG91bGRuJ3QgbmVlZCBhIENvZGVCbG9jaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtL2pzLWFwaS90ZXN0
X0luc3RhbmNlLmpzOgorICAgICAgICAoSW1wb3J0KTogdGVzdCB0aGF0IHdhc20gLT4gSlMgd29y
a3MsIGluY2x1ZGluZyB0aGUgSUMKKwogMjAxNi0xMi0wNyAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiB3aXJlIHVwIEluc3Rh
bmNlIGltcG9ydHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9JbnN0YW5j
ZS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9JbnN0YW5jZS5qcwppbmRleCAwMDUwOTdi
Li4zMDM4ZTBhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfSW5zdGFuY2Uu
anMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X0luc3RhbmNlLmpzCkBAIC0zMCw3ICsz
MCw2IEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogICAgIGFzc2VydC5l
cShyZXN1bHQsIDQyKTsKIH0pKCk7CiAKLS8qIEZJWE1FIHRoaXMgY3VycmVudGx5IGNyYXNoZXMg
YXMgZGV0YWlsZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NTU5MQogKGZ1bmN0aW9uIEltcG9ydCgpIHsKICAgICBsZXQgY291bnRlciA9IDA7CiAgICAgY29u
c3QgY291bnRlclNldHRlciA9IHYgPT4gY291bnRlciA9IHY7CkBAIC01NCwxMSArNTMsOSBAQCBp
bXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKICAgICBjb25zdCBiaW4gPSBidWls
ZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CiAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShiaW4pOwogICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlclNldHRlciB9IH0pOwotICAgIGlu
c3RhbmNlLmV4cG9ydHMuY2hhbmdlQ291bnRlcigwKTsKLSAgICBhc3NlcnQuZXEoY291bnRlciwg
NDIpOwotICAgIGluc3RhbmNlLmV4cG9ydHMuY2hhbmdlQ291bnRlcigxKTsKLSAgICBhc3NlcnQu
ZXEoY291bnRlciwgNDMpOwotICAgIGluc3RhbmNlLmV4cG9ydHMuY2hhbmdlQ291bnRlcig0Mik7
Ci0gICAgYXNzZXJ0LmVxKGNvdW50ZXIsIDg0KTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQw
OTY7ICsraSkgeworICAgICAgICAvLyBJbnZva2UgdGhpcyBhIGJ1bmNoIG9mIHRpbWVzIHRvIG1h
a2Ugc3VyZSB0aGUgSUMgaW4gdGhlIHdhc20gLT4gSlMgc3R1YiB3b3JrcyBjb3JyZWN0bHkuCisg
ICAgICAgIGluc3RhbmNlLmV4cG9ydHMuY2hhbmdlQ291bnRlcihpKTsKKyAgICAgICAgYXNzZXJ0
LmVxKGNvdW50ZXIsIGkgKyA0Mik7CisgICAgfQogfSkoKTsKLSovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCBkODU1MTVlLi4yMGU2NzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxNi0xMi0wOCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IEpTQzo6bGlua0ZvciBzaG91bGRuJ3QgbmVlZCBh
IENvZGVCbG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY1NTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtGb3IpOiBhbGxvdyBsaW5r
aW5nIHdpdGhvdXQgYSBDb2RlQmxvY2ssIHdoaWNoIFdlYkFzc2VtYmx5IGRvZXMKKyAgICAgICAg
KiB3YXNtL1dhc21CaW5kaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aW1wb3J0U3R1Ykdl
bmVyYXRvcik6IHJlbW92ZSB0aGUgYnJlYWtwb2ludCBzaW5jZSB0aGUgY29kZSBub3cgd29ya3MK
KwogMjAxNi0xMi0wNyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViQXNzZW1ibHkgSlMgQVBJOiB3aXJlIHVwIEluc3RhbmNlIGltcG9ydHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDkyNGY4MGEuLmE4ZmRmOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseS5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNp
bmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5o
IgpAQCAtNTYxLDI3ICs1NjIsMzUgQEAgdm9pZCBsaW5rRm9yKAogICAgIEpTRnVuY3Rpb24qIGNh
bGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIpCiB7CiAgICAgQVNTRVJUKCFjYWxs
TGlua0luZm8uc3R1YigpKTsKLSAgICAKLSAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9
IGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpOwogCi0gICAgVk0qIHZtID0gY2FsbGVy
Q29kZUJsb2NrLT52bSgpOwotICAgIAorICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVj
LT5jYWxsZXJGcmFtZSgpOworICAgIFZNJiB2bSA9IGNhbGxlckZyYW1lLT52bSgpOworICAgIENv
ZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOworCisg
ICAgLy8gV2ViQXNzZW1ibHkgLT4gSlMgc3R1YnMgY3VycmVudGx5IHRoZWlyIGNhbGxlciBmcmFt
ZSdzIENvZGVCbG9jayB0byBudWxscHRyLCBhbmQgY2FsbGVlIHRvIGEgc2luZ2xldG9uIHdoaWNo
IGxpdmVzIG9uIFZNLiBJdCB3aWxsIGV2ZW50dWFsbHkgbm90IGhhdmUgYSBDb2RlQmxvY2sgaW4g
aXRzIGZyYW1lcyBhdCBhbGwuCisgICAgSlNDZWxsKiBvd25lciA9IGNhbGxlckNvZGVCbG9jazsK
KyAgICBpZiAoY2FsbGVyRnJhbWUtPmNhbGxlZSgpID09IHZtLndlYkFzc2VtYmx5VG9KU0NhbGxl
ZS5nZXQoKSkgeworICAgICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHNoYXJlcyB0
aGUgc3R1YnMgZnJvbSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUuCisgICAgICAgIG93bmVyID0g
dm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlLT5tb2R1bGUoKTsKKyAgICB9CisgICAgQVNTRVJU
KG93bmVyKTsKKwogICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLmlzTGlua2VkKCkpOwotICAgIGNh
bGxMaW5rSW5mby5zZXRDYWxsZWUoZXhlYy0+Y2FsbGVyRnJhbWUoKS0+dm0oKSwgY2FsbGVyQ29k
ZUJsb2NrLCBjYWxsZWUpOwotICAgIGNhbGxMaW5rSW5mby5zZXRMYXN0U2VlbkNhbGxlZShleGVj
LT5jYWxsZXJGcmFtZSgpLT52bSgpLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlZSk7Ci0gICAgaWYg
KHNob3VsZER1bXBEaXNhc3NlbWJseUZvcihjYWxsZXJDb2RlQmxvY2spKQorICAgIGNhbGxMaW5r
SW5mby5zZXRDYWxsZWUodm0sIG93bmVyLCBjYWxsZWUpOworICAgIGNhbGxMaW5rSW5mby5zZXRM
YXN0U2VlbkNhbGxlZSh2bSwgb3duZXIsIGNhbGxlZSk7CisgICAgaWYgKGNhbGxlckNvZGVCbG9j
ayAmJiBzaG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKICAgICAgICAg
ZGF0YUxvZygiTGlua2luZyBjYWxsIGluICIsICpjYWxsZXJDb2RlQmxvY2ssICIgYXQgIiwgY2Fs
bExpbmtJbmZvLmNvZGVPcmlnaW4oKSwgIiB0byAiLCBwb2ludGVyRHVtcChjYWxsZWVDb2RlQmxv
Y2spLCAiLCBlbnRyeXBvaW50IGF0ICIsIGNvZGVQdHIsICJcbiIpOwogICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbExpbmtJbmZvLmhvdFBhdGhPdGhlcigpLCBDb2RlTG9j
YXRpb25MYWJlbChjb2RlUHRyKSk7Ci0gICAgCisKICAgICBpZiAoY2FsbGVlQ29kZUJsb2NrKQot
ICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoZXhlYy0+Y2FsbGVyRnJh
bWUoKSwgJmNhbGxMaW5rSW5mbyk7Ci0gICAgCisgICAgICAgIGNhbGxlZUNvZGVCbG9jay0+bGlu
a0luY29taW5nQ2FsbChjYWxsZXJGcmFtZSwgJmNhbGxMaW5rSW5mbyk7CisKICAgICBpZiAoY2Fs
bExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDYWxsICYmIGNhbGxMaW5r
SW5mby5hbGxvd1N0dWJzKCkpIHsKLSAgICAgICAgbGlua1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5m
bywgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKTsKKyAgICAgICAgbGlua1Nsb3dG
b3IoJnZtLCBjYWxsTGlua0luZm8sIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgbGlua1Nsb3dGb3Iodm0sIGNhbGxM
aW5rSW5mbyk7CisgICAgbGlua1Nsb3dGb3IoJnZtLCBjYWxsTGlua0luZm8pOwogfQogCiB2b2lk
IGxpbmtEaXJlY3RGb3IoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQmluZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5j
cHAKaW5kZXggMTM2YzY1Yy4uNWZmYzQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CaW5kaW5nLmNwcApAQCAtNDksNyArNDksNiBAQCBXYXNtVG9KU1N0dWIgaW1wb3J0U3R1
YkdlbmVyYXRvcihWTSogdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLCBTaWdu
YQogICAgIEFTU0VSVCghanNDQy5tX2ZwckFyZ3Muc2l6ZSgpKTsKIAogICAgIGppdC5lbWl0RnVu
Y3Rpb25Qcm9sb2d1ZSgpOwotICAgIGppdC5icmVha3BvaW50KCk7IC8vIEZJWE1FIG1ha2UgY2Fs
bGluZyB0byBKYXZhU2NyaXB0IHdvcmsuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjU1OTEKICAgICBqaXQuc3RvcmU2NChKSVQ6OlRydXN0ZWRJbW0zMigwKSwgSklU
OjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7IC8vIEZJWE1FIFN0
b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY1MzIxCiAgICAgaml0LnN0b3JlUHRyKEpJVDo6VHJ1c3RlZEltbVB0cih2bS0+
d2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmdldCgpKSwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpKSk7CiAKLS0gCjIuMTAuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296560</attachid>
            <date>2016-12-08 13:42:43 -0800</date>
            <delta_ts>2016-12-08 19:24:37 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>0001-WebAssembly-JSC-linkFor-shouldn-t-need-a-CodeBlock.patch</filename>
            <type>text/plain</type>
            <size>9954</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBmNzY0ZDk1ZWUwNTI5ZDEzMzY0NzVmZWE2MDg1NWZmMDE4M2M1MDgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEgRGVjIDIwMTYgMDg6NTg6MjQgLTA4MDAKU3ViamVjdDogW1BBVENIXSBXZWJBc3Nl
bWJseTogSlNDOjpsaW5rRm9yIHNob3VsZG4ndCBuZWVkIGEgQ29kZUJsb2NrCgotLS0KIEpTVGVz
dHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrCiBK
U1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfSW5zdGFuY2UuanMgICAgICAgICAgICAgICB8IDg1ICsr
KysrKysrKysrKysrKysrKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgIHwgMTIgKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwICAgICAgICAgICAgICB8IDMzICsrKysrKy0tLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUJpbmRpbmcuY3BwICAgICAgICAgfCAgMSAtCiAuLi4vSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaCB8ICAyICstCiA2IGZpbGVzIGNoYW5nZWQs
IDExOCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUyMWMyZmIuLjU2N2M2OTcgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMTUgQEAKIDIwMTYtMTItMDggIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29t
PgogCisgICAgICAgIFdlYkFzc2VtYmx5OiBKU0M6OmxpbmtGb3Igc2hvdWxkbid0IG5lZWQgYSBD
b2RlQmxvY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd2FzbS9qcy1hcGkvdGVzdF9JbnN0YW5jZS5qczoKKyAgICAgICAgKEltcG9ydCk6IHRlc3Qg
dGhhdCB3YXNtIC0+IEpTIHdvcmtzLCBpbmNsdWRpbmcgdGhlIElDCisKKzIwMTYtMTItMDggIEpG
IEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYkFzc2VtYmx5IEpT
IEFQSTogd2lyZSB1cCBJbnN0YW5jZSBpbXBvcnRzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUxMTgKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNt
L2pzLWFwaS90ZXN0X0luc3RhbmNlLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X0luc3Rh
bmNlLmpzCmluZGV4IDAwNTA5N2IuLjYxNDk1NjMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9q
cy1hcGkvdGVzdF9JbnN0YW5jZS5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfSW5z
dGFuY2UuanMKQEAgLTMwLDEwICszMCw3IEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxk
ZXIuanMnOwogICAgIGFzc2VydC5lcShyZXN1bHQsIDQyKTsKIH0pKCk7CiAKLS8qIEZJWE1FIHRo
aXMgY3VycmVudGx5IGNyYXNoZXMgYXMgZGV0YWlsZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NTU5MQotKGZ1bmN0aW9uIEltcG9ydCgpIHsKLSAgICBsZXQg
Y291bnRlciA9IDA7Ci0gICAgY29uc3QgY291bnRlclNldHRlciA9IHYgPT4gY291bnRlciA9IHY7
Citjb25zdCB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyA9ICgpID0+IHsKICAgICBjb25zdCBidWls
ZGVyID0gKG5ldyBCdWlsZGVyKCkpCiAgICAgICAgIC5UeXBlKCkuRW5kKCkKICAgICAgICAgLklt
cG9ydCgpCkBAIC01MywxMiArNTAsNzggQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRl
ci5qcyc7CiAgICAgICAgIC5FbmQoKTsKICAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2Vt
Ymx5KCkuZ2V0KCk7CiAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShi
aW4pOworICAgIHJldHVybiBtb2R1bGU7Cit9OworCisoZnVuY3Rpb24gTW9ub21vcnBoaWNJbXBv
cnQoKSB7CisgICAgbGV0IGNvdW50ZXIgPSAwOworICAgIGNvbnN0IGNvdW50ZXJTZXR0ZXIgPSB2
ID0+IGNvdW50ZXIgPSB2OworICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVXaGljaEltcG9y
dEpTKCk7CiAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyU2V0dGVyIH0gfSk7Ci0gICAgaW5zdGFuY2UuZXhw
b3J0cy5jaGFuZ2VDb3VudGVyKDApOwotICAgIGFzc2VydC5lcShjb3VudGVyLCA0Mik7Ci0gICAg
aW5zdGFuY2UuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKDEpOwotICAgIGFzc2VydC5lcShjb3VudGVy
LCA0Myk7Ci0gICAgaW5zdGFuY2UuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKDQyKTsKLSAgICBhc3Nl
cnQuZXEoY291bnRlciwgODQpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDA5NjsgKytpKSB7
CisgICAgICAgIC8vIEludm9rZSB0aGlzIGEgYnVuY2ggb2YgdGltZXMgdG8gbWFrZSBzdXJlIHRo
ZSBJQyBpbiB0aGUgd2FzbSAtPiBKUyBzdHViIHdvcmtzIGNvcnJlY3RseS4KKyAgICAgICAgaW5z
dGFuY2UuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKGkpOworICAgICAgICBhc3NlcnQuZXEoY291bnRl
ciwgaSArIDQyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gUG9seXBoaWMySW1wb3J0KCkg
eworICAgIGxldCBjb3VudGVyQSA9IDA7CisgICAgbGV0IGNvdW50ZXJCID0gdW5kZWZpbmVkOwor
ICAgIGNvbnN0IGNvdW50ZXJBU2V0dGVyID0gdiA9PiBjb3VudGVyQSA9IHY7CisgICAgY29uc3Qg
Y291bnRlckJTZXR0ZXIgPSAodiwgYm9ndXMpID0+IGNvdW50ZXJCID0geyB2YWx1ZTogdiB9Owor
ICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTKCk7CisgICAgY29uc3Qg
aW5zdGFuY2VBID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVu
YzogY291bnRlckFTZXR0ZXIgfSB9KTsKKyAgICBjb25zdCBpbnN0YW5jZUIgPSBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyQlNldHRlciB9IH0p
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDA5NjsgKytpKSB7CisgICAgICAgIGluc3RhbmNl
QS5leHBvcnRzLmNoYW5nZUNvdW50ZXIoaSk7CisgICAgICAgIGFzc2VydC5pc0EoY291bnRlckEs
ICJudW1iZXIiKTsKKyAgICAgICAgYXNzZXJ0LmVxKGNvdW50ZXJBLCBpICsgNDIpOworICAgICAg
ICBpbnN0YW5jZUIuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKGkpOworICAgICAgICBhc3NlcnQuaXNB
KGNvdW50ZXJCLCAib2JqZWN0Iik7CisgICAgICAgIGFzc2VydC5lcShjb3VudGVyQi52YWx1ZSwg
aSArIDQyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gUG9seXBoaWMzSW1wb3J0KCkgewor
ICAgIGxldCBjb3VudGVyQSA9IDA7CisgICAgbGV0IGNvdW50ZXJCID0gdW5kZWZpbmVkOworICAg
IGxldCBjb3VudGVyQyA9IHVuZGVmaW5lZDsKKyAgICBjb25zdCBjb3VudGVyQVNldHRlciA9IHYg
PT4gY291bnRlckEgPSB2OworICAgIGNvbnN0IGNvdW50ZXJCU2V0dGVyID0gKHYsIGJvZ3VzKSA9
PiBjb3VudGVyQiA9IHsgdmFsdWVCOiB2IH07CisgICAgY29uc3QgY291bnRlckNTZXR0ZXIgPSAo
diwgYm9ndXMwLCBib2d1czEpID0+IGNvdW50ZXJDID0geyB2YWx1ZUM6IHYgfTsKKyAgICBjb25z
dCBtb2R1bGUgPSB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUygpOworICAgIGNvbnN0IGluc3RhbmNl
QSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50
ZXJBU2V0dGVyIH0gfSk7CisgICAgY29uc3QgaW5zdGFuY2VCID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlckJTZXR0ZXIgfSB9KTsKKyAgICBj
b25zdCBpbnN0YW5jZUMgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDog
eyBmdW5jOiBjb3VudGVyQ1NldHRlciB9IH0pOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDA5
NjsgKytpKSB7CisgICAgICAgIGluc3RhbmNlQS5leHBvcnRzLmNoYW5nZUNvdW50ZXIoaSk7Cisg
ICAgICAgIGFzc2VydC5pc0EoY291bnRlckEsICJudW1iZXIiKTsKKyAgICAgICAgYXNzZXJ0LmVx
KGNvdW50ZXJBLCBpICsgNDIpOworICAgICAgICBpbnN0YW5jZUIuZXhwb3J0cy5jaGFuZ2VDb3Vu
dGVyKGkpOworICAgICAgICBhc3NlcnQuaXNBKGNvdW50ZXJCLCAib2JqZWN0Iik7CisgICAgICAg
IGFzc2VydC5lcShjb3VudGVyQi52YWx1ZSwgaSArIDQyKTsKKyAgICAgICAgaW5zdGFuY2VDLmV4
cG9ydHMuY2hhbmdlQ291bnRlcihpKTsKKyAgICAgICAgYXNzZXJ0LmlzQShjb3VudGVyQywgIm9i
amVjdCIpOworICAgICAgICBhc3NlcnQuZXEoY291bnRlckMudmFsdWUsIGkgKyA0Mik7CisgICAg
fQorfSkoKTsKKworKGZ1bmN0aW9uIFZpcnR1YWxJbXBvcnQoKSB7CisgICAgY29uc3QgbnVtID0g
MTAyNDsKKyAgICBsZXQgY291bnRlcnMgPSBbXTsKKyAgICBjb25zdCBmdW5jdGlvbkNyZWF0b3Ig
PSBpID0+IG5ldyBGdW5jdGlvbigidiIsIGBjb3VudGVyc1ske2l9XSA9IHY7YCk7CisgICAgY29u
c3QgbW9kdWxlID0gd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMoKTsKKyAgICBsZXQgaW5zdGFuY2Vz
ID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW07ICsraSkgeworICAgICAgICBjb3Vu
dGVyLnB1c2goMCk7CisgICAgICAgIGluc3RhbmNlcy5wdXNoKG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGZ1bmN0aW9uQ3JlYXRvcihpKSB9IH0pKTsKKyAg
ICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDk2OyArK2kpIHsKKyAgICAgICAgZm9yIChs
ZXQgaiA9IDA7IGogPCBudW07ICsraikgeworICAgICAgICAgICAgaW5zdGFuY2VzW2pdLmV4cG9y
dHMuY2hhbmdlQ291bnRlcihpKTsKKyAgICAgICAgICAgIGFzc2VydC5pc0EoY291bnRlcnNbaV0s
ICJudW1iZXIiKTsKKyAgICAgICAgICAgIGFzc2VydC5lcShjb3VudGVyc1tqXSwgaSArIDQyKTsK
KyAgICAgICAgfQorICAgIH0KIH0pKCk7Ci0qLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTI5Nzk4Ni4uZTVhYzNkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcg
QEAKIDIwMTYtMTItMDggIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCisgICAg
ICAgIFdlYkFzc2VtYmx5OiBKU0M6OmxpbmtGb3Igc2hvdWxkbid0IG5lZWQgYSBDb2RlQmxvY2sK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTU5MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0L1Jl
cGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpsaW5rRm9yKTogYWxsb3cgbGlua2luZyB3aXRob3V0
IGEgQ29kZUJsb2NrLCB3aGljaCBXZWJBc3NlbWJseSBkb2VzCisgICAgICAgICogd2FzbS9XYXNt
QmluZGluZy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmltcG9ydFN0dWJHZW5lcmF0b3IpOiBy
ZW1vdmUgdGhlIGJyZWFrcG9pbnQgc2luY2UgdGhlIGNvZGUgbm93IHdvcmtzCisKKzIwMTYtMTIt
MDggIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYkFzc2Vt
Ymx5IEpTIEFQSTogd2lyZSB1cCBJbnN0YW5jZSBpbXBvcnRzCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUxMTgKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKaW5kZXggOTI0ZjgwYS4uYThmZGY5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAj
aW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIlBv
bHltb3JwaGljQWNjZXNzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCkBAIC01NjEs
MjcgKzU2MiwzNSBAQCB2b2lkIGxpbmtGb3IoCiAgICAgSlNGdW5jdGlvbiogY2FsbGVlLCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cikKIHsKICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5z
dHViKCkpOwotICAgIAotICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gZXhlYy0+Y2Fs
bGVyRnJhbWUoKS0+Y29kZUJsb2NrKCk7CiAKLSAgICBWTSogdm0gPSBjYWxsZXJDb2RlQmxvY2st
PnZtKCk7Ci0gICAgCisgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZy
YW1lKCk7CisgICAgVk0mIHZtID0gY2FsbGVyRnJhbWUtPnZtKCk7CisgICAgQ29kZUJsb2NrKiBj
YWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJGcmFtZS0+Y29kZUJsb2NrKCk7CisKKyAgICAvLyBXZWJB
c3NlbWJseSAtPiBKUyBzdHVicyBjdXJyZW50bHkgdGhlaXIgY2FsbGVyIGZyYW1lJ3MgQ29kZUJs
b2NrIHRvIG51bGxwdHIsIGFuZCBjYWxsZWUgdG8gYSBzaW5nbGV0b24gd2hpY2ggbGl2ZXMgb24g
Vk0uIEl0IHdpbGwgZXZlbnR1YWxseSBub3QgaGF2ZSBhIENvZGVCbG9jayBpbiBpdHMgZnJhbWVz
IGF0IGFsbC4KKyAgICBKU0NlbGwqIG93bmVyID0gY2FsbGVyQ29kZUJsb2NrOworICAgIGlmIChj
YWxsZXJGcmFtZS0+Y2FsbGVlKCkgPT0gdm0ud2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmdldCgpKSB7
CisgICAgICAgIC8vIEVhY2ggV2ViQXNzZW1ibHkuSW5zdGFuY2Ugc2hhcmVzIHRoZSBzdHVicyBm
cm9tIHRoZWlyIFdlYkFzc2VtYmx5Lk1vZHVsZS4KKyAgICAgICAgb3duZXIgPSB2bS50b3BKU1dl
YkFzc2VtYmx5SW5zdGFuY2UtPm1vZHVsZSgpOworICAgIH0KKyAgICBBU1NFUlQob3duZXIpOwor
CiAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNMaW5rZWQoKSk7Ci0gICAgY2FsbExpbmtJbmZv
LnNldENhbGxlZShleGVjLT5jYWxsZXJGcmFtZSgpLT52bSgpLCBjYWxsZXJDb2RlQmxvY2ssIGNh
bGxlZSk7Ci0gICAgY2FsbExpbmtJbmZvLnNldExhc3RTZWVuQ2FsbGVlKGV4ZWMtPmNhbGxlckZy
YW1lKCktPnZtKCksIGNhbGxlckNvZGVCbG9jaywgY2FsbGVlKTsKLSAgICBpZiAoc2hvdWxkRHVt
cERpc2Fzc2VtYmx5Rm9yKGNhbGxlckNvZGVCbG9jaykpCisgICAgY2FsbExpbmtJbmZvLnNldENh
bGxlZSh2bSwgb3duZXIsIGNhbGxlZSk7CisgICAgY2FsbExpbmtJbmZvLnNldExhc3RTZWVuQ2Fs
bGVlKHZtLCBvd25lciwgY2FsbGVlKTsKKyAgICBpZiAoY2FsbGVyQ29kZUJsb2NrICYmIHNob3Vs
ZER1bXBEaXNhc3NlbWJseUZvcihjYWxsZXJDb2RlQmxvY2spKQogICAgICAgICBkYXRhTG9nKCJM
aW5raW5nIGNhbGwgaW4gIiwgKmNhbGxlckNvZGVCbG9jaywgIiBhdCAiLCBjYWxsTGlua0luZm8u
Y29kZU9yaWdpbigpLCAiIHRvICIsIHBvaW50ZXJEdW1wKGNhbGxlZUNvZGVCbG9jayksICIsIGVu
dHJ5cG9pbnQgYXQgIiwgY29kZVB0ciwgIlxuIik7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hOZWFyQ2FsbChjYWxsTGlua0luZm8uaG90UGF0aE90aGVyKCksIENvZGVMb2NhdGlvbkxhYmVs
KGNvZGVQdHIpKTsKLSAgICAKKwogICAgIGlmIChjYWxsZWVDb2RlQmxvY2spCi0gICAgICAgIGNh
bGxlZUNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChleGVjLT5jYWxsZXJGcmFtZSgpLCAmY2Fs
bExpbmtJbmZvKTsKLSAgICAKKyAgICAgICAgY2FsbGVlQ29kZUJsb2NrLT5saW5rSW5jb21pbmdD
YWxsKGNhbGxlckZyYW1lLCAmY2FsbExpbmtJbmZvKTsKKwogICAgIGlmIChjYWxsTGlua0luZm8u
c3BlY2lhbGl6YXRpb25LaW5kKCkgPT0gQ29kZUZvckNhbGwgJiYgY2FsbExpbmtJbmZvLmFsbG93
U3R1YnMoKSkgewotICAgICAgICBsaW5rU2xvd0Zvcih2bSwgY2FsbExpbmtJbmZvLCBsaW5rUG9s
eW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpOworICAgICAgICBsaW5rU2xvd0Zvcigmdm0sIGNh
bGxMaW5rSW5mbywgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBsaW5rU2xvd0Zvcih2bSwgY2FsbExpbmtJbmZvKTsK
KyAgICBsaW5rU2xvd0Zvcigmdm0sIGNhbGxMaW5rSW5mbyk7CiB9CiAKIHZvaWQgbGlua0RpcmVj
dEZvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5n
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCAx
MzZjNjVjLi41ZmZjNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQmluZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRp
bmcuY3BwCkBAIC00OSw3ICs0OSw2IEBAIFdhc21Ub0pTU3R1YiBpbXBvcnRTdHViR2VuZXJhdG9y
KFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsIFNpZ25hCiAgICAgQVNT
RVJUKCFqc0NDLm1fZnByQXJncy5zaXplKCkpOwogCiAgICAgaml0LmVtaXRGdW5jdGlvblByb2xv
Z3VlKCk7Ci0gICAgaml0LmJyZWFrcG9pbnQoKTsgLy8gRklYTUUgbWFrZSBjYWxsaW5nIHRvIEph
dmFTY3JpcHQgd29yay4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NTU5MQogICAgIGppdC5zdG9yZTY0KEpJVDo6VHJ1c3RlZEltbTMyKDApLCBKSVQ6OkFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsgLy8gRklYTUUgU3RvcCB1c2luZyAw
IGFzIGNvZGVCbG9ja3MuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjUzMjEKICAgICBqaXQuc3RvcmVQdHIoSklUOjpUcnVzdGVkSW1tUHRyKHZtLT53ZWJBc3NlbWJs
eVRvSlNDYWxsZWUuZ2V0KCkpLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lz
dGVyKSkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVRvSlNDYWxsZWUuaAppbmRleCBhMzRlM2QxLi40OTZjODg1NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKLSAgICBXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSk7CisgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiwgU3RydWN0dXJlKik7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKLS0gCjIuMTAuMQoK
</data>
<flag name="commit-queue"
          id="318999"
          type_id="3"
          status="-"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296618</attachid>
            <date>2016-12-08 19:24:37 -0800</date>
            <delta_ts>2016-12-08 19:59:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-JSC-linkFor-shouldn-t-need-a-CodeBlock.patch</filename>
            <type>text/plain</type>
            <size>19563</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAzM2JlNDg2YmJjNDNmMzg0M2I4OWNkNDBiNjM4OGJhYWE3NmRiZGZhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEgRGVjIDIwMTYgMDg6NTg6MjQgLTA4MDAKU3ViamVjdDogW1BBVENIXSBXZWJBc3Nl
bWJseTogSlNDOjpsaW5rRm9yIHNob3VsZG4ndCBuZWVkIGEgQ29kZUJsb2NrCgotLS0KIEpTVGVz
dHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKwog
SlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X0luc3RhbmNlLmpzICAgICAgICAgICAgICAgfCA5NiAr
KysrKysrKysrKysrKysrKysrLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICB8IDIxICsrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0xpbmtCdWZmZXIuY3BwICAgICB8ICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwICAgICAgICAgICAgICB8IDk2ICsrKysrKysrKysrKysrLS0tLS0tLS0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCAgICAgICAgICAgIHwgIDEgKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwICAgICAgICAgfCAgMSAt
CiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaCB8ICAy
ICstCiA4IGZpbGVzIGNoYW5nZWQsIDE4NyBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGUyMWMyZmIuLmQxNDc2OTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTYtMTItMDggIEpGIEJhc3RpZW4g
IDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCisgICAgICAgIFdlYkFzc2VtYmx5OiBKU0M6Omxpbmsq
IHNob3VsZG4ndCBuZWVkIGEgQ29kZUJsb2NrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICB0ZXN0IHRoYXQgd2FzbSAtPiBKUyB3b3JrcywgaW5jbHVkaW5n
IHRoZSBJQworCisgICAgICAgICogd2FzbS9qcy1hcGkvdGVzdF9JbnN0YW5jZS5qczoKKyAgICAg
ICAgKGNvbnN0Lndhc21Nb2R1bGVXaGljaEltcG9ydEpTKToKKyAgICAgICAgKE1vbm9tb3JwaGlj
SW1wb3J0KToKKyAgICAgICAgKFBvbHlwaGljMkltcG9ydCk6CisgICAgICAgIChQb2x5cGhpYzNJ
bXBvcnQpOgorICAgICAgICAoVmlydHVhbEltcG9ydCk6CisKKzIwMTYtMTItMDggIEpGIEJhc3Rp
ZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTog
d2lyZSB1cCBJbnN0YW5jZSBpbXBvcnRzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjUxMTgKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFw
aS90ZXN0X0luc3RhbmNlLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X0luc3RhbmNlLmpz
CmluZGV4IDAwNTA5N2IuLjc4NDFkNWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkv
dGVzdF9JbnN0YW5jZS5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfSW5zdGFuY2Uu
anMKQEAgLTMwLDEwICszMCw3IEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMn
OwogICAgIGFzc2VydC5lcShyZXN1bHQsIDQyKTsKIH0pKCk7CiAKLS8qIEZJWE1FIHRoaXMgY3Vy
cmVudGx5IGNyYXNoZXMgYXMgZGV0YWlsZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NTU5MQotKGZ1bmN0aW9uIEltcG9ydCgpIHsKLSAgICBsZXQgY291bnRl
ciA9IDA7Ci0gICAgY29uc3QgY291bnRlclNldHRlciA9IHYgPT4gY291bnRlciA9IHY7Citjb25z
dCB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyA9ICgpID0+IHsKICAgICBjb25zdCBidWlsZGVyID0g
KG5ldyBCdWlsZGVyKCkpCiAgICAgICAgIC5UeXBlKCkuRW5kKCkKICAgICAgICAgLkltcG9ydCgp
CkBAIC01MywxMiArNTAsODkgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7
CiAgICAgICAgIC5FbmQoKTsKICAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCku
Z2V0KCk7CiAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOwor
ICAgIHJldHVybiBtb2R1bGU7Cit9OworCisoZnVuY3Rpb24gTW9ub21vcnBoaWNJbXBvcnQoKSB7
CisgICAgbGV0IGNvdW50ZXIgPSAwOworICAgIGNvbnN0IGNvdW50ZXJTZXR0ZXIgPSB2ID0+IGNv
dW50ZXIgPSB2OworICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTKCk7
CiAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7
IGltcDogeyBmdW5jOiBjb3VudGVyU2V0dGVyIH0gfSk7Ci0gICAgaW5zdGFuY2UuZXhwb3J0cy5j
aGFuZ2VDb3VudGVyKDApOwotICAgIGFzc2VydC5lcShjb3VudGVyLCA0Mik7Ci0gICAgaW5zdGFu
Y2UuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKDEpOwotICAgIGFzc2VydC5lcShjb3VudGVyLCA0Myk7
Ci0gICAgaW5zdGFuY2UuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKDQyKTsKLSAgICBhc3NlcnQuZXEo
Y291bnRlciwgODQpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDA5NjsgKytpKSB7CisgICAg
ICAgIC8vIEludm9rZSB0aGlzIGEgYnVuY2ggb2YgdGltZXMgdG8gbWFrZSBzdXJlIHRoZSBJQyBp
biB0aGUgd2FzbSAtPiBKUyBzdHViIHdvcmtzIGNvcnJlY3RseS4KKyAgICAgICAgaW5zdGFuY2Uu
ZXhwb3J0cy5jaGFuZ2VDb3VudGVyKGkpOworICAgICAgICBhc3NlcnQuZXEoY291bnRlciwgaSAr
IDQyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gUG9seXBoaWMySW1wb3J0KCkgeworICAg
IGxldCBjb3VudGVyQSA9IDA7CisgICAgbGV0IGNvdW50ZXJCID0gdW5kZWZpbmVkOworICAgIGNv
bnN0IGNvdW50ZXJBU2V0dGVyID0gdiA9PiBjb3VudGVyQSA9IHY7CisgICAgY29uc3QgY291bnRl
ckJTZXR0ZXIgPSB2ID0+IGNvdW50ZXJCID0geyB2YWx1ZUI6IHYgfTsKKyAgICBjb25zdCBtb2R1
bGUgPSB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUygpOworICAgIGNvbnN0IGluc3RhbmNlQSA9IG5l
dyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJBU2V0
dGVyIH0gfSk7CisgICAgY29uc3QgaW5zdGFuY2VCID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNl
KG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlckJTZXR0ZXIgfSB9KTsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDIwNDg7ICsraSkgeworICAgICAgICBpbnN0YW5jZUEuZXhwb3J0cy5jaGFu
Z2VDb3VudGVyKGkpOworICAgICAgICBhc3NlcnQuaXNBKGNvdW50ZXJBLCAibnVtYmVyIik7Cisg
ICAgICAgIGFzc2VydC5lcShjb3VudGVyQSwgaSArIDQyKTsKKyAgICAgICAgaW5zdGFuY2VCLmV4
cG9ydHMuY2hhbmdlQ291bnRlcihpKTsKKyAgICAgICAgYXNzZXJ0LmlzQShjb3VudGVyQiwgIm9i
amVjdCIpOworICAgICAgICBhc3NlcnQuZXEoY291bnRlckIudmFsdWVCLCBpICsgNDIpOworICAg
IH0KK30pKCk7CisKKyhmdW5jdGlvbiBQb2x5cGhpYzNJbXBvcnQoKSB7CisgICAgbGV0IGNvdW50
ZXJBID0gMDsKKyAgICBsZXQgY291bnRlckIgPSB1bmRlZmluZWQ7CisgICAgbGV0IGNvdW50ZXJD
ID0gdW5kZWZpbmVkOworICAgIGNvbnN0IGNvdW50ZXJBU2V0dGVyID0gdiA9PiBjb3VudGVyQSA9
IHY7CisgICAgY29uc3QgY291bnRlckJTZXR0ZXIgPSB2ID0+IGNvdW50ZXJCID0geyB2YWx1ZUI6
IHYgfTsKKyAgICBjb25zdCBjb3VudGVyQ1NldHRlciA9IHYgPT4gY291bnRlckMgPSB7IHZhbHVl
QzogdiB9OworICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTKCk7Cisg
ICAgY29uc3QgaW5zdGFuY2VBID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBp
bXA6IHsgZnVuYzogY291bnRlckFTZXR0ZXIgfSB9KTsKKyAgICBjb25zdCBpbnN0YW5jZUIgPSBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyQlNl
dHRlciB9IH0pOworICAgIGNvbnN0IGluc3RhbmNlQyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5j
ZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJDU2V0dGVyIH0gfSk7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAyMDQ4OyArK2kpIHsKKyAgICAgICAgaW5zdGFuY2VBLmV4cG9ydHMuY2hh
bmdlQ291bnRlcihpKTsKKyAgICAgICAgYXNzZXJ0LmlzQShjb3VudGVyQSwgIm51bWJlciIpOwor
ICAgICAgICBhc3NlcnQuZXEoY291bnRlckEsIGkgKyA0Mik7CisgICAgICAgIGluc3RhbmNlQi5l
eHBvcnRzLmNoYW5nZUNvdW50ZXIoaSk7CisgICAgICAgIGFzc2VydC5pc0EoY291bnRlckIsICJv
YmplY3QiKTsKKyAgICAgICAgYXNzZXJ0LmVxKGNvdW50ZXJCLnZhbHVlQiwgaSArIDQyKTsKKyAg
ICAgICAgaW5zdGFuY2VDLmV4cG9ydHMuY2hhbmdlQ291bnRlcihpKTsKKyAgICAgICAgYXNzZXJ0
LmlzQShjb3VudGVyQywgIm9iamVjdCIpOworICAgICAgICBhc3NlcnQuZXEoY291bnRlckMudmFs
dWVDLCBpICsgNDIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBWaXJ0dWFsSW1wb3J0KCkg
eworICAgIGNvbnN0IG51bSA9IDEwOyAvLyBJdCdzIGRlZmluaXRlbHkgZ29pbmcgdmlydHVhbCBh
dCAxMCEKKyAgICBsZXQgY291bnRlcnMgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07
CisgICAgY29uc3QgY291bnRlclNldHRlcnMgPSBbCisgICAgICAgIHYgPT4gY291bnRlcnNbMF0g
PSB2LAorICAgICAgICB2ID0+IGNvdW50ZXJzWzFdID0gdiArIDEsCisgICAgICAgIHYgPT4gY291
bnRlcnNbMl0gPSB2ICsgMiwKKyAgICAgICAgdiA9PiBjb3VudGVyc1szXSA9IHYgKyAzLAorICAg
ICAgICB2ID0+IGNvdW50ZXJzWzRdID0gdiArIDQsCisgICAgICAgIHYgPT4gY291bnRlcnNbNV0g
PSB2ICsgNSwKKyAgICAgICAgdiA9PiBjb3VudGVyc1s2XSA9IHYgKyA2LAorICAgICAgICB2ID0+
IGNvdW50ZXJzWzddID0gdiArIDcsCisgICAgICAgIHYgPT4gY291bnRlcnNbOF0gPSB2ICsgOCwK
KyAgICAgICAgdiA9PiBjb3VudGVyc1s5XSA9IHYgKyA5LAorICAgIF07CisgICAgYXNzZXJ0LmVx
KGNvdW50ZXJzLmxlbmd0aCwgbnVtKTsKKyAgICBhc3NlcnQuZXEoY291bnRlclNldHRlcnMubGVu
Z3RoLCBudW0pOworICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTKCk7
CisgICAgbGV0IGluc3RhbmNlcyA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtOyAr
K2kpCisgICAgICAgIGluc3RhbmNlc1tpXSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1
bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJTZXR0ZXJzW2ldIH0gfSk7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAyMDQ4OyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW07
ICsraikgeworICAgICAgICAgICAgaW5zdGFuY2VzW2pdLmV4cG9ydHMuY2hhbmdlQ291bnRlcihp
KTsKKyAgICAgICAgICAgIGFzc2VydC5pc0EoY291bnRlcnNbal0sICJudW1iZXIiKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcShjb3VudGVyc1tqXSwgaSArIDQyICsgaik7CisgICAgICAgIH0KKyAg
ICB9CiB9KSgpOwotKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUyOTc5ODYuLjQ3MTNi
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDE2LTEyLTA4
ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWJBc3NlbWJs
eTogSlNDOjpsaW5rKiBzaG91bGRuJ3QgbmVlZCBhIENvZGVCbG9jaworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTkxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgbGlua2luZyB3aXRob3V0IGEg
Q29kZUJsb2NrLCB3aGljaCBXZWJBc3NlbWJseSdzIHdhc20gLT4gSlMgc3R1YnMgZG9lcy4gVGhp
cyBuZWVkcyB0byB3b3JrIGZvciBwb2x5bW9ycGhpYyBhbmQgdmlydHVhbCBjYWxscy4gVGhpcyBw
YXRjaCBhZGRzIGNvcnJlc3BvbmRpbmcgdGVzdHMgZm9yIHRoaXMuCisKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OnNob3VsZER1bXBEaXNhc3NlbWJs
eUZvcik6IGRvbid0IGxvb2sgYXQgdGhlIHRpZXIgb3B0aW9uIGlmIHRoZXJlIGlzbid0IGEgQ29k
ZUJsb2NrLCBvbmx5IGxvb2sgYXQgdGhlIGdsb2JhbCBvbmUuIFRoaXMgaXMgYSBXZWJBc3NlbWJs
eSBmdW5jdGlvbiwgc28gdGhlIHRpZXIgaW5mb3JtYXRpb24gaXMgaXJyZWxldmFudC4KKyAgICAg
ICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmlzV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlKTogdGhpcyBpcyB1c2VkIGluIHRoZSBsaW5rKiBmdW5jdGlvbnMgYmVsb3cKKyAgICAgICAg
KEpTQzo6bGlua0Zvcik6CisgICAgICAgIChKU0M6OmxpbmtWaXJ0dWFsRm9yKToKKyAgICAgICAg
KEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6
IGFkZCBhbiBvcHRpb24gdG8gY2hhbmdlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwb2x5bW9ycGhp
YyBjYWxscyBpbiBzdHVicyBmcm9tIHdhc20gdG8gSlMsIHdoaWNoIHdpbGwgY29tZSBpbiBoYW5k
eSB3aGVuIHdlIHRyeSB0byB0dW5lIHBlcmZvcm1hbmNlIG9yIHRyeSBtZXJnaW5nIHNvbWUgb2Yg
dGhlIFdlYkFzc2VtYmx5IHN0dWJzCisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OmltcG9ydFN0dWJHZW5lcmF0b3IpOiByZW1vdmUgdGhlIGJyZWFr
cG9pbnQgc2luY2UgdGhlIGNvZGUgbm93IHdvcmtzCisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseVRvSlNDYWxsZWUuaDoKKworMjAxNi0xMi0wOCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBh
cHBsZS5jb20+CisKICAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiB3aXJlIHVwIEluc3RhbmNl
IGltcG9ydHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTExOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmNwcAppbmRleCAzMjZkMjBkLi45MDEwOTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGJvb2wgc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKENvZGVCbG9jayogY29kZUJsb2Nr
KQogewotICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBl
KCkpICYmIE9wdGlvbnM6OmR1bXBERkdEaXNhc3NlbWJseSgpKQorICAgIGlmIChjb2RlQmxvY2sg
JiYgSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSAmJiBPcHRp
b25zOjpkdW1wREZHRGlzYXNzZW1ibHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0
dXJuIE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKaW5kZXggOTI0ZjgwYS4uZjczZmQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5j
bHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIlBvbHlt
b3JwaGljQWNjZXNzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCkBAIC01NTYsMzIg
KzU1Nyw0NiBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSogdm0sIENhbGxMaW5rSW5mbyYg
Y2FsbExpbmtJbmZvKQogICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHVi
Um91dGluZSh2aXJ0dWFsVGh1bmssICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOwogfQogCitzdGF0aWMg
Ym9vbCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogY2FsbGVlKQorewor
ICAgIC8vIFRoZSBXZWJBc3NlbWJseSAtPiBKUyBzdHViIHNldHMgaXQgY2FsbGVyIGZyYW1lJ3Mg
Y2FsbGVlIHRvIGEgc2luZ2xldG9uIHdoaWNoIGxpdmVzIG9uIHRoZSBWTS4KKyAgICByZXR1cm4g
Y2FsbGVlID09IHZtLndlYkFzc2VtYmx5VG9KU0NhbGxlZS5nZXQoKTsKK30KKwogdm9pZCBsaW5r
Rm9yKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIENv
ZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLAogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIpCiB7CiAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uc3R1
YigpKTsKLSAgICAKLSAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGV4ZWMtPmNhbGxl
ckZyYW1lKCktPmNvZGVCbG9jaygpOwogCi0gICAgVk0qIHZtID0gY2FsbGVyQ29kZUJsb2NrLT52
bSgpOwotICAgIAorICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFt
ZSgpOworICAgIFZNJiB2bSA9IGNhbGxlckZyYW1lLT52bSgpOworICAgIENvZGVCbG9jayogY2Fs
bGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgLy8gV2ViQXNz
ZW1ibHkgLT4gSlMgc3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVCbG9jay4KKyAgICBKU0Nl
bGwqIG93bmVyID0gY2FsbGVyQ29kZUJsb2NrOworICAgIGlmIChpc1dlYkFzc2VtYmx5VG9KU0Nh
bGxlZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSkgeworICAgICAgICAvLyBFYWNoIFdlYkFz
c2VtYmx5Lkluc3RhbmNlIHNoYXJlcyB0aGUgc3R1YnMgZnJvbSB0aGVpciBXZWJBc3NlbWJseS5N
b2R1bGUsIHdoaWNoIGFyZSB0aGVyZWZvcmUgdGhlIGFwcHJvcHJpYXRlIG93bmVyLgorICAgICAg
ICBvd25lciA9IHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZS0+bW9kdWxlKCk7CisgICAgfQor
ICAgIEFTU0VSVChvd25lcik7CisKICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc0xpbmtlZCgp
KTsKLSAgICBjYWxsTGlua0luZm8uc2V0Q2FsbGVlKGV4ZWMtPmNhbGxlckZyYW1lKCktPnZtKCks
IGNhbGxlckNvZGVCbG9jaywgY2FsbGVlKTsKLSAgICBjYWxsTGlua0luZm8uc2V0TGFzdFNlZW5D
YWxsZWUoZXhlYy0+Y2FsbGVyRnJhbWUoKS0+dm0oKSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZWUp
OworICAgIGNhbGxMaW5rSW5mby5zZXRDYWxsZWUodm0sIG93bmVyLCBjYWxsZWUpOworICAgIGNh
bGxMaW5rSW5mby5zZXRMYXN0U2VlbkNhbGxlZSh2bSwgb3duZXIsIGNhbGxlZSk7CiAgICAgaWYg
KHNob3VsZER1bXBEaXNhc3NlbWJseUZvcihjYWxsZXJDb2RlQmxvY2spKQogICAgICAgICBkYXRh
TG9nKCJMaW5raW5nIGNhbGwgaW4gIiwgKmNhbGxlckNvZGVCbG9jaywgIiBhdCAiLCBjYWxsTGlu
a0luZm8uY29kZU9yaWdpbigpLCAiIHRvICIsIHBvaW50ZXJEdW1wKGNhbGxlZUNvZGVCbG9jayks
ICIsIGVudHJ5cG9pbnQgYXQgIiwgY29kZVB0ciwgIlxuIik7CiAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hOZWFyQ2FsbChjYWxsTGlua0luZm8uaG90UGF0aE90aGVyKCksIENvZGVMb2NhdGlv
bkxhYmVsKGNvZGVQdHIpKTsKLSAgICAKKwogICAgIGlmIChjYWxsZWVDb2RlQmxvY2spCi0gICAg
ICAgIGNhbGxlZUNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChleGVjLT5jYWxsZXJGcmFtZSgp
LCAmY2FsbExpbmtJbmZvKTsKLSAgICAKKyAgICAgICAgY2FsbGVlQ29kZUJsb2NrLT5saW5rSW5j
b21pbmdDYWxsKGNhbGxlckZyYW1lLCAmY2FsbExpbmtJbmZvKTsKKwogICAgIGlmIChjYWxsTGlu
a0luZm8uc3BlY2lhbGl6YXRpb25LaW5kKCkgPT0gQ29kZUZvckNhbGwgJiYgY2FsbExpbmtJbmZv
LmFsbG93U3R1YnMoKSkgewotICAgICAgICBsaW5rU2xvd0Zvcih2bSwgY2FsbExpbmtJbmZvLCBs
aW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpOworICAgICAgICBsaW5rU2xvd0Zvcigm
dm0sIGNhbGxMaW5rSW5mbywgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBsaW5rU2xvd0Zvcih2bSwgY2FsbExpbmtJ
bmZvKTsKKyAgICBsaW5rU2xvd0Zvcigmdm0sIGNhbGxMaW5rSW5mbyk7CiB9CiAKIHZvaWQgbGlu
a0RpcmVjdEZvcigKQEAgLTY0NSwxOCArNjYwLDE4IEBAIHZvaWQgdW5saW5rRm9yKFZNJiB2bSwg
Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiAgICAgcmV2ZXJ0Q2FsbCgmdm0sIGNhbGxMaW5r
SW5mbywgdm0uZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKSk7CiB9CiAKLXZvaWQg
bGlua1ZpcnR1YWxGb3IoCi0gICAgRXhlY1N0YXRlKiBleGVjLCBDYWxsTGlua0luZm8mIGNhbGxM
aW5rSW5mbykKK3ZvaWQgbGlua1ZpcnR1YWxGb3IoRXhlY1N0YXRlKiBleGVjLCBDYWxsTGlua0lu
Zm8mIGNhbGxMaW5rSW5mbykKIHsKLSAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGV4
ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpOwotICAgIFZNKiB2bSA9IGNhbGxlckNvZGVC
bG9jay0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJh
bWUoKTsKKyAgICBWTSYgdm0gPSBjYWxsZXJGcmFtZS0+dm0oKTsKKyAgICBDb2RlQmxvY2sqIGNh
bGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKIAogICAgIGlmIChzaG91
bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSkKLSAgICAgICAgZGF0YUxvZygi
TGlua2luZyB2aXJ0dWFsIGNhbGwgYXQgIiwgKmNhbGxlckNvZGVCbG9jaywgIiAiLCBleGVjLT5j
YWxsZXJGcmFtZSgpLT5jb2RlT3JpZ2luKCksICJcbiIpOwotICAgIAotICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5m
byk7Ci0gICAgcmV2ZXJ0Q2FsbCh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1bmspOwotICAg
IGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1
bmssICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAgICBkYXRhTG9nKCJMaW5raW5nIHZpcnR1
YWwgY2FsbCBhdCAiLCAqY2FsbGVyQ29kZUJsb2NrLCAiICIsIGNhbGxlckZyYW1lLT5jb2RlT3Jp
Z2luKCksICJcbiIpOworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVuayA9
IHZpcnR1YWxUaHVua0Zvcigmdm0sIGNhbGxMaW5rSW5mbyk7CisgICAgcmV2ZXJ0Q2FsbCgmdm0s
IGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0
dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLCB2bSwgbnVsbHB0ciwgdHJ1ZSkp
OwogfQogCiBuYW1lc3BhY2UgewpAQCAtNjc3LDEwICs2OTIsMjAgQEAgdm9pZCBsaW5rUG9seW1v
cnBoaWNDYWxsKAogICAgICAgICBsaW5rVmlydHVhbEZvcihleGVjLCBjYWxsTGlua0luZm8pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJs
b2NrID0gZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCk7Ci0gICAgVk0qIHZtID0gY2Fs
bGVyQ29kZUJsb2NrLT52bSgpOwotICAgIAorCisgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9
IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgVk0mIHZtID0gY2FsbGVyRnJhbWUtPnZtKCk7Cisg
ICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJGcmFtZS0+Y29kZUJsb2NrKCk7
CisgICAgYm9vbCBpc1dlYkFzc2VtYmx5ID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIGNh
bGxlckZyYW1lLT5jYWxsZWUoKSk7CisKKyAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBk
b24ndCBoYXZlIGEgdmFsaWQgQ29kZUJsb2NrLgorICAgIEpTQ2VsbCogb3duZXIgPSBjYWxsZXJD
b2RlQmxvY2s7CisgICAgaWYgKGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFt
ZS0+Y2FsbGVlKCkpKSB7CisgICAgICAgIC8vIEVhY2ggV2ViQXNzZW1ibHkuSW5zdGFuY2Ugc2hh
cmVzIHRoZSBzdHVicyBmcm9tIHRoZWlyIFdlYkFzc2VtYmx5Lk1vZHVsZSwgd2hpY2ggYXJlIHRo
ZXJlZm9yZSB0aGUgYXBwcm9wcmlhdGUgb3duZXIuCisgICAgICAgIG93bmVyID0gdm0udG9wSlNX
ZWJBc3NlbWJseUluc3RhbmNlLT5tb2R1bGUoKTsKKyAgICB9CisgICAgQVNTRVJUKG93bmVyKTsK
KwogICAgIENhbGxWYXJpYW50TGlzdCBsaXN0OwogICAgIGlmIChQb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZSogc3R1YiA9IGNhbGxMaW5rSW5mby5zdHViKCkpCiAgICAgICAgIGxpc3QgPSBzdHVi
LT52YXJpYW50cygpOwpAQCAtNzA5LDcgKzczNCw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2Fs
bCgKICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgb3VyIGNhc2VzIGFyZS4KICAgICBmb3IgKENhbGxW
YXJpYW50IHZhcmlhbnQgOiBsaXN0KSB7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrOwot
ICAgICAgICBpZiAodmFyaWFudC5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAg
ICAgIGlmIChpc1dlYkFzc2VtYmx5IHx8IHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5pc0hvc3RGdW5j
dGlvbigpKQogICAgICAgICAgICAgY29kZUJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHZhcmlhbnQuZXhlY3V0
YWJsZSgpOwpAQCAtNzI3LDEwICs3NTIsMTMgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAog
ICAgIAogICAgIC8vIElmIHdlIGFyZSBvdmVyIHRoZSBsaW1pdCwganVzdCB1c2UgYSBub3JtYWwg
dmlydHVhbCBjYWxsLgogICAgIHVuc2lnbmVkIG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0
U2l6ZTsKLSAgICBpZiAoY2FsbGVyQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6dG9w
VGllckpJVCgpKQorICAgIGlmIChpc1dlYkFzc2VtYmx5KQorICAgICAgICBtYXhQb2x5bW9ycGhp
Y0NhbGxWYXJpYW50TGlzdFNpemUgPSBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50
TGlzdFNpemVGb3JXZWJBc3NlbWJseVRvSlMoKTsKKyAgICBlbHNlIGlmIChjYWxsZXJDb2RlQmxv
Y2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjp0b3BUaWVySklUKCkpCiAgICAgICAgIG1heFBvbHlt
b3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZSA9IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQ2FsbFZh
cmlhbnRMaXN0U2l6ZUZvclRvcFRpZXIoKTsKICAgICBlbHNlCiAgICAgICAgIG1heFBvbHltb3Jw
aGljQ2FsbFZhcmlhbnRMaXN0U2l6ZSA9IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQ2FsbFZhcmlh
bnRMaXN0U2l6ZSgpOworCiAgICAgaWYgKGxpc3Quc2l6ZSgpID4gbWF4UG9seW1vcnBoaWNDYWxs
VmFyaWFudExpc3RTaXplKSB7CiAgICAgICAgIGxpbmtWaXJ0dWFsRm9yKGV4ZWMsIGNhbGxMaW5r
SW5mbyk7CiAgICAgICAgIHJldHVybjsKQEAgLTczOCw3ICs3NjYsNyBAQCB2b2lkIGxpbmtQb2x5
bW9ycGhpY0NhbGwoCiAgICAgCiAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oY2FsbExpbmtJbmZvLmNhbGxlZUdQUigpKTsKICAgICAKLSAgICBDQ2FsbEhlbHBlcnMg
c3R1YkppdCh2bSwgY2FsbGVyQ29kZUJsb2NrKTsKKyAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdCgm
dm0sIGNhbGxlckNvZGVCbG9jayk7CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBz
bG93UGF0aDsKICAgICAKQEAgLTc4Nyw3ICs4MTUsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0Nh
bGwoCiAgICAgVmVjdG9yPENhbGxUb0NvZGVQdHI+IGNhbGxzKGNhbGxDYXNlcy5zaXplKCkpOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBmYXN0Q291bnRzOwogICAgIAotICAgIGlm
IChjYWxsZXJDb2RlQmxvY2stPmppdFR5cGUoKSAhPSBKSVRDb2RlOjp0b3BUaWVySklUKCkpCisg
ICAgaWYgKCFpc1dlYkFzc2VtYmx5ICYmIGNhbGxlckNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJ
VENvZGU6OnRvcFRpZXJKSVQoKSkKICAgICAgICAgZmFzdENvdW50cyA9IHN0ZDo6bWFrZV91bmlx
dWU8dWludDMyX3RbXT4oY2FsbENhc2VzLnNpemUoKSk7CiAgICAgCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjYWxsQ2FzZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTg4NCw3ICs5MTIsNyBAQCB2
b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgc3R1YkppdC5yZXN0b3JlUmV0dXJuQWRkcmVz
c0JlZm9yZVJldHVybihHUFJJbmZvOjpyZWdUNCk7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1w
IHNsb3cgPSBzdHViSml0Lmp1bXAoKTsKICAgICAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcigqdm0sIHN0dWJKaXQsIGNhbGxlckNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWls
KTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHZtLCBzdHViSml0LCBvd25lciwgSklUQ29t
cGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAocGF0Y2hCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUo
KSkgewogICAgICAgICBsaW5rVmlydHVhbEZvcihleGVjLCBjYWxsTGlua0luZm8pOwogICAgICAg
ICByZXR1cm47CkBAIC04OTgsMTkgKzkyNiwxOSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
CiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoCiAgICAgICAgICAgICBjYWxsVG9Db2RlUHRyLmNh
bGwsIEZ1bmN0aW9uUHRyKGlzVGFpbENhbGwgPyBjYWxsVG9Db2RlUHRyLmNvZGVQdHIuZGF0YUxv
Y2F0aW9uKCkgOiBjYWxsVG9Db2RlUHRyLmNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwog
ICAgIH0KLSAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNhbGxlckNvZGVCbG9jay0+
aml0VHlwZSgpKSkKKyAgICBpZiAoaXNXZWJBc3NlbWJseSB8fCBKSVRDb2RlOjppc09wdGltaXpp
bmdKSVQoY2FsbGVyQ29kZUJsb2NrLT5qaXRUeXBlKCkpKQogICAgICAgICBwYXRjaEJ1ZmZlci5s
aW5rKGRvbmUsIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKS5sYWJlbEF0T2Zmc2V0
KDApKTsKICAgICBlbHNlCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZSwgY2FsbExpbmtJ
bmZvLmhvdFBhdGhPdGhlcigpLmxhYmVsQXRPZmZzZXQoMCkpOwotICAgIHBhdGNoQnVmZmVyLmxp
bmsoc2xvdywgQ29kZUxvY2F0aW9uTGFiZWwodm0tPmdldENUSVN0dWIobGlua1BvbHltb3JwaGlj
Q2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3cs
IENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIobGlua1BvbHltb3JwaGljQ2FsbFRodW5r
R2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAKICAgICBhdXRvIHN0dWJSb3V0aW5lID0gYWRvcHRS
ZWYoKm5ldyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09E
RV9GT1IoCiAgICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2ssIHBhdGNoQnVmZmVyLAogICAgICAg
ICAgICAgKCJQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAsIHRh
cmdldHMgJXMiLAotICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqY2FsbGVyQ29kZUJsb2NrKS5k
YXRhKCksIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKS5sYWJlbEF0T2Zmc2V0KDAp
LmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgICAgICAgICAgaXNXZWJBc3NlbWJseSA/ICJX
ZWJBc3NlbWJseSIgOiB0b0NTdHJpbmcoKmNhbGxlckNvZGVCbG9jaykuZGF0YSgpLCBjYWxsTGlu
a0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCkubGFiZWxBdE9mZnNldCgwKS5leGVjdXRhYmxlQWRk
cmVzcygpLAogICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhsaXN0RHVtcChjYWxsQ2FzZXMpKS5k
YXRhKCkpKSwKLSAgICAgICAgKnZtLCBjYWxsZXJDb2RlQmxvY2ssIGV4ZWMtPmNhbGxlckZyYW1l
KCksIGNhbGxMaW5rSW5mbywgY2FsbENhc2VzLAorICAgICAgICB2bSwgb3duZXIsIGV4ZWMtPmNh
bGxlckZyYW1lKCksIGNhbGxMaW5rSW5mbywgY2FsbENhc2VzLAogICAgICAgICBXVEZNb3ZlKGZh
c3RDb3VudHMpKSk7CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCgK
QEAgLTkxOSw3ICs5NDcsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgLy8gVGhl
IG9yaWdpbmFsIHNsb3cgcGF0aCBpcyB1bnJlYWNoYWJsZSBvbiA2NC1iaXRzLCBidXQgc3RpbGwK
ICAgICAvLyByZWFjaGFibGUgb24gMzItYml0cyBzaW5jZSBhIG5vbi1jZWxsIGNhbGxlZSB3aWxs
IGFsd2F5cwogICAgIC8vIHRyaWdnZXIgdGhlIHNsb3cgcGF0aAotICAgIGxpbmtTbG93Rm9yKHZt
LCBjYWxsTGlua0luZm8pOworICAgIGxpbmtTbG93Rm9yKCZ2bSwgY2FsbExpbmtJbmZvKTsKICAg
ICAKICAgICAvLyBJZiB0aGVyZSBoYWQgYmVlbiBhIHByZXZpb3VzIHN0dWIgcm91dGluZSwgdGhh
dCBvbmUgd2lsbCBkaWUgYXMgc29vbiBhcyB0aGUgR0MgcnVucyBhbmQgc2VlcwogICAgIC8vIHRo
YXQgaXQncyBubyBsb25nZXIgb24gc3RhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgKaW5kZXggODg5NTA2Yi4uNmY0YWQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaApAQCAtMjI5LDYgKzIyOSw3IEBAIHR5cGVkZWYgY29uc3QgY2hhciog
b3B0aW9uU3RyaW5nOwogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmdGb3JO
b25TdHViU3RhdHVzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdih1bnNpZ25lZCwg
bWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplLCAxNSwgTm9ybWFsLCBudWxscHRyKSBc
CiAgICAgdih1bnNpZ25lZCwgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplRm9yVG9w
VGllciwgNSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdih1bnNpZ25lZCwgbWF4UG9seW1vcnBo
aWNDYWxsVmFyaWFudExpc3RTaXplRm9yV2ViQXNzZW1ibHlUb0pTLCA1LCBOb3JtYWwsIG51bGxw
dHIpIFwKICAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50c0ZvcklubGlu
aW5nLCA1LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBmcmVxdWVudENhbGxU
aHJlc2hvbGQsIDIsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoZG91YmxlLCBtaW5pbXVtQ2Fs
bFRvS25vd25SYXRlLCAwLjUxLCBOb3JtYWwsIG51bGxwdHIpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCAxMzZjNjVjLi41ZmZjNDVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCkBAIC00OSw3ICs0OSw2IEBA
IFdhc21Ub0pTU3R1YiBpbXBvcnRTdHViR2VuZXJhdG9yKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5m
bz4mIGNhbGxMaW5rSW5mb3MsIFNpZ25hCiAgICAgQVNTRVJUKCFqc0NDLm1fZnByQXJncy5zaXpl
KCkpOwogCiAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgaml0LmJyZWFrcG9p
bnQoKTsgLy8gRklYTUUgbWFrZSBjYWxsaW5nIHRvIEphdmFTY3JpcHQgd29yay4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTU5MQogICAgIGppdC5zdG9yZTY0KEpJ
VDo6VHJ1c3RlZEltbTMyKDApLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkpKTsgLy8gRklYTUUgU3RvcCB1c2luZyAwIGFzIGNvZGVCbG9ja3MuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzMjEKICAgICBqaXQuc3RvcmVQdHIo
SklUOjpUcnVzdGVkSW1tUHRyKHZtLT53ZWJBc3NlbWJseVRvSlNDYWxsZWUuZ2V0KCkpLCBKSVQ6
OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAppbmRl
eCBhMzRlM2QxLi40OTZjODg1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLSAgICBXZWJBc3Nl
bWJseVRvSlNDYWxsZWUoVk0mLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7CisgICAgV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlKFZNJiwgU3RydWN0dXJlKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
LS0gCjIuMTAuMQoK
</data>
<flag name="review"
          id="319041"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296626</attachid>
            <date>2016-12-08 19:59:48 -0800</date>
            <delta_ts>2016-12-08 20:27:53 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-JSC-linkFor-shouldn-t-need-a-CodeBlock.patch</filename>
            <type>text/plain</type>
            <size>19670</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAzM2EzNWM4NGNmMjQ2MWE2NzQwNWNlOWJjZjFkZWNkNjdkMjViM2MzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEgRGVjIDIwMTYgMDg6NTg6MjQgLTA4MDAKU3ViamVjdDogW1BBVENIXSBXZWJBc3Nl
bWJseTogSlNDOjpsaW5rRm9yIHNob3VsZG4ndCBuZWVkIGEgQ29kZUJsb2NrCgotLS0KIEpTVGVz
dHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2ICsrKysK
IEpTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9JbnN0YW5jZS5qcyAgICAgICAgICAgICAgIHwgIDk2
ICsrKysrKysrKysrKysrKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgIHwgIDIxICsrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5jcHAgICAgIHwgICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwICAgICAgICAgICAgICB8IDEwNiArKysrKysrKysrKysrKy0tLS0tLS0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCAgICAgICAgICAgIHwgICAxICsK
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcCAgICAgICAgIHwgICAx
IC0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oIHwg
ICAyICstCiA4IGZpbGVzIGNoYW5nZWQsIDE5NyBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGUyMWMyZmIuLmQxNDc2OTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTYtMTItMDggIEpGIEJhc3Rp
ZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCisgICAgICAgIFdlYkFzc2VtYmx5OiBKU0M6Omxp
bmsqIHNob3VsZG4ndCBuZWVkIGEgQ29kZUJsb2NrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICB0ZXN0IHRoYXQgd2FzbSAtPiBKUyB3b3JrcywgaW5jbHVk
aW5nIHRoZSBJQworCisgICAgICAgICogd2FzbS9qcy1hcGkvdGVzdF9JbnN0YW5jZS5qczoKKyAg
ICAgICAgKGNvbnN0Lndhc21Nb2R1bGVXaGljaEltcG9ydEpTKToKKyAgICAgICAgKE1vbm9tb3Jw
aGljSW1wb3J0KToKKyAgICAgICAgKFBvbHlwaGljMkltcG9ydCk6CisgICAgICAgIChQb2x5cGhp
YzNJbXBvcnQpOgorICAgICAgICAoVmlydHVhbEltcG9ydCk6CisKKzIwMTYtMTItMDggIEpGIEJh
c3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQ
STogd2lyZSB1cCBJbnN0YW5jZSBpbXBvcnRzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUxMTgKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pz
LWFwaS90ZXN0X0luc3RhbmNlLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X0luc3RhbmNl
LmpzCmluZGV4IDAwNTA5N2IuLjc4NDFkNWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1h
cGkvdGVzdF9JbnN0YW5jZS5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfSW5zdGFu
Y2UuanMKQEAgLTMwLDEwICszMCw3IEBAIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIu
anMnOwogICAgIGFzc2VydC5lcShyZXN1bHQsIDQyKTsKIH0pKCk7CiAKLS8qIEZJWE1FIHRoaXMg
Y3VycmVudGx5IGNyYXNoZXMgYXMgZGV0YWlsZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NTU5MQotKGZ1bmN0aW9uIEltcG9ydCgpIHsKLSAgICBsZXQgY291
bnRlciA9IDA7Ci0gICAgY29uc3QgY291bnRlclNldHRlciA9IHYgPT4gY291bnRlciA9IHY7Citj
b25zdCB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyA9ICgpID0+IHsKICAgICBjb25zdCBidWlsZGVy
ID0gKG5ldyBCdWlsZGVyKCkpCiAgICAgICAgIC5UeXBlKCkuRW5kKCkKICAgICAgICAgLkltcG9y
dCgpCkBAIC01MywxMiArNTAsODkgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5q
cyc7CiAgICAgICAgIC5FbmQoKTsKICAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5
KCkuZ2V0KCk7CiAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4p
OworICAgIHJldHVybiBtb2R1bGU7Cit9OworCisoZnVuY3Rpb24gTW9ub21vcnBoaWNJbXBvcnQo
KSB7CisgICAgbGV0IGNvdW50ZXIgPSAwOworICAgIGNvbnN0IGNvdW50ZXJTZXR0ZXIgPSB2ID0+
IGNvdW50ZXIgPSB2OworICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVXaGljaEltcG9ydEpT
KCk7CiAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
LCB7IGltcDogeyBmdW5jOiBjb3VudGVyU2V0dGVyIH0gfSk7Ci0gICAgaW5zdGFuY2UuZXhwb3J0
cy5jaGFuZ2VDb3VudGVyKDApOwotICAgIGFzc2VydC5lcShjb3VudGVyLCA0Mik7Ci0gICAgaW5z
dGFuY2UuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKDEpOwotICAgIGFzc2VydC5lcShjb3VudGVyLCA0
Myk7Ci0gICAgaW5zdGFuY2UuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKDQyKTsKLSAgICBhc3NlcnQu
ZXEoY291bnRlciwgODQpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDA5NjsgKytpKSB7Cisg
ICAgICAgIC8vIEludm9rZSB0aGlzIGEgYnVuY2ggb2YgdGltZXMgdG8gbWFrZSBzdXJlIHRoZSBJ
QyBpbiB0aGUgd2FzbSAtPiBKUyBzdHViIHdvcmtzIGNvcnJlY3RseS4KKyAgICAgICAgaW5zdGFu
Y2UuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKGkpOworICAgICAgICBhc3NlcnQuZXEoY291bnRlciwg
aSArIDQyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gUG9seXBoaWMySW1wb3J0KCkgewor
ICAgIGxldCBjb3VudGVyQSA9IDA7CisgICAgbGV0IGNvdW50ZXJCID0gdW5kZWZpbmVkOworICAg
IGNvbnN0IGNvdW50ZXJBU2V0dGVyID0gdiA9PiBjb3VudGVyQSA9IHY7CisgICAgY29uc3QgY291
bnRlckJTZXR0ZXIgPSB2ID0+IGNvdW50ZXJCID0geyB2YWx1ZUI6IHYgfTsKKyAgICBjb25zdCBt
b2R1bGUgPSB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUygpOworICAgIGNvbnN0IGluc3RhbmNlQSA9
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJB
U2V0dGVyIH0gfSk7CisgICAgY29uc3QgaW5zdGFuY2VCID0gbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlckJTZXR0ZXIgfSB9KTsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDIwNDg7ICsraSkgeworICAgICAgICBpbnN0YW5jZUEuZXhwb3J0cy5j
aGFuZ2VDb3VudGVyKGkpOworICAgICAgICBhc3NlcnQuaXNBKGNvdW50ZXJBLCAibnVtYmVyIik7
CisgICAgICAgIGFzc2VydC5lcShjb3VudGVyQSwgaSArIDQyKTsKKyAgICAgICAgaW5zdGFuY2VC
LmV4cG9ydHMuY2hhbmdlQ291bnRlcihpKTsKKyAgICAgICAgYXNzZXJ0LmlzQShjb3VudGVyQiwg
Im9iamVjdCIpOworICAgICAgICBhc3NlcnQuZXEoY291bnRlckIudmFsdWVCLCBpICsgNDIpOwor
ICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBQb2x5cGhpYzNJbXBvcnQoKSB7CisgICAgbGV0IGNv
dW50ZXJBID0gMDsKKyAgICBsZXQgY291bnRlckIgPSB1bmRlZmluZWQ7CisgICAgbGV0IGNvdW50
ZXJDID0gdW5kZWZpbmVkOworICAgIGNvbnN0IGNvdW50ZXJBU2V0dGVyID0gdiA9PiBjb3VudGVy
QSA9IHY7CisgICAgY29uc3QgY291bnRlckJTZXR0ZXIgPSB2ID0+IGNvdW50ZXJCID0geyB2YWx1
ZUI6IHYgfTsKKyAgICBjb25zdCBjb3VudGVyQ1NldHRlciA9IHYgPT4gY291bnRlckMgPSB7IHZh
bHVlQzogdiB9OworICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTKCk7
CisgICAgY29uc3QgaW5zdGFuY2VBID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwg
eyBpbXA6IHsgZnVuYzogY291bnRlckFTZXR0ZXIgfSB9KTsKKyAgICBjb25zdCBpbnN0YW5jZUIg
PSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVy
QlNldHRlciB9IH0pOworICAgIGNvbnN0IGluc3RhbmNlQyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJDU2V0dGVyIH0gfSk7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDQ4OyArK2kpIHsKKyAgICAgICAgaW5zdGFuY2VBLmV4cG9ydHMu
Y2hhbmdlQ291bnRlcihpKTsKKyAgICAgICAgYXNzZXJ0LmlzQShjb3VudGVyQSwgIm51bWJlciIp
OworICAgICAgICBhc3NlcnQuZXEoY291bnRlckEsIGkgKyA0Mik7CisgICAgICAgIGluc3RhbmNl
Qi5leHBvcnRzLmNoYW5nZUNvdW50ZXIoaSk7CisgICAgICAgIGFzc2VydC5pc0EoY291bnRlckIs
ICJvYmplY3QiKTsKKyAgICAgICAgYXNzZXJ0LmVxKGNvdW50ZXJCLnZhbHVlQiwgaSArIDQyKTsK
KyAgICAgICAgaW5zdGFuY2VDLmV4cG9ydHMuY2hhbmdlQ291bnRlcihpKTsKKyAgICAgICAgYXNz
ZXJ0LmlzQShjb3VudGVyQywgIm9iamVjdCIpOworICAgICAgICBhc3NlcnQuZXEoY291bnRlckMu
dmFsdWVDLCBpICsgNDIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBWaXJ0dWFsSW1wb3J0
KCkgeworICAgIGNvbnN0IG51bSA9IDEwOyAvLyBJdCdzIGRlZmluaXRlbHkgZ29pbmcgdmlydHVh
bCBhdCAxMCEKKyAgICBsZXQgY291bnRlcnMgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MF07CisgICAgY29uc3QgY291bnRlclNldHRlcnMgPSBbCisgICAgICAgIHYgPT4gY291bnRlcnNb
MF0gPSB2LAorICAgICAgICB2ID0+IGNvdW50ZXJzWzFdID0gdiArIDEsCisgICAgICAgIHYgPT4g
Y291bnRlcnNbMl0gPSB2ICsgMiwKKyAgICAgICAgdiA9PiBjb3VudGVyc1szXSA9IHYgKyAzLAor
ICAgICAgICB2ID0+IGNvdW50ZXJzWzRdID0gdiArIDQsCisgICAgICAgIHYgPT4gY291bnRlcnNb
NV0gPSB2ICsgNSwKKyAgICAgICAgdiA9PiBjb3VudGVyc1s2XSA9IHYgKyA2LAorICAgICAgICB2
ID0+IGNvdW50ZXJzWzddID0gdiArIDcsCisgICAgICAgIHYgPT4gY291bnRlcnNbOF0gPSB2ICsg
OCwKKyAgICAgICAgdiA9PiBjb3VudGVyc1s5XSA9IHYgKyA5LAorICAgIF07CisgICAgYXNzZXJ0
LmVxKGNvdW50ZXJzLmxlbmd0aCwgbnVtKTsKKyAgICBhc3NlcnQuZXEoY291bnRlclNldHRlcnMu
bGVuZ3RoLCBudW0pOworICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVXaGljaEltcG9ydEpT
KCk7CisgICAgbGV0IGluc3RhbmNlcyA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVt
OyArK2kpCisgICAgICAgIGluc3RhbmNlc1tpXSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
b2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJTZXR0ZXJzW2ldIH0gfSk7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAyMDQ4OyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBu
dW07ICsraikgeworICAgICAgICAgICAgaW5zdGFuY2VzW2pdLmV4cG9ydHMuY2hhbmdlQ291bnRl
cihpKTsKKyAgICAgICAgICAgIGFzc2VydC5pc0EoY291bnRlcnNbal0sICJudW1iZXIiKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcShjb3VudGVyc1tqXSwgaSArIDQyICsgaik7CisgICAgICAgIH0K
KyAgICB9CiB9KSgpOwotKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUyOTc5ODYuLjQ3
MTNiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDE2LTEy
LTA4ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWJBc3Nl
bWJseTogSlNDOjpsaW5rKiBzaG91bGRuJ3QgbmVlZCBhIENvZGVCbG9jaworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTkxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgbGlua2luZyB3aXRob3V0
IGEgQ29kZUJsb2NrLCB3aGljaCBXZWJBc3NlbWJseSdzIHdhc20gLT4gSlMgc3R1YnMgZG9lcy4g
VGhpcyBuZWVkcyB0byB3b3JrIGZvciBwb2x5bW9ycGhpYyBhbmQgdmlydHVhbCBjYWxscy4gVGhp
cyBwYXRjaCBhZGRzIGNvcnJlc3BvbmRpbmcgdGVzdHMgZm9yIHRoaXMuCisKKyAgICAgICAgKiBh
c3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OnNob3VsZER1bXBEaXNhc3Nl
bWJseUZvcik6IGRvbid0IGxvb2sgYXQgdGhlIHRpZXIgb3B0aW9uIGlmIHRoZXJlIGlzbid0IGEg
Q29kZUJsb2NrLCBvbmx5IGxvb2sgYXQgdGhlIGdsb2JhbCBvbmUuIFRoaXMgaXMgYSBXZWJBc3Nl
bWJseSBmdW5jdGlvbiwgc28gdGhlIHRpZXIgaW5mb3JtYXRpb24gaXMgaXJyZWxldmFudC4KKyAg
ICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmlzV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlKTogdGhpcyBpcyB1c2VkIGluIHRoZSBsaW5rKiBmdW5jdGlvbnMgYmVsb3cKKyAgICAg
ICAgKEpTQzo6bGlua0Zvcik6CisgICAgICAgIChKU0M6OmxpbmtWaXJ0dWFsRm9yKToKKyAgICAg
ICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
Lmg6IGFkZCBhbiBvcHRpb24gdG8gY2hhbmdlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwb2x5bW9y
cGhpYyBjYWxscyBpbiBzdHVicyBmcm9tIHdhc20gdG8gSlMsIHdoaWNoIHdpbGwgY29tZSBpbiBo
YW5keSB3aGVuIHdlIHRyeSB0byB0dW5lIHBlcmZvcm1hbmNlIG9yIHRyeSBtZXJnaW5nIHNvbWUg
b2YgdGhlIFdlYkFzc2VtYmx5IHN0dWJzCisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OmltcG9ydFN0dWJHZW5lcmF0b3IpOiByZW1vdmUgdGhlIGJy
ZWFrcG9pbnQgc2luY2UgdGhlIGNvZGUgbm93IHdvcmtzCisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseVRvSlNDYWxsZWUuaDoKKworMjAxNi0xMi0wOCAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKICAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiB3aXJlIHVwIEluc3Rh
bmNlIGltcG9ydHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTExOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmNwcAppbmRleCAzMjZkMjBkLi45MDEwOTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGJvb2wgc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKENvZGVCbG9jayogY29kZUJs
b2NrKQogewotICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRU
eXBlKCkpICYmIE9wdGlvbnM6OmR1bXBERkdEaXNhc3NlbWJseSgpKQorICAgIGlmIChjb2RlQmxv
Y2sgJiYgSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSAmJiBP
cHRpb25zOjpkdW1wREZHRGlzYXNzZW1ibHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
cmV0dXJuIE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKaW5kZXggOTI0ZjgwYS4uZDRmOThmOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAj
aW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIlBv
bHltb3JwaGljQWNjZXNzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCkBAIC01NTYs
MzIgKzU1Nyw2MCBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSogdm0sIENhbGxMaW5rSW5m
byYgY2FsbExpbmtJbmZvKQogICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihjcmVhdGVKSVRT
dHViUm91dGluZSh2aXJ0dWFsVGh1bmssICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOwogfQogCitzdGF0
aWMgYm9vbCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogY2FsbGVlKQor
eworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICAvLyBUaGUgV2ViQXNzZW1ibHkgLT4gSlMg
c3R1YiBzZXRzIGl0IGNhbGxlciBmcmFtZSdzIGNhbGxlZSB0byBhIHNpbmdsZXRvbiB3aGljaCBs
aXZlcyBvbiB0aGUgVk0uCisgICAgcmV0dXJuIGNhbGxlZSA9PSB2bS53ZWJBc3NlbWJseVRvSlND
YWxsZWUuZ2V0KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKGNhbGxlZSk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NF
TUJMWSkKK30KKworc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihWTSYgdm0pCit7Cisj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIC8vIEVhY2ggV2ViQXNzZW1ibHkuSW5zdGFuY2Ug
c2hhcmVzIHRoZSBzdHVicyBmcm9tIHRoZWlyIFdlYkFzc2VtYmx5Lk1vZHVsZSwgd2hpY2ggYXJl
IHRoZXJlZm9yZSB0aGUgYXBwcm9wcmlhdGUgb3duZXIuCisgICAgcmV0dXJuIHZtLnRvcEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZS0+bW9kdWxlKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2bSk7
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCit9CisKIHZvaWQgbGlua0ZvcigKICAgICBF
eGVjU3RhdGUqIGV4ZWMsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDb2RlQmxvY2sqIGNh
bGxlZUNvZGVCbG9jaywKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBjb2RlUHRyKQogewogICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLnN0dWIoKSk7Ci0gICAg
Ci0gICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5jYWxsZXJGcmFtZSgpLT5j
b2RlQmxvY2soKTsKIAotICAgIFZNKiB2bSA9IGNhbGxlckNvZGVCbG9jay0+dm0oKTsKLSAgICAK
KyAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICBW
TSYgdm0gPSBjYWxsZXJGcmFtZS0+dm0oKTsKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9j
ayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIC8vIFdlYkFzc2VtYmx5IC0+IEpT
IHN0dWJzIGRvbid0IGhhdmUgYSB2YWxpZCBDb2RlQmxvY2suCisgICAgSlNDZWxsKiBvd25lciA9
IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpID8gd2Vi
QXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAgQVNTRVJUKG93bmVyKTsK
KwogICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLmlzTGlua2VkKCkpOwotICAgIGNhbGxMaW5rSW5m
by5zZXRDYWxsZWUoZXhlYy0+Y2FsbGVyRnJhbWUoKS0+dm0oKSwgY2FsbGVyQ29kZUJsb2NrLCBj
YWxsZWUpOwotICAgIGNhbGxMaW5rSW5mby5zZXRMYXN0U2VlbkNhbGxlZShleGVjLT5jYWxsZXJG
cmFtZSgpLT52bSgpLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlZSk7CisgICAgY2FsbExpbmtJbmZv
LnNldENhbGxlZSh2bSwgb3duZXIsIGNhbGxlZSk7CisgICAgY2FsbExpbmtJbmZvLnNldExhc3RT
ZWVuQ2FsbGVlKHZtLCBvd25lciwgY2FsbGVlKTsKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2Vt
Ymx5Rm9yKGNhbGxlckNvZGVCbG9jaykpCiAgICAgICAgIGRhdGFMb2coIkxpbmtpbmcgY2FsbCBp
biAiLCAqY2FsbGVyQ29kZUJsb2NrLCAiIGF0ICIsIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCks
ICIgdG8gIiwgcG9pbnRlckR1bXAoY2FsbGVlQ29kZUJsb2NrKSwgIiwgZW50cnlwb2ludCBhdCAi
LCBjb2RlUHRyLCAiXG4iKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNh
bGxMaW5rSW5mby5ob3RQYXRoT3RoZXIoKSwgQ29kZUxvY2F0aW9uTGFiZWwoY29kZVB0cikpOwot
ICAgIAorCiAgICAgaWYgKGNhbGxlZUNvZGVCbG9jaykKLSAgICAgICAgY2FsbGVlQ29kZUJsb2Nr
LT5saW5rSW5jb21pbmdDYWxsKGV4ZWMtPmNhbGxlckZyYW1lKCksICZjYWxsTGlua0luZm8pOwot
ICAgIAorICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbGVyRnJh
bWUsICZjYWxsTGlua0luZm8pOworCiAgICAgaWYgKGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlv
bktpbmQoKSA9PSBDb2RlRm9yQ2FsbCAmJiBjYWxsTGlua0luZm8uYWxsb3dTdHVicygpKSB7Ci0g
ICAgICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIGxpbmtQb2x5bW9ycGhpY0NhbGxU
aHVua0dlbmVyYXRvcik7CisgICAgICAgIGxpbmtTbG93Rm9yKCZ2bSwgY2FsbExpbmtJbmZvLCBs
aW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAotICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8pOworICAgIGxpbmtTbG93
Rm9yKCZ2bSwgY2FsbExpbmtJbmZvKTsKIH0KIAogdm9pZCBsaW5rRGlyZWN0Rm9yKApAQCAtNjQ1
LDE4ICs2NzQsMTggQEAgdm9pZCB1bmxpbmtGb3IoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxM
aW5rSW5mbykKICAgICByZXZlcnRDYWxsKCZ2bSwgY2FsbExpbmtJbmZvLCB2bS5nZXRDVElTdHVi
KGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpKTsKIH0KIAotdm9pZCBsaW5rVmlydHVhbEZvcigKLSAg
ICBFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQordm9pZCBsaW5r
VmlydHVhbEZvcihFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQog
ewotICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gZXhlYy0+Y2FsbGVyRnJhbWUoKS0+
Y29kZUJsb2NrKCk7Ci0gICAgVk0qIHZtID0gY2FsbGVyQ29kZUJsb2NrLT52bSgpOworICAgIENh
bGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgIFZNJiB2bSA9
IGNhbGxlckZyYW1lLT52bSgpOworICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2Fs
bGVyRnJhbWUtPmNvZGVCbG9jaygpOwogCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseUZv
cihjYWxsZXJDb2RlQmxvY2spKQotICAgICAgICBkYXRhTG9nKCJMaW5raW5nIHZpcnR1YWwgY2Fs
bCBhdCAiLCAqY2FsbGVyQ29kZUJsb2NrLCAiICIsIGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVP
cmlnaW4oKSwgIlxuIik7Ci0gICAgCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxU
aHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKLSAgICByZXZlcnRDYWxs
KHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNs
b3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgKnZtLCBudWxscHRyLCB0
cnVlKSk7CisgICAgICAgIGRhdGFMb2coIkxpbmtpbmcgdmlydHVhbCBjYWxsIGF0ICIsICpjYWxs
ZXJDb2RlQmxvY2ssICIgIiwgY2FsbGVyRnJhbWUtPmNvZGVPcmlnaW4oKSwgIlxuIik7CisKKyAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKCZ2
bSwgY2FsbExpbmtJbmZvKTsKKyAgICByZXZlcnRDYWxsKCZ2bSwgY2FsbExpbmtJbmZvLCB2aXJ0
dWFsVGh1bmspOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91
dGluZSh2aXJ0dWFsVGh1bmssIHZtLCBudWxscHRyLCB0cnVlKSk7CiB9CiAKIG5hbWVzcGFjZSB7
CkBAIC02NzcsMTAgKzcwNiwxNiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAg
IGxpbmtWaXJ0dWFsRm9yKGV4ZWMsIGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCi0gICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5jYWxsZXJG
cmFtZSgpLT5jb2RlQmxvY2soKTsKLSAgICBWTSogdm0gPSBjYWxsZXJDb2RlQmxvY2stPnZtKCk7
Ci0gICAgCisKKyAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUo
KTsKKyAgICBWTSYgdm0gPSBjYWxsZXJGcmFtZS0+dm0oKTsKKyAgICBDb2RlQmxvY2sqIGNhbGxl
ckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBib29sIGlzV2ViQXNz
ZW1ibHkgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgp
KTsKKworICAgIC8vIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2YWxpZCBD
b2RlQmxvY2suCisgICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJBc3NlbWJs
eU93bmVyKHZtKSA6IGNhbGxlckNvZGVCbG9jazsKKyAgICBBU1NFUlQob3duZXIpOworCiAgICAg
Q2FsbFZhcmlhbnRMaXN0IGxpc3Q7CiAgICAgaWYgKFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
KiBzdHViID0gY2FsbExpbmtJbmZvLnN0dWIoKSkKICAgICAgICAgbGlzdCA9IHN0dWItPnZhcmlh
bnRzKCk7CkBAIC03MDksNyArNzQ0LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAg
IC8vIEZpZ3VyZSBvdXQgd2hhdCBvdXIgY2FzZXMgYXJlLgogICAgIGZvciAoQ2FsbFZhcmlhbnQg
dmFyaWFudCA6IGxpc3QpIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7Ci0gICAgICAg
IGlmICh2YXJpYW50LmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgaWYg
KGlzV2ViQXNzZW1ibHkgfHwgdmFyaWFudC5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkp
CiAgICAgICAgICAgICBjb2RlQmxvY2sgPSBudWxscHRyOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdmFyaWFudC5leGVjdXRhYmxlKCk7
CkBAIC03MjcsMTAgKzc2MiwxMyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgCiAg
ICAgLy8gSWYgd2UgYXJlIG92ZXIgdGhlIGxpbWl0LCBqdXN0IHVzZSBhIG5vcm1hbCB2aXJ0dWFs
IGNhbGwuCiAgICAgdW5zaWduZWQgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplOwot
ICAgIGlmIChjYWxsZXJDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjp0b3BUaWVySklU
KCkpCisgICAgaWYgKGlzV2ViQXNzZW1ibHkpCisgICAgICAgIG1heFBvbHltb3JwaGljQ2FsbFZh
cmlhbnRMaXN0U2l6ZSA9IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6
ZUZvcldlYkFzc2VtYmx5VG9KUygpOworICAgIGVsc2UgaWYgKGNhbGxlckNvZGVCbG9jay0+aml0
VHlwZSgpID09IEpJVENvZGU6OnRvcFRpZXJKSVQoKSkKICAgICAgICAgbWF4UG9seW1vcnBoaWND
YWxsVmFyaWFudExpc3RTaXplID0gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExp
c3RTaXplRm9yVG9wVGllcigpOwogICAgIGVsc2UKICAgICAgICAgbWF4UG9seW1vcnBoaWNDYWxs
VmFyaWFudExpc3RTaXplID0gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RT
aXplKCk7CisKICAgICBpZiAobGlzdC5zaXplKCkgPiBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50
TGlzdFNpemUpIHsKICAgICAgICAgbGlua1ZpcnR1YWxGb3IoZXhlYywgY2FsbExpbmtJbmZvKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNzM4LDcgKzc3Niw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGlj
Q2FsbCgKICAgICAKICAgICBHUFJSZWcgY2FsbGVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihj
YWxsTGlua0luZm8uY2FsbGVlR1BSKCkpOwogICAgIAotICAgIENDYWxsSGVscGVycyBzdHViSml0
KHZtLCBjYWxsZXJDb2RlQmxvY2spOworICAgIENDYWxsSGVscGVycyBzdHViSml0KCZ2bSwgY2Fs
bGVyQ29kZUJsb2NrKTsKICAgICAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dQYXRo
OwogICAgIApAQCAtNzg3LDcgKzgyNSw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAg
ICBWZWN0b3I8Q2FsbFRvQ29kZVB0cj4gY2FsbHMoY2FsbENhc2VzLnNpemUoKSk7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHVpbnQzMl90W10+IGZhc3RDb3VudHM7CiAgICAgCi0gICAgaWYgKGNhbGxl
ckNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVENvZGU6OnRvcFRpZXJKSVQoKSkKKyAgICBpZiAo
IWlzV2ViQXNzZW1ibHkgJiYgY2FsbGVyQ29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6
dG9wVGllckpJVCgpKQogICAgICAgICBmYXN0Q291bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50
MzJfdFtdPihjYWxsQ2FzZXMuc2l6ZSgpKTsKICAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNhbGxDYXNlcy5zaXplKCk7ICsraSkgewpAQCAtODg0LDcgKzkyMiw3IEBAIHZvaWQgbGlu
a1BvbHltb3JwaGljQ2FsbCgKICAgICBzdHViSml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3Jl
UmV0dXJuKEdQUkluZm86OnJlZ1Q0KTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgc2xvdyA9
IHN0dWJKaXQuanVtcCgpOwogICAgICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2
bSwgc3R1YkppdCwgY2FsbGVyQ29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodm0sIHN0dWJKaXQsIG93bmVyLCBKSVRDb21waWxhdGlv
bkNhbkZhaWwpOwogICAgIGlmIChwYXRjaEJ1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAg
ICAgICAgIGxpbmtWaXJ0dWFsRm9yKGV4ZWMsIGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTg5OCwxOSArOTM2LDE5IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAg
ICAgcGF0Y2hCdWZmZXIubGluaygKICAgICAgICAgICAgIGNhbGxUb0NvZGVQdHIuY2FsbCwgRnVu
Y3Rpb25QdHIoaXNUYWlsQ2FsbCA/IGNhbGxUb0NvZGVQdHIuY29kZVB0ci5kYXRhTG9jYXRpb24o
KSA6IGNhbGxUb0NvZGVQdHIuY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgfQot
ICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY2FsbGVyQ29kZUJsb2NrLT5qaXRUeXBl
KCkpKQorICAgIGlmIChpc1dlYkFzc2VtYmx5IHx8IEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChj
YWxsZXJDb2RlQmxvY2stPmppdFR5cGUoKSkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9u
ZSwgY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLmxhYmVsQXRPZmZzZXQoMCkpOwog
ICAgIGVsc2UKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlua0luZm8uaG90
UGF0aE90aGVyKCkubGFiZWxBdE9mZnNldCgwKSk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhzbG93
LCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1
bmtHZW5lcmF0b3IpLmNvZGUoKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvdywgQ29kZUxv
Y2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0
b3IpLmNvZGUoKSkpOwogICAgIAogICAgIGF1dG8gc3R1YlJvdXRpbmUgPSBhZG9wdFJlZigqbmV3
IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFX0ZPUigK
ICAgICAgICAgICAgIGNhbGxlckNvZGVCbG9jaywgcGF0Y2hCdWZmZXIsCiAgICAgICAgICAgICAo
IlBvbHltb3JwaGljIGNhbGwgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCwgdGFyZ2V0cyAl
cyIsCi0gICAgICAgICAgICAgICAgdG9DU3RyaW5nKCpjYWxsZXJDb2RlQmxvY2spLmRhdGEoKSwg
Y2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLmxhYmVsQXRPZmZzZXQoMCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSwKKyAgICAgICAgICAgICAgICBpc1dlYkFzc2VtYmx5ID8gIldlYkFzc2Vt
Ymx5IiA6IHRvQ1N0cmluZygqY2FsbGVyQ29kZUJsb2NrKS5kYXRhKCksIGNhbGxMaW5rSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24oKS5sYWJlbEF0T2Zmc2V0KDApLmV4ZWN1dGFibGVBZGRyZXNzKCks
CiAgICAgICAgICAgICAgICAgdG9DU3RyaW5nKGxpc3REdW1wKGNhbGxDYXNlcykpLmRhdGEoKSkp
LAotICAgICAgICAqdm0sIGNhbGxlckNvZGVCbG9jaywgZXhlYy0+Y2FsbGVyRnJhbWUoKSwgY2Fs
bExpbmtJbmZvLCBjYWxsQ2FzZXMsCisgICAgICAgIHZtLCBvd25lciwgZXhlYy0+Y2FsbGVyRnJh
bWUoKSwgY2FsbExpbmtJbmZvLCBjYWxsQ2FzZXMsCiAgICAgICAgIFdURk1vdmUoZmFzdENvdW50
cykpKTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKApAQCAtOTE5
LDcgKzk1Nyw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAvLyBUaGUgb3JpZ2lu
YWwgc2xvdyBwYXRoIGlzIHVucmVhY2hhYmxlIG9uIDY0LWJpdHMsIGJ1dCBzdGlsbAogICAgIC8v
IHJlYWNoYWJsZSBvbiAzMi1iaXRzIHNpbmNlIGEgbm9uLWNlbGwgY2FsbGVlIHdpbGwgYWx3YXlz
CiAgICAgLy8gdHJpZ2dlciB0aGUgc2xvdyBwYXRoCi0gICAgbGlua1Nsb3dGb3Iodm0sIGNhbGxM
aW5rSW5mbyk7CisgICAgbGlua1Nsb3dGb3IoJnZtLCBjYWxsTGlua0luZm8pOwogICAgIAogICAg
IC8vIElmIHRoZXJlIGhhZCBiZWVuIGEgcHJldmlvdXMgc3R1YiByb3V0aW5lLCB0aGF0IG9uZSB3
aWxsIGRpZSBhcyBzb29uIGFzIHRoZSBHQyBydW5zIGFuZCBzZWVzCiAgICAgLy8gdGhhdCBpdCdz
IG5vIGxvbmdlciBvbiBzdGFjay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aAppbmRleCA4ODk1MDZiLi42ZjRhZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCkBAIC0yMjksNiArMjI5LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25T
dHJpbmc7CiAgICAgdihib29sLCB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJT
dGF0dXMsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBtYXhQb2x5
bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemUsIDE1LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2
KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemVGb3JUb3BUaWVyLCA1
LCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0NhbGxW
YXJpYW50TGlzdFNpemVGb3JXZWJBc3NlbWJseVRvSlMsIDUsIE5vcm1hbCwgbnVsbHB0cikgXAog
ICAgIHYodW5zaWduZWQsIG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRzRm9ySW5saW5pbmcsIDUs
IE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYodW5zaWduZWQsIGZyZXF1ZW50Q2FsbFRocmVzaG9s
ZCwgMiwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihkb3VibGUsIG1pbmltdW1DYWxsVG9Lbm93
blJhdGUsIDAuNTEsIE5vcm1hbCwgbnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJpbmRpbmcuY3BwCmluZGV4IDEzNmM2NWMuLjVmZmM0NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKQEAgLTQ5LDcgKzQ5LDYgQEAgV2FzbVRv
SlNTdHViIGltcG9ydFN0dWJHZW5lcmF0b3IoVk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2Fs
bExpbmtJbmZvcywgU2lnbmEKICAgICBBU1NFUlQoIWpzQ0MubV9mcHJBcmdzLnNpemUoKSk7CiAK
ICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBqaXQuYnJlYWtwb2ludCgpOyAv
LyBGSVhNRSBtYWtlIGNhbGxpbmcgdG8gSmF2YVNjcmlwdCB3b3JrLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTkxCiAgICAgaml0LnN0b3JlNjQoSklUOjpUcnVz
dGVkSW1tMzIoMCksIEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSkpOyAvLyBGSVhNRSBTdG9wIHVzaW5nIDAgYXMgY29kZUJsb2Nrcy4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTMyMQogICAgIGppdC5zdG9yZVB0cihKSVQ6OlRy
dXN0ZWRJbW1QdHIodm0tPndlYkFzc2VtYmx5VG9KU0NhbGxlZS5nZXQoKSksIEpJVDo6QWRkcmVz
cyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oCmluZGV4IGEzNGUz
ZDEuLjQ5NmM4ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRvSlNDYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotICAgIFdlYkFzc2VtYmx5VG9K
U0NhbGxlZShWTSYsIFN0cnVjdHVyZSogc3RydWN0dXJlKTsKKyAgICBXZWJBc3NlbWJseVRvSlND
YWxsZWUoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwotLSAKMi4x
MC4xCgo=
</data>
<flag name="commit-queue"
          id="319048"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296630</attachid>
            <date>2016-12-08 20:27:53 -0800</date>
            <delta_ts>2016-12-08 22:53:20 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-JSC-link-shouldn-t-need-a-CodeBlock.patch</filename>
            <type>text/plain</type>
            <size>19664</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAxZmY3YzQ2NjlhNjIwMzk5M2M4ZGE1OGEyZjM5YzQwMTU5NDRlNmRmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEgRGVjIDIwMTYgMDg6NTg6MjQgLTA4MDAKU3ViamVjdDogW1BBVENIXSBXZWJBc3Nl
bWJseTogSlNDOjpsaW5rKiBzaG91bGRuJ3QgbmVlZCBhIENvZGVCbG9jawoKLS0tCiBKU1Rlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNiArKysrCiBK
U1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfSW5zdGFuY2UuanMgICAgICAgICAgICAgICB8ICA5NiAr
KysrKysrKysrKysrKysrLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICB8ICAyMSArKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwICAgICB8ICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcCAgICAgICAgICAgICAgfCAxMDYgKysrKysrKysrKysrKystLS0tLS0tCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggICAgICAgICAgICB8ICAgMSArCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAgICAgICAgICB8ICAgMSAt
CiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaCB8ICAg
MiArLQogOCBmaWxlcyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCBlMjFjMmZiLi4xM2VkZGRmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDE2LTEyLTA4ICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWJBc3NlbWJseTogSlNDOjpsaW5r
KiBzaG91bGRuJ3QgbmVlZCBhIENvZGVCbG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGgg
TWlsbGVyLgorCisgICAgICAgIHRlc3QgdGhhdCB3YXNtIC0+IEpTIHdvcmtzLCBpbmNsdWRpbmcg
dGhlIElDCisKKyAgICAgICAgKiB3YXNtL2pzLWFwaS90ZXN0X0luc3RhbmNlLmpzOgorICAgICAg
ICAoY29uc3Qud2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMpOgorICAgICAgICAoTW9ub21vcnBoaWNJ
bXBvcnQpOgorICAgICAgICAoUG9seXBoaWMySW1wb3J0KToKKyAgICAgICAgKFBvbHlwaGljM0lt
cG9ydCk6CisgICAgICAgIChWaXJ0dWFsSW1wb3J0KToKKworMjAxNi0xMi0wOCAgSkYgQmFzdGll
biAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKICAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiB3
aXJlIHVwIEluc3RhbmNlIGltcG9ydHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NTExOAogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBp
L3Rlc3RfSW5zdGFuY2UuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfSW5zdGFuY2UuanMK
aW5kZXggMDA1MDk3Yi4uNzg0MWQ1YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2pzLWFwaS90
ZXN0X0luc3RhbmNlLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9JbnN0YW5jZS5q
cwpAQCAtMzAsMTAgKzMwLDcgQEAgaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7
CiAgICAgYXNzZXJ0LmVxKHJlc3VsdCwgNDIpOwogfSkoKTsKIAotLyogRklYTUUgdGhpcyBjdXJy
ZW50bHkgY3Jhc2hlcyBhcyBkZXRhaWxlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1NTkxCi0oZnVuY3Rpb24gSW1wb3J0KCkgewotICAgIGxldCBjb3VudGVy
ID0gMDsKLSAgICBjb25zdCBjb3VudGVyU2V0dGVyID0gdiA9PiBjb3VudGVyID0gdjsKK2NvbnN0
IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTID0gKCkgPT4gewogICAgIGNvbnN0IGJ1aWxkZXIgPSAo
bmV3IEJ1aWxkZXIoKSkKICAgICAgICAgLlR5cGUoKS5FbmQoKQogICAgICAgICAuSW1wb3J0KCkK
QEAgLTUzLDEyICs1MCw4OSBAQCBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsK
ICAgICAgICAgLkVuZCgpOwogICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5n
ZXQoKTsKICAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7Cisg
ICAgcmV0dXJuIG1vZHVsZTsKK307CisKKyhmdW5jdGlvbiBNb25vbW9ycGhpY0ltcG9ydCgpIHsK
KyAgICBsZXQgY291bnRlciA9IDA7CisgICAgY29uc3QgY291bnRlclNldHRlciA9IHYgPT4gY291
bnRlciA9IHY7CisgICAgY29uc3QgbW9kdWxlID0gd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMoKTsK
ICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsg
aW1wOiB7IGZ1bmM6IGNvdW50ZXJTZXR0ZXIgfSB9KTsKLSAgICBpbnN0YW5jZS5leHBvcnRzLmNo
YW5nZUNvdW50ZXIoMCk7Ci0gICAgYXNzZXJ0LmVxKGNvdW50ZXIsIDQyKTsKLSAgICBpbnN0YW5j
ZS5leHBvcnRzLmNoYW5nZUNvdW50ZXIoMSk7Ci0gICAgYXNzZXJ0LmVxKGNvdW50ZXIsIDQzKTsK
LSAgICBpbnN0YW5jZS5leHBvcnRzLmNoYW5nZUNvdW50ZXIoNDIpOwotICAgIGFzc2VydC5lcShj
b3VudGVyLCA4NCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDk2OyArK2kpIHsKKyAgICAg
ICAgLy8gSW52b2tlIHRoaXMgYSBidW5jaCBvZiB0aW1lcyB0byBtYWtlIHN1cmUgdGhlIElDIGlu
IHRoZSB3YXNtIC0+IEpTIHN0dWIgd29ya3MgY29ycmVjdGx5LgorICAgICAgICBpbnN0YW5jZS5l
eHBvcnRzLmNoYW5nZUNvdW50ZXIoaSk7CisgICAgICAgIGFzc2VydC5lcShjb3VudGVyLCBpICsg
NDIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBQb2x5cGhpYzJJbXBvcnQoKSB7CisgICAg
bGV0IGNvdW50ZXJBID0gMDsKKyAgICBsZXQgY291bnRlckIgPSB1bmRlZmluZWQ7CisgICAgY29u
c3QgY291bnRlckFTZXR0ZXIgPSB2ID0+IGNvdW50ZXJBID0gdjsKKyAgICBjb25zdCBjb3VudGVy
QlNldHRlciA9IHYgPT4gY291bnRlckIgPSB7IHZhbHVlQjogdiB9OworICAgIGNvbnN0IG1vZHVs
ZSA9IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTKCk7CisgICAgY29uc3QgaW5zdGFuY2VBID0gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlckFTZXR0
ZXIgfSB9KTsKKyAgICBjb25zdCBpbnN0YW5jZUIgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyQlNldHRlciB9IH0pOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMjA0ODsgKytpKSB7CisgICAgICAgIGluc3RhbmNlQS5leHBvcnRzLmNoYW5n
ZUNvdW50ZXIoaSk7CisgICAgICAgIGFzc2VydC5pc0EoY291bnRlckEsICJudW1iZXIiKTsKKyAg
ICAgICAgYXNzZXJ0LmVxKGNvdW50ZXJBLCBpICsgNDIpOworICAgICAgICBpbnN0YW5jZUIuZXhw
b3J0cy5jaGFuZ2VDb3VudGVyKGkpOworICAgICAgICBhc3NlcnQuaXNBKGNvdW50ZXJCLCAib2Jq
ZWN0Iik7CisgICAgICAgIGFzc2VydC5lcShjb3VudGVyQi52YWx1ZUIsIGkgKyA0Mik7CisgICAg
fQorfSkoKTsKKworKGZ1bmN0aW9uIFBvbHlwaGljM0ltcG9ydCgpIHsKKyAgICBsZXQgY291bnRl
ckEgPSAwOworICAgIGxldCBjb3VudGVyQiA9IHVuZGVmaW5lZDsKKyAgICBsZXQgY291bnRlckMg
PSB1bmRlZmluZWQ7CisgICAgY29uc3QgY291bnRlckFTZXR0ZXIgPSB2ID0+IGNvdW50ZXJBID0g
djsKKyAgICBjb25zdCBjb3VudGVyQlNldHRlciA9IHYgPT4gY291bnRlckIgPSB7IHZhbHVlQjog
diB9OworICAgIGNvbnN0IGNvdW50ZXJDU2V0dGVyID0gdiA9PiBjb3VudGVyQyA9IHsgdmFsdWVD
OiB2IH07CisgICAgY29uc3QgbW9kdWxlID0gd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMoKTsKKyAg
ICBjb25zdCBpbnN0YW5jZUEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGlt
cDogeyBmdW5jOiBjb3VudGVyQVNldHRlciB9IH0pOworICAgIGNvbnN0IGluc3RhbmNlQiA9IG5l
dyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJCU2V0
dGVyIH0gfSk7CisgICAgY29uc3QgaW5zdGFuY2VDID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNl
KG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlckNTZXR0ZXIgfSB9KTsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDIwNDg7ICsraSkgeworICAgICAgICBpbnN0YW5jZUEuZXhwb3J0cy5jaGFu
Z2VDb3VudGVyKGkpOworICAgICAgICBhc3NlcnQuaXNBKGNvdW50ZXJBLCAibnVtYmVyIik7Cisg
ICAgICAgIGFzc2VydC5lcShjb3VudGVyQSwgaSArIDQyKTsKKyAgICAgICAgaW5zdGFuY2VCLmV4
cG9ydHMuY2hhbmdlQ291bnRlcihpKTsKKyAgICAgICAgYXNzZXJ0LmlzQShjb3VudGVyQiwgIm9i
amVjdCIpOworICAgICAgICBhc3NlcnQuZXEoY291bnRlckIudmFsdWVCLCBpICsgNDIpOworICAg
ICAgICBpbnN0YW5jZUMuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKGkpOworICAgICAgICBhc3NlcnQu
aXNBKGNvdW50ZXJDLCAib2JqZWN0Iik7CisgICAgICAgIGFzc2VydC5lcShjb3VudGVyQy52YWx1
ZUMsIGkgKyA0Mik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIFZpcnR1YWxJbXBvcnQoKSB7
CisgICAgY29uc3QgbnVtID0gMTA7IC8vIEl0J3MgZGVmaW5pdGVseSBnb2luZyB2aXJ0dWFsIGF0
IDEwIQorICAgIGxldCBjb3VudGVycyA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTsK
KyAgICBjb25zdCBjb3VudGVyU2V0dGVycyA9IFsKKyAgICAgICAgdiA9PiBjb3VudGVyc1swXSA9
IHYsCisgICAgICAgIHYgPT4gY291bnRlcnNbMV0gPSB2ICsgMSwKKyAgICAgICAgdiA9PiBjb3Vu
dGVyc1syXSA9IHYgKyAyLAorICAgICAgICB2ID0+IGNvdW50ZXJzWzNdID0gdiArIDMsCisgICAg
ICAgIHYgPT4gY291bnRlcnNbNF0gPSB2ICsgNCwKKyAgICAgICAgdiA9PiBjb3VudGVyc1s1XSA9
IHYgKyA1LAorICAgICAgICB2ID0+IGNvdW50ZXJzWzZdID0gdiArIDYsCisgICAgICAgIHYgPT4g
Y291bnRlcnNbN10gPSB2ICsgNywKKyAgICAgICAgdiA9PiBjb3VudGVyc1s4XSA9IHYgKyA4LAor
ICAgICAgICB2ID0+IGNvdW50ZXJzWzldID0gdiArIDksCisgICAgXTsKKyAgICBhc3NlcnQuZXEo
Y291bnRlcnMubGVuZ3RoLCBudW0pOworICAgIGFzc2VydC5lcShjb3VudGVyU2V0dGVycy5sZW5n
dGgsIG51bSk7CisgICAgY29uc3QgbW9kdWxlID0gd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMoKTsK
KyAgICBsZXQgaW5zdGFuY2VzID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW07ICsr
aSkKKyAgICAgICAgaW5zdGFuY2VzW2ldID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVs
ZSwgeyBpbXA6IHsgZnVuYzogY291bnRlclNldHRlcnNbaV0gfSB9KTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDIwNDg7ICsraSkgeworICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bTsg
KytqKSB7CisgICAgICAgICAgICBpbnN0YW5jZXNbal0uZXhwb3J0cy5jaGFuZ2VDb3VudGVyKGkp
OworICAgICAgICAgICAgYXNzZXJ0LmlzQShjb3VudGVyc1tqXSwgIm51bWJlciIpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxKGNvdW50ZXJzW2pdLCBpICsgNDIgKyBqKTsKKyAgICAgICAgfQorICAg
IH0KIH0pKCk7Ci0qLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTI5Nzk4Ni4uZmFiZmE0
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjYgQEAKIDIwMTYtMTItMDgg
IEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCisgICAgICAgIFdlYkFzc2VtYmx5
OiBKU0M6OmxpbmsqIHNob3VsZG4ndCBuZWVkIGEgQ29kZUJsb2NrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1OTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBLZWl0aCBNaWxsZXIuCisKKyAgICAgICAgQWxsb3cgbGlua2luZyB3aXRob3V0IGEgQ29k
ZUJsb2NrLCB3aGljaCBXZWJBc3NlbWJseSdzIHdhc20gLT4gSlMgc3R1YnMgZG9lcy4gVGhpcyBu
ZWVkcyB0byB3b3JrIGZvciBwb2x5bW9ycGhpYyBhbmQgdmlydHVhbCBjYWxscy4gVGhpcyBwYXRj
aCBhZGRzIGNvcnJlc3BvbmRpbmcgdGVzdHMgZm9yIHRoaXMuCisKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OnNob3VsZER1bXBEaXNhc3NlbWJseUZv
cik6IGRvbid0IGxvb2sgYXQgdGhlIHRpZXIgb3B0aW9uIGlmIHRoZXJlIGlzbid0IGEgQ29kZUJs
b2NrLCBvbmx5IGxvb2sgYXQgdGhlIGdsb2JhbCBvbmUuIFRoaXMgaXMgYSBXZWJBc3NlbWJseSBm
dW5jdGlvbiwgc28gdGhlIHRpZXIgaW5mb3JtYXRpb24gaXMgaXJyZWxldmFudC4KKyAgICAgICAg
KiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVl
KTogdGhpcyBpcyB1c2VkIGluIHRoZSBsaW5rKiBmdW5jdGlvbnMgYmVsb3cKKyAgICAgICAgKEpT
Qzo6bGlua0Zvcik6CisgICAgICAgIChKU0M6OmxpbmtWaXJ0dWFsRm9yKToKKyAgICAgICAgKEpT
Qzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6IGFk
ZCBhbiBvcHRpb24gdG8gY2hhbmdlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwb2x5bW9ycGhpYyBj
YWxscyBpbiBzdHVicyBmcm9tIHdhc20gdG8gSlMsIHdoaWNoIHdpbGwgY29tZSBpbiBoYW5keSB3
aGVuIHdlIHRyeSB0byB0dW5lIHBlcmZvcm1hbmNlIG9yIHRyeSBtZXJnaW5nIHNvbWUgb2YgdGhl
IFdlYkFzc2VtYmx5IHN0dWJzCisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206OmltcG9ydFN0dWJHZW5lcmF0b3IpOiByZW1vdmUgdGhlIGJyZWFrcG9p
bnQgc2luY2UgdGhlIGNvZGUgbm93IHdvcmtzCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eVRvSlNDYWxsZWUuaDoKKworMjAxNi0xMi0wOCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBs
ZS5jb20+CisKICAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiB3aXJlIHVwIEluc3RhbmNlIGlt
cG9ydHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NTExOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNw
cAppbmRleCAzMjZkMjBkLi45MDEwOTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIGJvb2wgc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKENvZGVCbG9jayogY29kZUJsb2NrKQog
ewotICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkp
ICYmIE9wdGlvbnM6OmR1bXBERkdEaXNhc3NlbWJseSgpKQorICAgIGlmIChjb2RlQmxvY2sgJiYg
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSAmJiBPcHRpb25z
OjpkdW1wREZHRGlzYXNzZW1ibHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJu
IE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKaW5kZXggOTI0ZjgwYS4uZDRmOThmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVk
ZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIlBvbHltb3Jw
aGljQWNjZXNzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCkBAIC01NTYsMzIgKzU1
Nyw2MCBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSogdm0sIENhbGxMaW5rSW5mbyYgY2Fs
bExpbmtJbmZvKQogICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91
dGluZSh2aXJ0dWFsVGh1bmssICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOwogfQogCitzdGF0aWMgYm9v
bCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogY2FsbGVlKQoreworI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICAvLyBUaGUgV2ViQXNzZW1ibHkgLT4gSlMgc3R1YiBz
ZXRzIGl0IGNhbGxlciBmcmFtZSdzIGNhbGxlZSB0byBhIHNpbmdsZXRvbiB3aGljaCBsaXZlcyBv
biB0aGUgVk0uCisgICAgcmV0dXJuIGNhbGxlZSA9PSB2bS53ZWJBc3NlbWJseVRvSlNDYWxsZWUu
Z2V0KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKGNh
bGxlZSk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkK
K30KKworc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihWTSYgdm0pCit7CisjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQorICAgIC8vIEVhY2ggV2ViQXNzZW1ibHkuSW5zdGFuY2Ugc2hhcmVz
IHRoZSBzdHVicyBmcm9tIHRoZWlyIFdlYkFzc2VtYmx5Lk1vZHVsZSwgd2hpY2ggYXJlIHRoZXJl
Zm9yZSB0aGUgYXBwcm9wcmlhdGUgb3duZXIuCisgICAgcmV0dXJuIHZtLnRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZS0+bW9kdWxlKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCit9CisKIHZvaWQgbGlua0ZvcigKICAgICBFeGVjU3Rh
dGUqIGV4ZWMsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDb2RlQmxvY2sqIGNhbGxlZUNv
ZGVCbG9jaywKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBj
b2RlUHRyKQogewogICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLnN0dWIoKSk7Ci0gICAgCi0gICAg
Q29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxv
Y2soKTsKIAotICAgIFZNKiB2bSA9IGNhbGxlckNvZGVCbG9jay0+dm0oKTsKLSAgICAKKyAgICBD
YWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICBWTSYgdm0g
PSBjYWxsZXJGcmFtZS0+dm0oKTsKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNh
bGxlckZyYW1lLT5jb2RlQmxvY2soKTsKKworICAgIC8vIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWJz
IGRvbid0IGhhdmUgYSB2YWxpZCBDb2RlQmxvY2suCisgICAgSlNDZWxsKiBvd25lciA9IGlzV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpID8gd2ViQXNzZW1i
bHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAgQVNTRVJUKG93bmVyKTsKKwogICAg
IEFTU0VSVCghY2FsbExpbmtJbmZvLmlzTGlua2VkKCkpOwotICAgIGNhbGxMaW5rSW5mby5zZXRD
YWxsZWUoZXhlYy0+Y2FsbGVyRnJhbWUoKS0+dm0oKSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZWUp
OwotICAgIGNhbGxMaW5rSW5mby5zZXRMYXN0U2VlbkNhbGxlZShleGVjLT5jYWxsZXJGcmFtZSgp
LT52bSgpLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlZSk7CisgICAgY2FsbExpbmtJbmZvLnNldENh
bGxlZSh2bSwgb3duZXIsIGNhbGxlZSk7CisgICAgY2FsbExpbmtJbmZvLnNldExhc3RTZWVuQ2Fs
bGVlKHZtLCBvd25lciwgY2FsbGVlKTsKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9y
KGNhbGxlckNvZGVCbG9jaykpCiAgICAgICAgIGRhdGFMb2coIkxpbmtpbmcgY2FsbCBpbiAiLCAq
Y2FsbGVyQ29kZUJsb2NrLCAiIGF0ICIsIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCksICIgdG8g
IiwgcG9pbnRlckR1bXAoY2FsbGVlQ29kZUJsb2NrKSwgIiwgZW50cnlwb2ludCBhdCAiLCBjb2Rl
UHRyLCAiXG4iKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMaW5r
SW5mby5ob3RQYXRoT3RoZXIoKSwgQ29kZUxvY2F0aW9uTGFiZWwoY29kZVB0cikpOwotICAgIAor
CiAgICAgaWYgKGNhbGxlZUNvZGVCbG9jaykKLSAgICAgICAgY2FsbGVlQ29kZUJsb2NrLT5saW5r
SW5jb21pbmdDYWxsKGV4ZWMtPmNhbGxlckZyYW1lKCksICZjYWxsTGlua0luZm8pOwotICAgIAor
ICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbGVyRnJhbWUsICZj
YWxsTGlua0luZm8pOworCiAgICAgaWYgKGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQo
KSA9PSBDb2RlRm9yQ2FsbCAmJiBjYWxsTGlua0luZm8uYWxsb3dTdHVicygpKSB7Ci0gICAgICAg
IGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8sIGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dl
bmVyYXRvcik7CisgICAgICAgIGxpbmtTbG93Rm9yKCZ2bSwgY2FsbExpbmtJbmZvLCBsaW5rUG9s
eW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8pOworICAgIGxpbmtTbG93Rm9yKCZ2
bSwgY2FsbExpbmtJbmZvKTsKIH0KIAogdm9pZCBsaW5rRGlyZWN0Rm9yKApAQCAtNjQ1LDE4ICs2
NzQsMTggQEAgdm9pZCB1bmxpbmtGb3IoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bykKICAgICByZXZlcnRDYWxsKCZ2bSwgY2FsbExpbmtJbmZvLCB2bS5nZXRDVElTdHViKGxpbmtD
YWxsVGh1bmtHZW5lcmF0b3IpKTsKIH0KIAotdm9pZCBsaW5rVmlydHVhbEZvcigKLSAgICBFeGVj
U3RhdGUqIGV4ZWMsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQordm9pZCBsaW5rVmlydHVh
bEZvcihFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewotICAg
IENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJs
b2NrKCk7Ci0gICAgVk0qIHZtID0gY2FsbGVyQ29kZUJsb2NrLT52bSgpOworICAgIENhbGxGcmFt
ZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgIFZNJiB2bSA9IGNhbGxl
ckZyYW1lLT52bSgpOworICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJh
bWUtPmNvZGVCbG9jaygpOwogCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseUZvcihjYWxs
ZXJDb2RlQmxvY2spKQotICAgICAgICBkYXRhTG9nKCJMaW5raW5nIHZpcnR1YWwgY2FsbCBhdCAi
LCAqY2FsbGVyQ29kZUJsb2NrLCAiICIsIGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVPcmlnaW4o
KSwgIlxuIik7Ci0gICAgCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVuayA9
IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKLSAgICByZXZlcnRDYWxsKHZtLCBj
YWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHVi
KGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgKnZtLCBudWxscHRyLCB0cnVlKSk7
CisgICAgICAgIGRhdGFMb2coIkxpbmtpbmcgdmlydHVhbCBjYWxsIGF0ICIsICpjYWxsZXJDb2Rl
QmxvY2ssICIgIiwgY2FsbGVyRnJhbWUtPmNvZGVPcmlnaW4oKSwgIlxuIik7CisKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKCZ2bSwgY2Fs
bExpbmtJbmZvKTsKKyAgICByZXZlcnRDYWxsKCZ2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1
bmspOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2
aXJ0dWFsVGh1bmssIHZtLCBudWxscHRyLCB0cnVlKSk7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC02
NzcsMTAgKzcwNiwxNiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgIGxpbmtW
aXJ0dWFsRm9yKGV4ZWMsIGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgCi0gICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5jYWxsZXJGcmFtZSgp
LT5jb2RlQmxvY2soKTsKLSAgICBWTSogdm0gPSBjYWxsZXJDb2RlQmxvY2stPnZtKCk7Ci0gICAg
CisKKyAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAg
ICBWTSYgdm0gPSBjYWxsZXJGcmFtZS0+dm0oKTsKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVC
bG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBib29sIGlzV2ViQXNzZW1ibHkg
PSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKTsKKwor
ICAgIC8vIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2YWxpZCBDb2RlQmxv
Y2suCisgICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJBc3NlbWJseU93bmVy
KHZtKSA6IGNhbGxlckNvZGVCbG9jazsKKyAgICBBU1NFUlQob3duZXIpOworCiAgICAgQ2FsbFZh
cmlhbnRMaXN0IGxpc3Q7CiAgICAgaWYgKFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKiBzdHVi
ID0gY2FsbExpbmtJbmZvLnN0dWIoKSkKICAgICAgICAgbGlzdCA9IHN0dWItPnZhcmlhbnRzKCk7
CkBAIC03MDksNyArNzQ0LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIC8vIEZp
Z3VyZSBvdXQgd2hhdCBvdXIgY2FzZXMgYXJlLgogICAgIGZvciAoQ2FsbFZhcmlhbnQgdmFyaWFu
dCA6IGxpc3QpIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7Ci0gICAgICAgIGlmICh2
YXJpYW50LmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgaWYgKGlzV2Vi
QXNzZW1ibHkgfHwgdmFyaWFudC5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkpCiAgICAg
ICAgICAgICBjb2RlQmxvY2sgPSBudWxscHRyOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdmFyaWFudC5leGVjdXRhYmxlKCk7CkBAIC03
MjcsMTAgKzc2MiwxMyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgCiAgICAgLy8g
SWYgd2UgYXJlIG92ZXIgdGhlIGxpbWl0LCBqdXN0IHVzZSBhIG5vcm1hbCB2aXJ0dWFsIGNhbGwu
CiAgICAgdW5zaWduZWQgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplOwotICAgIGlm
IChjYWxsZXJDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjp0b3BUaWVySklUKCkpCisg
ICAgaWYgKGlzV2ViQXNzZW1ibHkpCisgICAgICAgIG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRM
aXN0U2l6ZSA9IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZUZvcldl
YkFzc2VtYmx5VG9KUygpOworICAgIGVsc2UgaWYgKGNhbGxlckNvZGVCbG9jay0+aml0VHlwZSgp
ID09IEpJVENvZGU6OnRvcFRpZXJKSVQoKSkKICAgICAgICAgbWF4UG9seW1vcnBoaWNDYWxsVmFy
aWFudExpc3RTaXplID0gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXpl
Rm9yVG9wVGllcigpOwogICAgIGVsc2UKICAgICAgICAgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFu
dExpc3RTaXplID0gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplKCk7
CisKICAgICBpZiAobGlzdC5zaXplKCkgPiBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNp
emUpIHsKICAgICAgICAgbGlua1ZpcnR1YWxGb3IoZXhlYywgY2FsbExpbmtJbmZvKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNzM4LDcgKzc3Niw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgK
ICAgICAKICAgICBHUFJSZWcgY2FsbGVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihjYWxsTGlu
a0luZm8uY2FsbGVlR1BSKCkpOwogICAgIAotICAgIENDYWxsSGVscGVycyBzdHViSml0KHZtLCBj
YWxsZXJDb2RlQmxvY2spOworICAgIENDYWxsSGVscGVycyBzdHViSml0KCZ2bSwgY2FsbGVyQ29k
ZUJsb2NrKTsKICAgICAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAg
IApAQCAtNzg3LDcgKzgyNSw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBWZWN0
b3I8Q2FsbFRvQ29kZVB0cj4gY2FsbHMoY2FsbENhc2VzLnNpemUoKSk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPHVpbnQzMl90W10+IGZhc3RDb3VudHM7CiAgICAgCi0gICAgaWYgKGNhbGxlckNvZGVC
bG9jay0+aml0VHlwZSgpICE9IEpJVENvZGU6OnRvcFRpZXJKSVQoKSkKKyAgICBpZiAoIWlzV2Vi
QXNzZW1ibHkgJiYgY2FsbGVyQ29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6dG9wVGll
ckpJVCgpKQogICAgICAgICBmYXN0Q291bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50MzJfdFtd
PihjYWxsQ2FzZXMuc2l6ZSgpKTsKICAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNh
bGxDYXNlcy5zaXplKCk7ICsraSkgewpAQCAtODg0LDcgKzkyMiw3IEBAIHZvaWQgbGlua1BvbHlt
b3JwaGljQ2FsbCgKICAgICBzdHViSml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJu
KEdQUkluZm86OnJlZ1Q0KTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgc2xvdyA9IHN0dWJK
aXQuanVtcCgpOwogICAgICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1
YkppdCwgY2FsbGVyQ29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIodm0sIHN0dWJKaXQsIG93bmVyLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwpOwogICAgIGlmIChwYXRjaEJ1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAgICAgICAg
IGxpbmtWaXJ0dWFsRm9yKGV4ZWMsIGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIHJldHVybjsKQEAg
LTg5OCwxOSArOTM2LDE5IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgcGF0
Y2hCdWZmZXIubGluaygKICAgICAgICAgICAgIGNhbGxUb0NvZGVQdHIuY2FsbCwgRnVuY3Rpb25Q
dHIoaXNUYWlsQ2FsbCA/IGNhbGxUb0NvZGVQdHIuY29kZVB0ci5kYXRhTG9jYXRpb24oKSA6IGNh
bGxUb0NvZGVQdHIuY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgfQotICAgIGlm
IChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY2FsbGVyQ29kZUJsb2NrLT5qaXRUeXBlKCkpKQor
ICAgIGlmIChpc1dlYkFzc2VtYmx5IHx8IEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjYWxsZXJD
b2RlQmxvY2stPmppdFR5cGUoKSkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZSwgY2Fs
bExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLmxhYmVsQXRPZmZzZXQoMCkpOwogICAgIGVs
c2UKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlua0luZm8uaG90UGF0aE90
aGVyKCkubGFiZWxBdE9mZnNldCgwKSk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhzbG93LCBDb2Rl
TG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5l
cmF0b3IpLmNvZGUoKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvdywgQ29kZUxvY2F0aW9u
TGFiZWwodm0uZ2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKSkpOwogICAgIAogICAgIGF1dG8gc3R1YlJvdXRpbmUgPSBhZG9wdFJlZigqbmV3IFBvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFX0ZPUigKICAgICAg
ICAgICAgIGNhbGxlckNvZGVCbG9jaywgcGF0Y2hCdWZmZXIsCiAgICAgICAgICAgICAoIlBvbHlt
b3JwaGljIGNhbGwgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCwgdGFyZ2V0cyAlcyIsCi0g
ICAgICAgICAgICAgICAgdG9DU3RyaW5nKCpjYWxsZXJDb2RlQmxvY2spLmRhdGEoKSwgY2FsbExp
bmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLmxhYmVsQXRPZmZzZXQoMCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwKKyAgICAgICAgICAgICAgICBpc1dlYkFzc2VtYmx5ID8gIldlYkFzc2VtYmx5IiA6
IHRvQ1N0cmluZygqY2FsbGVyQ29kZUJsb2NrKS5kYXRhKCksIGNhbGxMaW5rSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24oKS5sYWJlbEF0T2Zmc2V0KDApLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAg
ICAgICAgICAgICAgdG9DU3RyaW5nKGxpc3REdW1wKGNhbGxDYXNlcykpLmRhdGEoKSkpLAotICAg
ICAgICAqdm0sIGNhbGxlckNvZGVCbG9jaywgZXhlYy0+Y2FsbGVyRnJhbWUoKSwgY2FsbExpbmtJ
bmZvLCBjYWxsQ2FzZXMsCisgICAgICAgIHZtLCBvd25lciwgZXhlYy0+Y2FsbGVyRnJhbWUoKSwg
Y2FsbExpbmtJbmZvLCBjYWxsQ2FzZXMsCiAgICAgICAgIFdURk1vdmUoZmFzdENvdW50cykpKTsK
ICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKApAQCAtOTE5LDcgKzk1
Nyw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAvLyBUaGUgb3JpZ2luYWwgc2xv
dyBwYXRoIGlzIHVucmVhY2hhYmxlIG9uIDY0LWJpdHMsIGJ1dCBzdGlsbAogICAgIC8vIHJlYWNo
YWJsZSBvbiAzMi1iaXRzIHNpbmNlIGEgbm9uLWNlbGwgY2FsbGVlIHdpbGwgYWx3YXlzCiAgICAg
Ly8gdHJpZ2dlciB0aGUgc2xvdyBwYXRoCi0gICAgbGlua1Nsb3dGb3Iodm0sIGNhbGxMaW5rSW5m
byk7CisgICAgbGlua1Nsb3dGb3IoJnZtLCBjYWxsTGlua0luZm8pOwogICAgIAogICAgIC8vIElm
IHRoZXJlIGhhZCBiZWVuIGEgcHJldmlvdXMgc3R1YiByb3V0aW5lLCB0aGF0IG9uZSB3aWxsIGRp
ZSBhcyBzb29uIGFzIHRoZSBHQyBydW5zIGFuZCBzZWVzCiAgICAgLy8gdGhhdCBpdCdzIG5vIGxv
bmdlciBvbiBzdGFjay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAppbmRl
eCA4ODk1MDZiLi42ZjRhZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCkBAIC0yMjksNiArMjI5LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7
CiAgICAgdihib29sLCB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMs
IGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhp
Y0NhbGxWYXJpYW50TGlzdFNpemUsIDE1LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KHVuc2ln
bmVkLCBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemVGb3JUb3BUaWVyLCA1LCBOb3Jt
YWwsIG51bGxwdHIpIFwKKyAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50
TGlzdFNpemVGb3JXZWJBc3NlbWJseVRvSlMsIDUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYo
dW5zaWduZWQsIG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRzRm9ySW5saW5pbmcsIDUsIE5vcm1h
bCwgbnVsbHB0cikgXAogICAgIHYodW5zaWduZWQsIGZyZXF1ZW50Q2FsbFRocmVzaG9sZCwgMiwg
Tm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihkb3VibGUsIG1pbmltdW1DYWxsVG9Lbm93blJhdGUs
IDAuNTEsIE5vcm1hbCwgbnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJpbmRpbmcuY3BwCmluZGV4IDEzNmM2NWMuLjVmZmM0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKQEAgLTQ5LDcgKzQ5LDYgQEAgV2FzbVRvSlNTdHVi
IGltcG9ydFN0dWJHZW5lcmF0b3IoVk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJ
bmZvcywgU2lnbmEKICAgICBBU1NFUlQoIWpzQ0MubV9mcHJBcmdzLnNpemUoKSk7CiAKICAgICBq
aXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBqaXQuYnJlYWtwb2ludCgpOyAvLyBGSVhN
RSBtYWtlIGNhbGxpbmcgdG8gSmF2YVNjcmlwdCB3b3JrLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTkxCiAgICAgaml0LnN0b3JlNjQoSklUOjpUcnVzdGVkSW1t
MzIoMCksIEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOyAv
LyBGSVhNRSBTdG9wIHVzaW5nIDAgYXMgY29kZUJsb2Nrcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NTMyMQogICAgIGppdC5zdG9yZVB0cihKSVQ6OlRydXN0ZWRJ
bW1QdHIodm0tPndlYkFzc2VtYmx5VG9KU0NhbGxlZS5nZXQoKSksIEpJVDo6QWRkcmVzcyhHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oCmluZGV4IGEzNGUzZDEuLjQ5
NmM4ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVRvSlNDYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVRvSlNDYWxsZWUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZShWTSYsIFN0cnVjdHVyZSogc3RydWN0dXJlKTsKKyAgICBXZWJBc3NlbWJseVRvSlNDYWxsZWUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwotLSAKMi4xMC4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>