<?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>144000</bug_id>
          
          <creation_ts>2015-04-21 10:53:52 -0700</creation_ts>
          <short_desc>Don&apos;t de-allocate FunctionRareData</short_desc>
          <delta_ts>2015-04-22 10:41:11 -0700</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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>143999</dependson>
          <blocked>144001</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Basile Clement">basile_clement</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1087095</commentid>
    <comment_count>0</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 10:53:52 -0700</bug_when>
    <thetext>This allow to keep using the same allocationProfileWatchpointSet across recompilations, patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087171</commentid>
    <comment_count>1</comment_count>
      <attachid>251263</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 14:23:14 -0700</bug_when>
    <thetext>Created attachment 251263
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087200</commentid>
    <comment_count>2</comment_count>
      <attachid>251263</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-04-21 15:51:37 -0700</bug_when>
    <thetext>Comment on attachment 251263
The patch

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

r-.
Almost there.

&gt; Source/JavaScriptCore/ChangeLog:7
&gt; +

Please provide why you made this change and a summary of what you did.

&gt; Source/JavaScriptCore/runtime/FunctionRareData.cpp:-82
&gt; -    Base::finishCreation(vm);

Where do we call the super class finishCreation?

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:113
&gt; +    VM&amp; vm = exec-&gt;vm();

Add an ASSERT that m_rareData is not set.

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:401
&gt; +            thisObject-&gt;m_rareData-&gt;allocationProfile()-&gt;clear();
&gt;              thisObject-&gt;m_rareData-&gt;allocationProfileWatchpointSet().fireAll(&quot;Store to prototype property of a function&quot;);

Encapsulate this code in a FunctionRareData::clear() or FunctionRareData::clearAllocationProfile() method.

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:450
&gt; +            thisObject-&gt;m_rareData-&gt;allocationProfile()-&gt;clear();
&gt;              thisObject-&gt;m_rareData-&gt;allocationProfileWatchpointSet().fireAll(&quot;Store to prototype property of a function&quot;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087204</commentid>
    <comment_count>3</comment_count>
      <attachid>251263</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 16:04:09 -0700</bug_when>
    <thetext>Comment on attachment 251263
The patch

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

&gt;&gt; Source/JavaScriptCore/runtime/FunctionRareData.cpp:-82
&gt;&gt; -    Base::finishCreation(vm);
&gt; 
&gt; Where do we call the super class finishCreation?

FunctionRareData no longer has a finishCreation member, so that is done by rareData-&gt;finishCreation(vm) in the FunctionRareData::create() call.
Is this bad style without the using Base::finishCreation; clause?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087238</commentid>
    <comment_count>4</comment_count>
      <attachid>251278</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 17:35:23 -0700</bug_when>
    <thetext>Created attachment 251278
Addressed msaboff&apos;s remarks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087243</commentid>
    <comment_count>5</comment_count>
      <attachid>251278</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-04-21 17:41:40 -0700</bug_when>
    <thetext>Comment on attachment 251278
Addressed msaboff&apos;s remarks

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

r=me with one minor nit.
Repost with the fix so I can cq+

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:120
&gt; +    ASSERT(!!m_rareData);

This ASSERT is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087247</commentid>
    <comment_count>6</comment_count>
      <attachid>251281</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 17:50:46 -0700</bug_when>
    <thetext>Created attachment 251281
Remove needless ASSERT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087267</commentid>
    <comment_count>7</comment_count>
      <attachid>251287</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 18:47:26 -0700</bug_when>
    <thetext>Created attachment 251287
Hopefully correct patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087270</commentid>
    <comment_count>8</comment_count>
      <attachid>251287</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 18:55:08 -0700</bug_when>
    <thetext>Comment on attachment 251287
Hopefully correct patch

Oops, put the spurious ASSERT in again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087271</commentid>
    <comment_count>9</comment_count>
      <attachid>251289</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 18:55:28 -0700</bug_when>
    <thetext>Created attachment 251289
Final patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087276</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-21 19:06:45 -0700</bug_when>
    <thetext>You should rebase this patch :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087277</commentid>
    <comment_count>11</comment_count>
      <attachid>251291</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 19:12:45 -0700</bug_when>
    <thetext>Created attachment 251291
Hopefully well-formed...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087307</commentid>
    <comment_count>12</comment_count>
      <attachid>251291</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-21 20:43:59 -0700</bug_when>
    <thetext>Comment on attachment 251291
Hopefully well-formed...

so, ByteCodeParser was already right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087314</commentid>
    <comment_count>13</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 21:38:48 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 251291 [details]
&gt; Hopefully well-formed...
&gt; 
&gt; so, ByteCodeParser was already right?

This change should be transparent for ByteCodeParser.
It is already handling the case where the allocation structure may be empty from https://bugs.webkit.org/show_bug.cgi?id=143999 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087315</commentid>
    <comment_count>14</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 21:41:08 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Comment on attachment 251291 [details]
&gt; &gt; Hopefully well-formed...
&gt; &gt; 
&gt; &gt; so, ByteCodeParser was already right?
&gt; 
&gt; This change should be transparent for ByteCodeParser.
&gt; It is already handling the case where the allocation structure may be empty
&gt; from https://bugs.webkit.org/show_bug.cgi?id=143999 .

I do agree that the corresponding changes have probably been put on the wrong patch however...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087414</commentid>
    <comment_count>15</comment_count>
      <attachid>251291</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-04-22 09:30:01 -0700</bug_when>
    <thetext>Comment on attachment 251291
Hopefully well-formed...

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087417</commentid>
    <comment_count>16</comment_count>
      <attachid>251291</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-22 09:33:05 -0700</bug_when>
    <thetext>Comment on attachment 251291
Hopefully well-formed...

Rejecting attachment 251291 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 251291, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
/LowLevelInterpreter32_64.asm
patching file Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
patching file Source/JavaScriptCore/runtime/FunctionRareData.cpp
patching file Source/JavaScriptCore/runtime/FunctionRareData.h
patching file Source/JavaScriptCore/runtime/JSFunction.cpp
patching file Source/JavaScriptCore/runtime/JSFunction.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Michael Saboff&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/5617147334098944</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087427</commentid>
    <comment_count>17</comment_count>
      <attachid>251332</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-22 09:49:25 -0700</bug_when>
    <thetext>Created attachment 251332
Rebased patch (again)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087448</commentid>
    <comment_count>18</comment_count>
      <attachid>251332</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-22 10:41:07 -0700</bug_when>
    <thetext>Comment on attachment 251332
Rebased patch (again)

Clearing flags on attachment: 251332

Committed r183113: &lt;http://trac.webkit.org/changeset/183113&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087449</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-22 10:41:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251263</attachid>
            <date>2015-04-21 14:23:14 -0700</date>
            <delta_ts>2015-04-21 17:36:19 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>no_deallocate.patch</filename>
            <type>text/plain</type>
            <size>13668</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNhZWFiZTMuLmJmNDUzM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE1LTA0LTIxICBCYXNpbGUgQ2xlbWVu
dCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCBkZS1hbGxvY2F0
ZSBGdW5jdGlvblJhcmVEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDQwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9jcmVhdGVfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY3Jl
YXRlX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206Cisg
ICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25SYXJlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUmFyZURhdGE6OmZpbmlzaENyZWF0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6aXNJbml0aWFsaXplZCk6CisgICAgICAgICog
cnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YWxsb2Nh
dGVBbmRJbml0aWFsaXplUmFyZURhdGEpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppbml0
aWFsaXplUmFyZURhdGEpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpT
RnVuY3Rpb246OmNyZWF0ZVJhcmVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cmFyZURhdGEpOgorCiAyMDE1
LTA0LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIENh
bGwvQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3MgZmFpbHMgdG8gcmVzdG9yZSB0aGUgc3RhY2sgcG9p
bnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKaW5kZXggMWMyMThkYy4uMTU5NTUwZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zNTA3LDYg
KzM1MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCByYXJlRGF0YUdQUikpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Q
cm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSks
IGFsbG9jYXRvckdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2Zp
bGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3Ry
dWN0dXJlR1BSKTsKKyAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIo
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIGFsbG9jYXRvckdQUikpOwogICAgICAgICBlbWl0QWxsb2Nh
dGVKU09iamVjdChyZXN1bHRHUFIsIGFsbG9jYXRvckdQUiwgc3RydWN0dXJlR1BSLCBUcnVzdGVk
SW1tUHRyKDApLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CiAKICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlz
LCByZXN1bHRHUFIsIGNhbGxlZUdQUiwgbm9kZS0+aW5saW5lQ2FwYWNpdHkoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXgg
YjQ4ZGNkNC4uYjU2YmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNTg0LDYgKzM1ODQsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2pp
dC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0YUdQUikpOwogICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvckdQUik7CiAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9u
UmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgc2xv
d1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGFs
bG9jYXRvckdQUikpOwogICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIGFs
bG9jYXRvckdQUiwgc3RydWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSLCBz
bG93UGF0aCk7CiAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwg
bm9kZS0+aW5saW5lQ2FwYWNpdHkoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKaW5kZXggNGU4MjFkMC4uNTc3ZTQyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCkBAIC03MDYsNiArNzA2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Y3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93
Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVnKSk7CiAgICAgbG9hZFB0cihBZGRy
ZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9m
aWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFs
bG9jYXRvclJlZyk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJh
cmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJlZyk7CisgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoVGVzdFB0cihaZXJvLCBhbGxvY2F0b3JSZWcpKTsKIAogICAgIGVtaXRBbGxvY2F0
ZUpTT2JqZWN0KGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVnLCByZXN1bHRSZWcsIHNjcmF0Y2hS
ZWcpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CkBAIC03MTMsNiArNzE0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3Ro
aXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OyAvLyBkb2Vzbid0IGhhdmUgcmFyZSBkYXRhCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBk
b2Vzbid0IGhhdmUgYW4gYWxsb2NhdGlvbiBwcm9maWxlCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OyAvLyBhbGxvY2F0aW9uIGZhaWxlZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKaW5kZXggNDc2MTY1Ny4uOTEwYzIxYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtOTI1LDYgKzkyNSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByYXJlRGF0YVJlZykp
OwogICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zm
c2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNl
dE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJl
RGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVS
ZWcpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgYWxsb2NhdG9yUmVnKSk7
CiAKICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3JSZWcsIHN0cnVjdHVyZVJlZywg
cmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsKICAgICBlbWl0U3RvcmVDZWxsKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIHJlc3VsdFJlZyk7CkBAIC05MzIsNiArOTMzLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Cisg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb2Vzbid0IGhhdmUgcmFyZSBkYXRhCiAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb2Vzbid0IGhhdmUgYW4gYWxsb2NhdGlvbiBwcm9maWxlCiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBhbGxvY2F0aW9uIGZhaWxlZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCmluZGV4IDM5MGMxYzAuLjNiNDdmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC03NDQsNiAr
NzQ0LDcgQEAgX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIGJ0cHogdDQsIC5vcENyZWF0ZVRo
aXNTbG93CiAgICAgbG9hZHAgRnVuY3Rpb25SYXJlRGF0YTo6bV9hbGxvY2F0aW9uUHJvZmlsZSAr
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjptX2FsbG9jYXRvclt0NF0sIHQxCiAgICAgbG9hZHAg
RnVuY3Rpb25SYXJlRGF0YTo6bV9hbGxvY2F0aW9uUHJvZmlsZSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjptX3N0cnVjdHVyZVt0NF0sIHQyCisgICAgYnRweiB0MSwgLm9wQ3JlYXRlVGhpc1Ns
b3cKICAgICBhbGxvY2F0ZUpTT2JqZWN0KHQxLCB0MiwgdDAsIHQzLCAub3BDcmVhdGVUaGlzU2xv
dykKICAgICBsb2FkaSA0W1BDXSwgdDEKICAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCmluZGV4IDkwMzVlMGYuLjBkMDg0MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBA
IC02MzAsNiArNjMwLDcgQEAgX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIGJ0cHogdDQsIC5v
cENyZWF0ZVRoaXNTbG93CiAgICAgbG9hZHAgRnVuY3Rpb25SYXJlRGF0YTo6bV9hbGxvY2F0aW9u
UHJvZmlsZSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjptX2FsbG9jYXRvclt0NF0sIHQxCiAg
ICAgbG9hZHAgRnVuY3Rpb25SYXJlRGF0YTo6bV9hbGxvY2F0aW9uUHJvZmlsZSArIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlOjptX3N0cnVjdHVyZVt0NF0sIHQyCisgICAgYnRweiB0MSwgLm9wQ3Jl
YXRlVGhpc1Nsb3cKICAgICBhbGxvY2F0ZUpTT2JqZWN0KHQxLCB0MiwgdDAsIHQzLCAub3BDcmVh
dGVUaGlzU2xvdykKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVx
IHQwLCBbY2ZyLCB0MSwgOF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25SYXJlRGF0YS5jcHAKaW5kZXggMTYyNGYxMy4uMDE2NWYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKQEAgLTMy
LDEwICszMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9u
UmFyZURhdGE6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uUmFyZURhdGEiLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEZ1bmN0aW9uUmFyZURhdGEpIH07CiAKLUZ1bmN0aW9uUmFyZURhdGEqIEZ1bmN0
aW9uUmFyZURhdGE6OmNyZWF0ZShWTSYgdm0sIEpTT2JqZWN0KiBwcm90b3R5cGUsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSkKK0Z1bmN0aW9uUmFyZURhdGEqIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0
ZShWTSYgdm0pCiB7CiAgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvblJhcmVEYXRhPih2bS5oZWFwKSkgRnVuY3Rpb25SYXJl
RGF0YSh2bSk7Ci0gICAgcmFyZURhdGEtPmZpbmlzaENyZWF0aW9uKHZtLCBwcm90b3R5cGUsIGlu
bGluZUNhcGFjaXR5KTsKKyAgICByYXJlRGF0YS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJl
dHVybiByYXJlRGF0YTsKIH0KIApAQCAtNzcsOSArNzcsOCBAQCBGdW5jdGlvblJhcmVEYXRhOjp+
RnVuY3Rpb25SYXJlRGF0YSgpCiB7CiB9CiAKLXZvaWQgRnVuY3Rpb25SYXJlRGF0YTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogcHJvdG90eXBlLCBzaXplX3QgaW5saW5lQ2FwYWNp
dHkpCit2b2lkIEZ1bmN0aW9uUmFyZURhdGE6OmluaXRpYWxpemUoVk0mIHZtLCBKU09iamVjdCog
cHJvdG90eXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIG1fYWxsb2NhdGlvblByb2ZpbGUuaW5pdGlhbGl6ZSh2bSwgdGhpcywg
cHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCAyNDIzYmNlLi40YTM5NTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRh
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5o
CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0
YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgIHN0YXRpYyBGdW5jdGlvblJhcmVEYXRh
KiBjcmVhdGUoVk0mLCBKU09iamVjdCogcHJvdG90eXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkp
OworICAgIHN0YXRpYyBGdW5jdGlvblJhcmVEYXRhKiBjcmVhdGUoVk0mKTsKIAogICAgIHN0YXRp
YyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CkBAIC03NywxMyArNzcsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ7CiAgICAgfQogCisgICAgdm9pZCBpbml0
aWFsaXplKFZNJiwgSlNPYmplY3QqIHByb3RvdHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5KTsK
KworICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIHsgcmV0dXJuICFtX2FsbG9jYXRpb25Qcm9maWxl
LmlzTnVsbCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBGdW5jdGlvblJhcmVEYXRhKFZNJik7CiAg
ICAgfkZ1bmN0aW9uUmFyZURhdGEoKTsKIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBK
U09iamVjdCogcHJvdG90eXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwotICAgIHVzaW5nIEJh
c2U6OmZpbmlzaENyZWF0aW9uOwotCiBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKaW5kZXggZWQ3MDZlYS4uNmIwYWE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTEwOCwxNCArMTA4LDIxIEBAIEpTRnVuY3Rp
b24qIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCi1GdW5jdGlvblJhcmVE
YXRhKiBKU0Z1bmN0aW9uOjpjcmVhdGVSYXJlRGF0YShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSkKK0Z1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246OmFsbG9jYXRlQW5k
SW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5
KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFy
ZURhdGEgPSBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGUodm0pOworICAgIG1fcmFyZURhdGEuc2V0
KHZtLCB0aGlzLCByYXJlRGF0YSk7CisgICAgcmV0dXJuIGluaXRpYWxpemVSYXJlRGF0YShleGVj
LCBpbmxpbmVDYXBhY2l0eSk7Cit9CisKK0Z1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246Omlu
aXRpYWxpemVSYXJlRGF0YShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSkK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBq
c0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSkpOwogICAgIGlmICghcHJvdG90eXBlKQogICAgICAgICBwcm90b3R5cGUgPSBnbG9iYWxP
YmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCk7Ci0gICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURh
dGEgPSBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGUodm0sIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNp
dHkpOwotICAgIG1fcmFyZURhdGEuc2V0KHZtLCB0aGlzLCByYXJlRGF0YSk7CisgICAgbV9yYXJl
RGF0YS0+aW5pdGlhbGl6ZShnbG9iYWxPYmplY3QoKS0+dm0oKSwgcHJvdG90eXBlLCBpbmxpbmVD
YXBhY2l0eSk7CiAgICAgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7CiB9CiAKQEAgLTM5MCw4ICsz
OTcsOCBAQCB2b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkgeworICAgICAgICAgICAg
dGhpc09iamVjdC0+bV9yYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGUoKS0+Y2xlYXIoKTsKICAg
ICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludFNldCgpLmZpcmVBbGwoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0
aW9uIik7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLmNsZWFyKCk7CiAgICAg
ICAgIH0KICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNpbmNlIGEg
W1tQdXRdXSBtdXN0IGNsZWFyIG1fcmFyZURhdGEuCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBk
b250Q2FjaGUodGhpc09iamVjdCk7CkBAIC00MzksOCArNDQ2LDggQEAgYm9vbCBKU0Z1bmN0aW9u
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmEKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CiAgICAgICAg
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgaWYgKHRoaXNP
YmplY3QtPm1fcmFyZURhdGEpIHsKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEt
PmFsbG9jYXRpb25Qcm9maWxlKCktPmNsZWFyKCk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5t
X3JhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5maXJlQWxsKCJTdG9y
ZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIpOwotICAgICAgICAgICAgdGhp
c09iamVjdC0+bV9yYXJlRGF0YS5jbGVhcigpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBC
YXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhyb3dFeGNlcHRpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAppbmRleCBhNWQxMzNkLi40YzNlMjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xMTIsNyArMTEyLDkgQEAgcHVibGlj
OgogICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgaW5saW5lQ2FwYWNpdHkpCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmFyZURh
dGEpKQotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJhcmVEYXRhKGV4ZWMsIGlubGluZUNhcGFj
aXR5KTsKKyAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YShl
eGVjLCBpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghbV9yYXJlRGF0YS0+
aXNJbml0aWFsaXplZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBpbml0aWFsaXplUmFyZURhdGEo
ZXhlYywgaW5saW5lQ2FwYWNpdHkpOwogICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS5nZXQoKTsK
ICAgICB9CiAKQEAgLTEzOCw3ICsxNDAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOwogCi0gICAgRnVuY3Rpb25S
YXJlRGF0YSogY3JlYXRlUmFyZURhdGEoRXhlY1N0YXRlKiwgc2l6ZV90IGlubGluZUNhcGFjaXR5
KTsKKyAgICBGdW5jdGlvblJhcmVEYXRhKiBhbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YShF
eGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOworICAgIEZ1bmN0aW9uUmFyZURhdGEq
IGluaXRpYWxpemVSYXJlRGF0YShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwog
CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEVudW1lcmF0aW9uTW9kZSgpKTsK
</data>
<flag name="review"
          id="276056"
          type_id="1"
          status="-"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251278</attachid>
            <date>2015-04-21 17:35:23 -0700</date>
            <delta_ts>2015-04-21 17:50:46 -0700</delta_ts>
            <desc>Addressed msaboff&apos;s remarks</desc>
            <filename>no_dealloc_review.patch</filename>
            <type>text/plain</type>
            <size>13026</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJmODU0YjguLjc4ZDA2NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDE1LTA0LTIxICBCYXNpbGUgQ2xlbWVu
dCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KIAorICAgICAgICBEb24ndCBkZS1hbGxvY2F0
ZSBGdW5jdGlvblJhcmVEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDQwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBIGZ1bmN0aW9uIHJhcmUgZGF0YSAoY29udGFpbmluZyBtb3N0IG5vdGFibHkg
aXRzIGFsbG9jYXRpb24gcHJvZmlsZSkgaXMgY3VycmVudGx5CisgICAgICAgIGZyZWVkIGFuZCBy
ZS1hbGxvY2F0ZWQgZWFjaCB0aW1lIHRoZSBmdW5jdGlvbidzIHByb3RvdHlwZSBpcyBjbGVhcmVk
LgorICAgICAgICBUaGlzIGlzIG5vdCBvcHRpbWFsIGFzIGl0IG1lYW5zIHdlIGFyZSBpbnZhbGlk
YXRpbmcgdGhlIHdhdGNocG9pbnQgYW5kIHJlY29tcGlsaW5nIHRoZQorICAgICAgICBzY29wZSBl
YWNoIHRpbWUgdGhlIHByb3RvdHlwZSBpcyBjbGVhcmVkLgorCisgICAgICAgIFRoaXMgbWFrZXMg
aXQgc28gdGhhdCBhIHNpbmdsZSByYXJlIGRhdGEgaXMgcmV1c2VkLCBjbGVhcmluZyB0aGUgdW5k
ZXJseWluZworICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSBpbnN0ZWFkIG9mIHRocm93
aW5nIGF3YXkgdGhlIHdob2xlIHJhcmUgZGF0YSBvbgorICAgICAgICAucHJvdG90eXBlIHVwZGF0
ZXMuCisKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwOgorICAgICAgICAo
SlNDOjpGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblJh
cmVEYXRhOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVE
YXRhLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6YWxsb2NhdGVBbmRJbml0aWFsaXplUmFyZURhdGEpOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjppbml0aWFsaXplUmFyZURhdGEpOgorCisyMDE1LTA0LTIxICBCYXNpbGUg
Q2xlbWVudCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KKwogICAgICAgICBQaGFudG9tTmV3
T2JqZWN0IHNob3VsZCBiZSBtYXJrZWQgTm9kZU11c3RHZW5lcmF0ZQogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTc0CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDFj
MjE4ZGMuLjE1OTU1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzUwNyw2ICszNTA3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBzbG93UGF0aC5hcHBlbmQo
bV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmFyZURhdGFHUFIpKTsK
ICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwg
RnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JHUFIpOwogICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJv
LCBhbGxvY2F0b3JHUFIpKTsKICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BS
LCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVyZUdQUiwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQ
Uiwgc2xvd1BhdGgpOwogCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlVGhpcywgcmVzdWx0R1BSLCBjYWxsZWVH
UFIsIG5vZGUtPmlubGluZUNhcGFjaXR5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI0OGRjZDQuLmI1NmJhOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cApAQCAtMzU4NCw2ICszNTg0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNy
b0Fzc2VtYmxlcjo6WmVybywgcmFyZURhdGFHUFIpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0
T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9m
QWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkFs
bG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1
Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5i
cmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBhbGxvY2F0b3JHUFIpKTsKICAgICAg
ICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVy
ZUdQUiwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwogCiAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uQ3JlYXRlVGhpcywgcmVzdWx0R1BSLCBjYWxsZWVHUFIsIG5vZGUtPmlubGluZUNhcGFjaXR5
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDRlODIx
ZDAuLjU3N2U0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApA
QCAtNzA2LDYgKzcwNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0ciha
ZXJvLCByYXJlRGF0YVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVu
Y3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOwogICAgIGxv
YWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxv
Y2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0
dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVy
bywgYWxsb2NhdG9yUmVnKSk7CiAKICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3JS
ZWcsIHN0cnVjdHVyZVJlZywgcmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwpAQCAtNzEzLDYg
KzcxNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jcmVhdGVfdGhpcyhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogeworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIHJh
cmUgZGF0YQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGFsbG9j
YXRpb24gcHJvZmlsZQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBmYWls
ZWQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmlu
ZGV4IDQ3NjE2NTcuLjkxMGMyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKQEAgLTkyNSw2ICs5MjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9j
cmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmFyZURhdGFSZWcpKTsKICAgICBsb2FkUHRyKEFkZHJl
c3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2Zp
bGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxs
b2NhdG9yUmVnKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFy
ZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hUZXN0UHRyKFplcm8sIGFsbG9jYXRvclJlZykpOwogCiAgICAgZW1pdEFsbG9jYXRl
SlNPYmplY3QoYWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVSZWcsIHJlc3VsdFJlZywgc2NyYXRjaFJl
Zyk7CiAgICAgZW1pdFN0b3JlQ2VsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBy
ZXN1bHRSZWcpOwpAQCAtOTMyLDYgKzkzMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90
aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xv
d19vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogeworICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsgLy8gZG9lc24ndCBoYXZlIHJhcmUgZGF0YQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8g
ZG9lc24ndCBoYXZlIGFuIGFsbG9jYXRpb24gcHJvZmlsZQogICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsgLy8gYWxsb2NhdGlvbiBmYWlsZWQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAzOTBjMWMwLi4z
YjQ3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNzQ0LDYgKzc0NCw3IEBAIF9sbGludF9vcF9j
cmVhdGVfdGhpczoKICAgICBidHB6IHQ0LCAub3BDcmVhdGVUaGlzU2xvdwogICAgIGxvYWRwIEZ1
bmN0aW9uUmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZTo6bV9hbGxvY2F0b3JbdDRdLCB0MQogICAgIGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6Om1f
YWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9zdHJ1Y3R1cmVb
dDRdLCB0MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNTbG93CiAgICAgYWxsb2NhdGVKU09i
amVjdCh0MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCiAgICAgbG9hZGkgNFtQQ10s
IHQxCiAgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpp
bmRleCA5MDM1ZTBmLi4wZDA4NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtNjMwLDYgKzYzMCw3IEBAIF9s
bGludF9vcF9jcmVhdGVfdGhpczoKICAgICBidHB6IHQ0LCAub3BDcmVhdGVUaGlzU2xvdwogICAg
IGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZTo6bV9hbGxvY2F0b3JbdDRdLCB0MQogICAgIGxvYWRwIEZ1bmN0aW9uUmFy
ZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9z
dHJ1Y3R1cmVbdDRdLCB0MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNTbG93CiAgICAgYWxs
b2NhdGVKU09iamVjdCh0MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCiAgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRh
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3Bw
CmluZGV4IDE2MjRmMTMuLmQ0NGMzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCkBAIC04MCw3ICs4MCwxOCBAQCBGdW5jdGlv
blJhcmVEYXRhOjp+RnVuY3Rpb25SYXJlRGF0YSgpCiB2b2lkIEZ1bmN0aW9uUmFyZURhdGE6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSwgc2l6ZV90IGlubGluZUNh
cGFjaXR5KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBpbml0aWFsaXpl
KHZtLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKK30KKwordm9pZCBGdW5jdGlvblJhcmVE
YXRhOjppbml0aWFsaXplKFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5KQorewogICAgIG1fYWxsb2NhdGlvblByb2ZpbGUuaW5pdGlhbGl6ZSh2bSwgdGhp
cywgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7CiB9CiAKK3ZvaWQgRnVuY3Rpb25SYXJlRGF0
YTo6Y2xlYXIoY29uc3QgY2hhciogcmVhc29uKQoreworICAgIG1fYWxsb2NhdGlvblByb2ZpbGUu
Y2xlYXIoKTsKKyAgICBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5maXJlQWxsKHJlYXNv
bik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaAppbmRleCAyNDIzYmNlLi5mMGEyZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCkBAIC03Nyw2ICs3NywxMiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDsKICAg
ICB9CiAKKyAgICB2b2lkIGNsZWFyKGNvbnN0IGNoYXIqIHJlYXNvbik7CisKKyAgICB2b2lkIGlu
aXRpYWxpemUoVk0mLCBKU09iamVjdCogcHJvdG90eXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkp
OworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgeyByZXR1cm4gIW1fYWxsb2NhdGlvblByb2Zp
bGUuaXNOdWxsKCk7IH0KKwogcHJvdGVjdGVkOgogICAgIEZ1bmN0aW9uUmFyZURhdGEoVk0mKTsK
ICAgICB+RnVuY3Rpb25SYXJlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBlZDcwNmVhLi5iNDk1ZjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTA4LDE0ICsxMDgsMjcgQEAg
SlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXQKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAKLUZ1bmN0
aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246OmNyZWF0ZVJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywg
c2l6ZV90IGlubGluZUNhcGFjaXR5KQorRnVuY3Rpb25SYXJlRGF0YSogSlNGdW5jdGlvbjo6YWxs
b2NhdGVBbmRJbml0aWFsaXplUmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHkpCiB7CisgICAgQVNTRVJUKCFtX3JhcmVEYXRhKTsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0
Kj4oZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSkpOwogICAgIGlmICghcHJv
dG90eXBlKQogICAgICAgICBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90
eXBlKCk7CiAgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBGdW5jdGlvblJhcmVEYXRh
OjpjcmVhdGUodm0sIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkpOwogICAgIG1fcmFyZURhdGEu
c2V0KHZtLCB0aGlzLCByYXJlRGF0YSk7CisgICAgQVNTRVJUKCEhbV9yYXJlRGF0YSk7CisgICAg
cmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7Cit9CisKK0Z1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rp
b246OmluaXRpYWxpemVSYXJlRGF0YShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSkKK3sKKyAgICBBU1NFUlQoISFtX3JhcmVEYXRhKTsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4o
Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSkpOworICAgIGlmICghcHJvdG90
eXBlKQorICAgICAgICBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBl
KCk7CisgICAgbV9yYXJlRGF0YS0+aW5pdGlhbGl6ZShnbG9iYWxPYmplY3QoKS0+dm0oKSwgcHJv
dG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7CiB9
CiAKQEAgLTM4OSwxMCArNDAyLDggQEAgdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEoKICAgICAgICAg
Ly8gZm9sbG93aW5nIHRoZSBydWxlcyBzZXQgb3V0IGluIEVDTUEtMjYyIDguMTIuOS4KICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fcmFyZURh
dGEpIHsKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludFNldCgpLmZpcmVBbGwoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBv
ZiBhIGZ1bmN0aW9uIik7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLmNsZWFy
KCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fcmFyZURhdGEpCisgICAg
ICAgICAgICB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBl
IHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0
byBiZSBjYWNoZWQsIHNpbmNlIGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fcmFyZURhdGEuCiAgICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBkb250Q2FjaGUodGhpc09iamVjdCk7CiAgICAgICAgIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBkb250Q2FjaGUpOwpA
QCAtNDM4LDEwICs0NDksOCBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogICAgICAgICAvLyBm
b2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkg
ewotICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50U2V0KCkuZmlyZUFsbCgiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEg
ZnVuY3Rpb24iKTsKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEuY2xlYXIoKTsK
LSAgICAgICAgfQorICAgICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkKKyAgICAgICAg
ICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJv
cGVydHkgb2YgYSBmdW5jdGlvbiIpOwogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJv
cGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0
aW9uKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAppbmRleCBhNWQxMzNkLi40YzNlMjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCkBAIC0xMTIsNyArMTEyLDkgQEAgcHVibGljOgogICAgIEZ1bmN0aW9u
UmFyZURhdGEqIHJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5saW5lQ2FwYWNp
dHkpCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmFyZURhdGEpKQotICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVJhcmVEYXRhKGV4ZWMsIGlubGluZUNhcGFjaXR5KTsKKyAgICAgICAg
ICAgIHJldHVybiBhbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YShleGVjLCBpbmxpbmVDYXBh
Y2l0eSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghbV9yYXJlRGF0YS0+aXNJbml0aWFsaXplZCgp
KSkKKyAgICAgICAgICAgIHJldHVybiBpbml0aWFsaXplUmFyZURhdGEoZXhlYywgaW5saW5lQ2Fw
YWNpdHkpOwogICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS5nZXQoKTsKICAgICB9CiAKQEAgLTEz
OCw3ICsxNDAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5h
dGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHVz
aW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOwogCi0gICAgRnVuY3Rpb25SYXJlRGF0YSogY3JlYXRl
UmFyZURhdGEoRXhlY1N0YXRlKiwgc2l6ZV90IGlubGluZUNhcGFjaXR5KTsKKyAgICBGdW5jdGlv
blJhcmVEYXRhKiBhbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YShFeGVjU3RhdGUqLCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHkpOworICAgIEZ1bmN0aW9uUmFyZURhdGEqIGluaXRpYWxpemVSYXJl
RGF0YShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSA9IEVudW1lcmF0aW9uTW9kZSgpKTsK
</data>
<flag name="review"
          id="276069"
          type_id="1"
          status="+"
          setter="msaboff"
    />
    <flag name="commit-queue"
          id="276070"
          type_id="3"
          status="-"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251281</attachid>
            <date>2015-04-21 17:50:46 -0700</date>
            <delta_ts>2015-04-21 18:47:26 -0700</delta_ts>
            <desc>Remove needless ASSERT</desc>
            <filename>no_dealloc_review.patch</filename>
            <type>text/plain</type>
            <size>12999</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJmODU0YjguLjc4ZDA2NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDE1LTA0LTIxICBCYXNpbGUgQ2xlbWVu
dCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KIAorICAgICAgICBEb24ndCBkZS1hbGxvY2F0
ZSBGdW5jdGlvblJhcmVEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDQwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBIGZ1bmN0aW9uIHJhcmUgZGF0YSAoY29udGFpbmluZyBtb3N0IG5vdGFibHkg
aXRzIGFsbG9jYXRpb24gcHJvZmlsZSkgaXMgY3VycmVudGx5CisgICAgICAgIGZyZWVkIGFuZCBy
ZS1hbGxvY2F0ZWQgZWFjaCB0aW1lIHRoZSBmdW5jdGlvbidzIHByb3RvdHlwZSBpcyBjbGVhcmVk
LgorICAgICAgICBUaGlzIGlzIG5vdCBvcHRpbWFsIGFzIGl0IG1lYW5zIHdlIGFyZSBpbnZhbGlk
YXRpbmcgdGhlIHdhdGNocG9pbnQgYW5kIHJlY29tcGlsaW5nIHRoZQorICAgICAgICBzY29wZSBl
YWNoIHRpbWUgdGhlIHByb3RvdHlwZSBpcyBjbGVhcmVkLgorCisgICAgICAgIFRoaXMgbWFrZXMg
aXQgc28gdGhhdCBhIHNpbmdsZSByYXJlIGRhdGEgaXMgcmV1c2VkLCBjbGVhcmluZyB0aGUgdW5k
ZXJseWluZworICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSBpbnN0ZWFkIG9mIHRocm93
aW5nIGF3YXkgdGhlIHdob2xlIHJhcmUgZGF0YSBvbgorICAgICAgICAucHJvdG90eXBlIHVwZGF0
ZXMuCisKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwOgorICAgICAgICAo
SlNDOjpGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblJh
cmVEYXRhOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVE
YXRhLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6YWxsb2NhdGVBbmRJbml0aWFsaXplUmFyZURhdGEpOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjppbml0aWFsaXplUmFyZURhdGEpOgorCisyMDE1LTA0LTIxICBCYXNpbGUg
Q2xlbWVudCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KKwogICAgICAgICBQaGFudG9tTmV3
T2JqZWN0IHNob3VsZCBiZSBtYXJrZWQgTm9kZU11c3RHZW5lcmF0ZQogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTc0CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDFj
MjE4ZGMuLjE1OTU1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzUwNyw2ICszNTA3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBzbG93UGF0aC5hcHBlbmQo
bV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmFyZURhdGFHUFIpKTsK
ICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwg
RnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JHUFIpOwogICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJv
LCBhbGxvY2F0b3JHUFIpKTsKICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BS
LCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVyZUdQUiwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQ
Uiwgc2xvd1BhdGgpOwogCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlVGhpcywgcmVzdWx0R1BSLCBjYWxsZWVH
UFIsIG5vZGUtPmlubGluZUNhcGFjaXR5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI0OGRjZDQuLmI1NmJhOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cApAQCAtMzU4NCw2ICszNTg0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNy
b0Fzc2VtYmxlcjo6WmVybywgcmFyZURhdGFHUFIpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0
T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9m
QWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkFs
bG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1
Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5i
cmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBhbGxvY2F0b3JHUFIpKTsKICAgICAg
ICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVy
ZUdQUiwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwogCiAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uQ3JlYXRlVGhpcywgcmVzdWx0R1BSLCBjYWxsZWVHUFIsIG5vZGUtPmlubGluZUNhcGFjaXR5
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDRlODIx
ZDAuLjU3N2U0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApA
QCAtNzA2LDYgKzcwNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0ciha
ZXJvLCByYXJlRGF0YVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVu
Y3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOwogICAgIGxv
YWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxv
Y2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0
dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVy
bywgYWxsb2NhdG9yUmVnKSk7CiAKICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3JS
ZWcsIHN0cnVjdHVyZVJlZywgcmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwpAQCAtNzEzLDYg
KzcxNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jcmVhdGVfdGhpcyhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogeworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIHJh
cmUgZGF0YQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGFsbG9j
YXRpb24gcHJvZmlsZQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBmYWls
ZWQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmlu
ZGV4IDQ3NjE2NTcuLjkxMGMyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKQEAgLTkyNSw2ICs5MjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9j
cmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmFyZURhdGFSZWcpKTsKICAgICBsb2FkUHRyKEFkZHJl
c3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2Zp
bGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxs
b2NhdG9yUmVnKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFy
ZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hUZXN0UHRyKFplcm8sIGFsbG9jYXRvclJlZykpOwogCiAgICAgZW1pdEFsbG9jYXRl
SlNPYmplY3QoYWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVSZWcsIHJlc3VsdFJlZywgc2NyYXRjaFJl
Zyk7CiAgICAgZW1pdFN0b3JlQ2VsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBy
ZXN1bHRSZWcpOwpAQCAtOTMyLDYgKzkzMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90
aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xv
d19vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogeworICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsgLy8gZG9lc24ndCBoYXZlIHJhcmUgZGF0YQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8g
ZG9lc24ndCBoYXZlIGFuIGFsbG9jYXRpb24gcHJvZmlsZQogICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsgLy8gYWxsb2NhdGlvbiBmYWlsZWQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAzOTBjMWMwLi4z
YjQ3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNzQ0LDYgKzc0NCw3IEBAIF9sbGludF9vcF9j
cmVhdGVfdGhpczoKICAgICBidHB6IHQ0LCAub3BDcmVhdGVUaGlzU2xvdwogICAgIGxvYWRwIEZ1
bmN0aW9uUmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZTo6bV9hbGxvY2F0b3JbdDRdLCB0MQogICAgIGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6Om1f
YWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9zdHJ1Y3R1cmVb
dDRdLCB0MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNTbG93CiAgICAgYWxsb2NhdGVKU09i
amVjdCh0MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCiAgICAgbG9hZGkgNFtQQ10s
IHQxCiAgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpp
bmRleCA5MDM1ZTBmLi4wZDA4NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtNjMwLDYgKzYzMCw3IEBAIF9s
bGludF9vcF9jcmVhdGVfdGhpczoKICAgICBidHB6IHQ0LCAub3BDcmVhdGVUaGlzU2xvdwogICAg
IGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZTo6bV9hbGxvY2F0b3JbdDRdLCB0MQogICAgIGxvYWRwIEZ1bmN0aW9uUmFy
ZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9z
dHJ1Y3R1cmVbdDRdLCB0MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNTbG93CiAgICAgYWxs
b2NhdGVKU09iamVjdCh0MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCiAgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRh
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3Bw
CmluZGV4IDE2MjRmMTMuLmQ0NGMzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCkBAIC04MCw3ICs4MCwxOCBAQCBGdW5jdGlv
blJhcmVEYXRhOjp+RnVuY3Rpb25SYXJlRGF0YSgpCiB2b2lkIEZ1bmN0aW9uUmFyZURhdGE6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSwgc2l6ZV90IGlubGluZUNh
cGFjaXR5KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBpbml0aWFsaXpl
KHZtLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKK30KKwordm9pZCBGdW5jdGlvblJhcmVE
YXRhOjppbml0aWFsaXplKFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5KQorewogICAgIG1fYWxsb2NhdGlvblByb2ZpbGUuaW5pdGlhbGl6ZSh2bSwgdGhp
cywgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7CiB9CiAKK3ZvaWQgRnVuY3Rpb25SYXJlRGF0
YTo6Y2xlYXIoY29uc3QgY2hhciogcmVhc29uKQoreworICAgIG1fYWxsb2NhdGlvblByb2ZpbGUu
Y2xlYXIoKTsKKyAgICBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5maXJlQWxsKHJlYXNv
bik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaAppbmRleCAyNDIzYmNlLi5mMGEyZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCkBAIC03Nyw2ICs3NywxMiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDsKICAg
ICB9CiAKKyAgICB2b2lkIGNsZWFyKGNvbnN0IGNoYXIqIHJlYXNvbik7CisKKyAgICB2b2lkIGlu
aXRpYWxpemUoVk0mLCBKU09iamVjdCogcHJvdG90eXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkp
OworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgeyByZXR1cm4gIW1fYWxsb2NhdGlvblByb2Zp
bGUuaXNOdWxsKCk7IH0KKwogcHJvdGVjdGVkOgogICAgIEZ1bmN0aW9uUmFyZURhdGEoVk0mKTsK
ICAgICB+RnVuY3Rpb25SYXJlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBlZDcwNmVhLi5iNDk1ZjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTA4LDE0ICsxMDgsMjcgQEAg
SlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXQKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAKLUZ1bmN0
aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246OmNyZWF0ZVJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywg
c2l6ZV90IGlubGluZUNhcGFjaXR5KQorRnVuY3Rpb25SYXJlRGF0YSogSlNGdW5jdGlvbjo6YWxs
b2NhdGVBbmRJbml0aWFsaXplUmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHkpCiB7CisgICAgQVNTRVJUKCFtX3JhcmVEYXRhKTsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0
Kj4oZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSkpOwogICAgIGlmICghcHJv
dG90eXBlKQogICAgICAgICBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90
eXBlKCk7CiAgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSBGdW5jdGlvblJhcmVEYXRh
OjpjcmVhdGUodm0sIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkpOwogICAgIG1fcmFyZURhdGEu
c2V0KHZtLCB0aGlzLCByYXJlRGF0YSk7CisgICAgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7Cit9
CisKK0Z1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246OmluaXRpYWxpemVSYXJlRGF0YShFeGVj
U3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKK3sKKyAgICBBU1NFUlQoISFtX3Jh
cmVEYXRhKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTT2JqZWN0KiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSkpOworICAgIGlmICghcHJvdG90eXBlKQorICAgICAgICBwcm90b3R5cGUgPSBn
bG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCk7CisgICAgbV9yYXJlRGF0YS0+aW5pdGlh
bGl6ZShnbG9iYWxPYmplY3QoKS0+dm0oKSwgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7CiAg
ICAgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7CiB9CiAKQEAgLTM4OSwxMCArNDAyLDggQEAgdm9p
ZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEoKICAgICAgICAgLy8gZm9sbG93aW5nIHRoZSBydWxlcyBzZXQg
b3V0IGluIEVDTUEtMjYyIDguMTIuOS4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
amVjdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAg
ICAgICAgaWYgKHRoaXNPYmplY3QtPm1fcmFyZURhdGEpIHsKLSAgICAgICAgICAgIHRoaXNPYmpl
Y3QtPm1fcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmZpcmVBbGwo
IlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7Ci0gICAgICAgICAg
ICB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLmNsZWFyKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KHRoaXNPYmplY3QtPm1fcmFyZURhdGEpCisgICAgICAgICAgICB0aGlzT2JqZWN0LT5tX3JhcmVE
YXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsK
ICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNpbmNlIGEgW1tQdXRd
XSBtdXN0IGNsZWFyIG1fcmFyZURhdGEuCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBkb250Q2Fj
aGUodGhpc09iamVjdCk7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBkb250Q2FjaGUpOwpAQCAtNDM4LDEwICs0NDksOCBAQCBib29sIEpT
RnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYQogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQg
aW4gRUNNQS0yNjIgOC4xMi45LgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0
KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgICAg
ICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkgewotICAgICAgICAgICAgdGhpc09iamVjdC0+
bV9yYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuZmlyZUFsbCgiU3Rv
cmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKLSAgICAgICAgICAgIHRo
aXNPYmplY3QtPm1fcmFyZURhdGEuY2xlYXIoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAodGhp
c09iamVjdC0+bV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEt
PmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIpOwogICAg
ICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCBhNWQxMzNkLi40YzNlMjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xMTIsNyAr
MTEyLDkgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhKEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCiAgICAgewogICAgICAgICBpZiAoVU5M
SUtFTFkoIW1fcmFyZURhdGEpKQotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJhcmVEYXRhKGV4
ZWMsIGlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZUFuZEluaXRp
YWxpemVSYXJlRGF0YShleGVjLCBpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIGlmIChVTkxJS0VM
WSghbV9yYXJlRGF0YS0+aXNJbml0aWFsaXplZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBpbml0
aWFsaXplUmFyZURhdGEoZXhlYywgaW5saW5lQ2FwYWNpdHkpOwogICAgICAgICByZXR1cm4gbV9y
YXJlRGF0YS5nZXQoKTsKICAgICB9CiAKQEAgLTEzOCw3ICsxNDAsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOwog
Ci0gICAgRnVuY3Rpb25SYXJlRGF0YSogY3JlYXRlUmFyZURhdGEoRXhlY1N0YXRlKiwgc2l6ZV90
IGlubGluZUNhcGFjaXR5KTsKKyAgICBGdW5jdGlvblJhcmVEYXRhKiBhbGxvY2F0ZUFuZEluaXRp
YWxpemVSYXJlRGF0YShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOworICAgIEZ1
bmN0aW9uUmFyZURhdGEqIGluaXRpYWxpemVSYXJlRGF0YShFeGVjU3RhdGUqLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHkpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEVudW1lcmF0aW9uTW9kZSgp
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251287</attachid>
            <date>2015-04-21 18:47:26 -0700</date>
            <delta_ts>2015-04-21 18:55:08 -0700</delta_ts>
            <desc>Hopefully correct patch</desc>
            <filename>working.patch</filename>
            <type>text/plain</type>
            <size>12584</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMDkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDI5IEBA
CiAyMDE1LTA0LTIxICBCYXNpbGUgQ2xlbWVudCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4K
IAorICAgICAgICBEb24ndCBkZS1hbGxvY2F0ZSBGdW5jdGlvblJhcmVEYXRhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwMDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGZ1bmN0aW9uIHJhcmUgZGF0
YSAoY29udGFpbmluZyBtb3N0IG5vdGFibHkgaXRzIGFsbG9jYXRpb24gcHJvZmlsZSkgaXMgY3Vy
cmVudGx5CisgICAgICAgIGZyZWVkIGFuZCByZS1hbGxvY2F0ZWQgZWFjaCB0aW1lIHRoZSBmdW5j
dGlvbidzIHByb3RvdHlwZSBpcyBjbGVhcmVkLgorICAgICAgICBUaGlzIGlzIG5vdCBvcHRpbWFs
IGFzIGl0IG1lYW5zIHdlIGFyZSBpbnZhbGlkYXRpbmcgdGhlIHdhdGNocG9pbnQgYW5kIHJlY29t
cGlsaW5nIHRoZQorICAgICAgICBzY29wZSBlYWNoIHRpbWUgdGhlIHByb3RvdHlwZSBpcyBjbGVh
cmVkLgorCisgICAgICAgIFRoaXMgbWFrZXMgaXQgc28gdGhhdCBhIHNpbmdsZSByYXJlIGRhdGEg
aXMgcmV1c2VkLCBjbGVhcmluZyB0aGUgdW5kZXJseWluZworICAgICAgICBPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZSBpbnN0ZWFkIG9mIHRocm93aW5nIGF3YXkgdGhlIHdob2xlIHJhcmUgZGF0YSBv
bgorICAgICAgICAucHJvdG90eXBlIHVwZGF0ZXMuCisKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0
aW9uUmFyZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvblJhcmVEYXRhOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YWxsb2NhdGVBbmRJbml0aWFs
aXplUmFyZURhdGEpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppbml0aWFsaXplUmFyZURh
dGEpOgorCisyMDE1LTA0LTIxICBCYXNpbGUgQ2xlbWVudCAgPGJhc2lsZV9jbGVtZW50QGFwcGxl
LmNvbT4KKwogICAgICAgICBQaGFudG9tTmV3T2JqZWN0IHNob3VsZCBiZSBtYXJrZWQgTm9kZU11
c3RHZW5lcmF0ZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzOTc0CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTgzMDkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUwNyw2ICszNTA3LDcgQEAKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJy
YW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJhcmVEYXRhR1BSKSk7CiAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9u
UmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsKICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBzbG93UGF0
aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgYWxsb2Nh
dG9yR1BSKSk7CiAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgYWxsb2Nh
dG9yR1BSLCBzdHJ1Y3R1cmVHUFIsIFRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hHUFIsIHNsb3dQ
YXRoKTsKIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1Bh
dGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZVRoaXMsIHJlc3VsdEdQUiwgY2FsbGVlR1BSLCBub2Rl
LT5pbmxpbmVDYXBhY2l0eSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE4MzA5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1ODQsNiArMzU4NCw3IEBACiAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5i
cmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0YUdQUikpOwogICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlv
blJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvckdQUik7CiAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFy
ZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgc2xvd1Bh
dGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGFsbG9j
YXRvckdQUikpOwogICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIGFsbG9j
YXRvckdQUiwgc3RydWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSLCBzbG93
UGF0aCk7CiAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQ
YXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwgbm9k
ZS0+aW5saW5lQ2FwYWNpdHkoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCShyZXZpc2lvbiAxODMwOTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDYsNiArNzA2LDcgQEAKICAg
ICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVnKSk7CiAgICAgbG9h
ZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9j
YXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0
b3IoKSksIGFsbG9jYXRvclJlZyk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBG
dW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJlZyk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCBhbGxvY2F0b3JSZWcpKTsKIAogICAgIGVt
aXRBbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVnLCByZXN1bHRSZWcs
IHNjcmF0Y2hSZWcpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CkBAIC03MTMsNiArNzE0LDcgQEAKIAogdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CisgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyBkb2Vzbid0IGhhdmUgcmFyZSBkYXRhCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAv
LyBkb2Vzbid0IGhhdmUgYW4gYWxsb2NhdGlvbiBwcm9maWxlCiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyBhbGxvY2F0aW9uIGZhaWxlZAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxODMwOTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkyNSw2ICs5MjUsNyBAQAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmFy
ZURhdGFSZWcpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFy
ZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblBy
b2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwg
c3RydWN0dXJlUmVnKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIGFsbG9j
YXRvclJlZykpOwogCiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yUmVnLCBzdHJ1
Y3R1cmVSZWcsIHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CiAgICAgZW1pdFN0b3JlQ2VsbChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXN1bHRSZWcpOwpAQCAtOTMyLDYgKzkzMyw3
IEBACiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
eworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIHJhcmUgZGF0YQogICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGFsbG9jYXRpb24gcHJvZmls
ZQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBmYWlsZWQKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE4MzA5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC03
NDQsNiArNzQ0LDcgQEAKICAgICBidHB6IHQ0LCAub3BDcmVhdGVUaGlzU2xvdwogICAgIGxvYWRw
IEZ1bmN0aW9uUmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6bV9hbGxvY2F0b3JbdDRdLCB0MQogICAgIGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6
Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9zdHJ1Y3R1
cmVbdDRdLCB0MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNTbG93CiAgICAgYWxsb2NhdGVK
U09iamVjdCh0MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCiAgICAgbG9hZGkgNFtQ
Q10sIHQxCiAgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDE4MzA5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC02MzAsNiArNjMw
LDcgQEAKICAgICBidHB6IHQ0LCAub3BDcmVhdGVUaGlzU2xvdwogICAgIGxvYWRwIEZ1bmN0aW9u
UmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
bV9hbGxvY2F0b3JbdDRdLCB0MQogICAgIGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6Om1fYWxsb2Nh
dGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9zdHJ1Y3R1cmVbdDRdLCB0
MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNTbG93CiAgICAgYWxsb2NhdGVKU09iamVjdCh0
MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDEsIHQxKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAkocmV2aXNp
b24gMTgzMDkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJl
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDE4IEBACiB2b2lkIEZ1bmN0aW9u
UmFyZURhdGE6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSwgc2l6
ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBpbml0aWFsaXplKHZtLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKK30KKwordm9pZCBG
dW5jdGlvblJhcmVEYXRhOjppbml0aWFsaXplKFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSwg
c2l6ZV90IGlubGluZUNhcGFjaXR5KQorewogICAgIG1fYWxsb2NhdGlvblByb2ZpbGUuaW5pdGlh
bGl6ZSh2bSwgdGhpcywgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7CiB9CiAKK3ZvaWQgRnVu
Y3Rpb25SYXJlRGF0YTo6Y2xlYXIoY29uc3QgY2hhciogcmVhc29uKQoreworICAgIG1fYWxsb2Nh
dGlvblByb2ZpbGUuY2xlYXIoKTsKKyAgICBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5m
aXJlQWxsKHJlYXNvbik7CiB9CisKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgJKHJldmlzaW9uIDE4MzA5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtNzcsNiArNzcsMTIgQEAKICAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50OwogICAgIH0KIAorICAgIHZvaWQgY2xlYXIoY29uc3QgY2hhciogcmVhc29uKTsK
KworICAgIHZvaWQgaW5pdGlhbGl6ZShWTSYsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiAhbV9h
bGxvY2F0aW9uUHJvZmlsZS5pc051bGwoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRnVuY3Rpb25S
YXJlRGF0YShWTSYpOwogICAgIH5GdW5jdGlvblJhcmVEYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMTgzMDkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOCwxNyArMTA4LDMwIEBACiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCi1G
dW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjpjcmVhdGVSYXJlRGF0YShFeGVjU3RhdGUqIGV4
ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKK0Z1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246
OmFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5KQogeworICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KGdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpKTsKICAgICBpZiAo
IXByb3RvdHlwZSkKICAgICAgICAgcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0KCktPm9iamVjdFBy
b3RvdHlwZSgpOwogICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gRnVuY3Rpb25SYXJl
RGF0YTo6Y3JlYXRlKHZtLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKICAgICBtX3JhcmVE
YXRhLnNldCh2bSwgdGhpcywgcmFyZURhdGEpOworICAgIEFTU0VSVCghIW1fcmFyZURhdGEpOwog
ICAgIHJldHVybiBtX3JhcmVEYXRhLmdldCgpOwogfQogCitGdW5jdGlvblJhcmVEYXRhKiBKU0Z1
bmN0aW9uOjppbml0aWFsaXplUmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHkpCit7CisgICAgQVNTRVJUKCEhbV9yYXJlRGF0YSk7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KGdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpKTsKKyAgICBpZiAoIXBy
b3RvdHlwZSkKKyAgICAgICAgcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3Rv
dHlwZSgpOworICAgIG1fcmFyZURhdGEtPmluaXRpYWxpemUoZ2xvYmFsT2JqZWN0KCktPnZtKCks
IHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkpOworICAgIHJldHVybiBtX3JhcmVEYXRhLmdldCgp
OworfQorCiBTdHJpbmcgSlNGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
cmV0dXJuIGdldChleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPm5hbWUpLnRvV1RGU3Ry
aW5nKGV4ZWMpOwpAQCAtMzg5LDEwICs0MDIsOCBAQAogICAgICAgICAvLyBmb2xsb3dpbmcgdGhl
IHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwotICAgICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkgewotICAgICAgICAg
ICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0
KCkuZmlyZUFsbCgiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsK
LSAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEuY2xlYXIoKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHRoaXNPYmpl
Y3QtPm1fcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBm
dW5jdGlvbiIpOwogICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRvIGJlIGNhY2hlZCwgc2lu
Y2UgYSBbW1B1dF1dIG11c3QgY2xlYXIgbV9yYXJlRGF0YS4KICAgICAgICAgUHV0UHJvcGVydHlT
bG90IGRvbnRDYWNoZSh0aGlzT2JqZWN0KTsKICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGRvbnRDYWNoZSk7CkBAIC00MzgsMTAgKzQ0OSw4
IEBACiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4
LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwogICAgICAgICB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX3JhcmVEYXRhKSB7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLT5h
bGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKS5maXJlQWxsKCJTdG9yZSB0byBwcm90b3R5
cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIpOwotICAgICAgICAgICAgdGhpc09iamVjdC0+bV9y
YXJlRGF0YS5jbGVhcigpOwotICAgICAgICB9CisgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX3Jh
cmVEYXRhKQorICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xlYXIoIlN0b3Jl
IHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIHJldHVybiBC
YXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhyb3dFeGNlcHRpb24pOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTgzMDkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIs
NyArMTEyLDkgQEAKICAgICBGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YShFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZ
KCFtX3JhcmVEYXRhKSkKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVSYXJlRGF0YShleGVjLCBp
bmxpbmVDYXBhY2l0eSk7CisgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVBbmRJbml0aWFsaXpl
UmFyZURhdGEoZXhlYywgaW5saW5lQ2FwYWNpdHkpOworICAgICAgICBpZiAoVU5MSUtFTFkoIW1f
cmFyZURhdGEtPmlzSW5pdGlhbGl6ZWQoKSkpCisgICAgICAgICAgICByZXR1cm4gaW5pdGlhbGl6
ZVJhcmVEYXRhKGV4ZWMsIGlubGluZUNhcGFjaXR5KTsKICAgICAgICAgcmV0dXJuIG1fcmFyZURh
dGEuZ2V0KCk7CiAgICAgfQogCkBAIC0xMzgsNyArMTQwLDggQEAKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAgICAgdXNpbmcgQmFzZTo6ZmluaXNoQ3JlYXRpb247CiAKLSAgICBGdW5jdGlvblJh
cmVEYXRhKiBjcmVhdGVSYXJlRGF0YShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkp
OworICAgIEZ1bmN0aW9uUmFyZURhdGEqIGFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKEV4
ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVDYXBhY2l0eSk7CisgICAgRnVuY3Rpb25SYXJlRGF0YSog
aW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVDYXBhY2l0eSk7CiAK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2RlKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251289</attachid>
            <date>2015-04-21 18:55:28 -0700</date>
            <delta_ts>2015-04-21 19:12:45 -0700</delta_ts>
            <desc>Final patch</desc>
            <filename>working.patch</filename>
            <type>text/plain</type>
            <size>12557</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMDkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDI5IEBA
CiAyMDE1LTA0LTIxICBCYXNpbGUgQ2xlbWVudCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4K
IAorICAgICAgICBEb24ndCBkZS1hbGxvY2F0ZSBGdW5jdGlvblJhcmVEYXRhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwMDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGZ1bmN0aW9uIHJhcmUgZGF0
YSAoY29udGFpbmluZyBtb3N0IG5vdGFibHkgaXRzIGFsbG9jYXRpb24gcHJvZmlsZSkgaXMgY3Vy
cmVudGx5CisgICAgICAgIGZyZWVkIGFuZCByZS1hbGxvY2F0ZWQgZWFjaCB0aW1lIHRoZSBmdW5j
dGlvbidzIHByb3RvdHlwZSBpcyBjbGVhcmVkLgorICAgICAgICBUaGlzIGlzIG5vdCBvcHRpbWFs
IGFzIGl0IG1lYW5zIHdlIGFyZSBpbnZhbGlkYXRpbmcgdGhlIHdhdGNocG9pbnQgYW5kIHJlY29t
cGlsaW5nIHRoZQorICAgICAgICBzY29wZSBlYWNoIHRpbWUgdGhlIHByb3RvdHlwZSBpcyBjbGVh
cmVkLgorCisgICAgICAgIFRoaXMgbWFrZXMgaXQgc28gdGhhdCBhIHNpbmdsZSByYXJlIGRhdGEg
aXMgcmV1c2VkLCBjbGVhcmluZyB0aGUgdW5kZXJseWluZworICAgICAgICBPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZSBpbnN0ZWFkIG9mIHRocm93aW5nIGF3YXkgdGhlIHdob2xlIHJhcmUgZGF0YSBv
bgorICAgICAgICAucHJvdG90eXBlIHVwZGF0ZXMuCisKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0
aW9uUmFyZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvblJhcmVEYXRhOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YWxsb2NhdGVBbmRJbml0aWFs
aXplUmFyZURhdGEpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppbml0aWFsaXplUmFyZURh
dGEpOgorCisyMDE1LTA0LTIxICBCYXNpbGUgQ2xlbWVudCAgPGJhc2lsZV9jbGVtZW50QGFwcGxl
LmNvbT4KKwogICAgICAgICBQaGFudG9tTmV3T2JqZWN0IHNob3VsZCBiZSBtYXJrZWQgTm9kZU11
c3RHZW5lcmF0ZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzOTc0CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTgzMDkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUwNyw2ICszNTA3LDcgQEAKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJy
YW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJhcmVEYXRhR1BSKSk7CiAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9u
UmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsKICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBzbG93UGF0
aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgYWxsb2Nh
dG9yR1BSKSk7CiAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgYWxsb2Nh
dG9yR1BSLCBzdHJ1Y3R1cmVHUFIsIFRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hHUFIsIHNsb3dQ
YXRoKTsKIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1Bh
dGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZVRoaXMsIHJlc3VsdEdQUiwgY2FsbGVlR1BSLCBub2Rl
LT5pbmxpbmVDYXBhY2l0eSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE4MzA5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1ODQsNiArMzU4NCw3IEBACiAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5i
cmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0YUdQUikpOwogICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlv
blJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvckdQUik7CiAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFy
ZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgc2xvd1Bh
dGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGFsbG9j
YXRvckdQUikpOwogICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIGFsbG9j
YXRvckdQUiwgc3RydWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSLCBzbG93
UGF0aCk7CiAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQ
YXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwgbm9k
ZS0+aW5saW5lQ2FwYWNpdHkoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCShyZXZpc2lvbiAxODMwOTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDYsNiArNzA2LDcgQEAKICAg
ICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVnKSk7CiAgICAgbG9h
ZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9j
YXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0
b3IoKSksIGFsbG9jYXRvclJlZyk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBG
dW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJlZyk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCBhbGxvY2F0b3JSZWcpKTsKIAogICAgIGVt
aXRBbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVnLCByZXN1bHRSZWcs
IHNjcmF0Y2hSZWcpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CkBAIC03MTMsNiArNzE0LDcgQEAKIAogdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CisgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyBkb2Vzbid0IGhhdmUgcmFyZSBkYXRhCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAv
LyBkb2Vzbid0IGhhdmUgYW4gYWxsb2NhdGlvbiBwcm9maWxlCiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyBhbGxvY2F0aW9uIGZhaWxlZAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxODMwOTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkyNSw2ICs5MjUsNyBAQAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmFy
ZURhdGFSZWcpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFy
ZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblBy
b2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwg
c3RydWN0dXJlUmVnKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIGFsbG9j
YXRvclJlZykpOwogCiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yUmVnLCBzdHJ1
Y3R1cmVSZWcsIHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CiAgICAgZW1pdFN0b3JlQ2VsbChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXN1bHRSZWcpOwpAQCAtOTMyLDYgKzkzMyw3
IEBACiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
eworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIHJhcmUgZGF0YQogICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGFsbG9jYXRpb24gcHJvZmls
ZQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBmYWlsZWQKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE4MzA5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC03
NDQsNiArNzQ0LDcgQEAKICAgICBidHB6IHQ0LCAub3BDcmVhdGVUaGlzU2xvdwogICAgIGxvYWRw
IEZ1bmN0aW9uUmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6bV9hbGxvY2F0b3JbdDRdLCB0MQogICAgIGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6
Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9zdHJ1Y3R1
cmVbdDRdLCB0MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNTbG93CiAgICAgYWxsb2NhdGVK
U09iamVjdCh0MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCiAgICAgbG9hZGkgNFtQ
Q10sIHQxCiAgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDE4MzA5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC02MzAsNiArNjMw
LDcgQEAKICAgICBidHB6IHQ0LCAub3BDcmVhdGVUaGlzU2xvdwogICAgIGxvYWRwIEZ1bmN0aW9u
UmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
bV9hbGxvY2F0b3JbdDRdLCB0MQogICAgIGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6Om1fYWxsb2Nh
dGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9zdHJ1Y3R1cmVbdDRdLCB0
MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNTbG93CiAgICAgYWxsb2NhdGVKU09iamVjdCh0
MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDEsIHQxKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAkocmV2aXNp
b24gMTgzMDkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJl
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDE4IEBACiB2b2lkIEZ1bmN0aW9u
UmFyZURhdGE6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSwgc2l6
ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBpbml0aWFsaXplKHZtLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKK30KKwordm9pZCBG
dW5jdGlvblJhcmVEYXRhOjppbml0aWFsaXplKFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSwg
c2l6ZV90IGlubGluZUNhcGFjaXR5KQorewogICAgIG1fYWxsb2NhdGlvblByb2ZpbGUuaW5pdGlh
bGl6ZSh2bSwgdGhpcywgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7CiB9CiAKK3ZvaWQgRnVu
Y3Rpb25SYXJlRGF0YTo6Y2xlYXIoY29uc3QgY2hhciogcmVhc29uKQoreworICAgIG1fYWxsb2Nh
dGlvblByb2ZpbGUuY2xlYXIoKTsKKyAgICBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5m
aXJlQWxsKHJlYXNvbik7CiB9CisKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgJKHJldmlzaW9uIDE4MzA5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtNzcsNiArNzcsMTIgQEAKICAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50OwogICAgIH0KIAorICAgIHZvaWQgY2xlYXIoY29uc3QgY2hhciogcmVhc29uKTsK
KworICAgIHZvaWQgaW5pdGlhbGl6ZShWTSYsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiAhbV9h
bGxvY2F0aW9uUHJvZmlsZS5pc051bGwoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRnVuY3Rpb25S
YXJlRGF0YShWTSYpOwogICAgIH5GdW5jdGlvblJhcmVEYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMTgzMDkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOCwxNyArMTA4LDMwIEBACiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCi1G
dW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjpjcmVhdGVSYXJlRGF0YShFeGVjU3RhdGUqIGV4
ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKK0Z1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246
OmFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5KQogeworICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KGdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpKTsKICAgICBpZiAo
IXByb3RvdHlwZSkKICAgICAgICAgcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0KCktPm9iamVjdFBy
b3RvdHlwZSgpOwogICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gRnVuY3Rpb25SYXJl
RGF0YTo6Y3JlYXRlKHZtLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKICAgICBtX3JhcmVE
YXRhLnNldCh2bSwgdGhpcywgcmFyZURhdGEpOwogICAgIHJldHVybiBtX3JhcmVEYXRhLmdldCgp
OwogfQogCitGdW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjppbml0aWFsaXplUmFyZURhdGEo
RXhlY1N0YXRlKiBleGVjLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCit7CisgICAgQVNTRVJUKCEh
bV9yYXJlRGF0YSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU09iamVjdCogcHJv
dG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUpKTsKKyAgICBpZiAoIXByb3RvdHlwZSkKKyAgICAgICAgcHJvdG90eXBl
ID0gZ2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpOworICAgIG1fcmFyZURhdGEtPmlu
aXRpYWxpemUoZ2xvYmFsT2JqZWN0KCktPnZtKCksIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkp
OworICAgIHJldHVybiBtX3JhcmVEYXRhLmdldCgpOworfQorCiBTdHJpbmcgSlNGdW5jdGlvbjo6
bmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJuIGdldChleGVjLCBleGVjLT52bSgp
LnByb3BlcnR5TmFtZXMtPm5hbWUpLnRvV1RGU3RyaW5nKGV4ZWMpOwpAQCAtMzg5LDEwICs0MDIs
OCBAQAogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIg
OC4xMi45LgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAg
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgICAgICBpZiAodGhpc09i
amVjdC0+bV9yYXJlRGF0YSkgewotICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+
YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuZmlyZUFsbCgiU3RvcmUgdG8gcHJvdG90
eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPm1f
cmFyZURhdGEuY2xlYXIoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAodGhpc09iamVjdC0+bV9y
YXJlRGF0YSkKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPmNsZWFyKCJTdG9y
ZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIpOwogICAgICAgICAvLyBEb24n
dCBhbGxvdyB0aGlzIHRvIGJlIGNhY2hlZCwgc2luY2UgYSBbW1B1dF1dIG11c3QgY2xlYXIgbV9y
YXJlRGF0YS4KICAgICAgICAgUHV0UHJvcGVydHlTbG90IGRvbnRDYWNoZSh0aGlzT2JqZWN0KTsK
ICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGRvbnRDYWNoZSk7CkBAIC00MzgsMTAgKzQ0OSw4IEBACiAgICAgICAgIC8vIGZvbGxvd2luZyB0
aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KHRoaXNPYmplY3QpOwogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Ci0gICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX3JhcmVEYXRhKSB7Ci0gICAgICAg
ICAgICB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRT
ZXQoKS5maXJlQWxsKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIp
OwotICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS5jbGVhcigpOwotICAgICAgICB9
CisgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX3JhcmVEYXRhKQorICAgICAgICAgICAgdGhpc09i
amVjdC0+bV9yYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBh
IGZ1bmN0aW9uIik7CiAgICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogICAg
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAko
cmV2aXNpb24gMTgzMDkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDkgQEAKICAgICBGdW5jdGlvblJh
cmVEYXRhKiByYXJlRGF0YShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5
KQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JhcmVEYXRhKSkKLSAgICAgICAgICAg
IHJldHVybiBjcmVhdGVSYXJlRGF0YShleGVjLCBpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgICAg
ICByZXR1cm4gYWxsb2NhdGVBbmRJbml0aWFsaXplUmFyZURhdGEoZXhlYywgaW5saW5lQ2FwYWNp
dHkpOworICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmFyZURhdGEtPmlzSW5pdGlhbGl6ZWQoKSkp
CisgICAgICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZVJhcmVEYXRhKGV4ZWMsIGlubGluZUNhcGFj
aXR5KTsKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7CiAgICAgfQogCkBAIC0xMzgs
NyArMTQwLDggQEAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJs
ZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdXNpbmcgQmFzZTo6Zmlu
aXNoQ3JlYXRpb247CiAKLSAgICBGdW5jdGlvblJhcmVEYXRhKiBjcmVhdGVSYXJlRGF0YShFeGVj
U3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOworICAgIEZ1bmN0aW9uUmFyZURhdGEqIGFs
bG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSk7CisgICAgRnVuY3Rpb25SYXJlRGF0YSogaW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0
ZSosIHNpemVfdCBpbmxpbmVDYXBhY2l0eSk7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51
bWVyYXRpb25Nb2RlKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251291</attachid>
            <date>2015-04-21 19:12:45 -0700</date>
            <delta_ts>2015-04-22 09:49:25 -0700</delta_ts>
            <desc>Hopefully well-formed...</desc>
            <filename>working.patch</filename>
            <type>text/plain</type>
            <size>12557</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMDkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDI5IEBA
CisyMDE1LTA0LTIxICBCYXNpbGUgQ2xlbWVudCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4K
KyAKKyAgICAgICAgRG9uJ3QgZGUtYWxsb2NhdGUgRnVuY3Rpb25SYXJlRGF0YQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBmdW5jdGlvbiByYXJlIGRh
dGEgKGNvbnRhaW5pbmcgbW9zdCBub3RhYmx5IGl0cyBhbGxvY2F0aW9uIHByb2ZpbGUpIGlzIGN1
cnJlbnRseQorICAgICAgICBmcmVlZCBhbmQgcmUtYWxsb2NhdGVkIGVhY2ggdGltZSB0aGUgZnVu
Y3Rpb24ncyBwcm90b3R5cGUgaXMgY2xlYXJlZC4KKyAgICAgICAgVGhpcyBpcyBub3Qgb3B0aW1h
bCBhcyBpdCBtZWFucyB3ZSBhcmUgaW52YWxpZGF0aW5nIHRoZSB3YXRjaHBvaW50IGFuZCByZWNv
bXBpbGluZyB0aGUKKyAgICAgICAgc2NvcGUgZWFjaCB0aW1lIHRoZSBwcm90b3R5cGUgaXMgY2xl
YXJlZC4KKworICAgICAgICBUaGlzIG1ha2VzIGl0IHNvIHRoYXQgYSBzaW5nbGUgcmFyZSBkYXRh
IGlzIHJldXNlZCwgY2xlYXJpbmcgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUgaW5zdGVhZCBvZiB0aHJvd2luZyBhd2F5IHRoZSB3aG9sZSByYXJlIGRhdGEg
b24KKyAgICAgICAgLnByb3RvdHlwZSB1cGRhdGVzLgorCisgICAgICAgICogcnVudGltZS9GdW5j
dGlvblJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFsbG9jYXRlQW5kSW5pdGlh
bGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aW5pdGlhbGl6ZVJhcmVE
YXRhKToKKwogMjAxNS0wNC0yMSAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBhcHBs
ZS5jb20+CgogICAgICAgICBQaGFudG9tTmV3T2JqZWN0IHNob3VsZCBiZSBtYXJrZWQgTm9kZU11
c3RHZW5lcmF0ZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzOTc0CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTgzMDkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUwNyw2ICszNTA3LDcgQEAKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJy
YW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJhcmVEYXRhR1BSKSk7CiAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9u
UmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsKICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBzbG93UGF0
aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgYWxsb2Nh
dG9yR1BSKSk7CiAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgYWxsb2Nh
dG9yR1BSLCBzdHJ1Y3R1cmVHUFIsIFRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hHUFIsIHNsb3dQ
YXRoKTsKIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1Bh
dGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZVRoaXMsIHJlc3VsdEdQUiwgY2FsbGVlR1BSLCBub2Rl
LT5pbmxpbmVDYXBhY2l0eSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE4MzA5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1ODQsNiArMzU4NCw3IEBACiAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5i
cmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0YUdQUikpOwogICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlv
blJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvckdQUik7CiAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFy
ZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgc2xvd1Bh
dGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGFsbG9j
YXRvckdQUikpOwogICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIGFsbG9j
YXRvckdQUiwgc3RydWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSLCBzbG93
UGF0aCk7CiAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQ
YXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwgbm9k
ZS0+aW5saW5lQ2FwYWNpdHkoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCShyZXZpc2lvbiAxODMwOTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDYsNiArNzA2LDcgQEAKICAg
ICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVnKSk7CiAgICAgbG9h
ZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9j
YXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0
b3IoKSksIGFsbG9jYXRvclJlZyk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBG
dW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJlZyk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCBhbGxvY2F0b3JSZWcpKTsKIAogICAgIGVt
aXRBbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVnLCByZXN1bHRSZWcs
IHNjcmF0Y2hSZWcpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CkBAIC03MTMsNiArNzE0LDcgQEAKIAogdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CisgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyBkb2Vzbid0IGhhdmUgcmFyZSBkYXRhCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAv
LyBkb2Vzbid0IGhhdmUgYW4gYWxsb2NhdGlvbiBwcm9maWxlCiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyBhbGxvY2F0aW9uIGZhaWxlZAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxODMwOTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkyNSw2ICs5MjUsNyBAQAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmFy
ZURhdGFSZWcpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFy
ZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblBy
b2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwg
c3RydWN0dXJlUmVnKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIGFsbG9j
YXRvclJlZykpOwogCiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yUmVnLCBzdHJ1
Y3R1cmVSZWcsIHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CiAgICAgZW1pdFN0b3JlQ2VsbChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXN1bHRSZWcpOwpAQCAtOTMyLDYgKzkzMyw3
IEBACiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
eworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIHJhcmUgZGF0YQogICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGFsbG9jYXRpb24gcHJvZmls
ZQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBmYWlsZWQKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE4MzA5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC03
NDQsNiArNzQ0LDcgQEAKICAgICBidHB6IHQ0LCAub3BDcmVhdGVUaGlzU2xvdwogICAgIGxvYWRw
IEZ1bmN0aW9uUmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6bV9hbGxvY2F0b3JbdDRdLCB0MQogICAgIGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6
Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9zdHJ1Y3R1
cmVbdDRdLCB0MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNTbG93CiAgICAgYWxsb2NhdGVK
U09iamVjdCh0MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCiAgICAgbG9hZGkgNFtQ
Q10sIHQxCiAgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDE4MzA5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC02MzAsNiArNjMw
LDcgQEAKICAgICBidHB6IHQ0LCAub3BDcmVhdGVUaGlzU2xvdwogICAgIGxvYWRwIEZ1bmN0aW9u
UmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
bV9hbGxvY2F0b3JbdDRdLCB0MQogICAgIGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6Om1fYWxsb2Nh
dGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9zdHJ1Y3R1cmVbdDRdLCB0
MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNTbG93CiAgICAgYWxsb2NhdGVKU09iamVjdCh0
MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDEsIHQxKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAkocmV2aXNp
b24gMTgzMDkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJl
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDE4IEBACiB2b2lkIEZ1bmN0aW9u
UmFyZURhdGE6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSwgc2l6
ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBpbml0aWFsaXplKHZtLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKK30KKwordm9pZCBG
dW5jdGlvblJhcmVEYXRhOjppbml0aWFsaXplKFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSwg
c2l6ZV90IGlubGluZUNhcGFjaXR5KQorewogICAgIG1fYWxsb2NhdGlvblByb2ZpbGUuaW5pdGlh
bGl6ZSh2bSwgdGhpcywgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7CiB9CiAKK3ZvaWQgRnVu
Y3Rpb25SYXJlRGF0YTo6Y2xlYXIoY29uc3QgY2hhciogcmVhc29uKQoreworICAgIG1fYWxsb2Nh
dGlvblByb2ZpbGUuY2xlYXIoKTsKKyAgICBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5m
aXJlQWxsKHJlYXNvbik7CiB9CisKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgJKHJldmlzaW9uIDE4MzA5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtNzcsNiArNzcsMTIgQEAKICAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50OwogICAgIH0KIAorICAgIHZvaWQgY2xlYXIoY29uc3QgY2hhciogcmVhc29uKTsK
KworICAgIHZvaWQgaW5pdGlhbGl6ZShWTSYsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiAhbV9h
bGxvY2F0aW9uUHJvZmlsZS5pc051bGwoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRnVuY3Rpb25S
YXJlRGF0YShWTSYpOwogICAgIH5GdW5jdGlvblJhcmVEYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMTgzMDkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOCwxNyArMTA4LDI5IEBACiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCi1G
dW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjpjcmVhdGVSYXJlRGF0YShFeGVjU3RhdGUqIGV4
ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKK0Z1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246
OmFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5KQogeworICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KGdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpKTsKICAgICBpZiAo
IXByb3RvdHlwZSkKICAgICAgICAgcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0KCktPm9iamVjdFBy
b3RvdHlwZSgpOwogICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gRnVuY3Rpb25SYXJl
RGF0YTo6Y3JlYXRlKHZtLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKICAgICBtX3JhcmVE
YXRhLnNldCh2bSwgdGhpcywgcmFyZURhdGEpOwogICAgIHJldHVybiBtX3JhcmVEYXRhLmdldCgp
OwogfQogCitGdW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjppbml0aWFsaXplUmFyZURhdGEo
RXhlY1N0YXRlKiBleGVjLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCit7CisgICAgQVNTRVJUKCEh
bV9yYXJlRGF0YSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU09iamVjdCogcHJv
dG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUpKTsKKyAgICBpZiAoIXByb3RvdHlwZSkKKyAgICAgICAgcHJvdG90eXBl
ID0gZ2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpOworICAgIG1fcmFyZURhdGEtPmlu
aXRpYWxpemUoZ2xvYmFsT2JqZWN0KCktPnZtKCksIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkp
OworICAgIHJldHVybiBtX3JhcmVEYXRhLmdldCgpOworfQorCiBTdHJpbmcgSlNGdW5jdGlvbjo6
bmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJuIGdldChleGVjLCBleGVjLT52bSgp
LnByb3BlcnR5TmFtZXMtPm5hbWUpLnRvV1RGU3RyaW5nKGV4ZWMpOwpAQCAtMzg5LDEwICs0MDIs
OCBAQAogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIg
OC4xMi45LgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAg
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgICAgICBpZiAodGhpc09i
amVjdC0+bV9yYXJlRGF0YSkgewotICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+
YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkuZmlyZUFsbCgiU3RvcmUgdG8gcHJvdG90
eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPm1f
cmFyZURhdGEuY2xlYXIoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAodGhpc09iamVjdC0+bV9y
YXJlRGF0YSkKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPmNsZWFyKCJTdG9y
ZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIpOwogICAgICAgICAvLyBEb24n
dCBhbGxvdyB0aGlzIHRvIGJlIGNhY2hlZCwgc2luY2UgYSBbW1B1dF1dIG11c3QgY2xlYXIgbV9y
YXJlRGF0YS4KICAgICAgICAgUHV0UHJvcGVydHlTbG90IGRvbnRDYWNoZSh0aGlzT2JqZWN0KTsK
ICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGRvbnRDYWNoZSk7CkBAIC00MzgsMTAgKzQ0OSw4IEBACiAgICAgICAgIC8vIGZvbGxvd2luZyB0
aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KHRoaXNPYmplY3QpOwogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Ci0gICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX3JhcmVEYXRhKSB7Ci0gICAgICAg
ICAgICB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRT
ZXQoKS5maXJlQWxsKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIp
OwotICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS5jbGVhcigpOwotICAgICAgICB9
CisgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX3JhcmVEYXRhKQorICAgICAgICAgICAgdGhpc09i
amVjdC0+bV9yYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBh
IGZ1bmN0aW9uIik7CiAgICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogICAg
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAko
cmV2aXNpb24gMTgzMDkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDkgQEAKICAgICBGdW5jdGlvblJh
cmVEYXRhKiByYXJlRGF0YShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5
KQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JhcmVEYXRhKSkKLSAgICAgICAgICAg
IHJldHVybiBjcmVhdGVSYXJlRGF0YShleGVjLCBpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgICAg
ICByZXR1cm4gYWxsb2NhdGVBbmRJbml0aWFsaXplUmFyZURhdGEoZXhlYywgaW5saW5lQ2FwYWNp
dHkpOworICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmFyZURhdGEtPmlzSW5pdGlhbGl6ZWQoKSkp
CisgICAgICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZVJhcmVEYXRhKGV4ZWMsIGlubGluZUNhcGFj
aXR5KTsKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7CiAgICAgfQogCkBAIC0xMzgs
NyArMTQwLDggQEAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJs
ZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdXNpbmcgQmFzZTo6Zmlu
aXNoQ3JlYXRpb247CiAKLSAgICBGdW5jdGlvblJhcmVEYXRhKiBjcmVhdGVSYXJlRGF0YShFeGVj
U3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOworICAgIEZ1bmN0aW9uUmFyZURhdGEqIGFs
bG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSk7CisgICAgRnVuY3Rpb25SYXJlRGF0YSogaW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0
ZSosIHNpemVfdCBpbmxpbmVDYXBhY2l0eSk7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51
bWVyYXRpb25Nb2RlKCkpOwo=
</data>
<flag name="review"
          id="276084"
          type_id="1"
          status="+"
          setter="msaboff"
    />
    <flag name="commit-queue"
          id="276085"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251332</attachid>
            <date>2015-04-22 09:49:25 -0700</date>
            <delta_ts>2015-04-22 10:41:07 -0700</delta_ts>
            <desc>Rebased patch (again)</desc>
            <filename>rebased.patch</filename>
            <type>text/plain</type>
            <size>12345</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDE1LTA0LTIxICBCYXNpbGUgQ2xlbWVudCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4K
KyAKKyAgICAgICAgRG9uJ3QgZGUtYWxsb2NhdGUgRnVuY3Rpb25SYXJlRGF0YQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBmdW5jdGlvbiByYXJlIGRh
dGEgKGNvbnRhaW5pbmcgbW9zdCBub3RhYmx5IGl0cyBhbGxvY2F0aW9uIHByb2ZpbGUpIGlzIGN1
cnJlbnRseQorICAgICAgICBmcmVlZCBhbmQgcmUtYWxsb2NhdGVkIGVhY2ggdGltZSB0aGUgZnVu
Y3Rpb24ncyBwcm90b3R5cGUgaXMgY2xlYXJlZC4KKyAgICAgICAgVGhpcyBpcyBub3Qgb3B0aW1h
bCBhcyBpdCBtZWFucyB3ZSBhcmUgaW52YWxpZGF0aW5nIHRoZSB3YXRjaHBvaW50IGFuZCByZWNv
bXBpbGluZyB0aGUKKyAgICAgICAgc2NvcGUgZWFjaCB0aW1lIHRoZSBwcm90b3R5cGUgaXMgY2xl
YXJlZC4KKworICAgICAgICBUaGlzIG1ha2VzIGl0IHNvIHRoYXQgYSBzaW5nbGUgcmFyZSBkYXRh
IGlzIHJldXNlZCwgY2xlYXJpbmcgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUgaW5zdGVhZCBvZiB0aHJvd2luZyBhd2F5IHRoZSB3aG9sZSByYXJlIGRhdGEg
b24KKyAgICAgICAgLnByb3RvdHlwZSB1cGRhdGVzLgorCisgICAgICAgICogcnVudGltZS9GdW5j
dGlvblJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFsbG9jYXRlQW5kSW5pdGlh
bGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aW5pdGlhbGl6ZVJhcmVE
YXRhKToKKwogMjAxNS0wNC0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIGZpeCAzMi1iaXQuIEZvcmdvdCB0byBtYWtlIHRoaXMgc2ltcGxl
IGNoYW5nZSB0byAzMl82NCBhcyB3ZWxsLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxODMxMDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTEzLDYgKzM1MTMsNyBAQAogICAgICAgICBzbG93UGF0aC5h
cHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmFyZURhdGFH
UFIpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0
YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JHUFIp
OwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BS
LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7Cisg
ICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCBhbGxvY2F0b3JHUFIpKTsKICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVz
dWx0R1BSLCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVyZUdQUiwgVHJ1c3RlZEltbVB0cigwKSwgc2Ny
YXRjaEdQUiwgc2xvd1BhdGgpOwogCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlVGhpcywgcmVzdWx0R1BSLCBj
YWxsZWVHUFIsIG5vZGUtPmlubGluZUNhcGFjaXR5KCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTgz
MTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzU4NCw2ICszNTg0LDcgQEAKICAgICAgICAgc2xvd1BhdGgu
YXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJhcmVEYXRh
R1BSKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURh
dGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BS
KTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQ
UiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVHUFIpOwor
ICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxl
cjo6WmVybywgYWxsb2NhdG9yR1BSKSk7CiAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJl
c3VsdEdQUiwgYWxsb2NhdG9yR1BSLCBzdHJ1Y3R1cmVHUFIsIFRydXN0ZWRJbW1QdHIoMCksIHNj
cmF0Y2hHUFIsIHNsb3dQYXRoKTsKIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZVRoaXMsIHJlc3VsdEdQUiwg
Y2FsbGVlR1BSLCBub2RlLT5pbmxpbmVDYXBhY2l0eSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE4MzEwOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNiw2
ICs3MDYsNyBAQAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmFyZURhdGFS
ZWcpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6
Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpv
ZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsKICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUo
KSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0
dXJlUmVnKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIGFsbG9jYXRvclJl
ZykpOwogCiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVS
ZWcsIHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKQEAgLTcxMyw2ICs3MTQsNyBAQAogCiB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKKyAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSByYXJlIGRhdGEKICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSBhbiBhbGxvY2F0aW9uIHByb2ZpbGUKICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7IC8vIGFsbG9jYXRpb24gZmFpbGVkCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE4MzEw
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTI1LDYgKzkyNSw3IEBACiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVz
dFB0cihaZXJvLCByYXJlRGF0YVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJl
ZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOwog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0
T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9m
U3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQ
dHIoWmVybywgYWxsb2NhdG9yUmVnKSk7CiAKICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChhbGxv
Y2F0b3JSZWcsIHN0cnVjdHVyZVJlZywgcmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsKICAgICBlbWl0
U3RvcmVDZWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlc3VsdFJlZyk7CkBA
IC05MzIsNiArOTMzLDcgQEAKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb2Vzbid0IGhhdmUg
cmFyZSBkYXRhCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb2Vzbid0IGhhdmUgYW4gYWxs
b2NhdGlvbiBwcm9maWxlCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBhbGxvY2F0aW9uIGZh
aWxlZAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTgzMTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTc0NCw2ICs3NDQsNyBAQAogICAgIGJ0cHogdDQsIC5vcENyZWF0ZVRoaXNT
bG93CiAgICAgbG9hZHAgRnVuY3Rpb25SYXJlRGF0YTo6bV9hbGxvY2F0aW9uUHJvZmlsZSArIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjptX2FsbG9jYXRvclt0NF0sIHQxCiAgICAgbG9hZHAgRnVu
Y3Rpb25SYXJlRGF0YTo6bV9hbGxvY2F0aW9uUHJvZmlsZSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOjptX3N0cnVjdHVyZVt0NF0sIHQyCisgICAgYnRweiB0MSwgLm9wQ3JlYXRlVGhpc1Nsb3cK
ICAgICBhbGxvY2F0ZUpTT2JqZWN0KHQxLCB0MiwgdDAsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykK
ICAgICBsb2FkaSA0W1BDXSwgdDEKICAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTgzMTA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTYzMCw2ICs2MzAsNyBAQAogICAgIGJ0cHogdDQsIC5vcENyZWF0ZVRoaXNTbG93CiAgICAg
bG9hZHAgRnVuY3Rpb25SYXJlRGF0YTo6bV9hbGxvY2F0aW9uUHJvZmlsZSArIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlOjptX2FsbG9jYXRvclt0NF0sIHQxCiAgICAgbG9hZHAgRnVuY3Rpb25SYXJl
RGF0YTo6bV9hbGxvY2F0aW9uUHJvZmlsZSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjptX3N0
cnVjdHVyZVt0NF0sIHQyCisgICAgYnRweiB0MSwgLm9wQ3JlYXRlVGhpc1Nsb3cKICAgICBhbGxv
Y2F0ZUpTT2JqZWN0KHQxLCB0MiwgdDAsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKICAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURh
dGEuY3BwCShyZXZpc2lvbiAxODMxMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsMTggQEAK
IHZvaWQgRnVuY3Rpb25SYXJlRGF0YTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCog
cHJvdG90eXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIGluaXRpYWxpemUodm0sIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkp
OworfQorCit2b2lkIEZ1bmN0aW9uUmFyZURhdGE6OmluaXRpYWxpemUoVk0mIHZtLCBKU09iamVj
dCogcHJvdG90eXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCit7CiAgICAgbV9hbGxvY2F0aW9u
UHJvZmlsZS5pbml0aWFsaXplKHZtLCB0aGlzLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsK
IH0KIAordm9pZCBGdW5jdGlvblJhcmVEYXRhOjpjbGVhcihjb25zdCBjaGFyKiByZWFzb24pCit7
CisgICAgbV9hbGxvY2F0aW9uUHJvZmlsZS5jbGVhcigpOworICAgIG1fYWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50LmZpcmVBbGwocmVhc29uKTsKIH0KKworfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAkocmV2aXNpb24gMTgz
MTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3NywxMiBAQAogICAgICAgICByZXR1cm4gbV9hbGxv
Y2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ7CiAgICAgfQogCisgICAgdm9pZCBjbGVhcihjb25zdCBj
aGFyKiByZWFzb24pOworCisgICAgdm9pZCBpbml0aWFsaXplKFZNJiwgSlNPYmplY3QqIHByb3Rv
dHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5KTsKKworICAgIGJvb2wgaXNJbml0aWFsaXplZCgp
IHsgcmV0dXJuICFtX2FsbG9jYXRpb25Qcm9maWxlLmlzTnVsbCgpOyB9CisKIHByb3RlY3RlZDoK
ICAgICBGdW5jdGlvblJhcmVEYXRhKFZNJik7CiAgICAgfkZ1bmN0aW9uUmFyZURhdGEoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZp
c2lvbiAxODMxMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDggKzEwOCw5IEBACiAgICAgcmV0dXJuIGZ1bmN0
aW9uOwogfQogCi1GdW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjpjcmVhdGVSYXJlRGF0YShF
eGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKK0Z1bmN0aW9uUmFyZURhdGEq
IEpTRnVuY3Rpb246OmFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhl
Yywgc2l6ZV90IGlubGluZUNhcGFjaXR5KQogeworICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUp
KTsKICAgICBpZiAoIXByb3RvdHlwZSkKQEAgLTExOSw2ICsxMjAsMTcgQEAKICAgICByZXR1cm4g
bV9yYXJlRGF0YS5nZXQoKTsKIH0KIAorRnVuY3Rpb25SYXJlRGF0YSogSlNGdW5jdGlvbjo6aW5p
dGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5KQor
eworICAgIEFTU0VSVCghIW1fcmFyZURhdGEpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhl
Yywgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKSk7CisgICAgaWYgKCFwcm90b3R5cGUpCisg
ICAgICAgIHByb3RvdHlwZSA9IGdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKTsKKyAg
ICBtX3JhcmVEYXRhLT5pbml0aWFsaXplKGdsb2JhbE9iamVjdCgpLT52bSgpLCBwcm90b3R5cGUs
IGlubGluZUNhcGFjaXR5KTsKKyAgICByZXR1cm4gbV9yYXJlRGF0YS5nZXQoKTsKK30KKwogU3Ry
aW5nIEpTRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHJldHVybiBnZXQo
ZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5uYW1lKS50b1dURlN0cmluZyhleGVjKTsK
QEAgLTM4OSwxMCArNDAxLDggQEAKICAgICAgICAgLy8gZm9sbG93aW5nIHRoZSBydWxlcyBzZXQg
b3V0IGluIEVDTUEtMjYyIDguMTIuOS4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
amVjdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAg
ICAgICAgaWYgKHRoaXNPYmplY3QtPm1fcmFyZURhdGEpIHsKLSAgICAgICAgICAgIHRoaXNPYmpl
Y3QtPm1fcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpLmZpcmVBbGwo
IlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7Ci0gICAgICAgICAg
ICB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLmNsZWFyKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KHRoaXNPYmplY3QtPm1fcmFyZURhdGEpCisgICAgICAgICAgICB0aGlzT2JqZWN0LT5tX3JhcmVE
YXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsK
ICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNpbmNlIGEgW1tQdXRd
XSBtdXN0IGNsZWFyIG1fcmFyZURhdGEuCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBkb250Q2Fj
aGUodGhpc09iamVjdCk7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBkb250Q2FjaGUpOwpAQCAtNDM4LDEwICs0NDgsOCBAQAogICAgICAg
ICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJl
RGF0YSkgewotICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+YWxsb2NhdGlvblBy
b2ZpbGVXYXRjaHBvaW50U2V0KCkuZmlyZUFsbCgiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5
IG9mIGEgZnVuY3Rpb24iKTsKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEuY2xl
YXIoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkKKyAg
ICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5
cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIpOwogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5l
T3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93
RXhjZXB0aW9uKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDE4MzEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw5IEBA
CiAgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpbmxpbmVDYXBhY2l0eSkKICAgICB7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbV9yYXJlRGF0
YSkpCi0gICAgICAgICAgICByZXR1cm4gY3JlYXRlUmFyZURhdGEoZXhlYywgaW5saW5lQ2FwYWNp
dHkpOworICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKGV4
ZWMsIGlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JhcmVEYXRhLT5p
c0luaXRpYWxpemVkKCkpKQorICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxpemVSYXJlRGF0YShl
eGVjLCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLmdldCgpOwog
ICAgIH0KIApAQCAtMTM4LDcgKzE0MCw4IEBACiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAg
IHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOwogCi0gICAgRnVuY3Rpb25SYXJlRGF0YSogY3Jl
YXRlUmFyZURhdGEoRXhlY1N0YXRlKiwgc2l6ZV90IGlubGluZUNhcGFjaXR5KTsKKyAgICBGdW5j
dGlvblJhcmVEYXRhKiBhbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YShFeGVjU3RhdGUqLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHkpOworICAgIEZ1bmN0aW9uUmFyZURhdGEqIGluaXRpYWxpemVS
YXJlRGF0YShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogCiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSA9IEVudW1lcmF0aW9uTW9kZSgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>