<?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>181600</bug_id>
          
          <creation_ts>2018-01-12 10:50:49 -0800</creation_ts>
          <short_desc>FetchResponse should support ConsumeData callback on chunk data is received</short_desc>
          <delta_ts>2018-01-31 18:28:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>182009</dependson>
    
    <dependson>182008</dependson>
          <blocked>173105</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="GSkachkov">gskachkov</reporter>
          <assigned_to name="GSkachkov">gskachkov</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jfbastien</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1388851</commentid>
    <comment_count>0</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2018-01-12 10:50:49 -0800</bug_when>
    <thetext>FetchResponse should support ConsumeData callback on chunk data is received. 
We need this to support WebAssembly Streaming API, also will be used for ServiceWorkers

Suggestion from Youenn Fablet:
```
A FetchResponse can be either synthetic or created by a call to fetch().
If created by a call to fetch(), you will often be able to retrieve it from FetchLoader.
But if synthetic, or if it is cloned, the data might come from a blob, a text or a stream object.
The API need to handle all cases properly.

We probably need to move from a one-time called ConsumeDataCallback to a ConsumeDataCallback called for each chunk and a call with nullptr for instance to say this is complete.
I would then tend to store this callback in FetchBodyConsumer for the cases where it cannot be answered synchronously: ReadableStream, blob and loading.
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389717</commentid>
    <comment_count>1</comment_count>
      <attachid>331422</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2018-01-16 13:18:44 -0800</bug_when>
    <thetext>Created attachment 331422
Patch

PoC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389722</commentid>
    <comment_count>2</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2018-01-16 13:25:00 -0800</bug_when>
    <thetext>youennf@gmail.com Could you please look if I&apos;m implementing in correct way?

Also there is a question what is correct way to test chunks handler functions?
Currently I&apos;m using part of the patch that is related to WebAssembly stream API, and check in debug if chunk handler is invoked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389939</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-17 01:39:39 -0800</bug_when>
    <thetext>(In reply to GSkachkov from comment #2)
&gt; youennf@gmail.com Could you please look if I&apos;m implementing in correct way?
&gt; 
&gt; Also there is a question what is correct way to test chunks handler
&gt; functions?

I would start by using the chunk strategy in ServiceWorkerFetch.cpp.
You can tweak LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/fetch-event-respond-with-readable-stream-worker.js to enqueue two chunks for instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389941</commentid>
    <comment_count>4</comment_count>
      <attachid>331422</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-17 01:51:13 -0800</bug_when>
    <thetext>Comment on attachment 331422
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchResponse.h:100
&gt; +    void consumeBodyByChunksFromReadableStream(ConsumeDataByChunksCallback&amp;&amp;);

Instead of adding  consumeBodyByChunksFromReadableStream, I would change the way consumeBodyFromReadableStream works.
Currently, we are calling only once ConsumeDataCallback with an aggregated chunk. We could call it several times for each chunk.

That would require to change the users of consumeBodyFromReadableStream:
- ServiceWorkerFetch would send an IPC message for each callback call, the last being a didFinish message, the others sending chunks.
- DOMCache would aggregate the content in a single body inside the callback.

Given that, ConsumeDataCallback could be changed in something like a WTF::Function&lt;void(ExceptionOr&lt;Chunk&gt;&gt;, Chunk being a struct { const uint8_t*, size_t }.

I would also tend to split this patch in two patches, one for handling ReadableStream bodies and one for handling loaded bodies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393785</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-26 18:18:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/36932547&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394314</commentid>
    <comment_count>6</comment_count>
      <attachid>332593</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-29 15:55:12 -0800</bug_when>
    <thetext>Created attachment 332593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394715</commentid>
    <comment_count>7</comment_count>
      <attachid>332593</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-30 13:43:24 -0800</bug_when>
    <thetext>Comment on attachment 332593
Patch

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

&gt; Source/WebCore/Modules/cache/DOMCache.cpp:277
&gt; +            response.consumeBodyReceivedByChunk([taskHandler = WTFMove(taskHandler), recordPosition, data = SharedBuffer::create()](auto&amp;&amp; result) mutable {

I think it makes the code significantly easier to read to have the type of result here.

&gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/fetch-event-respond-with-body-loaded-in-chunk-worker.js:6
&gt; +    event.respondWith(fetch(&quot;../../../fetch/api/resources/trickle.py?count=4&amp;delay=50&quot;));

Does the delay do anything significant here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394719</commentid>
    <comment_count>8</comment_count>
      <attachid>332593</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-30 13:46:46 -0800</bug_when>
    <thetext>Comment on attachment 332593
Patch

Thanks for the review.

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

&gt;&gt; Source/WebCore/Modules/cache/DOMCache.cpp:277
&gt;&gt; +            response.consumeBodyReceivedByChunk([taskHandler = WTFMove(taskHandler), recordPosition, data = SharedBuffer::create()](auto&amp;&amp; result) mutable {
&gt; 
&gt; I think it makes the code significantly easier to read to have the type of result here.

OK, will add it back.

&gt;&gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/fetch-event-respond-with-body-loaded-in-chunk-worker.js:6
&gt;&gt; +    event.respondWith(fetch(&quot;../../../fetch/api/resources/trickle.py?count=4&amp;delay=50&quot;));
&gt; 
&gt; Does the delay do anything significant here?

This is just a way to &apos;ensure&apos; that network process will send response body as chunks to the service worker process.
Then the service worker process will in turn send each chunk before response being finished loading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394736</commentid>
    <comment_count>9</comment_count>
      <attachid>332700</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-30 13:58:12 -0800</bug_when>
    <thetext>Created attachment 332700
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394885</commentid>
    <comment_count>10</comment_count>
      <attachid>332700</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-30 20:23:54 -0800</bug_when>
    <thetext>Comment on attachment 332700
Patch for landing

Clearing flags on attachment: 332700

Committed r227870: &lt;https://trac.webkit.org/changeset/227870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394886</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-30 20:23:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395285</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-31 18:28:58 -0800</bug_when>
    <thetext>Submitted web-platform-tests pull request: https://github.com/w3c/web-platform-tests/pull/9329</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331422</attachid>
            <date>2018-01-16 13:18:44 -0800</date>
            <delta_ts>2018-01-29 15:55:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181600-20180116231842.patch</filename>
            <type>text/plain</type>
            <size>11558</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY1MTJlMGEwODA1ODhm
YmFhNjllNzBjMmFjOTdiMzI3MDA0YTNjOC4uNzAyY2Q0MjM4MDNmYWU5MzEyZDVlN2ZkNjBjOTk1
Yjk5NDQ2NDZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAxLTE2ICBPbGVr
c2FuZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIEZldGNoUmVz
cG9uc2Ugc2hvdWxkIHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgb24gY2h1bmsgZGF0YSBp
cyByZWNlaXZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgxNjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW1wbGVtZW50IHN0cmVhbWluZyBjb21waWxhdGlvbgorCisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6ZXh0cmFjdENodW5rKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6Y29uc3VtZUNodW5rcyk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpj
b25zdW1lQm9keUJ5Q2h1bmtzRnJvbVJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVua3MpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hS
ZXNwb25zZTo6Y29uc3VtZUJvZHlCeUNodW5rcyk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
U2luay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVy
U2luazo6UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbmspOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmVucXVldWUpOgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKwogMjAxOC0wMS0xNSAgWW9h
diBXZWlzcyAgPHlvYXZAeW9hdi53cz4KIAogICAgICAgICBTdXBwb3J0IGZvciBwcmVjb25uZWN0
IExpbmsgaGVhZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcAppbmRleCA4YWJmMTY1MDUzNDg4YTY5MGE1OWI2OGRjMThhMmMxMjMx
MThmOGI0Li42ZWU3YjQyN2MxODZhYWJiZmM2N2M4ZTQ2YjU1MTU0ZDE5NzFlNWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApA
QCAtOTksNiArOTksMTMgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6ZXh0cmFjdChSZWFkYWJs
ZVN0cmVhbSYgc3RyZWFtLCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnUKICAgICBtX3NpbmstPnBp
cGVGcm9tKHN0cmVhbSk7CiB9CiAKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmV4dHJhY3RDaHVu
ayhSZWFkYWJsZVN0cmVhbSYgc3RyZWFtLCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2lu
azo6Q2FsbGJhY2tDaHVua1JlY2VpdmVkJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKCFtX3Np
bmspOworICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVh
dGVXaXRoQ2h1bmtDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9zaW5rLT5waXBl
RnJvbShzdHJlYW0pOworfQorCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVhZGFibGVTdHJlYW0qIHN0cmVhbSkKIHsKICAg
ICBpZiAoc3RyZWFtKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmgKaW5kZXggYjQ2N2RiNjZlYWFmZGVhMmRmY2I5ZmZjZjVkZDg4M2VhNzIx
MjlkYy4uODkwZTc5YzFjMjZiYjNmYTA5YjU5ZmQ0NGNkYjAzZWYzNDg1N2ZkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNjMs
NiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhbigpOwogCiAgICAgdm9pZCBleHRyYWN0
KFJlYWRhYmxlU3RyZWFtJiwgUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OkNhbGxi
YWNrJiYpOworICAgIHZvaWQgZXh0cmFjdENodW5rKFJlYWRhYmxlU3RyZWFtJiwgUmVhZGFibGVT
dHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OkNhbGxiYWNrQ2h1bmtSZWNlaXZlZCYmKTsKICAgICB2
b2lkIHJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgUmVhZGFibGVTdHJlYW0qKTsKICAg
ICB2b2lkIHJlc29sdmVXaXRoRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBjb25zdCB1bnNp
Z25lZCBjaGFyKiwgdW5zaWduZWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwCmluZGV4IDU0MTJmZDI5NmJiNTA4ZTgxMGJlNWQ5M2Y1ZDZlZjI5YmIy
NzMyNzguLmU1Y2Q4OGEzMmQxNTAyYjJhNzNmNGNiZWExY2ViMmI3YmY1ZGRhYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0xNDIsNiArMTQy
LDExIEBAIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJl
c3BvbnNlKHJlc3BvbnNlKTsKIH0KIAordm9pZCBGZXRjaExvYWRlcjo6Y29uc3VtZUNodW5rcygp
Cit7CisgICAgbV9jb25zdW1lciA9IG51bGxwdHI7Cit9CisKIHZvaWQgRmV0Y2hMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIHZhbHVlLCBpbnQgc2l6ZSkKIHsKICAgICBpZiAoIW1f
Y29uc3VtZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApp
bmRleCA2N2RlMmU1NDYyYmYzZGM2YWI4MGMyNGEzMThjNDA1NGZjZjkyY2E1Li4yNGJiOTljNjU3
MWM3MWQwMTkwNTFlMzIyNjNjMzNlOWYzZDE5MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICB+RmV0
Y2hMb2FkZXIoKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7
CisgICAgdm9pZCBjb25zdW1lQ2h1bmtzKCk7CiAKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBjb25zdCBGZXRjaFJlcXVlc3QmKTsKICAgICB2b2lkIHN0YXJ0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBCbG9iJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCAyYmYwMDMyZjE0NzdlMjU5MmY5Zjg5
NmI3ZDQ3YTEzMTNmN2JlOTU2Li42NjM4NGFmYWFmMTkwMjA4MmM5MzI2OWYwZTRkZmFhYjlkNzE2
NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKQEAgLTI4MCw2ICsyODAsMTMgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKIHZvaWQgRmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorICAgIGlmICghbV9yZXNw
b25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlKSB7CisgICAgICAgIGlmIChhdXRvIGNhbGxiYWNr
ID0gV1RGTW92ZShtX2NvbnN1bWVCb2R5QnlDaHVua3NDYWxsYmFjaykpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKG1fcmVzcG9uc2UuYm9keSgpLmNvbnN1bWVyKCkudGFrZURhdGEoKSwgZGF0YSwg
c2l6ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBBU1NF
UlQobV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKICAgICBhdXRvJiBzb3VyY2Ug
PSAqbV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlOwogCkBAIC0zNDEsNiArMzQ4LDE3
IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0oQ29u
c3VtZURhdGFDYWxsYmFjayYmIGNhbGxiYWNrCiAgICAgbV9ib2R5LT5jb25zdW1lcigpLmV4dHJh
Y3QoKm1fYm9keS0+cmVhZGFibGVTdHJlYW0oKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCit2
b2lkIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5QnlDaHVua3NGcm9tUmVhZGFibGVTdHJlYW0o
Q29uc3VtZURhdGFCeUNodW5rc0NhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1f
Ym9keSk7CisgICAgQVNTRVJUKG1fYm9keS0+cmVhZGFibGVTdHJlYW0oKSk7CisKKyAgICBBU1NF
UlQoIWlzRGlzdHVyYmVkKCkpOworICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOworCisgICAgbV9i
b2R5LT5jb25zdW1lcigpLmV4dHJhY3RDaHVuaygqbV9ib2R5LT5yZWFkYWJsZVN0cmVhbSgpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlX
aGVuTG9hZGVkKENvbnN1bWVEYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQo
aXNMb2FkaW5nKCkpOwpAQCAtMzUxLDYgKzM2OSwxNiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmNv
bnN1bWVCb2R5V2hlbkxvYWRlZChDb25zdW1lRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAg
bV9ib2R5TG9hZGVyLT5zZXRDb25zdW1lRGF0YUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKTsK
IH0KIAordm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQ2h1bmtzKCkKK3sKKyAgICBtX2JvZHlM
b2FkZXItPmNvbnN1bWVDaHVua3MoKTsKK30KKwordm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1l
Qm9keUJ5Q2h1bmtzKENvbnN1bWVCb2R5QnlDaHVua3NDYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIG1fYm9keUxvYWRlci0+c2V0Q29uc3VtZUJvZHlCeUNodW5rcyhXVEZNb3ZlKGNhbGxiYWNr
KSk7Cit9CisKIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYg
ZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluZykKIHsKICAgICBtX2JvZHlTaXplV2l0
aFBhZGRpbmcgPSBib2R5U2l6ZVdpdGhQYWRkaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAzNmY4YTFmYjg2ODNmZWJhODBkMDk3NGIwNDRj
NjY3YWI5MDJkYTg0Li4wZTJjYTIxMGQxOGYxODdlNmM3ZWEyOGE0MzE0NWY2NjM1MjVmNjEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtOTIs
OCArOTIsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgeyByZXR1cm4g
ISFtX2JvZHlMb2FkZXI7IH0KIAogICAgIHVzaW5nIENvbnN1bWVEYXRhQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpPjsKKyAg
ICB1c2luZyBDb25zdW1lRGF0YUJ5Q2h1bmtzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
RXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYsIGNvbnN0IHVpbnQ4X3QgKiwgc2l6
ZV90KT47CisgICAgdXNpbmcgQ29uc3VtZUJvZHlCeUNodW5rc0NhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmLCBjb25zdCBjaGFy
Kiwgc2l6ZV90KT47CiAgICAgdm9pZCBjb25zdW1lQm9keVdoZW5Mb2FkZWQoQ29uc3VtZURhdGFD
YWxsYmFjayYmKTsKKyAgICB2b2lkIGNvbnN1bWVCb2R5QnlDaHVua3MoQ29uc3VtZUJvZHlCeUNo
dW5rc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgY29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0o
Q29uc3VtZURhdGFDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNvbnN1bWVCb2R5QnlDaHVua3NGcm9t
UmVhZGFibGVTdHJlYW0oQ29uc3VtZURhdGFCeUNodW5rc0NhbGxiYWNrJiYpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7CiAK
QEAgLTEwMiw2ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3Qgb3BhcXVlTG9hZElkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZUxvYWRJZGVudGlmaWVyOyB9CiAKICAgICB2
b2lkIGluaXRpYWxpemVPcGFxdWVMb2FkSWRlbnRpZmllckZvclRlc3RpbmcoKSB7IG1fb3BhcXVl
TG9hZElkZW50aWZpZXIgPSAxOyB9CisgICAgdm9pZCBjb25zdW1lQ2h1bmtzKCk7CiAKIHByaXZh
dGU6CiAgICAgRmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRp
b25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2Um
Jik7CkBAIC0xMjUsNiArMTMwLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgc3RvcCgpOwog
CiAgICAgICAgIHZvaWQgc2V0Q29uc3VtZURhdGFDYWxsYmFjayhDb25zdW1lRGF0YUNhbGxiYWNr
JiYgY29uc3VtZURhdGFDYWxsYmFjaykgeyBtX2NvbnN1bWVEYXRhQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNvbnN1bWVEYXRhQ2FsbGJhY2spOyB9CisgICAgICAgIHZvaWQgc2V0Q29uc3VtZUJvZHlCeUNo
dW5rcyhDb25zdW1lQm9keUJ5Q2h1bmtzQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBtX2NvbnN1bWVC
b2R5QnlDaHVua3NDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CisKKyAgICAgICAgdm9p
ZCBjb25zdW1lQ2h1bmtzKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sb2FkZXItPmNvbnN1
bWVDaHVua3MoKTsKKyAgICAgICAgfQogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwpAQCAtMTQwLDYgKzE1MSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIEZldGNoUmVzcG9uc2UmIG1fcmVzcG9uc2U7CiAgICAgICAg
IE5vdGlmaWNhdGlvbkNhbGxiYWNrIG1fcmVzcG9uc2VDYWxsYmFjazsKICAgICAgICAgQ29uc3Vt
ZURhdGFDYWxsYmFjayBtX2NvbnN1bWVEYXRhQ2FsbGJhY2s7CisgICAgICAgIENvbnN1bWVCb2R5
QnlDaHVua3NDYWxsYmFjayBtX2NvbnN1bWVCb2R5QnlDaHVua3NDYWxsYmFjazsKICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEZldGNoTG9hZGVyPiBtX2xvYWRlcjsKICAgICB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3Bw
CmluZGV4IGUwMmE2NzkxZTY5NDY2YThlNjQ2MDYyMTI0YjM1NDYwYjE3NDdjYzguLjFlMjg3NzZl
MmE4N2M4NDI3MWVmOTRkNTg1MGIxNWU5YjQ4YjYyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwCkBAIC0zNiw4ICsz
Niw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1
ZmZlclNpbms6OlJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rKENhbGxiYWNrJiYgY2Fs
bGJhY2spCi0gICAgOiBtX2NhbGxiYWNrIHsgV1RGTW92ZShjYWxsYmFjaykgfQorUmVhZGFibGVT
dHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OlJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5r
KENhbGxiYWNrJiYgY2FsbGJhY2ssIENhbGxiYWNrQ2h1bmtSZWNlaXZlZCYmIGNodW5rUmVjZWl2
ZWRDYWxsYmFjaykKKzogbV9jYWxsYmFjayB7IFdURk1vdmUoY2FsbGJhY2spIH0KKywgbV9jaHVu
a1JlY2VpdmVkQ2FsbGJhY2sgeyBXVEZNb3ZlKGNodW5rUmVjZWl2ZWRDYWxsYmFjaykgfQogewog
fQogCkBAIC01Myw5ICs1NCwxNSBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJT
aW5rOjplbnF1ZXVlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgYnVmZmVyKQogCiAgICAgaWYgKCFtX2Rh
dGEpIHsKICAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLmxlbmd0aCgpKTsKKyAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3Zl
KG1fY2h1bmtSZWNlaXZlZENhbGxiYWNrKSkKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
bV9kYXRhKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKyAgICAKICAgICBtX2RhdGEtPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmxlbmd0aCgpKTsKKworICAgIGlmIChhdXRv
IGNhbGxiYWNrID0gV1RGTW92ZShtX2NodW5rUmVjZWl2ZWRDYWxsYmFjaykpCisgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUobV9kYXRhKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpKTsK
IH0KIAogdm9pZCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y2xvc2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2lu
ay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5o
CmluZGV4IDYxYzJhYWJlZjJkNTY2MDMxOGViYjc5MDVkMWZhZWE5NTg3MmJmNTkuLjYxMjlhYjZl
NmQwZWIxMTc5NTc4NTJkZTFiNmE2ZDU1MWJjODAzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKQEAgLTUwLDE4ICs1MCwy
OSBAQCBwdWJsaWM6CiBjbGFzcyBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luayBmaW5h
bCA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbVNpbmsgewogcHVibGljOgogICAgIHVzaW5nIENhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYmKT47Ci0gICAgc3RhdGljIFJlZjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4g
Y3JlYXRlKENhbGxiYWNrJiYgY2FsbGJhY2spIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbmsoV1RGTW92ZShjYWxsYmFjaykpKTsgfQorICAgIHVz
aW5nIENhbGxiYWNrQ2h1bmtSZWNlaXZlZCA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25P
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiwgY29uc3QgdWludDhfdCAqLCBzaXplX3QpPjsKKyAg
ICBzdGF0aWMgUmVmPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBjcmVhdGUoQ2Fs
bGJhY2smJiBjYWxsYmFjaykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZVN0cmVhbVRv
U2hhcmVkQnVmZmVyU2luayhXVEZNb3ZlKGNhbGxiYWNrKSwgeyB9KSk7IH0KKyAgICAvLyBUT0RP
OiBEZWNpZGUgZG8gd2UgbmVlZCBtb3ZlIHRoaXMgdG8gc2VwYXJhdGUgY2xhc3MKKyAgICBzdGF0
aWMgUmVmPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBjcmVhdGVXaXRoQ2h1bmtD
YWxsYmFjayhDYWxsYmFja0NodW5rUmVjZWl2ZWQmJiBjaHVua1JlY2VpdmVkQ2FsbGJhY2spCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZVN0cmVhbVRvU2hhcmVk
QnVmZmVyU2luayh7IH0sIFdURk1vdmUoY2h1bmtSZWNlaXZlZENhbGxiYWNrKSkpOworICAgIH0K
ICAgICB2b2lkIHBpcGVGcm9tKFJlYWRhYmxlU3RyZWFtJik7Ci0gICAgdm9pZCBjbGVhckNhbGxi
YWNrKCkgeyBtX2NhbGxiYWNrID0geyB9OyB9CisgICAgdm9pZCBjbGVhckNhbGxiYWNrKCkKKyAg
ICB7CisgICAgICAgIG1fY2FsbGJhY2sgPSB7IH07CisgICAgICAgIG1fY2h1bmtSZWNlaXZlZENh
bGxiYWNrID0geyB9OworICAgIH0KIAogcHJpdmF0ZToKLSAgICBSZWFkYWJsZVN0cmVhbVRvU2hh
cmVkQnVmZmVyU2luayhDYWxsYmFjayYmKTsKKyAgICBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVm
ZmVyU2luayhDYWxsYmFjayYmLCBDYWxsYmFja0NodW5rUmVjZWl2ZWQmJik7CiAKICAgICB2b2lk
IGVucXVldWUoY29uc3QgQnVmZmVyU291cmNlJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZSgpIGZp
bmFsOwogICAgIHZvaWQgZXJyb3IoU3RyaW5nJiYpIGZpbmFsOwogCiAgICAgQ2FsbGJhY2sgbV9j
YWxsYmFjazsKKyAgICBDYWxsYmFja0NodW5rUmVjZWl2ZWQgbV9jaHVua1JlY2VpdmVkQ2FsbGJh
Y2s7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332593</attachid>
            <date>2018-01-29 15:55:12 -0800</date>
            <delta_ts>2018-01-30 13:58:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181600-20180129155511.patch</filename>
            <type>text/plain</type>
            <size>15734</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc1YzQ5ODZlNzY3OGVk
YzlhMzM4ZDlhMGEwMDEzNGYzOWEzMWRiZS4uNzNiZWU3NzE5ZWMyMzAxZmM0NjMyODY3ZGNlOWVm
ODY0MTdiNzI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE4LTAxLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4gYW5kIE9sZWtzYW5kciBTa2FjaGtvdiAgPGdz
a2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAgICAgRmV0Y2hSZXNwb25zZSBzaG91bGQgc3VwcG9y
dCBDb25zdW1lRGF0YSBjYWxsYmFjayBvbiBjaHVuayBkYXRhIGlzIHJlY2VpdmVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE2MDAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM2OTMyNTQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1i
b2R5LWxvYWRlZC1pbi1jaHVuay5odHRwcy5odG1sCisKKyAgICAgICAgQXBwbHkgc2FtZSByZWFk
LWJ5LWNodW5rIHN0cmF0ZWd5IGZvciBib2R5IGNvbWluZyBmcm9tIG5ldHdvcmsgYXMgZm9yIGJv
ZHkgY29taW5nIGZyb20gUmVhZGFibGVTdHJlYW0uCisgICAgICAgIFJlZmFjdG9yIHRvIGhhdmUg
b25lIGNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rIG1ldGhvZCBmb3IgYm90aCBjYXNlcy4KKyAg
ICAgICAgVGhpcyBhbGxvd3Mgc3RyZWFtaW5nIGRhdGEgZnJvbSBhIHNlcnZpY2Ugd29ya2VyIHRv
IFdlYlByb2Nlc3MgYXMgd291bGQgYmUgZG9uZSBieSBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2Fj
aGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmspOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisKIDIwMTgtMDEtMjkgIE9sZWtz
YW5kciBTa2FjaGtvdiAgPGdza2FjaGtvdkBnbWFpbC5jb20+CiAKICAgICAgICAgRmV0Y2hSZXNw
b25zZSBzaG91bGQgc3VwcG9ydCBDb25zdW1lRGF0YSBjYWxsYmFjayBvbiBjaHVuayBkYXRhIGlz
IHJlY2VpdmVkOiBoYW5kbGluZyBSZWFkYWJsZVN0cmVhbSBib2RpZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggYjFiMGY3OWJjMTgyYWViZmFjMDExNTU2
ZDcyZGYxMzJmNjU3OGM4My4uMjU0N2ZjY2Y1YjRiNzgxMjc4ZDllMDZkMjM4N2ZkZjc1ZjIwOTI3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI3NCw3
ICsyNzQsNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGlu
Zm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nv
bm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAg
ICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlXaGVuTG9hZGVkKFt0YXNrSGFuZGxlciA9IFdU
Rk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbl0oRXhjZXB0aW9uT3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRs
ZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCldKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNE
b25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjgyLDggKzI4MiwxMSBA
QCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxl
ci0+ZXJyb3IocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gdmFs
dWUgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIHRh
c2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHZhbHVlLnJlbGVhc2VO
b25OdWxsKCkpOworCisgICAgICAgICAgICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1bHQucmV0
dXJuVmFsdWUoKSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1bmstPnNpemUpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNl
Qm9keShyZWNvcmRQb3NpdGlvbiwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfSk7CiAgICAgfQpAQCAtMzMyLDggKzMzNSw4IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChS
ZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9t
aXNlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocmVzcG9uc2UtPmhhc1JlYWRh
YmxlU3RyZWFtQm9keSgpKSB7Ci0gICAgICAgIHJlc3BvbnNlLT5jb25zdW1lQm9keUZyb21SZWFk
YWJsZVN0cmVhbShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3Zl
KHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgIGlmIChyZXNwb25zZS0+aXNC
b2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKKyAgICAgICAgcmVzcG9uc2UtPmNvbnN1bWVCb2R5UmVj
ZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1v
dmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0
aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVz
cG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVz
cG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTM0
OCwxNSArMzUxLDYgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVm
PEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChyZXNwb25zZS0+aXNMb2FkaW5nKCkpIHsKLSAgICAgICAgc2V0UGVu
ZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJvZHlXaGVuTG9h
ZGVkKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVz
dCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIHRoaXNdKEV4Y2VwdGlvbk9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBwdXRXaXRo
UmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVzcG9uc2UpLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgdW5zZXRQZW5kaW5nQWN0
aXZpdHkodGhpcyk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAg
YmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIHJlc3BvbnNl
LT5jb25zdW1lQm9keSgpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9y
PHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92
ZShyZXN1bHQpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IGE1OWQxMjgwYTE2NTUzYjEzZTc1MjhkOWFjNzNlY2NkZTc0
ZmU1N2UuLjgxZGZiNjJhNmZiM2Y4NTU2OWE2YjljMDZmMDI1ZTliOTQxOGY4MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMjI1LDcg
KzIyNSw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2VlZCgpCiAg
ICAgICAgIG1fcmVzcG9uc2UuY2xvc2VTdHJlYW0oKTsKICNlbmRpZgogICAgIGlmIChhdXRvIGNv
bnN1bWVEYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKG1fY29uc3VtZURhdGFDYWxsYmFjaykpCi0gICAg
ICAgIGNvbnN1bWVEYXRhQ2FsbGJhY2sobV9yZXNwb25zZS5ib2R5KCkuY29uc3VtZXIoKS50YWtl
RGF0YSgpKTsKKyAgICAgICAgY29uc3VtZURhdGFDYWxsYmFjayhudWxscHRyKTsKIAogICAgIGlm
IChtX2xvYWRlci0+aXNTdGFydGVkKCkpIHsKICAgICAgICAgUmVmPEZldGNoUmVzcG9uc2U+IHBy
b3RlY3RvcihtX3Jlc3BvbnNlKTsKQEAgLTI5MCw3ICsyOTAsMTggQEAgdm9pZCBGZXRjaFJlc3Bv
bnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzb3UKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJ
KQotICAgIEFTU0VSVChtX3Jlc3BvbnNlLm1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpOworICAgIEFT
U0VSVChtX3Jlc3BvbnNlLm1fcmVhZGFibGVTdHJlYW1Tb3VyY2UgfHwgbV9jb25zdW1lRGF0YUNh
bGxiYWNrKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fY29uc3VtZURhdGFDYWxsYmFjayk7CisjZW5k
aWYKKworICAgIGlmIChtX2NvbnN1bWVEYXRhQ2FsbGJhY2spIHsKKyAgICAgICAgUmVhZGFibGVT
dHJlYW1DaHVuayBjaHVuayB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEp
LCBzaXplIH07CisgICAgICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogICAgIGF1dG8mIHNv
dXJjZSA9ICptX3Jlc3BvbnNlLm1fcmVhZGFibGVTdHJlYW1Tb3VyY2U7CiAKICAgICBpZiAoIXNv
dXJjZS5pc1B1bGxpbmcoKSkgewpAQCAtMzI3LDkgKzMzOCwyMSBAQCB2b2lkIEZldGNoUmVzcG9u
c2U6OkJvZHlMb2FkZXI6OnN0b3AoKQogICAgICAgICBtX2xvYWRlci0+c3RvcCgpOwogfQogCit2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmIGNvbnN1bWVEYXRhQ2FsbGJhY2spCit7CisgICAgQVNTRVJU
KCFtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOworICAgIG1fY29uc3VtZURhdGFDYWxsYmFjayA9IFdU
Rk1vdmUoY29uc3VtZURhdGFDYWxsYmFjayk7CisgICAgYXV0byBkYXRhID0gbV9sb2FkZXItPnN0
YXJ0U3RyZWFtaW5nKCk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBS
ZWFkYWJsZVN0cmVhbUNodW5rIGNodW5rIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgbV9jb25zdW1lRGF0YUNhbGxi
YWNrKCZjaHVuayk7Cit9CisKIEZldGNoUmVzcG9uc2U6OlJlc3BvbnNlRGF0YSBGZXRjaFJlc3Bv
bnNlOjpjb25zdW1lQm9keSgpCiB7Ci0gICAgQVNTRVJUKCFpc0xvYWRpbmcoKSk7CisgICAgQVNT
RVJUKCFpc0JvZHlSZWNlaXZlZEJ5Q2h1bmsoKSk7CiAKICAgICBpZiAoaXNCb2R5TnVsbCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM0MCwyNSArMzYzLDE5IEBAIEZldGNoUmVzcG9u
c2U6OlJlc3BvbnNlRGF0YSBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keSgpCiAgICAgcmV0dXJu
IGJvZHkoKS50YWtlKCk7CiB9CiAKLXZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlGcm9t
UmVhZGFibGVTdHJlYW0oQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJiBjYWxsYmFjaykKK3Zv
aWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoQ29uc3VtZURhdGFC
eUNodW5rQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBBU1NFUlQobV9ib2R5KTsKLSAgICBB
U1NFUlQobV9ib2R5LT5yZWFkYWJsZVN0cmVhbSgpKTsKLQorICAgIEFTU0VSVChpc0JvZHlSZWNl
aXZlZEJ5Q2h1bmsoKSk7CiAgICAgQVNTRVJUKCFpc0Rpc3R1cmJlZCgpKTsKICAgICBtX2lzRGlz
dHVyYmVkID0gdHJ1ZTsKIAotICAgIG1fYm9keS0+Y29uc3VtZXIoKS5leHRyYWN0KCptX2JvZHkt
PnJlYWRhYmxlU3RyZWFtKCksIFdURk1vdmUoY2FsbGJhY2spKTsKLX0KKyAgICBpZiAoaGFzUmVh
ZGFibGVTdHJlYW1Cb2R5KCkpIHsKKyAgICAgICAgbV9ib2R5LT5jb25zdW1lcigpLmV4dHJhY3Qo
Km1fYm9keS0+cmVhZGFibGVTdHJlYW0oKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogCi12b2lkIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5V2hlbkxvYWRl
ZChDb25zdW1lRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCi17CiAgICAgQVNTRVJUKGlzTG9hZGlu
ZygpKTsKLQotICAgIEFTU0VSVCghaXNEaXN0dXJiZWQoKSk7Ci0gICAgbV9pc0Rpc3R1cmJlZCA9
IHRydWU7Ci0KLSAgICBtX2JvZHlMb2FkZXItPnNldENvbnN1bWVEYXRhQ2FsbGJhY2soV1RGTW92
ZShjYWxsYmFjaykpOworICAgIG1fYm9keUxvYWRlci0+Y29uc3VtZURhdGFCeUNodW5rKFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNw
b25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBmNGRjNGFlNGE5MTM1
YjBkYmZlOWMyZWRiYTFkOGFlNjU2NDA5MjI0Li45NGJiNDVlNTQ5Yzk0YWIzYmRjNjdkZTQyMzcz
YTk2ODUxZTIwMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaApAQCAtOTIsMTIgKzkyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJvZHlEYXRh
KFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIAogICAgIGJv
b2wgaXNMb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gISFtX2JvZHlMb2FkZXI7IH0KLQotICAgIHVz
aW5nIENvbnN1bWVEYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpPjsKLSAgICB2b2lkIGNvbnN1bWVCb2R5V2hlbkxvYWRl
ZChDb25zdW1lRGF0YUNhbGxiYWNrJiYpOworICAgIGJvb2wgaXNCb2R5UmVjZWl2ZWRCeUNodW5r
KCkgY29uc3QgeyByZXR1cm4gaXNMb2FkaW5nKCkgfHwgaGFzUmVhZGFibGVTdHJlYW1Cb2R5KCk7
IH0KIAogICAgIHVzaW5nIENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrID0gV1RGOjpGdW5jdGlv
bjx2b2lkKEV4Y2VwdGlvbk9yPFJlYWRhYmxlU3RyZWFtQ2h1bmsqPiYmKT47Ci0gICAgdm9pZCBj
b25zdW1lQm9keUZyb21SZWFkYWJsZVN0cmVhbShDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYm
KTsKKyAgICB2b2lkIGNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVu
a0NhbGxiYWNrJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXNwb25zZSByZXNv
dXJjZVJlc3BvbnNlKCkgY29uc3Q7CiAKQEAgLTEyOCw3ICsxMjYsNyBAQCBwcml2YXRlOgogICAg
ICAgICBib29sIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBGZXRjaFJlcXVl
c3QmKTsKICAgICAgICAgdm9pZCBzdG9wKCk7CiAKLSAgICAgICAgdm9pZCBzZXRDb25zdW1lRGF0
YUNhbGxiYWNrKENvbnN1bWVEYXRhQ2FsbGJhY2smJiBjb25zdW1lRGF0YUNhbGxiYWNrKSB7IG1f
Y29uc3VtZURhdGFDYWxsYmFjayA9IFdURk1vdmUoY29uc3VtZURhdGFDYWxsYmFjayk7IH0KKyAg
ICAgICAgdm9pZCBjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2sm
Jik7CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CkBAIC0xNDMsNyArMTQxLDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3RpZmljYXRpb25DYWxs
YmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7Ci0gICAgICAgIENvbnN1bWVEYXRhQ2FsbGJhY2sgbV9j
b25zdW1lRGF0YUNhbGxiYWNrOworICAgICAgICBDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayBt
X2NvbnN1bWVEYXRhQ2FsbGJhY2s7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZXRjaExvYWRl
cj4gbV9sb2FkZXI7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggZWU5
NWQ2OWZlNmRhYWQ0YTRhMDc2NDRhNTVlODY2ODMwNDkyN2MzNS4uOWM1Mzk0MzQ2YzQ3YzY2YjAx
NzEzNDE3YzkyM2ZmNjc2YzM3MTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC01
Myw4ICs1Myw4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNs
aWVudCwgRmV0Y2hSZXNwb25zZSogcmVzcG9uc2UpCiAKICAgICBjbGllbnQtPmRpZFJlY2VpdmVS
ZXNwb25zZShyZXNwb25zZS0+cmVzb3VyY2VSZXNwb25zZSgpKTsKIAotICAgIGlmIChyZXNwb25z
ZS0+aGFzUmVhZGFibGVTdHJlYW1Cb2R5KCkpIHsKLSAgICAgICAgcmVzcG9uc2UtPmNvbnN1bWVC
b2R5RnJvbVJlYWRhYmxlU3RyZWFtKFtjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCldIChhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICBpZiAocmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVu
aygpKSB7CisgICAgICAgIHJlc3BvbnNlLT5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbY2xp
ZW50ID0gV1RGTW92ZShjbGllbnQpXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgY2xpZW50
LT5kaWRGYWlsKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjcsMjAgKzY3LDYgQEAg
c3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBGZXRjaFJl
c3BvbnNlKiByZXNwb25zZSkKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgaWYgKHJlc3BvbnNlLT5pc0xvYWRpbmcoKSkgewotICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHNlbmQgdGhlIGJvZHkgYXMgY2h1bmtzLgotICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJv
ZHlXaGVuTG9hZGVkKFtjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCldIChFeGNlcHRpb25PcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgICAgIGNsaWVudC0+ZGlkRmFpbCgp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKGF1dG8gYnVmZmVyID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICAg
ICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwot
ICAgICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CiAKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsK
ICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGNjMDk3ZjNkMWQzYWJjZjJmZmEyOTIy
ZDljODVjNGFiOTU0NmMzNTEuLjgyZDI4YTNlNzUzMzUxMmYyZmVmY2JhODdhMDIxMDliNTE5ODQx
NmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4
LTAxLTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4gYW5kIE9sZWtzYW5kciBT
a2FjaGtvdiAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAgICAgRmV0Y2hSZXNwb25zZSBz
aG91bGQgc3VwcG9ydCBDb25zdW1lRGF0YSBjYWxsYmFjayBvbiBjaHVuayBkYXRhIGlzIHJlY2Vp
dmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE2
MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2OTMyNTQ3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtYm9keS1s
b2FkZWQtaW4tY2h1bmsuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50
LXJlc3BvbmQtd2l0aC1ib2R5LWxvYWRlZC1pbi1jaHVuay5odHRwcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L3Jlc291cmNlcy9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtYm9keS1sb2FkZWQtaW4tY2h1bmst
d29ya2VyLmpzOiBBZGRlZC4KKwogMjAxOC0wMS0yOSAgT2xla3NhbmRyIFNrYWNoa292ICA8Z3Nr
YWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBGZXRjaFJlc3BvbnNlIHNob3VsZCBzdXBwb3J0
IENvbnN1bWVEYXRhIGNhbGxiYWNrIG9uIGNodW5rIGRhdGEgaXMgcmVjZWl2ZWQ6IGhhbmRsaW5n
IFJlYWRhYmxlU3RyZWFtIGJvZGllcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0
Y2gtZXZlbnQtcmVzcG9uZC13aXRoLWJvZHktbG9hZGVkLWluLWNodW5rLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1ib2R5LWxv
YWRlZC1pbi1jaHVuay5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY3MDllYjZhZDkz
MjFjZmFiNGQ4ODI0MmQ1MTA4OTYyNzJjZTE4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1ib2R5LWxvYWRlZC1pbi1jaHVuay5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgUmVzcG9uZCBieSBjaHVu
a3Mgd2l0aCBhIFJlc3BvbnNlIGJlaW5nIGxvYWRlZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRoLWJvZHktbG9hZGVkLWluLWNodW5rLmh0
dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtYm9k
eS1sb2FkZWQtaW4tY2h1bmsuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjRiNmYzMjE3YmU0N2Zj
YmQ1NTYyNjRmZWYwYzM3ZTJmNWJjNTcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRoLWJvZHktbG9hZGVkLWluLWNodW5rLmh0dHBz
Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+cmVzcG9uZFdpdGggd2l0aCBhIHJlc3BvbnNlIHdob3NlIGJvZHkgaXMg
YmVpbmcgbG9hZGVkIGZyb20gdGhlIG5ldHdvcmsgYnkgY2h1bmtzPC90aXRsZT4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBz
dHJpY3QnOworCitjb25zdCBXT1JLRVIgPSAncmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQt
d2l0aC1ib2R5LWxvYWRlZC1pbi1jaHVuay13b3JrZXIuanMnOworY29uc3QgU0NPUEUgPSAncmVz
b3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1ib2R5LWxvYWRlZC1pbi1jaHVuay1pZnJh
bWUuaHRtbCc7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICB2YXIgcmVnID0gYXdh
aXQgc2VydmljZV93b3JrZXJfdW5yZWdpc3Rlcl9hbmRfcmVnaXN0ZXIodCwgV09SS0VSLCBTQ09Q
RSk7CisgICAgYWRkX2NvbXBsZXRpb25fY2FsbGJhY2soKCkgPT4gcmVnLnVucmVnaXN0ZXIoKSk7
CisgICAgYXdhaXQgd2FpdF9mb3Jfc3RhdGUodCwgcmVnLmluc3RhbGxpbmcsICdhY3RpdmF0ZWQn
KTsKKyAgICBsZXQgaWZyYW1lID0gYXdhaXQgd2l0aF9pZnJhbWUoU0NPUEUpOworICAgIHQuYWRk
X2NsZWFudXAoKCkgPT4gaWZyYW1lLnJlbW92ZSgpKTsKKworICAgIGxldCByZXNwb25zZSA9IGF3
YWl0IGlmcmFtZS5jb250ZW50V2luZG93LmZldGNoKCdib2R5LWluLWNodW5rJyk7CisgICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCByZXNwb25zZS50ZXh0KCksICdURVNUX1RSSUNLTEVcblRFU1RfVFJJ
Q0tMRVxuVEVTVF9UUklDS0xFXG5URVNUX1RSSUNLTEVcbicpOworfSwgJ1Jlc3BvbmQgYnkgY2h1
bmtzIHdpdGggYSBSZXNwb25zZSBiZWluZyBsb2FkZWQnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1i
b2R5LWxvYWRlZC1pbi1jaHVuay13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJj
ZXMvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRoLWJvZHktbG9hZGVkLWluLWNodW5rLXdvcmtlci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kM2JhOGE4ZGYyZTdhNGUwN2JjNjQ3YTJmNjM0OTAxYjcwNDE3MzRjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL2ZldGNoLWV2ZW50
LXJlc3BvbmQtd2l0aC1ib2R5LWxvYWRlZC1pbi1jaHVuay13b3JrZXIuanMKQEAgLTAsMCArMSw3
IEBACisndXNlIHN0cmljdCc7CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCBldmVu
dCA9PiB7CisgICAgaWYgKCFldmVudC5yZXF1ZXN0LnVybC5tYXRjaCgvYm9keS1pbi1jaHVuayQv
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCIuLi8uLi8u
Li9mZXRjaC9hcGkvcmVzb3VyY2VzL3RyaWNrbGUucHk/Y291bnQ9NCZkZWxheT01MCIpKTsKK30p
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332700</attachid>
            <date>2018-01-30 13:58:12 -0800</date>
            <delta_ts>2018-01-30 20:23:54 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181600-20180130135811.patch</filename>
            <type>text/plain</type>
            <size>15716</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3Nzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTAxYjZjMWZiMzIzOTJk
ZjQzYjhmMzkxY2MwN2M5NTE3Mzk5NjJhZi4uNTUzYTk4YzJkM2ZhNWNlMzhiMGQ0NDgzZjRkNTgx
Nzk4MGY0MGUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE4LTAxLTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4gYW5kIE9sZWtzYW5kciBTa2FjaGtvdiAgPGdz
a2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAgICAgRmV0Y2hSZXNwb25zZSBzaG91bGQgc3VwcG9y
dCBDb25zdW1lRGF0YSBjYWxsYmFjayBvbiBjaHVuayBkYXRhIGlzIHJlY2VpdmVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE2MDAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM2OTMyNTQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hy
aXN0ZW5zZW4uCisKKyAgICAgICAgVGVzdDogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRo
LWJvZHktbG9hZGVkLWluLWNodW5rLmh0dHBzLmh0bWwKKworICAgICAgICBBcHBseSBzYW1lIHJl
YWQtYnktY2h1bmsgc3RyYXRlZ3kgZm9yIGJvZHkgY29taW5nIGZyb20gbmV0d29yayBhcyBmb3Ig
Ym9keSBjb21pbmcgZnJvbSBSZWFkYWJsZVN0cmVhbS4KKyAgICAgICAgUmVmYWN0b3IgdG8gaGF2
ZSBvbmUgY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsgbWV0aG9kIGZvciBib3RoIGNhc2VzLgor
ICAgICAgICBUaGlzIGFsbG93cyBzdHJlYW1pbmcgZGF0YSBmcm9tIGEgc2VydmljZSB3b3JrZXIg
dG8gV2ViUHJvY2VzcyBhcyB3b3VsZCBiZSBkb25lIGJ5IE5ldHdvcmtQcm9jZXNzLgorCisgICAg
ICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01D
YWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRTdWNjZWVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKwogMjAxOC0wMS0zMCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBodHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvY2xvbmUtb3BhcXVlLWJlaW5nLWxvYWRlZC1yZXNwb25zZS5odHRwcy5o
dG1sIHRvIHVzZSBIVFRQCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
CmluZGV4IGIxYjBmNzliYzE4MmFlYmZhYzAxMTU1NmQ3MmRmMTMyZjY1NzhjODMuLmFiZWY5MGY3
MmZjMDhkZDAzNGMyNTVmY2ZiMDc0NTgzM2M5Y2Q0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBET01DYWNoZTo6
YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCByZWNvcmRQb3NpdGlv
biA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVlc3QuZ2V0
KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVC
b2R5V2hlbkxvYWRlZChbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb25dKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhb
dGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpXSAoRXhjZXB0aW9uT3I8UmVhZGFibGVTdHJlYW1DaHVu
ayo+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXIt
PmlzRG9uZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI4Miw4ICsyODIs
MTEgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywg
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICAgICAgdGFza0hh
bmRsZXItPmVycm9yKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChhdXRv
IHZhbHVlID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgICAg
ICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCB2YWx1ZS5yZWxl
YXNlTm9uTnVsbCgpKTsKKworICAgICAgICAgICAgICAgIGlmIChhdXRvIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaHVuay0+ZGF0YSksIGNodW5rLT5zaXplKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNw
b25zZUJvZHkocmVjb3JkUG9zaXRpb24sIFdURk1vdmUoZGF0YSkpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTMzMiw4ICszMzUsOCBAQCB2b2lkIERPTUNhY2hlOjpw
dXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9N
UHJvbWlzZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHJlc3BvbnNlLT5oYXNS
ZWFkYWJsZVN0cmVhbUJvZHkoKSkgewotICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJvZHlGcm9t
UmVhZGFibGVTdHJlYW0oW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBpZiAocmVzcG9uc2Ut
PmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CisgICAgICAgIHJlc3BvbnNlLT5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBA
IC0zNDgsMTUgKzM1MSw2IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8s
IFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAocmVzcG9uc2UtPmlzTG9hZGluZygpKSB7Ci0gICAgICAgIHNl
dFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgcmVzcG9uc2UtPmNvbnN1bWVCb2R5V2hl
bkxvYWRlZChbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJl
cXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCB0aGlzXShFeGNlcHRpb25PcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgcHV0
V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgICAgIHVuc2V0UGVuZGlu
Z0FjdGl2aXR5KHRoaXMpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQog
ICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCByZXNw
b25zZS0+Y29uc3VtZUJvZHkoKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRp
b25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdU
Rk1vdmUocmVzdWx0KSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCBhNTlkMTI4MGExNjU1M2IxM2U3NTI4ZDlhYzczZWNj
ZGU3NGZlNTdlLi44MWRmYjYyYTZmYjNmODU1NjlhNmI5YzA2ZjAyNWU5Yjk0MThmODMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTIy
NSw3ICsyMjUsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFN1Y2NlZWQo
KQogICAgICAgICBtX3Jlc3BvbnNlLmNsb3NlU3RyZWFtKCk7CiAjZW5kaWYKICAgICBpZiAoYXV0
byBjb25zdW1lRGF0YUNhbGxiYWNrID0gV1RGTW92ZShtX2NvbnN1bWVEYXRhQ2FsbGJhY2spKQot
ICAgICAgICBjb25zdW1lRGF0YUNhbGxiYWNrKG1fcmVzcG9uc2UuYm9keSgpLmNvbnN1bWVyKCku
dGFrZURhdGEoKSk7CisgICAgICAgIGNvbnN1bWVEYXRhQ2FsbGJhY2sobnVsbHB0cik7CiAKICAg
ICBpZiAobV9sb2FkZXItPmlzU3RhcnRlZCgpKSB7CiAgICAgICAgIFJlZjxGZXRjaFJlc3BvbnNl
PiBwcm90ZWN0b3IobV9yZXNwb25zZSk7CkBAIC0yOTAsNyArMjkwLDE4IEBAIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc291CiB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogewogI2lmIEVOQUJMRShTVFJFQU1T
X0FQSSkKLSAgICBBU1NFUlQobV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKKyAg
ICBBU1NFUlQobV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlIHx8IG1fY29uc3VtZURh
dGFDYWxsYmFjayk7CisjZWxzZQorICAgIEFTU0VSVChtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOwor
I2VuZGlmCisKKyAgICBpZiAobV9jb25zdW1lRGF0YUNhbGxiYWNrKSB7CisgICAgICAgIFJlYWRh
YmxlU3RyZWFtQ2h1bmsgY2h1bmsgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhKSwgc2l6ZSB9OworICAgICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKICAgICBhdXRv
JiBzb3VyY2UgPSAqbV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlOwogCiAgICAgaWYg
KCFzb3VyY2UuaXNQdWxsaW5nKCkpIHsKQEAgLTMyNyw5ICszMzgsMjEgQEAgdm9pZCBGZXRjaFJl
c3BvbnNlOjpCb2R5TG9hZGVyOjpzdG9wKCkKICAgICAgICAgbV9sb2FkZXItPnN0b3AoKTsKIH0K
IAordm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJiBjb25zdW1lRGF0YUNhbGxiYWNrKQoreworICAgIEFT
U0VSVCghbV9jb25zdW1lRGF0YUNhbGxiYWNrKTsKKyAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2sg
PSBXVEZNb3ZlKGNvbnN1bWVEYXRhQ2FsbGJhY2spOworICAgIGF1dG8gZGF0YSA9IG1fbG9hZGVy
LT5zdGFydFN0cmVhbWluZygpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUmVhZGFibGVTdHJlYW1DaHVuayBjaHVuayB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9OworICAgIG1fY29uc3VtZURhdGFD
YWxsYmFjaygmY2h1bmspOworfQorCiBGZXRjaFJlc3BvbnNlOjpSZXNwb25zZURhdGEgRmV0Y2hS
ZXNwb25zZTo6Y29uc3VtZUJvZHkoKQogewotICAgIEFTU0VSVCghaXNMb2FkaW5nKCkpOworICAg
IEFTU0VSVCghaXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpOwogCiAgICAgaWYgKGlzQm9keU51bGwo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNDAsMjUgKzM2MywxOSBAQCBGZXRjaFJl
c3BvbnNlOjpSZXNwb25zZURhdGEgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHkoKQogICAgIHJl
dHVybiBib2R5KCkudGFrZSgpOwogfQogCi12b2lkIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5
RnJvbVJlYWRhYmxlU3RyZWFtKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYgY2FsbGJhY2sp
Cit2b2lkIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKENvbnN1bWVE
YXRhQnlDaHVua0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgQVNTRVJUKG1fYm9keSk7Ci0g
ICAgQVNTRVJUKG1fYm9keS0+cmVhZGFibGVTdHJlYW0oKSk7Ci0KKyAgICBBU1NFUlQoaXNCb2R5
UmVjZWl2ZWRCeUNodW5rKCkpOwogICAgIEFTU0VSVCghaXNEaXN0dXJiZWQoKSk7CiAgICAgbV9p
c0Rpc3R1cmJlZCA9IHRydWU7CiAKLSAgICBtX2JvZHktPmNvbnN1bWVyKCkuZXh0cmFjdCgqbV9i
b2R5LT5yZWFkYWJsZVN0cmVhbSgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci19CisgICAgaWYgKGhh
c1JlYWRhYmxlU3RyZWFtQm9keSgpKSB7CisgICAgICAgIG1fYm9keS0+Y29uc3VtZXIoKS5leHRy
YWN0KCptX2JvZHktPnJlYWRhYmxlU3RyZWFtKCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keVdoZW5M
b2FkZWQoQ29uc3VtZURhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQotewogICAgIEFTU0VSVChpc0xv
YWRpbmcoKSk7Ci0KLSAgICBBU1NFUlQoIWlzRGlzdHVyYmVkKCkpOwotICAgIG1faXNEaXN0dXJi
ZWQgPSB0cnVlOwotCi0gICAgbV9ib2R5TG9hZGVyLT5zZXRDb25zdW1lRGF0YUNhbGxiYWNrKFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX2JvZHlMb2FkZXItPmNvbnN1bWVEYXRhQnlDaHVuayhX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggZjRkYzRhZTRh
OTEzNWIwZGJmZTljMmVkYmExZDhhZTY1NjQwOTIyNC4uOTRiYjQ1ZTU0OWM5NGFiM2JkYzY3ZGU0
MjM3M2E5Njg1MWUyMDEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmgKQEAgLTkyLDEyICs5MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCb2R5
RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluZyk7CiAKICAg
ICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9ib2R5TG9hZGVyOyB9Ci0KLSAg
ICB1c2luZyBDb25zdW1lRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmKT47Ci0gICAgdm9pZCBjb25zdW1lQm9keVdoZW5M
b2FkZWQoQ29uc3VtZURhdGFDYWxsYmFjayYmKTsKKyAgICBib29sIGlzQm9keVJlY2VpdmVkQnlD
aHVuaygpIGNvbnN0IHsgcmV0dXJuIGlzTG9hZGluZygpIHx8IGhhc1JlYWRhYmxlU3RyZWFtQm9k
eSgpOyB9CiAKICAgICB1c2luZyBDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWFkYWJsZVN0cmVhbUNodW5rKj4mJik+OwotICAgIHZv
aWQgY29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0oQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJh
Y2smJik7CisgICAgdm9pZCBjb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhDb25zdW1lRGF0YUJ5
Q2h1bmtDYWxsYmFjayYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVzcG9uc2Ug
cmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0OwogCkBAIC0xMjgsNyArMTI2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgYm9vbCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRmV0Y2hS
ZXF1ZXN0Jik7CiAgICAgICAgIHZvaWQgc3RvcCgpOwogCi0gICAgICAgIHZvaWQgc2V0Q29uc3Vt
ZURhdGFDYWxsYmFjayhDb25zdW1lRGF0YUNhbGxiYWNrJiYgY29uc3VtZURhdGFDYWxsYmFjaykg
eyBtX2NvbnN1bWVEYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbnN1bWVEYXRhQ2FsbGJhY2spOyB9
CisgICAgICAgIHZvaWQgY29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxi
YWNrJiYpOwogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwpAQCAtMTQzLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgRmV0Y2hSZXNwb25zZSYgbV9yZXNwb25zZTsKICAgICAgICAgTm90aWZpY2F0aW9u
Q2FsbGJhY2sgbV9yZXNwb25zZUNhbGxiYWNrOwotICAgICAgICBDb25zdW1lRGF0YUNhbGxiYWNr
IG1fY29uc3VtZURhdGFDYWxsYmFjazsKKyAgICAgICAgQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJh
Y2sgbV9jb25zdW1lRGF0YUNhbGxiYWNrOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hM
b2FkZXI+IG1fbG9hZGVyOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4
IGVlOTVkNjlmZTZkYWFkNGE0YTA3NjQ0YTU1ZTg2NjgzMDQ5MjdjMzUuLjljNTM5NDM0NmM0N2M2
NmIwMTcxMzQxN2M5MjNmZjY3NmMzNzE2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApA
QCAtNTMsOCArNTMsOCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4m
JiBjbGllbnQsIEZldGNoUmVzcG9uc2UqIHJlc3BvbnNlKQogCiAgICAgY2xpZW50LT5kaWRSZWNl
aXZlUmVzcG9uc2UocmVzcG9uc2UtPnJlc291cmNlUmVzcG9uc2UoKSk7CiAKLSAgICBpZiAocmVz
cG9uc2UtPmhhc1JlYWRhYmxlU3RyZWFtQm9keSgpKSB7Ci0gICAgICAgIHJlc3BvbnNlLT5jb25z
dW1lQm9keUZyb21SZWFkYWJsZVN0cmVhbShbY2xpZW50ID0gV1RGTW92ZShjbGllbnQpXSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgaWYgKHJlc3BvbnNlLT5pc0JvZHlSZWNlaXZlZEJ5
Q2h1bmsoKSkgeworICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmso
W2NsaWVudCA9IFdURk1vdmUoY2xpZW50KV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIGNs
aWVudC0+ZGlkRmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY3LDIwICs2Nyw2
IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRmV0
Y2hSZXNwb25zZSogcmVzcG9uc2UpCiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGlmIChyZXNwb25zZS0+aXNMb2FkaW5nKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBzZW5kIHRoZSBib2R5IGFzIGNodW5rcy4KLSAgICAgICAgcmVzcG9uc2UtPmNvbnN1
bWVCb2R5V2hlbkxvYWRlZChbY2xpZW50ID0gV1RGTW92ZShjbGllbnQpXSAoRXhjZXB0aW9uT3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBjbGllbnQtPmRpZEZh
aWwoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
KTsKLSAgICAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7Ci0gICAgICAgIH0pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQogCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5
KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRh
KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAxY2RmZDU1M2ZmMjRiZjJiOGVi
Y2I3ZmRlMmMwMGQwZjEzZmY0NWFjLi5mOTdjNGVlZDYwYzI2YTdkMzAyMGQ4Y2RmZDI1NTQ1M2M1
NjcyMTBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxOC0wMS0zMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+IGFuZCBPbGVrc2Fu
ZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIEZldGNoUmVzcG9u
c2Ugc2hvdWxkIHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgb24gY2h1bmsgZGF0YSBpcyBy
ZWNlaXZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgxNjAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjkzMjU0Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgt
Ym9keS1sb2FkZWQtaW4tY2h1bmsuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNo
LWV2ZW50LXJlc3BvbmQtd2l0aC1ib2R5LWxvYWRlZC1pbi1jaHVuay5odHRwcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL3Jlc291cmNlcy9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtYm9keS1sb2FkZWQtaW4t
Y2h1bmstd29ya2VyLmpzOiBBZGRlZC4KKwogMjAxOC0wMS0zMCAgSmF2aWVyIEZlcm5hbmRleiAg
PGpmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWFsaWduXSBUaGUgJ2Jhc2Vs
aW5lJyB2YWx1ZSBtdXN0IGJlIGludmFsaWQgZm9yIHRoZSAnanVzdGlmeS1jb250ZW50JyBwcm9w
ZXJ0eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQtcmVzcG9uZC13
aXRoLWJvZHktbG9hZGVkLWluLWNodW5rLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1ib2R5LWxvYWRlZC1pbi1jaHVuay5odHRw
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY3MDllYjZhZDkzMjFjZmFiNGQ4ODI0MmQ1MTA4
OTYyNzJjZTE4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2
ZW50LXJlc3BvbmQtd2l0aC1ib2R5LWxvYWRlZC1pbi1jaHVuay5odHRwcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzIEBACisKK1BBU1MgUmVzcG9uZCBieSBjaHVua3Mgd2l0aCBhIFJlc3BvbnNl
IGJlaW5nIGxvYWRlZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZl
bnQtcmVzcG9uZC13aXRoLWJvZHktbG9hZGVkLWluLWNodW5rLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtYm9keS1sb2FkZWQtaW4tY2h1bmsu
aHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjRiNmYzMjE3YmU0N2ZjYmQ1NTYyNjRmZWYwYzM3ZTJm
NWJjNTcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQt
cmVzcG9uZC13aXRoLWJvZHktbG9hZGVkLWluLWNodW5rLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwy
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+cmVz
cG9uZFdpdGggd2l0aCBhIHJlc3BvbnNlIHdob3NlIGJvZHkgaXMgYmVpbmcgbG9hZGVkIGZyb20g
dGhlIG5ldHdvcmsgYnkgY2h1bmtzPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdC1oZWxw
ZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCitjb25zdCBX
T1JLRVIgPSAncmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1ib2R5LWxvYWRlZC1p
bi1jaHVuay13b3JrZXIuanMnOworY29uc3QgU0NPUEUgPSAncmVzb3VyY2VzL2ZldGNoLWV2ZW50
LXJlc3BvbmQtd2l0aC1ib2R5LWxvYWRlZC1pbi1jaHVuay1pZnJhbWUuaHRtbCc7CisKK3Byb21p
c2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICB2YXIgcmVnID0gYXdhaXQgc2VydmljZV93b3JrZXJf
dW5yZWdpc3Rlcl9hbmRfcmVnaXN0ZXIodCwgV09SS0VSLCBTQ09QRSk7CisgICAgYWRkX2NvbXBs
ZXRpb25fY2FsbGJhY2soKCkgPT4gcmVnLnVucmVnaXN0ZXIoKSk7CisgICAgYXdhaXQgd2FpdF9m
b3Jfc3RhdGUodCwgcmVnLmluc3RhbGxpbmcsICdhY3RpdmF0ZWQnKTsKKyAgICBsZXQgaWZyYW1l
ID0gYXdhaXQgd2l0aF9pZnJhbWUoU0NPUEUpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4gaWZy
YW1lLnJlbW92ZSgpKTsKKworICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGlmcmFtZS5jb250ZW50
V2luZG93LmZldGNoKCdib2R5LWluLWNodW5rJyk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBy
ZXNwb25zZS50ZXh0KCksICdURVNUX1RSSUNLTEVcblRFU1RfVFJJQ0tMRVxuVEVTVF9UUklDS0xF
XG5URVNUX1RSSUNLTEVcbicpOworfSwgJ1Jlc3BvbmQgYnkgY2h1bmtzIHdpdGggYSBSZXNwb25z
ZSBiZWluZyBsb2FkZWQnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvcmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1ib2R5LWxvYWRlZC1pbi1jaHVu
ay13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvZmV0Y2gtZXZlbnQtcmVz
cG9uZC13aXRoLWJvZHktbG9hZGVkLWluLWNodW5rLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2Jh
OGE4ZGYyZTdhNGUwN2JjNjQ3YTJmNjM0OTAxYjcwNDE3MzRjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1ib2R5
LWxvYWRlZC1pbi1jaHVuay13b3JrZXIuanMKQEAgLTAsMCArMSw3IEBACisndXNlIHN0cmljdCc7
CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCBldmVudCA9PiB7CisgICAgaWYgKCFl
dmVudC5yZXF1ZXN0LnVybC5tYXRjaCgvYm9keS1pbi1jaHVuayQvKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCIuLi8uLi8uLi9mZXRjaC9hcGkvcmVzb3Vy
Y2VzL3RyaWNrbGUucHk/Y291bnQ9NCZkZWxheT01MCIpKTsKK30pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>