<?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>179106</bug_id>
          
          <creation_ts>2017-11-01 00:27:34 -0700</creation_ts>
          <short_desc>WebAssembly: Unexpected &quot;RangeError: Maximum call stack size exceeded.&quot;</short_desc>
          <delta_ts>2017-12-01 13:58:41 -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>WebAssembly</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>179343</dependson>
          <blocked>180272</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fumiya Chiba">fumiya.chiba</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1366782</commentid>
    <comment_count>0</comment_count>
    <who name="Fumiya Chiba">fumiya.chiba</who>
    <bug_when>2017-11-01 00:27:34 -0700</bug_when>
    <thetext>Tested Version       : Release 42 (Safari 11.1, WebKit 13605.1.10) 
URLs (if applicable) : http://demo.tombo.io/
Other browsers tested:
	Safari (11.0.1): OK
	Chrome (62.0.3202.75): OK
	Chrome Canary (64.0.3254.0): FAIL with another exception
	Firefox (56.0.2): OK
	Firefox Nightly (58.0a1): OK
	
Step to reproduce:

Push play button on center.

Expected result:

Game launches without exceptions.
cf. http://demo.tombo.io/launch-image/launch-image-320x480.png

Actual result:

Unexpected exception, &quot;RangeError: Maximum call stack size exceeded.&quot;, is thrown, but stack is not so deep.


Additional information:
- Only wasm version causes the exception.
- Built with patched emscripten, for mainly Objective-C support.
- Using dynamic link feature of emscripten (loading two .wasm files)
- Seems JS function call from wasm function cause this error (not always)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366804</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-01 03:28:37 -0700</bug_when>
    <thetext>It means released Safari in high Sierra works fine, and current STP shows regression, correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366806</commentid>
    <comment_count>2</comment_count>
    <who name="Fumiya Chiba">fumiya.chiba</who>
    <bug_when>2017-11-01 03:46:15 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #1)
&gt; It means released Safari in high Sierra works fine, and current STP shows
&gt; regression, correct?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366828</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-01 06:04:43 -0700</bug_when>
    <thetext>I&apos;ll do bisecting after landing some patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367983</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-03 09:58:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/35337525&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368015</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-03 11:14:03 -0700</bug_when>
    <thetext>(In reply to Fumiya Chiba from comment #2)
&gt; (In reply to Yusuke Suzuki from comment #1)
&gt; &gt; It means released Safari in high Sierra works fine, and current STP shows
&gt; &gt; regression, correct?
&gt; 
&gt; Yes.

I&apos;ve just tested it in High Sierra Safari 11.0, and it throws the same RangeError.
Could you specify which version is ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368342</commentid>
    <comment_count>6</comment_count>
    <who name="Fumiya Chiba">fumiya.chiba</who>
    <bug_when>2017-11-04 02:57:24 -0700</bug_when>
    <thetext>Very sorry, I was confused.

http://demo.tombo.io/ throws RangeError exception in both Safari 11 and STP.


Also, we&apos;ve made a workaround to avoid RangeError, which reduces WASM-&gt;JS calls. It works well in Safari 11.0.1 but causes tab reload in STP. It&apos;s available on http://demo2.tombo.io/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368408</commentid>
    <comment_count>7</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-11-04 16:48:56 -0700</bug_when>
    <thetext>Surprising. I can take a look some time this week if you want to assign me the bug, Yusuke. Of course I&apos;m happy if you tackle it as well :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368606</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-06 06:38:18 -0800</bug_when>
    <thetext>(In reply to JF Bastien from comment #7)
&gt; Surprising. I can take a look some time this week if you want to assign me
&gt; the bug, Yusuke. Of course I&apos;m happy if you tackle it as well :-)

Oh, sounds cool!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368626</commentid>
    <comment_count>9</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-11-06 07:54:41 -0800</bug_when>
    <thetext>I repo&apos;d on vanilla Safari 11 on MacOS:

[Error] RangeError: Maximum call stack size exceeded.
	wasm function: 770 (application-wasm.js:1:2783281)
	wasm function: 773
	wasm function
	_objc_setProperty_atomic_copy
	(anonymous function) (application-wasm.js:1:2783281)
	wasm function
	wasm function: 880
	wasm function: 4954
	wasm function: 829
	wasm function: 4937
	wasm function: 907
	wasm function: 4937
	wasm function: 906
	wasm function: 13001
	wasm function: 8343
	wasm function: 648
	wasm function: 646
	wasm function: 645
	wasm function
	__objc_load_images
	(anonymous function) (application-wasm.js:1:4084505)
	func (application-wasm.js:1:164048)
	callRuntimeCallbacks (application-wasm.js:1:151325)
	ensureInitRuntime (application-wasm.js:1:151841)
	doRun (application-wasm.js:1:5198396)
	(anonymous function) (application-wasm.js:1:5198682)

With this info it should be easy to use compile the .wasm file offline and see the size of the functions in that stack.

Will do so soon (I&apos;m at a standards meeting, but will fit investigation in downtime).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368627</commentid>
    <comment_count>10</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-11-06 07:58:08 -0800</bug_when>
    <thetext>One caveat: because of dynamic linking there&apos;s Foundation.wasm and application-wasm.wasm, and the stack trace doesn&apos;t say which is which :-)

I should improve that part of our stack tracing! Shouldn&apos;t be much of an impediment since I can just look at both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376568</commentid>
    <comment_count>11</comment_count>
      <attachid>328043</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-11-30 15:36:24 -0800</bug_when>
    <thetext>Created attachment 328043
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376728</commentid>
    <comment_count>12</comment_count>
      <attachid>328043</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-30 22:16:36 -0800</bug_when>
    <thetext>Comment on attachment 328043
patch

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

r=me

&gt; JSTests/wasm/function-tests/double-instance.js:16
&gt; +// our implementation used to set it to UINT_MAX causing an erroneous stack

nit: UINTPTR_MAX

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:462
&gt; +        Value* actualStackLimitPointer = m_currentBlock-&gt;appendNew&lt;MemoryValue&gt;(m_proc, Load, pointerType(), origin(), instanceValue(), safeCast&lt;int32_t&gt;(Instance::offsetOfActualStackLimitPointer()));
&gt; +        Value* actualStackLimit = m_currentBlock-&gt;appendNew&lt;MemoryValue&gt;(m_proc, Load, pointerType(), origin(), actualStackLimitPointer);
&gt; +        m_currentBlock-&gt;appendNew&lt;MemoryValue&gt;(m_proc, Store, origin(), actualStackLimit, instanceValue(), safeCast&lt;int32_t&gt;(Instance::offsetOfCachedStackLimit()));

nice

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1319
&gt; +    restoreWebAssemblyGlobalState(RestoreCachedStackLimit::No, m_info.memory, instanceValue(), m_proc, m_currentBlock);

Why No here? The above comment makes me think it should be Yes

&gt; Source/JavaScriptCore/wasm/WasmInstance.h:138
&gt; +    void** m_actualStackLimitPointer { nullptr };

Name suggestion: for me, a name like, &quot;pointerToStackLimit&quot; would be more intuitive. WDYT? Up to you if you want to change it or not, but if you do, I&apos;d recommend changing other various methods with this name as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376990</commentid>
    <comment_count>13</comment_count>
      <attachid>328139</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-01 12:53:28 -0800</bug_when>
    <thetext>Created attachment 328139
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377040</commentid>
    <comment_count>14</comment_count>
      <attachid>328139</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-01 13:58:39 -0800</bug_when>
    <thetext>Comment on attachment 328139
patch

Clearing flags on attachment: 328139

Committed r225411: &lt;https://trac.webkit.org/changeset/225411&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377041</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-01 13:58:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328043</attachid>
            <date>2017-11-30 15:36:24 -0800</date>
            <delta_ts>2017-12-01 12:53:28 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-restore-cached-stack-limit-after-out-cal.patch</filename>
            <type>text/plain</type>
            <size>20291</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBkYTdlNTQ0NGQxYjEzMTAzNGI1ZDYyNzJmMWU1MTMzNDIxNDRiMWYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDMwIE5vdiAyMDE3IDExOjExOjUwIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHk6IHJlc3RvcmUgY2FjaGVkIHN0YWNrIGxpbWl0IGFmdGVyIG91dC1jYWxsCgotLS0KIEpT
VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIgKysr
KwogSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2RvdWJsZS1pbnN0YW5jZS5qcyAgICAgfCA2
NCArKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKwogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwICAgfCAxOCArKysrLS0KIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAgICAgICAgIHwgIDcgKystCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaCAgICAgICAgICB8IDE4ICsr
KystLQogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCAgICAgICAgICAgICAg
fCAgMiArLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5j
cHAgfCAgNCArLQogOCBmaWxlcyBjaGFuZ2VkLCAxNjUgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRp
b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2Rv
dWJsZS1pbnN0YW5jZS5qcwoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNDZmZTEzMC4uMmUxY2RhMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0x
MS0zMCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNz
ZW1ibHk6IHJlc3RvcmUgY2FjaGVkIHN0YWNrIGxpbWl0IGFmdGVyIG91dC1jYWxsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkxMDYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM1MzM3NTI1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy9kb3VibGUtaW5zdGFuY2Uu
anM6IEFkZGVkLgorICAgICAgICAoY29uc3QuaW1wLmJvb20pOgorICAgICAgICAoY29uc3QuaW1w
LmdldCBjYWxsQW5vdGhlcik6CisKIDIwMTctMTEtMjggIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFN0cmljdCBhbmQgc2xvcHB5IGZ1bmN0aW9ucyBzaG91bGRu
J3Qgc2hhcmUgc3RydWN0dXJlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVz
dHMvZG91YmxlLWluc3RhbmNlLmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2RvdWJs
ZS1pbnN0YW5jZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWIxZDc0
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2RvdWJsZS1p
bnN0YW5jZS5qcwpAQCAtMCwwICsxLDY0IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWls
ZGVyLmpzJworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcycKKworLy8gVGhl
IGNhbGwgc2VxdWVuY2UgaXMgYXMgZm9sbG93czoKKy8vCisvLyBqcyAtanMyd2FzbS0+IGkxLmNh
bGxBbm90aGVyKCkKKy8vICAgICAgICAgICAgICAgLXdhc20yd2FzbS0+IGkwLmNhbGxBbm90aGVy
KCkKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIC13YXNtMmpzLT4gaTEuYm9vbSgpCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1jYWxsZGlyZWN0LT4gaTEu
ZG9TdGFja0NoZWNrKCkKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtY2FsbGRpcmVjdC0+IGR1bW15KCkKKy8vICAgICAgICAgICAgICAgLWNh
bGxkaXJlY3QtPiBpMS5kb1N0YWNrQ2hlY2soKQorLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC1jYWxsZGlyZWN0LT4gZHVtbXkoKQorLy8KKy8vIFdlIHRoZXJlZm9yZSBoYXZlIGkxIGlu
ZGlyZWN0bHkgY2FsbGluZyBpbnRvIGl0c2VsZiwgdGhyb3VnaCBhbm90aGVyCisvLyBpbnN0YW5j
ZS4gV2hlbiByZXR1cm5pbmcgaXRzIGNhY2hlZCBzdGFjayBsaW1pdCBzaG91bGQgc3RpbGwgYmUg
dmFsaWQsIGJ1dAorLy8gb3VyIGltcGxlbWVudGF0aW9uIHVzZWQgdG8gc2V0IGl0IHRvIFVJTlRf
TUFYIGNhdXNpbmcgYW4gZXJyb25lb3VzIHN0YWNrCisvLyBjaGVjayBmYWlsdXJlIGF0IHRoZSBz
ZWNvbmQgZG9TdGFja0NoZWNrKCkgY2FsbC4KKworY29uc3QgYnVpbGRlciA9IG5ldyBCdWlsZGVy
KCkKKyAgICAuVHlwZSgpCisgICAgLkVuZCgpCisgICAgLkltcG9ydCgpCisgICAgICAgIC5GdW5j
dGlvbigiaW1wIiwgImJvb20iLCB7cGFyYW1zOlsiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwg
ImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAi
aTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJp
MzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkz
MiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMy
IiwgImkzMiIsICJpMzIiLCAiaTMyIl0sIHJldDoiaTMyIn0pCisgICAgICAgIC5GdW5jdGlvbigi
aW1wIiwgImNhbGxBbm90aGVyIiwge3BhcmFtczpbImkzMiJdLCByZXQ6ImkzMiJ9KQorICAgIC5F
bmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkV4cG9ydCgpCisgICAgICAgIC5GdW5j
dGlvbigiYm9vbSIpCisgICAgICAgIC5GdW5jdGlvbigiY2FsbEFub3RoZXIiKQorICAgIC5FbmQo
KQorICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJib29tIiwge3BhcmFtczpbImkzMiIs
ICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwg
ImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAi
aTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJp
MzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkz
MiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiJdLCByZXQ6ImkzMiJ9
KQorICAgICAgICAgICAgLyogY2FsbCBkb1N0YWNrQ2hlY2sgKi8uR2V0TG9jYWwoMCkuR2V0TG9j
YWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0
TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCku
R2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwo
MCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9j
YWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0
TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCku
R2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwo
MCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9j
YWwoMCkuQ2FsbCg0KQorICAgICAgICAgICAgLlJldHVybigpCisgICAgICAgIC5FbmQoKQorICAg
ICAgICAuRnVuY3Rpb24oImNhbGxBbm90aGVyIiwge3BhcmFtczpbImkzMiJdLCByZXQ6ImkzMiJ9
KQorICAgICAgICAgICAgLyogY2FsbCBpbXA6Y2FsbEFub3RoZXIgKi8uR2V0TG9jYWwoMCkuR2V0
TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCku
R2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwo
MCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9j
YWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0
TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCku
R2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwo
MCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9j
YWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0
TG9jYWwoMCkuQ2FsbCgxKQorICAgICAgICAgICAgLyogY2FsbCBkb1N0YWNrQ2hlY2sgKi8uR2V0
TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCku
R2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwo
MCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9j
YWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0
TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCku
R2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwo
MCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9j
YWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0
TG9jYWwoMCkuR2V0TG9jYWwoMCkuQ2FsbCg0KQorICAgICAgICAgICAgLlJldHVybigpCisgICAg
ICAgIC5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oImRvU3RhY2tDaGVjayIsIHtwYXJhbXM6WyJp
MzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkz
MiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMy
IiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIi
LCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIs
ICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiXSwgcmV0OiJp
MzIifSkKKyAgICAgICAgICAgIC8qIGNhbGwgZHVtbXkgKi8uR2V0TG9jYWwoMCkuR2V0TG9jYWwo
MCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9j
YWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0
TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCku
R2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwo
MCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9j
YWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0
TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCku
R2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwoMCkuR2V0TG9jYWwo
MCkuQ2FsbCg1KQorICAgICAgICAgICAgLlJldHVybigpCisgICAgICAgIC5FbmQoKQorICAgICAg
ICAuRnVuY3Rpb24oImR1bW15Iiwge3BhcmFtczpbImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIs
ICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwg
ImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAi
aTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJp
MzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkz
MiIsICJpMzIiLCAiaTMyIiwgImkzMiJdLCByZXQ6ImkzMiJ9KQorICAgICAgICAgICAgLkdldExv
Y2FsKDApCisgICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgLkVuZCgpCisgICAgLkVuZCgp
OworCitjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7Citjb25zdCBtb2R1
bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisKK2xldCBpMTsKKworY29uc3QgaW1w
ID0geworICAgIGJvb206ICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKGBUaGlzIGJvb20gc2hvdWxk
IG5vdCBnZXQgY2FsbGVkIWApOyB9LAorICAgIGNhbGxBbm90aGVyOiAoKSA9PiB7IGkxLmV4cG9y
dHNbImJvb20iXSgweGRlYWRiZWVmKTsgfSwKK30KKworY29uc3QgaTAgPSBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcCB9KTsKK2kxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG1vZHVsZSwgeyBpbXA6IGkwLmV4cG9ydHMgfSk7CisKK2kxLmV4cG9ydHNbImNhbGxBbm90
aGVyIl0oMHhjMGRlZmVmZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5NmUwY2UwLi43
ZDQwN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxNy0x
MS0zMCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNz
ZW1ibHk6IHJlc3RvcmUgY2FjaGVkIHN0YWNrIGxpbWl0IGFmdGVyIG91dC1jYWxsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkxMDYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM1MzM3NTI1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlIGNhY2hlIHRoZSBzdGFjayBsaW1pdCBvbiB0aGUgSW5zdGFu
Y2Ugc28gdGhhdCB3ZSBjYW4gZG8gZmFzdAorICAgICAgICBzdGFjayBjaGVja3Mgd2hlcmUgcmVx
dWlyZWQuIEluIHJlZ3VsYXIgdXNhZ2UgdGhlIHN0YWNrIGxpbWl0CisgICAgICAgIG5ldmVyIGNo
YW5nZXMgYmVjYXVzZSB3ZSBhbHdheXMgcnVuIG9uIHRoZSBzYW1lIHRocmVhZCwgYnV0IGluCisg
ICAgICAgIHJhcmUgY2FzZXMgYW4gQVBJIHVzZXIgY2FuIHRvdGFsbHkgbWlncmF0ZSB3aGljaCB0
aHJlYWQgKGFuZAorICAgICAgICB0aGVyZWZvcmUgc3RhY2spIGlzIHVzZWQgZm9yIGV4ZWN1dGlv
biBiZXR3ZWVuIFdlYkFzc2VtYmx5CisgICAgICAgIHRyYWNlcy4gRm9yIHRoYXQgcmVhc29uIHdl
IHNldCB0aGUgY2FjaGVkIHN0YWNrIGxpbWl0IHRvCisgICAgICAgIFVJTlRQVFJfTUFYIG9uIHRo
ZSBvdXRnb2luZyBJbnN0YW5jZSB3aGVuIHRyYW5zaXRpb25pbmcgYmFjayBpbnRvCisgICAgICAg
IGEgZGlmZmVyZW50IEluc3RhbmNlLiBXZSB1c3VhbGx5IHJlc3RvcmUgdGhlIGNhY2hlZCBzdGFj
ayBsaW1pdCBpbgorICAgICAgICBDb250ZXh0OjpzdG9yZSwgYnV0IHRoaXMgd2Fzbid0IGNhbGxl
ZCBvbiBhbGwgY29kZSBwYXRocy4gV2UgaGFkIGEKKyAgICAgICAgYnVnIHdoZXJlIGFuIEluc3Rh
bmNlIGNhbGxpbmcgaW50byBpdHNlbGYgaW5kaXJlY3RseSB3b3VsZAorICAgICAgICB0aGVyZWZv
cmUgZmFpbCB0byByZXN0b3JlIGl0cyBjYWNoZWQgc3RhY2sgbGltaXQgcHJvcGVybHkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCB0aGVyZWZvcmUgcmVzdG9yZXMgdGhlIGNhY2hlZCBzdGFjayBsaW1p
dCBhZnRlciBkaXJlY3QKKyAgICAgICAgY2FsbHMgd2hpY2ggY291bGQgYmUgdG8gaW1wb3J0cyAo
Ym90aCB3YXNtLT53YXNtIGFuZAorICAgICAgICB3YXNtLT5lbWJlZGRlcikuIFdlIGhhdmUgdG8g
ZG8gYWxsIG9mIHRoZW0gYmVjYXVzZSB3ZSBoYXZlIG5vIHdheQorICAgICAgICBvZiBrbm93aW5n
IHdoYXQgaW1wb3J0cyB3aWxsIGRvICh0aGV5J3JlIGtub3duIGF0IGluc3RhbnRpYXRpb24KKyAg
ICAgICAgdGltZSwgbm90IGNvbXBpbGF0aW9uIHRpbWUsIGFuZCBkaWZmZXJlbnQgaW5zdGFuY2Vz
IGNhbiBoYXZlCisgICAgICAgIGRpZmZlcmVudCBpbXBvcnRzKS4gVG8gbWFrZSB0aGlzIGVmZmlj
aWVudCB3ZSBhbHNvIGFkZCBhIHBvaW50ZXIKKyAgICAgICAgdG8gdGhlIGNhbm9uaWNhbCBsb2Nh
dGlvbiBvZiB0aGUgc3RhY2sgbGltaXQgKGkuZS4gdGhlIGV4dHJhCisgICAgICAgIGluZGlyZWN0
aW9uIHdlJ3JlIHRyeWluZyB0byBzYXZlIGJ5IGNhY2hpbmcgdGhlIHN0YWNrIGxpbWl0IG9uIHRo
ZQorICAgICAgICBJbnN0YW5jZSBpbiB0aGUgZmlyc3QgcGxhY2UpLiBUaGlzIGlzIHBvdGVudGlh
bGx5IGEgc21hbGwgcGVyZiBoaXQKKyAgICAgICAgb24gaW1wb3J0ZWQgZGlyZWN0IGNhbGxzLgor
CisgICAgICAgIEl0J3MgaGFyZCB0byBzYXkgd2hhdCB0aGUgcGVyZm9ybWFuY2UgY29zdCB3aWxs
IGJlIGJlY2F1c2Ugd2UKKyAgICAgICAgaGF2ZW4ndCBzZWVuIG11Y2ggY29kZSBpbiB0aGUgd2ls
ZCB3aGljaCBkb2VzIHRoaXMuIFdlJ3JlIGFkZGluZworICAgICAgICB0d28gZGVwZW5kZW50IGxv
YWRzIGFuZCBhIHN0b3JlIG9mIHRoZSBsb2FkZWQgdmFsdWUsIHdoaWNoIGlzCisgICAgICAgIHVu
bGlrZWx5IHRvIGdldCB1c2VkIHNvb24gYWZ0ZXIuIEl0J3MgbW9yZSBjb2RlLCBidXQgb24gYW4K
KyAgICAgICAgb3V0LW9mLW9yZGVyIHByb2Nlc3NvciBpdCBkb2Vzbid0IGNvbnRyaWJ1dGUgdG8g
dGhlIGNyaXRpY2FsIHBhdGguCisKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5
R2xvYmFsU3RhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRHcm93
TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6CisgICAg
ICAgICogd2FzbS9XYXNtSW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5j
ZTo6SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiB3YXNtL1dhc21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5j
ZTo6b2Zmc2V0T2ZBY3R1YWxTdGFja0xpbWl0UG9pbnRlcik6CisgICAgICAgIChKU0M6Oldhc206
Okluc3RhbmNlOjpjYWNoZWRTdGFja0xpbWl0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
SW5zdGFuY2U6OnNldENhY2hlZFN0YWNrTGltaXQpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNl
OjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKToKKwogMjAxNy0xMS0zMCAgTWlj
aGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBKU0MgY29t
bWFuZCBsaW5lIHRvb2wgdG8gYWNjZXB0IFVURjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCBjMDBlZWNhLi4yNjE1ZDhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBA
IC0yNDYsNyArMjQ2LDggQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IFdBUk5fVU5VU0VEX1JFVFVS
TiBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KEV4cHJlc3Npb25UeXBlJiwgdWludDMyX3QpOwogCiAg
ICAgdm9pZCByZXN0b3JlV2FzbUNvbnRleHRJbnN0YW5jZShQcm9jZWR1cmUmLCBCYXNpY0Jsb2Nr
KiwgVmFsdWUqKTsKLSAgICB2b2lkIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNvbnN0
IE1lbW9yeUluZm9ybWF0aW9uJiwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmLCBCYXNpY0Js
b2NrKik7CisgICAgZW51bSBjbGFzcyBSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCB7IE5vLCBZZXMg
fTsKKyAgICB2b2lkIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRT
dGFja0xpbWl0LCBjb25zdCBNZW1vcnlJbmZvcm1hdGlvbiYsIFZhbHVlKiBpbnN0YW5jZSwgUHJv
Y2VkdXJlJiwgQmFzaWNCbG9jayopOwogCiAgICAgT3JpZ2luIG9yaWdpbigpOwogCkBAIC00NTAs
MTAgKzQ1MSwxNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUlu
Zm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZQogICAgIGVtaXRUaWVyVXBDaGVj
ayhUaWVyVXBDb3VudDo6ZnVuY3Rpb25FbnRyeURlY3JlbWVudCgpLCBPcmlnaW4oKSk7CiB9CiAK
LXZvaWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoY29uc3Qg
TWVtb3J5SW5mb3JtYXRpb24mIG1lbW9yeSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHBy
b2MsIEJhc2ljQmxvY2sqIGJsb2NrKQordm9pZCBCM0lSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNz
ZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCByZXN0b3JlQ2FjaGVkU3Rh
Y2tMaW1pdCwgY29uc3QgTWVtb3J5SW5mb3JtYXRpb24mIG1lbW9yeSwgVmFsdWUqIGluc3RhbmNl
LCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIHJlc3RvcmVXYXNt
Q29udGV4dEluc3RhbmNlKHByb2MsIGJsb2NrLCBpbnN0YW5jZSk7CiAKKyAgICBpZiAocmVzdG9y
ZUNhY2hlZFN0YWNrTGltaXQgPT0gUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6OlllcykgeworICAg
ICAgICAvLyBUaGUgSW5zdGFuY2UgY2FjaGVzIHRoZSBzdGFjayBsaW1pdCwgYnV0IGFsc28ga25v
d3Mgd2hlcmUgaXRzIGNhbm9uaWNhbCBsb2NhdGlvbiBpcy4KKyAgICAgICAgVmFsdWUqIGFjdHVh
bFN0YWNrTGltaXRQb2ludGVyID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgaW5zdGFuY2VWYWx1ZSgp
LCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0T2ZBY3R1YWxTdGFja0xpbWl0UG9p
bnRlcigpKSk7CisgICAgICAgIFZhbHVlKiBhY3R1YWxTdGFja0xpbWl0ID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBv
cmlnaW4oKSwgYWN0dWFsU3RhY2tMaW1pdFBvaW50ZXIpOworICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIFN0b3JlLCBvcmlnaW4oKSwgYWN0dWFs
U3RhY2tMaW1pdCwgaW5zdGFuY2VWYWx1ZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6
b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0KCkpKTsKKyAgICB9CisKICAgICBpZiAoISFtZW1vcnkp
IHsKICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvKiBwaW5uZWRSZWdzID0gJlBpbm5l
ZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CiAgICAgICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJzOwpAQCAt
NTgzLDcgKzU5MSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNz
aW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKICAgICAgICAgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KGdyb3dNZW1vcnkpKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwgb3JpZ2luKCkpLCBpbnN0
YW5jZVZhbHVlKCksIGRlbHRhKTsKIAotICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRl
KG1faW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7
CisgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGlt
aXQ6Ok5vLCBtX2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVlKCksIG1fcHJvYywgbV9jdXJyZW50
QmxvY2spOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTExNDksNyArMTE1Nyw3IEBAIGF1dG8g
QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSwKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBjYWxsIGNvdWxk
IGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3Vs
ZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCi0gICAgICAgIHJlc3RvcmVXZWJBc3NlbWJseUds
b2JhbFN0YXRlKG1faW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwgbV9wcm9jLCBjb250aW51
YXRpb24pOworICAgICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2Fj
aGVkU3RhY2tMaW1pdDo6WWVzLCBtX2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVlKCksIG1fcHJv
YywgY29udGludWF0aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHQgPSB3YXNtQ2Fs
bGluZ0NvbnZlbnRpb24oKS5zZXR1cENhbGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgb3JpZ2lu
KCksIGFyZ3MsIHRvQjNUeXBlKHJldHVyblR5cGUpLAogICAgICAgICAgICAgWz1dIChQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQpIHsKQEAgLTEzMDgsNyArMTMxNiw3IEBAIGF1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0
b3I8RXhwcmVzc2lvCiAgICAgICAgIH0pOwogCiAgICAgLy8gVGhlIGNhbGwgY291bGQgaGF2ZSBi
ZWVuIHRvIGFub3RoZXIgV2ViQXNzZW1ibHkgaW5zdGFuY2UsIGFuZCAvIG9yIGNvdWxkIGhhdmUg
bW9kaWZpZWQgb3VyIE1lbW9yeS4KLSAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSht
X2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVlKCksIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwor
ICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0
OjpObywgbV9pbmZvLm1lbW9yeSwgaW5zdGFuY2VWYWx1ZSgpLCBtX3Byb2MsIG1fY3VycmVudEJs
b2NrKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUluc3RhbmNlLmNwcAppbmRleCAxNjY0ZDYyLi5iODg5MTMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAKQEAgLTQxLDExICs0MSwxMiBAQCBzaXpl
X3QgZ2xvYmFsTWVtb3J5Qnl0ZVNpemUoTW9kdWxlJiBtb2R1bGUpCiB9CiB9CiAKLUluc3RhbmNl
OjpJbnN0YW5jZShDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxlPiYmIG1vZHVsZSwgRW50cnlG
cmFtZSoqIHRvcEVudHJ5RnJhbWVQb2ludGVyLCBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNrJiYg
c3RvcmVUb3BDYWxsRnJhbWUpCitJbnN0YW5jZTo6SW5zdGFuY2UoQ29udGV4dCogY29udGV4dCwg
UmVmPE1vZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiB0b3BFbnRyeUZyYW1lUG9pbnRlciwg
dm9pZCoqIGFjdHVhbFN0YWNrTGltaXRQb2ludGVyLCBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNr
JiYgc3RvcmVUb3BDYWxsRnJhbWUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1f
bW9kdWxlKFdURk1vdmUobW9kdWxlKSkKICAgICAsIG1fZ2xvYmFscyhNYWxsb2NQdHI8dWludDY0
X3Q+OjptYWxsb2MoZ2xvYmFsTWVtb3J5Qnl0ZVNpemUobV9tb2R1bGUuZ2V0KCkpKSkKICAgICAs
IG1fdG9wRW50cnlGcmFtZVBvaW50ZXIodG9wRW50cnlGcmFtZVBvaW50ZXIpCisgICAgLCBtX2Fj
dHVhbFN0YWNrTGltaXRQb2ludGVyKGFjdHVhbFN0YWNrTGltaXRQb2ludGVyKQogICAgICwgbV9z
dG9yZVRvcENhbGxGcmFtZShXVEZNb3ZlKHN0b3JlVG9wQ2FsbEZyYW1lKSkKICAgICAsIG1fbnVt
SW1wb3J0RnVuY3Rpb25zKG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0
aW9uQ291bnQoKSkKIHsKQEAgLTUzLDkgKzU0LDkgQEAgSW5zdGFuY2U6Okluc3RhbmNlKENvbnRl
eHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9kdWxlLCBFbnRyeUZyYW1lKiogdG9wRW50cnkK
ICAgICAgICAgbmV3IChpbXBvcnRGdW5jdGlvbkluZm8oaSkpIEltcG9ydEZ1bmN0aW9uSW5mbygp
OwogfQogCi1SZWY8SW5zdGFuY2U+IEluc3RhbmNlOjpjcmVhdGUoQ29udGV4dCogY29udGV4dCwg
UmVmPE1vZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiB0b3BFbnRyeUZyYW1lUG9pbnRlciwg
U3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmIHN0b3JlVG9wQ2FsbEZyYW1lKQorUmVmPEluc3Rh
bmNlPiBJbnN0YW5jZTo6Y3JlYXRlKENvbnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9k
dWxlLCBFbnRyeUZyYW1lKiogdG9wRW50cnlGcmFtZVBvaW50ZXIsIHZvaWQqKiBhY3R1YWxTdGFj
a0xpbWl0UG9pbnRlciwgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmIHN0b3JlVG9wQ2FsbEZy
YW1lKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKGFs
bG9jYXRpb25TaXplKG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNv
dW50KCkpKSkgSW5zdGFuY2UoY29udGV4dCwgV1RGTW92ZShtb2R1bGUpLCB0b3BFbnRyeUZyYW1l
UG9pbnRlciwgV1RGTW92ZShzdG9yZVRvcENhbGxGcmFtZSkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhhbGxvY2F0aW9uU2l6ZShtb2R1bGUtPm1vZHVs
ZUluZm9ybWF0aW9uKCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpKSkpIEluc3RhbmNlKGNvbnRleHQs
IFdURk1vdmUobW9kdWxlKSwgdG9wRW50cnlGcmFtZVBvaW50ZXIsIGFjdHVhbFN0YWNrTGltaXRQ
b2ludGVyLCBXVEZNb3ZlKHN0b3JlVG9wQ2FsbEZyYW1lKSkpOwogfQogCiBJbnN0YW5jZTo6fklu
c3RhbmNlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCmlu
ZGV4IDI0YTdhMjQuLmVlNmEzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21J
bnN0YW5jZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEluc3RhbmNlIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgU3RvcmVUb3BD
YWxsRnJhbWVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh2b2lkKik+OwogCi0gICAgc3Rh
dGljIFJlZjxJbnN0YW5jZT4gY3JlYXRlKENvbnRleHQqLCBSZWY8TW9kdWxlPiYmLCBFbnRyeUZy
YW1lKiogdG9wRW50cnlGcmFtZVBvaW50ZXIsIFN0b3JlVG9wQ2FsbEZyYW1lQ2FsbGJhY2smJik7
CisgICAgc3RhdGljIFJlZjxJbnN0YW5jZT4gY3JlYXRlKENvbnRleHQqLCBSZWY8TW9kdWxlPiYm
LCBFbnRyeUZyYW1lKiogdG9wRW50cnlGcmFtZVBvaW50ZXIsIHZvaWQqKiBhY3R1YWxTdGFja0xp
bWl0UG9pbnRlciwgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmKTsKIAogICAgIHZvaWQgZmlu
YWxpemVDcmVhdGlvbih2b2lkKiBvd25lciwgUmVmPENvZGVCbG9jaz4mJiBjb2RlQmxvY2spCiAg
ICAgewpAQCAtODAsOSArODAsMTggQEAgcHVibGljOgogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZUYWJsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV90YWJsZSk7
IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVG9wRW50cnlGcmFtZVBvaW50ZXIoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fdG9wRW50cnlGcmFtZVBvaW50ZXIp
OyB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQWN0dWFsU3RhY2tMaW1pdFBvaW50
ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fYWN0dWFsU3RhY2tMaW1p
dFBvaW50ZXIpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZFN0YWNrTGlt
aXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkU3RhY2tMaW1p
dCk7IH0KLSAgICB2b2lkKiBjYWNoZWRTdGFja0xpbWl0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNo
ZWRTdGFja0xpbWl0OyB9Ci0gICAgdm9pZCBzZXRDYWNoZWRTdGFja0xpbWl0KHZvaWQqIGxpbWl0
KSB7IG1fY2FjaGVkU3RhY2tMaW1pdCA9IGxpbWl0OyB9CisgICAgdm9pZCogY2FjaGVkU3RhY2tM
aW1pdCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoKm1fYWN0dWFsU3RhY2tMaW1pdFBv
aW50ZXIgPT0gbV9jYWNoZWRTdGFja0xpbWl0KTsKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVkU3Rh
Y2tMaW1pdDsKKyAgICB9CisgICAgdm9pZCBzZXRDYWNoZWRTdGFja0xpbWl0KHZvaWQqIGxpbWl0
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCptX2FjdHVhbFN0YWNrTGltaXRQb2ludGVyID09IGxp
bWl0IHx8IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50cHRyX3Q+
OjptYXgoKSkgPT0gbGltaXQpOworICAgICAgICBtX2NhY2hlZFN0YWNrTGltaXQgPSBsaW1pdDsK
KyAgICB9CiAKICAgICAvLyBUYWlsIGFjY2Vzc29ycy4KICAgICBzdGF0aWMgc2l6ZV90IG9mZnNl
dE9mVGFpbCgpIHsgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YodWludDY0
X3QpPihzaXplb2YoSW5zdGFuY2UpKTsgfQpAQCAtMTExLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgSW5zdGFuY2UoQ29udGV4dCosIFJlZjxNb2R1bGU+JiYsIEVu
dHJ5RnJhbWUqKiwgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmKTsKKyAgICBJbnN0YW5jZShD
b250ZXh0KiwgUmVmPE1vZHVsZT4mJiwgRW50cnlGcmFtZSoqLCB2b2lkKiosIFN0b3JlVG9wQ2Fs
bEZyYW1lQ2FsbGJhY2smJik7CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6
ZShDaGVja2VkPHNpemVfdD4gbnVtSW1wb3J0RnVuY3Rpb25zKQogICAgIHsKQEAgLTEyNiw2ICsx
MzUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxUYWJsZT4gbV90YWJsZTsKICAgICBNYWxsb2NQ
dHI8dWludDY0X3Q+IG1fZ2xvYmFsczsKICAgICBFbnRyeUZyYW1lKiogbV90b3BFbnRyeUZyYW1l
UG9pbnRlciB7IG51bGxwdHIgfTsKKyAgICB2b2lkKiogbV9hY3R1YWxTdGFja0xpbWl0UG9pbnRl
ciB7IG51bGxwdHIgfTsKICAgICB2b2lkKiBtX2NhY2hlZFN0YWNrTGltaXQgeyBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludHB0cl90Pjo6bWF4KCkpIH07CiAgICAg
U3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayBtX3N0b3JlVG9wQ2FsbEZyYW1lOwogICAgIHVuc2ln
bmVkIG1fbnVtSW1wb3J0RnVuY3Rpb25zIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKaW5kZXggYmM2ZmYw
NC4uNWM5MTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywgSlMKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBvYmplY3RzIGNvdWxkIGJlIHBy
ZXR0eSBiaWcgd2Ugc2hvdWxkIHRyeSB0byB0aHJvdyBPT00gaGVyZS4KICAgICBhdXRvKiBqc0lu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseUluc3RhbmNl
Pih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseUluc3RhbmNlKHZtLCBpbnN0YW5jZVN0cnVjdHVyZSwg
Ci0gICAgICAgIFdhc206Okluc3RhbmNlOjpjcmVhdGUoJnZtLndhc21Db250ZXh0LCBXVEZNb3Zl
KG1vZHVsZSksICZ2bS50b3BFbnRyeUZyYW1lLCBXVEZNb3ZlKHN0b3JlVG9wQ2FsbEZyYW1lKSkp
OworICAgICAgICBXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92
ZShtb2R1bGUpLCAmdm0udG9wRW50cnlGcmFtZSwgdm0uYWRkcmVzc09mU29mdFN0YWNrTGltaXQo
KSwgV1RGTW92ZShzdG9yZVRvcENhbGxGcmFtZSkpKTsKICAgICBqc0luc3RhbmNlLT5maW5pc2hD
cmVhdGlvbih2bSwganNNb2R1bGUsIG1vZHVsZU5hbWVzcGFjZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCAxYzI0ZDk2Li5l
OWNjMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMTUwLDcgKzE1MCw5IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgLy8gVGhpcyBpcyBqdXN0IGZvciBzb21lIGV4dHJhIHNhZmV0eSBpbnN0ZWFk
IG9mIGxlYXZpbmcgYSBjYWNoZWQKICAgICAgICAgLy8gdmFsdWUgaW4gdGhlcmUuIElmIHdlIGV2
ZXIgZm9yZ2V0IHRvIHNldCB0aGUgdmFsdWUgdG8gYmUgYSByZWFsCiAgICAgICAgIC8vIGJvdW5k
cywgdGhpcyB3aWxsIGZvcmNlIGV2ZXJ5IHN0YWNrIG92ZXJmbG93IGNoZWNrIHRvIGltbWVkaWF0
ZWx5Ci0gICAgICAgIC8vIGZpcmUuCisgICAgICAgIC8vIGZpcmUuIFRoZSBzdGFjayBsaW1pdCBu
ZXZlciBjaGFuZ2VzIHdoaWxlIGV4ZWN1dGluZyBleGNlcHQgd2hlbgorICAgICAgICAvLyBXZWJB
c3NlbWJseSBpcyB1c2VkIHRocm91Z2ggdGhlIEpTQyBBUEk6IEFQSSB1c2VycyBjYW4gYXNrIHRo
ZSBjb2RlCisgICAgICAgIC8vIHRvIG1pZ3JhdGUgdGhyZWFkcy4KICAgICAgICAgd2FzbUluc3Rh
bmNlLT5zZXRDYWNoZWRTdGFja0xpbWl0KGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50cHRyX3Q+OjptYXgoKSkpOwogICAgIH0KICAgICB2bS53YXNtQ29udGV4dC5z
dG9yZShwcmV2V2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKLS0gCjIuOS4zCgo=
</data>
<flag name="review"
          id="347240"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="347241"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328139</attachid>
            <date>2017-12-01 12:53:28 -0800</date>
            <delta_ts>2017-12-01 13:58:39 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-restore-cached-stack-limit-after-out-cal.patch</filename>
            <type>text/plain</type>
            <size>21890</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAxNWJjNDkxNWY1YTM2Y2MwMDg4NDZjMzdkYmVmNTYzYjYxOWNjYTM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDMwIE5vdiAyMDE3IDExOjExOjUwIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHk6IHJlc3RvcmUgY2FjaGVkIHN0YWNrIGxpbWl0IGFmdGVyIG91dC1jYWxsCgotLS0KIEpT
VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIgKysr
KwogSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2RvdWJsZS1pbnN0YW5jZS5qcyAgICAgfCA2
NCArKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKwogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwICAgfCAxOCArKysrLS0KIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAgICAgICAgIHwgIDkgKy0tCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaCAgICAgICAgICB8IDIyICsr
KysrKy0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGh1bmtzLmNwcCAgICAgICAg
ICB8ICAyICstCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwICAgICAgICAg
ICAgICB8ICAyICstCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcCB8ICA0ICstCiA5IGZpbGVzIGNoYW5nZWQsIDE2OSBpbnNlcnRpb25zKCspLCAxOCBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVz
dHMvZG91YmxlLWluc3RhbmNlLmpzCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCA0NmZlMTMwLi5lMzQwNDI5IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE3LTExLTMwICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWJBc3NlbWJseTogcmVzdG9yZSBjYWNoZWQgc3RhY2sgbGltaXQgYWZ0ZXIgb3V0LWNhbGwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTEwNgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzUzMzc1MjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Fh
bSBCYXJhdGkuCisKKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3RzL2RvdWJsZS1pbnN0YW5j
ZS5qczogQWRkZWQuCisgICAgICAgIChjb25zdC5pbXAuYm9vbSk6CisgICAgICAgIChjb25zdC5p
bXAuZ2V0IGNhbGxBbm90aGVyKToKKwogMjAxNy0xMS0yOCAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyaWN0IGFuZCBzbG9wcHkgZnVuY3Rpb25zIHNob3Vs
ZG4ndCBzaGFyZSBzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10
ZXN0cy9kb3VibGUtaW5zdGFuY2UuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvZG91
YmxlLWluc3RhbmNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNGVh
ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvZG91Ymxl
LWluc3RhbmNlLmpzCkBAIC0wLDAgKzEsNjQgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1
aWxkZXIuanMnCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJworCisvLyBU
aGUgY2FsbCBzZXF1ZW5jZSBpcyBhcyBmb2xsb3dzOgorLy8KKy8vIGpzIC1qczJ3YXNtLT4gaTEu
Y2FsbEFub3RoZXIoKQorLy8gICAgICAgICAgICAgICAtd2FzbTJ3YXNtLT4gaTAuY2FsbEFub3Ro
ZXIoKQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLXdhc20yanMtPiBpMS5ib29tKCkK
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWNhbGxkaXJlY3QtPiBp
MS5kb1N0YWNrQ2hlY2soKQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC1jYWxsZGlyZWN0LT4gZHVtbXkoKQorLy8gICAgICAgICAgICAgICAt
Y2FsbGRpcmVjdC0+IGkxLmRvU3RhY2tDaGVjaygpCisvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLWNhbGxkaXJlY3QtPiBkdW1teSgpCisvLworLy8gV2UgdGhlcmVmb3JlIGhhdmUgaTEg
aW5kaXJlY3RseSBjYWxsaW5nIGludG8gaXRzZWxmLCB0aHJvdWdoIGFub3RoZXIKKy8vIGluc3Rh
bmNlLiBXaGVuIHJldHVybmluZyBpdHMgY2FjaGVkIHN0YWNrIGxpbWl0IHNob3VsZCBzdGlsbCBi
ZSB2YWxpZCwgYnV0CisvLyBvdXIgaW1wbGVtZW50YXRpb24gdXNlZCB0byBzZXQgaXQgdG8gVUlO
VFBUUl9NQVggY2F1c2luZyBhbiBlcnJvbmVvdXMgc3RhY2sKKy8vIGNoZWNrIGZhaWx1cmUgYXQg
dGhlIHNlY29uZCBkb1N0YWNrQ2hlY2soKSBjYWxsLgorCitjb25zdCBidWlsZGVyID0gbmV3IEJ1
aWxkZXIoKQorICAgIC5UeXBlKCkKKyAgICAuRW5kKCkKKyAgICAuSW1wb3J0KCkKKyAgICAgICAg
LkZ1bmN0aW9uKCJpbXAiLCAiYm9vbSIsIHtwYXJhbXM6WyJpMzIiLCAiaTMyIiwgImkzMiIsICJp
MzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkz
MiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMy
IiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIi
LCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIs
ICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiXSwgcmV0OiJpMzIifSkKKyAgICAgICAgLkZ1bmN0
aW9uKCJpbXAiLCAiY2FsbEFub3RoZXIiLCB7cGFyYW1zOlsiaTMyIl0sIHJldDoiaTMyIn0pCisg
ICAgLkVuZCgpCisgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAuRXhwb3J0KCkKKyAgICAgICAg
LkZ1bmN0aW9uKCJib29tIikKKyAgICAgICAgLkZ1bmN0aW9uKCJjYWxsQW5vdGhlciIpCisgICAg
LkVuZCgpCisgICAgLkNvZGUoKQorICAgICAgICAuRnVuY3Rpb24oImJvb20iLCB7cGFyYW1zOlsi
aTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJp
MzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkz
MiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMy
IiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIi
LCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIl0sIHJldDoi
aTMyIn0pCisgICAgICAgICAgICAvKiBjYWxsIGRvU3RhY2tDaGVjayAqLy5HZXRMb2NhbCgwKS5H
ZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgw
KS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2Nh
bCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRM
b2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5H
ZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgw
KS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2Nh
bCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRM
b2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5H
ZXRMb2NhbCgwKS5DYWxsKDQpCisgICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgLkVuZCgp
CisgICAgICAgIC5GdW5jdGlvbigiY2FsbEFub3RoZXIiLCB7cGFyYW1zOlsiaTMyIl0sIHJldDoi
aTMyIn0pCisgICAgICAgICAgICAvKiBjYWxsIGltcDpjYWxsQW5vdGhlciAqLy5HZXRMb2NhbCgw
KS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2Nh
bCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRM
b2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5H
ZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgw
KS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2Nh
bCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRM
b2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5H
ZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgw
KS5HZXRMb2NhbCgwKS5DYWxsKDEpCisgICAgICAgICAgICAvKiBjYWxsIGRvU3RhY2tDaGVjayAq
Ly5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2Nh
bCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRM
b2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5H
ZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgw
KS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2Nh
bCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRM
b2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5H
ZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgw
KS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5DYWxsKDQpCisgICAgICAgICAgICAuUmV0dXJuKCkK
KyAgICAgICAgLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigiZG9TdGFja0NoZWNrIiwge3BhcmFt
czpbImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIi
LCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIs
ICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwg
ImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAi
aTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiJdLCBy
ZXQ6ImkzMiJ9KQorICAgICAgICAgICAgLyogY2FsbCBkdW1teSAqLy5HZXRMb2NhbCgwKS5HZXRM
b2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5H
ZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgw
KS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2Nh
bCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRM
b2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5H
ZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgw
KS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2Nh
bCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRMb2NhbCgwKS5HZXRM
b2NhbCgwKS5DYWxsKDUpCisgICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgLkVuZCgpCisg
ICAgICAgIC5GdW5jdGlvbigiZHVtbXkiLCB7cGFyYW1zOlsiaTMyIiwgImkzMiIsICJpMzIiLCAi
aTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJp
MzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkz
MiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMy
IiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIi
LCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIl0sIHJldDoiaTMyIn0pCisgICAgICAgICAgICAu
R2V0TG9jYWwoMCkKKyAgICAgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAuRW5kKCkKKyAgICAu
RW5kKCk7CisKK2NvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKK2NvbnN0
IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKworbGV0IGkxOworCitjb25z
dCBpbXAgPSB7CisgICAgYm9vbTogKCkgPT4geyB0aHJvdyBuZXcgRXJyb3IoYFRoaXMgYm9vbSBz
aG91bGQgbm90IGdldCBjYWxsZWQhYCk7IH0sCisgICAgY2FsbEFub3RoZXI6ICgpID0+IHsgaTEu
ZXhwb3J0c1siYm9vbSJdKDB4ZGVhZGJlZWYpOyB9LAorfQorCitjb25zdCBpMCA9IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wIH0pOworaTEgPSBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlLCB7IGltcDogaTAuZXhwb3J0cyB9KTsKKworaTEuZXhwb3J0c1siY2Fs
bEFub3RoZXIiXSgweGMwZGVmZWZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDk2ZTBj
ZTAuLjkyMTFmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisy
MDE3LTExLTMwICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWJBc3NlbWJseTogcmVzdG9yZSBjYWNoZWQgc3RhY2sgbGltaXQgYWZ0ZXIgb3V0LWNhbGwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTEwNgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzUzMzc1MjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Fh
bSBCYXJhdGkuCisKKyAgICAgICAgV2UgY2FjaGUgdGhlIHN0YWNrIGxpbWl0IG9uIHRoZSBJbnN0
YW5jZSBzbyB0aGF0IHdlIGNhbiBkbyBmYXN0CisgICAgICAgIHN0YWNrIGNoZWNrcyB3aGVyZSBy
ZXF1aXJlZC4gSW4gcmVndWxhciB1c2FnZSB0aGUgc3RhY2sgbGltaXQKKyAgICAgICAgbmV2ZXIg
Y2hhbmdlcyBiZWNhdXNlIHdlIGFsd2F5cyBydW4gb24gdGhlIHNhbWUgdGhyZWFkLCBidXQgaW4K
KyAgICAgICAgcmFyZSBjYXNlcyBhbiBBUEkgdXNlciBjYW4gdG90YWxseSBtaWdyYXRlIHdoaWNo
IHRocmVhZCAoYW5kCisgICAgICAgIHRoZXJlZm9yZSBzdGFjaykgaXMgdXNlZCBmb3IgZXhlY3V0
aW9uIGJldHdlZW4gV2ViQXNzZW1ibHkKKyAgICAgICAgdHJhY2VzLiBGb3IgdGhhdCByZWFzb24g
d2Ugc2V0IHRoZSBjYWNoZWQgc3RhY2sgbGltaXQgdG8KKyAgICAgICAgVUlOVFBUUl9NQVggb24g
dGhlIG91dGdvaW5nIEluc3RhbmNlIHdoZW4gdHJhbnNpdGlvbmluZyBiYWNrIGludG8KKyAgICAg
ICAgYSBkaWZmZXJlbnQgSW5zdGFuY2UuIFdlIHVzdWFsbHkgcmVzdG9yZSB0aGUgY2FjaGVkIHN0
YWNrIGxpbWl0IGluCisgICAgICAgIENvbnRleHQ6OnN0b3JlLCBidXQgdGhpcyB3YXNuJ3QgY2Fs
bGVkIG9uIGFsbCBjb2RlIHBhdGhzLiBXZSBoYWQgYQorICAgICAgICBidWcgd2hlcmUgYW4gSW5z
dGFuY2UgY2FsbGluZyBpbnRvIGl0c2VsZiBpbmRpcmVjdGx5IHdvdWxkCisgICAgICAgIHRoZXJl
Zm9yZSBmYWlsIHRvIHJlc3RvcmUgaXRzIGNhY2hlZCBzdGFjayBsaW1pdCBwcm9wZXJseS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIHRoZXJlZm9yZSByZXN0b3JlcyB0aGUgY2FjaGVkIHN0YWNrIGxp
bWl0IGFmdGVyIGRpcmVjdAorICAgICAgICBjYWxscyB3aGljaCBjb3VsZCBiZSB0byBpbXBvcnRz
IChib3RoIHdhc20tPndhc20gYW5kCisgICAgICAgIHdhc20tPmVtYmVkZGVyKS4gV2UgaGF2ZSB0
byBkbyBhbGwgb2YgdGhlbSBiZWNhdXNlIHdlIGhhdmUgbm8gd2F5CisgICAgICAgIG9mIGtub3dp
bmcgd2hhdCBpbXBvcnRzIHdpbGwgZG8gKHRoZXkncmUga25vd24gYXQgaW5zdGFudGlhdGlvbgor
ICAgICAgICB0aW1lLCBub3QgY29tcGlsYXRpb24gdGltZSwgYW5kIGRpZmZlcmVudCBpbnN0YW5j
ZXMgY2FuIGhhdmUKKyAgICAgICAgZGlmZmVyZW50IGltcG9ydHMpLiBUbyBtYWtlIHRoaXMgZWZm
aWNpZW50IHdlIGFsc28gYWRkIGEgcG9pbnRlcgorICAgICAgICB0byB0aGUgY2Fub25pY2FsIGxv
Y2F0aW9uIG9mIHRoZSBzdGFjayBsaW1pdCAoaS5lLiB0aGUgZXh0cmEKKyAgICAgICAgaW5kaXJl
Y3Rpb24gd2UncmUgdHJ5aW5nIHRvIHNhdmUgYnkgY2FjaGluZyB0aGUgc3RhY2sgbGltaXQgb24g
dGhlCisgICAgICAgIEluc3RhbmNlIGluIHRoZSBmaXJzdCBwbGFjZSkuIFRoaXMgaXMgcG90ZW50
aWFsbHkgYSBzbWFsbCBwZXJmIGhpdAorICAgICAgICBvbiBpbXBvcnRlZCBkaXJlY3QgY2FsbHMu
CisKKyAgICAgICAgSXQncyBoYXJkIHRvIHNheSB3aGF0IHRoZSBwZXJmb3JtYW5jZSBjb3N0IHdp
bGwgYmUgYmVjYXVzZSB3ZQorICAgICAgICBoYXZlbid0IHNlZW4gbXVjaCBjb2RlIGluIHRoZSB3
aWxkIHdoaWNoIGRvZXMgdGhpcy4gV2UncmUgYWRkaW5nCisgICAgICAgIHR3byBkZXBlbmRlbnQg
bG9hZHMgYW5kIGEgc3RvcmUgb2YgdGhlIGxvYWRlZCB2YWx1ZSwgd2hpY2ggaXMKKyAgICAgICAg
dW5saWtlbHkgdG8gZ2V0IHVzZWQgc29vbiBhZnRlci4gSXQncyBtb3JlIGNvZGUsIGJ1dCBvbiBh
bgorICAgICAgICBvdXQtb2Ytb3JkZXIgcHJvY2Vzc29yIGl0IGRvZXNuJ3QgY29udHJpYnV0ZSB0
byB0aGUgY3JpdGljYWwgcGF0aC4KKworICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1i
bHlHbG9iYWxTdGF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZEdy
b3dNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDYWxsKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAg
ICAgICAgKiB3YXNtL1dhc21JbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Okluc3Rh
bmNlOjpJbnN0YW5jZSk6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpjcmVhdGUpOgor
ICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6Oldhc206Okluc3Rh
bmNlOjpvZmZzZXRPZlBvaW50ZXJUb0FjdHVhbFN0YWNrTGltaXQpOgorICAgICAgICAoSlNDOjpX
YXNtOjpJbnN0YW5jZTo6Y2FjaGVkU3RhY2tMaW1pdCBjb25zdCk6CisgICAgICAgIChKU0M6Oldh
c206Okluc3RhbmNlOjpzZXRDYWNoZWRTdGFja0xpbWl0KToKKyAgICAgICAgKiB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0
YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
OgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMTctMTEtMzAg
IE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgSlND
IGNvbW1hbmQgbGluZSB0b29sIHRvIGFjY2VwdCBVVEY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggYzAwZWVjYS4uYTJiODEzZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cApAQCAtMjQ2LDcgKzI0Niw4IEBAIHByaXZhdGU6CiAgICAgaW50MzJfdCBXQVJOX1VOVVNFRF9S
RVRVUk4gZml4dXBQb2ludGVyUGx1c09mZnNldChFeHByZXNzaW9uVHlwZSYsIHVpbnQzMl90KTsK
IAogICAgIHZvaWQgcmVzdG9yZVdhc21Db250ZXh0SW5zdGFuY2UoUHJvY2VkdXJlJiwgQmFzaWNC
bG9jayosIFZhbHVlKik7Ci0gICAgdm9pZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShj
b25zdCBNZW1vcnlJbmZvcm1hdGlvbiYsIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiwgQmFz
aWNCbG9jayopOworICAgIGVudW0gY2xhc3MgUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQgeyBObywg
WWVzIH07CisgICAgdm9pZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2Fj
aGVkU3RhY2tMaW1pdCwgY29uc3QgTWVtb3J5SW5mb3JtYXRpb24mLCBWYWx1ZSogaW5zdGFuY2Us
IFByb2NlZHVyZSYsIEJhc2ljQmxvY2sqKTsKIAogICAgIE9yaWdpbiBvcmlnaW4oKTsKIApAQCAt
NDUwLDEwICs0NTEsMTcgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihjb25zdCBNb2R1
bGVJbmZvcm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwcm9jZWR1cmUKICAgICBlbWl0VGllclVw
Q2hlY2soVGllclVwQ291bnQ6OmZ1bmN0aW9uRW50cnlEZWNyZW1lbnQoKSwgT3JpZ2luKCkpOwog
fQogCi12b2lkIEIzSVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNv
bnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJl
JiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKK3ZvaWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdl
YkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQgcmVzdG9yZUNhY2hl
ZFN0YWNrTGltaXQsIGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcnksIFZhbHVlKiBpbnN0
YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICByZXN0b3Jl
V2FzbUNvbnRleHRJbnN0YW5jZShwcm9jLCBibG9jaywgaW5zdGFuY2UpOwogCisgICAgaWYgKHJl
c3RvcmVDYWNoZWRTdGFja0xpbWl0ID09IFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0OjpZZXMpIHsK
KyAgICAgICAgLy8gVGhlIEluc3RhbmNlIGNhY2hlcyB0aGUgc3RhY2sgbGltaXQsIGJ1dCBhbHNv
IGtub3dzIHdoZXJlIGl0cyBjYW5vbmljYWwgbG9jYXRpb24gaXMuCisgICAgICAgIFZhbHVlKiBw
b2ludGVyVG9BY3R1YWxTdGFja0xpbWl0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgaW5zdGFuY2VW
YWx1ZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihJbnN0YW5jZTo6b2Zmc2V0T2ZQb2ludGVyVG9BY3R1
YWxTdGFja0xpbWl0KCkpKTsKKyAgICAgICAgVmFsdWUqIGFjdHVhbFN0YWNrTGltaXQgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJU
eXBlKCksIG9yaWdpbigpLCBwb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0KTsKKyAgICAgICAgbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZSwgb3JpZ2lu
KCksIGFjdHVhbFN0YWNrTGltaXQsIGluc3RhbmNlVmFsdWUoKSwgc2FmZUNhc3Q8aW50MzJfdD4o
SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSk7CisgICAgfQorCiAgICAgaWYg
KCEhbWVtb3J5KSB7CiAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyogcGlubmVkUmVn
cyA9ICZQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAgICAgICBSZWdpc3RlclNldCBjbG9i
YmVyczsKQEAgLTU4Myw3ICs1OTEsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1v
cnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4o
KSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93TWVtb3J5KSksCiAgICAgICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIG9yaWdp
bigpKSwgaW5zdGFuY2VWYWx1ZSgpLCBkZWx0YSk7CiAKLSAgICByZXN0b3JlV2ViQXNzZW1ibHlH
bG9iYWxTdGF0ZShtX2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVlKCksIG1fcHJvYywgbV9jdXJy
ZW50QmxvY2spOworICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNo
ZWRTdGFja0xpbWl0OjpObywgbV9pbmZvLm1lbW9yeSwgaW5zdGFuY2VWYWx1ZSgpLCBtX3Byb2Ms
IG1fY3VycmVudEJsb2NrKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0xMTQ5LDcgKzExNTcs
NyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwg
Y29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUg
Y2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBXZWJBc3NlbWJseSBpbnN0YW5jZSwgYW5k
IC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVtb3J5LgotICAgICAgICByZXN0b3JlV2Vi
QXNzZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVlKCksIG1fcHJv
YywgY29udGludWF0aW9uKTsKKyAgICAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUo
UmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6OlllcywgbV9pbmZvLm1lbW9yeSwgaW5zdGFuY2VWYWx1
ZSgpLCBtX3Byb2MsIGNvbnRpbnVhdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmVzdWx0
ID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBDYWxsKG1fcHJvYywgbV9jdXJyZW50Qmxv
Y2ssIG9yaWdpbigpLCBhcmdzLCB0b0IzVHlwZShyZXR1cm5UeXBlKSwKICAgICAgICAgICAgIFs9
XSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7CkBAIC0xMzA4LDcgKzEzMTYsNyBAQCBh
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogICAgICAgICB9KTsKIAogICAgIC8vIFRoZSBjYWxsIGNv
dWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBj
b3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCi0gICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xv
YmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgaW5zdGFuY2VWYWx1ZSgpLCBtX3Byb2MsIG1fY3VycmVu
dEJsb2NrKTsKKyAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVk
U3RhY2tMaW1pdDo6WWVzLCBtX2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVlKCksIG1fcHJvYywg
bV9jdXJyZW50QmxvY2spOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCmluZGV4IDE2NjRkNjIuLmRjYmFhMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcApAQCAtNDEsMTEgKzQx
LDEyIEBAIHNpemVfdCBnbG9iYWxNZW1vcnlCeXRlU2l6ZShNb2R1bGUmIG1vZHVsZSkKIH0KIH0K
IAotSW5zdGFuY2U6Okluc3RhbmNlKENvbnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9k
dWxlLCBFbnRyeUZyYW1lKiogdG9wRW50cnlGcmFtZVBvaW50ZXIsIFN0b3JlVG9wQ2FsbEZyYW1l
Q2FsbGJhY2smJiBzdG9yZVRvcENhbGxGcmFtZSkKK0luc3RhbmNlOjpJbnN0YW5jZShDb250ZXh0
KiBjb250ZXh0LCBSZWY8TW9kdWxlPiYmIG1vZHVsZSwgRW50cnlGcmFtZSoqIHBvaW50ZXJUb1Rv
cEVudHJ5RnJhbWUsIHZvaWQqKiBwb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0LCBTdG9yZVRvcENh
bGxGcmFtZUNhbGxiYWNrJiYgc3RvcmVUb3BDYWxsRnJhbWUpCiAgICAgOiBtX2NvbnRleHQoY29u
dGV4dCkKICAgICAsIG1fbW9kdWxlKFdURk1vdmUobW9kdWxlKSkKICAgICAsIG1fZ2xvYmFscyhN
YWxsb2NQdHI8dWludDY0X3Q+OjptYWxsb2MoZ2xvYmFsTWVtb3J5Qnl0ZVNpemUobV9tb2R1bGUu
Z2V0KCkpKSkKLSAgICAsIG1fdG9wRW50cnlGcmFtZVBvaW50ZXIodG9wRW50cnlGcmFtZVBvaW50
ZXIpCisgICAgLCBtX3BvaW50ZXJUb1RvcEVudHJ5RnJhbWUocG9pbnRlclRvVG9wRW50cnlGcmFt
ZSkKKyAgICAsIG1fcG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdChwb2ludGVyVG9BY3R1YWxTdGFj
a0xpbWl0KQogICAgICwgbV9zdG9yZVRvcENhbGxGcmFtZShXVEZNb3ZlKHN0b3JlVG9wQ2FsbEZy
YW1lKSkKICAgICAsIG1fbnVtSW1wb3J0RnVuY3Rpb25zKG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1h
dGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKSkKIHsKQEAgLTUzLDkgKzU0LDkgQEAgSW5zdGFu
Y2U6Okluc3RhbmNlKENvbnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9kdWxlLCBFbnRy
eUZyYW1lKiogdG9wRW50cnkKICAgICAgICAgbmV3IChpbXBvcnRGdW5jdGlvbkluZm8oaSkpIElt
cG9ydEZ1bmN0aW9uSW5mbygpOwogfQogCi1SZWY8SW5zdGFuY2U+IEluc3RhbmNlOjpjcmVhdGUo
Q29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiB0b3BF
bnRyeUZyYW1lUG9pbnRlciwgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmIHN0b3JlVG9wQ2Fs
bEZyYW1lKQorUmVmPEluc3RhbmNlPiBJbnN0YW5jZTo6Y3JlYXRlKENvbnRleHQqIGNvbnRleHQs
IFJlZjxNb2R1bGU+JiYgbW9kdWxlLCBFbnRyeUZyYW1lKiogcG9pbnRlclRvVG9wRW50cnlGcmFt
ZSwgdm9pZCoqIHBvaW50ZXJUb0FjdHVhbFN0YWNrTGltaXQsIFN0b3JlVG9wQ2FsbEZyYW1lQ2Fs
bGJhY2smJiBzdG9yZVRvcENhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAo
Tm90TnVsbCwgZmFzdE1hbGxvYyhhbGxvY2F0aW9uU2l6ZShtb2R1bGUtPm1vZHVsZUluZm9ybWF0
aW9uKCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpKSkpIEluc3RhbmNlKGNvbnRleHQsIFdURk1vdmUo
bW9kdWxlKSwgdG9wRW50cnlGcmFtZVBvaW50ZXIsIFdURk1vdmUoc3RvcmVUb3BDYWxsRnJhbWUp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoYWxsb2Nh
dGlvblNpemUobW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQo
KSkpKSBJbnN0YW5jZShjb250ZXh0LCBXVEZNb3ZlKG1vZHVsZSksIHBvaW50ZXJUb1RvcEVudHJ5
RnJhbWUsIHBvaW50ZXJUb0FjdHVhbFN0YWNrTGltaXQsIFdURk1vdmUoc3RvcmVUb3BDYWxsRnJh
bWUpKSk7CiB9CiAKIEluc3RhbmNlOjp+SW5zdGFuY2UoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUluc3RhbmNlLmgKaW5kZXggMjRhN2EyNC4uMmMwODAwMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xh
c3MgSW5zdGFuY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW5zdGFuY2U+IHsKIHB1
YmxpYzoKICAgICB1c2luZyBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlv
bjx2b2lkKHZvaWQqKT47CiAKLSAgICBzdGF0aWMgUmVmPEluc3RhbmNlPiBjcmVhdGUoQ29udGV4
dCosIFJlZjxNb2R1bGU+JiYsIEVudHJ5RnJhbWUqKiB0b3BFbnRyeUZyYW1lUG9pbnRlciwgU3Rv
cmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmKTsKKyAgICBzdGF0aWMgUmVmPEluc3RhbmNlPiBjcmVh
dGUoQ29udGV4dCosIFJlZjxNb2R1bGU+JiYsIEVudHJ5RnJhbWUqKiBwb2ludGVyVG9Ub3BFbnRy
eUZyYW1lLCB2b2lkKiogcG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdCwgU3RvcmVUb3BDYWxsRnJh
bWVDYWxsYmFjayYmKTsKIAogICAgIHZvaWQgZmluYWxpemVDcmVhdGlvbih2b2lkKiBvd25lciwg
UmVmPENvZGVCbG9jaz4mJiBjb2RlQmxvY2spCiAgICAgewpAQCAtNzgsMTEgKzc4LDIwIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTWVtb3J5KCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX21lbW9yeSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mR2xvYmFscygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV9n
bG9iYWxzKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZUYWJsZSgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihJbnN0YW5jZSwgbV90YWJsZSk7IH0KLSAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mVG9wRW50cnlGcmFtZVBvaW50ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSW5zdGFuY2UsIG1fdG9wRW50cnlGcmFtZVBvaW50ZXIpOyB9CisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZlBvaW50ZXJUb1RvcEVudHJ5RnJhbWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSW5zdGFuY2UsIG1fcG9pbnRlclRvVG9wRW50cnlGcmFtZSk7IH0KIAorICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQb2ludGVyVG9BY3R1YWxTdGFja0xpbWl0KCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEluc3RhbmNlLCBtX3BvaW50ZXJUb0FjdHVhbFN0YWNrTGltaXQpOyB9
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZFN0YWNrTGltaXQoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSW5zdGFuY2UsIG1fY2FjaGVkU3RhY2tMaW1pdCk7IH0KLSAgICB2
b2lkKiBjYWNoZWRTdGFja0xpbWl0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTdGFja0xpbWl0
OyB9Ci0gICAgdm9pZCBzZXRDYWNoZWRTdGFja0xpbWl0KHZvaWQqIGxpbWl0KSB7IG1fY2FjaGVk
U3RhY2tMaW1pdCA9IGxpbWl0OyB9CisgICAgdm9pZCogY2FjaGVkU3RhY2tMaW1pdCgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQoKm1fcG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdCA9PSBt
X2NhY2hlZFN0YWNrTGltaXQpOworICAgICAgICByZXR1cm4gbV9jYWNoZWRTdGFja0xpbWl0Owor
ICAgIH0KKyAgICB2b2lkIHNldENhY2hlZFN0YWNrTGltaXQodm9pZCogbGltaXQpCisgICAgewor
ICAgICAgICBBU1NFUlQoKm1fcG9pbnRlclRvQWN0dWFsU3RhY2tMaW1pdCA9PSBsaW1pdCB8fCBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludHB0cl90Pjo6bWF4KCkp
ID09IGxpbWl0KTsKKyAgICAgICAgbV9jYWNoZWRTdGFja0xpbWl0ID0gbGltaXQ7CisgICAgfQog
CiAgICAgLy8gVGFpbCBhY2Nlc3NvcnMuCiAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlRhaWwo
KSB7IHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVpbnQ2NF90KT4oc2l6
ZW9mKEluc3RhbmNlKSk7IH0KQEAgLTExMSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIEluc3RhbmNlKENvbnRleHQqLCBSZWY8TW9kdWxlPiYmLCBFbnRyeUZyYW1l
KiosIFN0b3JlVG9wQ2FsbEZyYW1lQ2FsbGJhY2smJik7CisgICAgSW5zdGFuY2UoQ29udGV4dCos
IFJlZjxNb2R1bGU+JiYsIEVudHJ5RnJhbWUqKiwgdm9pZCoqLCBTdG9yZVRvcENhbGxGcmFtZUNh
bGxiYWNrJiYpOwogICAgIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tl
ZDxzaXplX3Q+IG51bUltcG9ydEZ1bmN0aW9ucykKICAgICB7CkBAIC0xMjUsNyArMTM0LDggQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8TWVtb3J5PiBtX21lbW9yeTsKICAgICBSZWZQdHI8VGFibGU+
IG1fdGFibGU7CiAgICAgTWFsbG9jUHRyPHVpbnQ2NF90PiBtX2dsb2JhbHM7Ci0gICAgRW50cnlG
cmFtZSoqIG1fdG9wRW50cnlGcmFtZVBvaW50ZXIgeyBudWxscHRyIH07CisgICAgRW50cnlGcmFt
ZSoqIG1fcG9pbnRlclRvVG9wRW50cnlGcmFtZSB7IG51bGxwdHIgfTsKKyAgICB2b2lkKiogbV9w
b2ludGVyVG9BY3R1YWxTdGFja0xpbWl0IHsgbnVsbHB0ciB9OwogICAgIHZvaWQqIG1fY2FjaGVk
U3RhY2tMaW1pdCB7IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50
cHRyX3Q+OjptYXgoKSkgfTsKICAgICBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNrIG1fc3RvcmVU
b3BDYWxsRnJhbWU7CiAgICAgdW5zaWduZWQgbV9udW1JbXBvcnRGdW5jdGlvbnMgeyAwIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGh1bmtzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVua3MuY3BwCmluZGV4IGViYTZmNTQuLjNk
MTQzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVua3Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVua3MuY3BwCkBAIC00
Nyw3ICs0Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNt
VGh1bmtHZW5lcmF0b3IoY29uc3QgQWJzdHJhY3RMb2NrZXImCiAgICAgLy8gVGhlIHRoaW5nIHRo
YXQganVtcHMgaGVyZSBtdXN0IG1vdmUgRXhjZXB0aW9uVHlwZSBpbnRvIHRoZSBhcmd1bWVudEdQ
UjEgYmVmb3JlIGp1bXBpbmcgaGVyZS4KICAgICAvLyBXZSdyZSBhbGxvd2VkIHRvIHVzZSB0ZW1w
IHJlZ2lzdGVycyBoZXJlLiBXZSBhcmUgbm90IGFsbG93ZWQgdG8gdXNlIGNhbGxlZSBzYXZlcy4K
ICAgICBqaXQubG9hZFdhc21Db250ZXh0SW5zdGFuY2UoR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsK
LSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRH
UFIyLCBJbnN0YW5jZTo6b2Zmc2V0T2ZUb3BFbnRyeUZyYW1lUG9pbnRlcigpKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6YXJndW1lbnRHUFIyLCBJbnN0YW5jZTo6b2Zmc2V0T2ZQb2ludGVyVG9Ub3BFbnRyeUZy
YW1lKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjApLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwogICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cihHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKaW5kZXggYmM2
ZmYwNC4uNWM5MTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgSlNXZWJB
c3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4
ZWNTdGF0ZSogZXhlYywgSlMKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBvYmplY3RzIGNvdWxkIGJl
IHByZXR0eSBiaWcgd2Ugc2hvdWxkIHRyeSB0byB0aHJvdyBPT00gaGVyZS4KICAgICBhdXRvKiBq
c0luc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseUluc3Rh
bmNlPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseUluc3RhbmNlKHZtLCBpbnN0YW5jZVN0cnVjdHVy
ZSwgCi0gICAgICAgIFdhc206Okluc3RhbmNlOjpjcmVhdGUoJnZtLndhc21Db250ZXh0LCBXVEZN
b3ZlKG1vZHVsZSksICZ2bS50b3BFbnRyeUZyYW1lLCBXVEZNb3ZlKHN0b3JlVG9wQ2FsbEZyYW1l
KSkpOworICAgICAgICBXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKCZ2bS53YXNtQ29udGV4dCwgV1RG
TW92ZShtb2R1bGUpLCAmdm0udG9wRW50cnlGcmFtZSwgdm0uYWRkcmVzc09mU29mdFN0YWNrTGlt
aXQoKSwgV1RGTW92ZShzdG9yZVRvcENhbGxGcmFtZSkpKTsKICAgICBqc0luc3RhbmNlLT5maW5p
c2hDcmVhdGlvbih2bSwganNNb2R1bGUsIG1vZHVsZU5hbWVzcGFjZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCAxYzI0ZDk2
Li5lOWNjMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMTUwLDcgKzE1MCw5IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgLy8gVGhpcyBpcyBqdXN0IGZvciBzb21lIGV4dHJhIHNhZmV0eSBpbnN0
ZWFkIG9mIGxlYXZpbmcgYSBjYWNoZWQKICAgICAgICAgLy8gdmFsdWUgaW4gdGhlcmUuIElmIHdl
IGV2ZXIgZm9yZ2V0IHRvIHNldCB0aGUgdmFsdWUgdG8gYmUgYSByZWFsCiAgICAgICAgIC8vIGJv
dW5kcywgdGhpcyB3aWxsIGZvcmNlIGV2ZXJ5IHN0YWNrIG92ZXJmbG93IGNoZWNrIHRvIGltbWVk
aWF0ZWx5Ci0gICAgICAgIC8vIGZpcmUuCisgICAgICAgIC8vIGZpcmUuIFRoZSBzdGFjayBsaW1p
dCBuZXZlciBjaGFuZ2VzIHdoaWxlIGV4ZWN1dGluZyBleGNlcHQgd2hlbgorICAgICAgICAvLyBX
ZWJBc3NlbWJseSBpcyB1c2VkIHRocm91Z2ggdGhlIEpTQyBBUEk6IEFQSSB1c2VycyBjYW4gYXNr
IHRoZSBjb2RlCisgICAgICAgIC8vIHRvIG1pZ3JhdGUgdGhyZWFkcy4KICAgICAgICAgd2FzbUlu
c3RhbmNlLT5zZXRDYWNoZWRTdGFja0xpbWl0KGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RkOjpudW1l
cmljX2xpbWl0czx1aW50cHRyX3Q+OjptYXgoKSkpOwogICAgIH0KICAgICB2bS53YXNtQ29udGV4
dC5zdG9yZShwcmV2V2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKLS0gCjIuOS4z
Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>