<?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>177002</bug_id>
          
          <creation_ts>2017-09-15 08:28:10 -0700</creation_ts>
          <short_desc>Use vector map routine in WebCore CacheStorage implementation</short_desc>
          <delta_ts>2017-10-03 02:35:59 -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>WebCore Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1349307</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-15 08:28:10 -0700</bug_when>
    <thetext>For increased readability</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349310</commentid>
    <comment_count>1</comment_count>
      <attachid>320902</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-15 08:34:15 -0700</bug_when>
    <thetext>Created attachment 320902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349311</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-15 08:34:55 -0700</bug_when>
    <thetext>Attachment 320902 did not pass style-queue:


ERROR: Source/WebCore/Modules/cache/CacheStorage.cpp:150:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349327</commentid>
    <comment_count>3</comment_count>
      <attachid>320907</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-15 09:06:55 -0700</bug_when>
    <thetext>Created attachment 320907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349329</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-15 09:08:10 -0700</bug_when>
    <thetext>Attachment 320907 did not pass style-queue:


ERROR: Source/WebCore/Modules/cache/CacheStorage.cpp:130:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349331</commentid>
    <comment_count>5</comment_count>
      <attachid>320908</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-15 09:17:50 -0700</bug_when>
    <thetext>Created attachment 320908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349332</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-15 09:19:15 -0700</bug_when>
    <thetext>Attachment 320908 did not pass style-queue:


ERROR: Source/WebCore/Modules/cache/CacheStorage.cpp:130:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349344</commentid>
    <comment_count>7</comment_count>
      <attachid>320911</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-15 09:30:17 -0700</bug_when>
    <thetext>Created attachment 320911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349346</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-15 09:31:39 -0700</bug_when>
    <thetext>Attachment 320911 did not pass style-queue:


ERROR: Source/WebCore/Modules/cache/CacheStorage.cpp:130:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355115</commentid>
    <comment_count>9</comment_count>
      <attachid>320911</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-01 20:10:12 -0700</bug_when>
    <thetext>Comment on attachment 320911
Patch

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

&gt; Source/WebCore/Modules/cache/CacheStorage.cpp:77
&gt; +static inline Ref&lt;DOMCache&gt; copyCache(const Ref&lt;DOMCache&gt;&amp; cache)

This is annoying; just because Ref doesn’t like to be copied without an explicit call, eh?

&gt; Source/WebCore/Modules/cache/CacheStorage.cpp:130
&gt; +    auto position = m_caches.findMatching([&amp;] (const auto&amp; cache) { return info.identifier == cache-&gt;identifier(); });

Seems like we have the wrong data structure here if we have to loop over all of these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355304</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-02 10:46:46 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 320911 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=320911&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/cache/CacheStorage.cpp:77
&gt; &gt; +static inline Ref&lt;DOMCache&gt; copyCache(const Ref&lt;DOMCache&gt;&amp; cache)
&gt; 
&gt; This is annoying; just because Ref doesn’t like to be copied without an
&gt; explicit call, eh?

Yes, this is one of the negative side of uncopyable Ref.
The other workaround would be to make Vector&lt;Ref&lt;&gt;&gt; copyable.

&gt; 
&gt; &gt; Source/WebCore/Modules/cache/CacheStorage.cpp:130
&gt; &gt; +    auto position = m_caches.findMatching([&amp;] (const auto&amp; cache) { return info.identifier == cache-&gt;identifier(); });
&gt; 
&gt; Seems like we have the wrong data structure here if we have to loop over all
&gt; of these.

The spec mandates to keep the order of the keys (cache names) hence why we are using a Vector.

We can probably go with a HashMap though and sorting the keys when needed. That may be a nice follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355315</commentid>
    <comment_count>11</comment_count>
      <attachid>320911</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-02 10:55:14 -0700</bug_when>
    <thetext>Comment on attachment 320911
Patch

Rejecting attachment 320911 from commit-queue.

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

Last 500 characters of output:
king copy)
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored
patching file Source/WebCore/Modules/cache/DOMCache.cpp
patching file Source/WebCore/Modules/cache/DOMCache.h
patching file Source/WebCore/Modules/cache/DOMCacheEngine.cpp
patching file Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp

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

Full output: http://webkit-queues.webkit.org/results/4725818</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355316</commentid>
    <comment_count>12</comment_count>
      <attachid>320911</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-02 10:56:43 -0700</bug_when>
    <thetext>Comment on attachment 320911
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/cache/CacheStorage.cpp:130
&gt;&gt;&gt; +    auto position = m_caches.findMatching([&amp;] (const auto&amp; cache) { return info.identifier == cache-&gt;identifier(); });
&gt;&gt; 
&gt;&gt; Seems like we have the wrong data structure here if we have to loop over all of these.
&gt; 
&gt; The spec mandates to keep the order of the keys (cache names) hence why we are using a Vector.
&gt; 
&gt; We can probably go with a HashMap though and sorting the keys when needed. That may be a nice follow-up.

ListHashSet implements this kind of data structure, a set with an ordering on its members. We can make a variant that is a map as well as the one that is a set. But perhaps the memory use or other performance properties would be unacceptable for this use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355323</commentid>
    <comment_count>13</comment_count>
      <attachid>320911</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-02 11:00:07 -0700</bug_when>
    <thetext>Comment on attachment 320911
Patch

Rejecting attachment 320911 from commit-queue.

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

Last 500 characters of output:
king copy)
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored
patching file Source/WebCore/Modules/cache/DOMCache.cpp
patching file Source/WebCore/Modules/cache/DOMCache.h
patching file Source/WebCore/Modules/cache/DOMCacheEngine.cpp
patching file Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp

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

Full output: http://webkit-queues.webkit.org/results/4725882</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355506</commentid>
    <comment_count>14</comment_count>
      <attachid>322440</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-02 14:37:53 -0700</bug_when>
    <thetext>Created attachment 322440
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355511</commentid>
    <comment_count>15</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-02 14:40:28 -0700</bug_when>
    <thetext>Attachment 322440 did not pass style-queue:


ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:130:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:130:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:131:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:132:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:133:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355752</commentid>
    <comment_count>16</comment_count>
      <attachid>322440</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-03 02:35:11 -0700</bug_when>
    <thetext>Comment on attachment 322440
Patch for landing

Clearing flags on attachment: 322440

Committed r222774: &lt;http://trac.webkit.org/changeset/222774&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355753</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-03 02:35:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355754</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-03 02:35:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/34786553&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320902</attachid>
            <date>2017-09-15 08:34:15 -0700</date>
            <delta_ts>2017-09-15 09:06:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177002-20170915083414.patch</filename>
            <type>text/plain</type>
            <size>10807</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTYxNGQ2N2JjZDA5NDYz
YjBjOGRjNjI3MjU4YzE2MTQ5YzY0OTY5NC4uYmFiNjQxMzRmMTI2YzkxNjkxYmI1ZmEyN2YyNTNi
OWVmZjI2YTBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdmVjdG9yIG1hcCBy
b3V0aW5lIGluIFdlYkNvcmUgQ2FjaGVTdG9yYWdlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcwMDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZp
b3IuCisgICAgICAgIFJlcGxhY2luZyB1c2Ugb2YgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eS91bmNo
ZWNrZWRBcHBlbmQgYnkgdXNlIG9mIG1hcC4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZVN0b3JhZ2U6Om1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlOjpr
ZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDYWNoZXMpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6
Om1hdGNoQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlSZXF1ZXN0UmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNhY2hlOjprZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRl
Q2FjaGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9z
Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzRGF0YUZyb21SZWNv
cmRzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlY29yZHNGcm9tUmVjb3Jkc0RhdGEpOgorCiAyMDE3
LTA5LTE0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBTcGVsbGluZywgZ3JhbW1hciBhbmQgY29ycmVjdGlvbiBkb3RzIGFyZSBwYWludGVkIHVwc2lk
ZSBkb3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5jcHAK
aW5kZXggNDE1MzUxOGM3MmU4YTQ2ZmQ4MjY3MWY4MTJlOWU3Y2E4MDU2MjExYS4uN2I2M2ZkMjUy
ODkxNTc5NWJmNGUzMDRjMzNjOGY5ZTYwY2QxZGNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzQsMTMgKzc0LDkgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHN0YXJ0U2VxdWVudGlhbE1hdGNoKFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiYmIGNh
Y2hlcywgRE9NQ2FjaGUKICAgICBkb1NlcXVlbnRpYWxNYXRjaCgwLCBXVEZNb3ZlKGNhY2hlcyks
IFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotc3RhdGljIGlubGluZSBWZWN0b3I8UmVmPERPTUNhY2hlPj4gY29weUNhY2hl
cyhjb25zdCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mIGNhY2hlcykKK3N0YXRpYyBpbmxpbmUgUmVm
PERPTUNhY2hlPiBjb3B5Q2FjaGUoY29uc3QgUmVmPERPTUNhY2hlPiYgY2FjaGUpCiB7Ci0gICAg
VmVjdG9yPFJlZjxET01DYWNoZT4+IGNvcHk7Ci0gICAgY29weS5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNhY2hlcy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgY2FjaGUgOiBjYWNoZXMpCi0gICAg
ICAgIGNvcHkudW5jaGVja2VkQXBwZW5kKGNhY2hlLmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIGNv
cHk7CisgICAgcmV0dXJuIGNhY2hlLmNvcHlSZWYoKTsKIH0KIAogdm9pZCBDYWNoZVN0b3JhZ2U6
Om1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYg
b3B0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAtMTAyLDcgKzk4LDcg
QEAgdm9pZCBDYWNoZVN0b3JhZ2U6Om1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8s
IENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW8KICAgICAgICAgfQogCiAgICAgICAgIHNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgc3RhcnRTZXF1ZW50aWFsTWF0Y2goY29weUNhY2hl
cyhtX2NhY2hlcyksIFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSo+JiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgc3RhcnRTZXF1ZW50aWFsTWF0Y2goV1RGOjptYXAobV9j
YWNoZXMsIGNvcHlDYWNoZSksIFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFt0aGlz
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSo+
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKQEAgLTE1
MCwxMyArMTQ2LDEwIEBAIHZvaWQgQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1
bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpCiAKICAgICAgICAgICAgICAg
ICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIAotICAgICAgICAgICAgICAgIFZl
Y3RvcjxSZWY8RE9NQ2FjaGU+PiBjYWNoZXM7Ci0gICAgICAgICAgICAgICAgY2FjaGVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoY2FjaGVzSW5mby5pbmZvcy5zaXplKCkpOwotICAgICAgICAgICAg
ICAgIGZvciAoYXV0byYgaW5mbyA6IGNhY2hlc0luZm8uaW5mb3MpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0
byYgY2FjaGUpIHsgcmV0dXJuIGluZm8uaWRlbnRpZmllciA9PSBjYWNoZS0+aWRlbnRpZmllcigp
OyB9KTsKLSAgICAgICAgICAgICAgICAgICAgY2FjaGVzLnVuY2hlY2tlZEFwcGVuZChwb3NpdGlv
biAhPSBub3RGb3VuZCA/IG1fY2FjaGVzW3Bvc2l0aW9uXS5jb3B5UmVmKCkgOiBET01DYWNoZTo6
Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoaW5mby5uYW1lKSwgaW5m
by5pZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIG1fY2FjaGVzID0gV1RGTW92ZShjYWNoZXMpOworICAgICAgICAg
ICAgICAgIG1fY2FjaGVzID0gV1RGOjptYXAoV1RGTW92ZShjYWNoZXNJbmZvLmluZm9zKSwgWyZd
IChhdXRvJiYgaW5mbykgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHBvc2l0aW9uID0gbV9j
YWNoZXMuZmluZE1hdGNoaW5nKFsmXSAoY29uc3QgYXV0byYgY2FjaGUpIHsgcmV0dXJuIGluZm8u
aWRlbnRpZmllciA9PSBjYWNoZS0+aWRlbnRpZmllcigpOyB9KTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uICE9IG5vdEZvdW5kID8gbV9jYWNoZXNbcG9zaXRpb25dLmNvcHlS
ZWYoKSA6IERPTUNhY2hlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92
ZShpbmZvLm5hbWUpLCBpbmZvLmlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOwor
ICAgICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYWxsYmFj
ayhzdGQ6Om51bGxvcHQpOwpAQCAtMjUyLDExICsyNDUsOSBAQCB2b2lkIENhY2hlU3RvcmFnZTo6
a2V5cyhLZXlzUHJvbWlzZSYmIHByb21pc2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBWZWN0b3I8U3RyaW5nPiBrZXlzOwotICAgICAgICBrZXlzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobV9jYWNoZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBjYWNo
ZSA6IG1fY2FjaGVzKQotICAgICAgICAgICAga2V5cy51bmNoZWNrZWRBcHBlbmQoY2FjaGUtPm5h
bWUoKSk7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShrZXlzKTsKKyAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKFdURjo6bWFwKG1fY2FjaGVzLCBbXSAoY29uc3QgYXV0byYgY2FjaGUpIHsKKyAgICAg
ICAgICAgIHJldHVybiBjYWNoZS0+bmFtZSgpOworICAgICAgICB9KSk7CiAgICAgfSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNWEwODRlMjUy
MDU1Y2MyZmU3MWNjZTQ3OGUwODQxMGQxNGQ5NmUxYS4uMGMxNTdjNzYyZTU5MmZmYmNjODJmZmQx
Yjc5M2VhMDM5Y2NhMmIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHAKQEAgLTExNiwxMCArMTE2LDkgQEAgdm9pZCBET01DYWNoZTo6bWF0Y2hBbGwoc3RkOjpv
cHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG8KICAgICAg
ICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgVmVjdG9y
PFJlZjxGZXRjaFJlc3BvbnNlPj4gcmVzcG9uc2VzOwotICAgICAgICAgICAgcmVzcG9uc2VzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobV9yZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3Ig
KGF1dG8mIHJlY29yZCA6IG1fcmVjb3JkcykKLSAgICAgICAgICAgICAgICByZXNwb25zZXMudW5j
aGVja2VkQXBwZW5kKHJlY29yZC5yZXNwb25zZS0+Y2xvbmUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICAgICAgYXV0byByZXNwb25zZXMg
PSBXVEY6Om1hcChtX3JlY29yZHMsIFsmXSAoY29uc3QgYXV0byYgcmVjb3JkKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlY29yZC5yZXNwb25zZS0+Y2xvbmUoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIHByb21pc2UucmVzb2x2ZShXVEZNb3ZlKHJlc3BvbnNlcykpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTI5LDEyICsxMjgsMTEgQEAgdm9pZCBET01DYWNoZTo6bWF0Y2hB
bGwoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYm
IG8KICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGF1dG8gcmVjb3JkcyA9
IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgVmVjdG9yPFJlZjxGZXRjaFJl
c3BvbnNlPj4gcmVzcG9uc2VzOwotICAgICAgICByZXNwb25zZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShyZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVjb3Jk
cykKLSAgICAgICAgICAgIHJlc3BvbnNlcy51bmNoZWNrZWRBcHBlbmQocmVjb3JkLnJlc3BvbnNl
LT5jbG9uZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7
Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShyZXNwb25zZXMpOworCisgICAgICAgIGF1dG8gcmVz
cG9uc2VzID0gV1RGOjptYXAocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBbJl0gKGNvbnN0
IGF1dG8mIHJlY29yZCkgeworICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5yZXNwb25zZS0+Y2xv
bmUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAg
ICAgIH0pOworICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RGTW92ZShyZXNwb25zZXMpKTsKICAg
ICB9KTsKIH0KIApAQCAtMzczLDYgKzM3MSwxMSBAQCB2b2lkIERPTUNhY2hlOjpyZW1vdmUoUmVx
dWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIERPTVByb21pcwog
ICAgIH0pOwogfQogCitzdGF0aWMgaW5saW5lIFJlZjxGZXRjaFJlcXVlc3Q+IGNvcHlSZXF1ZXN0
UmVmKGNvbnN0IENhY2hlU3RvcmFnZVJlY29yZCYgcmVjb3JkKQoreworICAgIHJldHVybiByZWNv
cmQucmVxdWVzdC5jb3B5UmVmKCk7Cit9CisKIHZvaWQgRE9NQ2FjaGU6OmtleXMoc3RkOjpvcHRp
b25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEtl
eXNQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBpZiAoVU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkpCkBAIC0zOTQsMTEgKzM5Nyw3IEBAIHZvaWQgRE9NQ2FjaGU6OmtleXMoc3Rk
OjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlv
CiAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUo
KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IFZlY3RvcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gcmVxdWVzdHM7Ci0gICAgICAgICAgICByZXF1ZXN0
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVjb3Jkcy5zaXplKCkpOwotICAgICAgICAgICAg
Zm9yIChhdXRvJiByZWNvcmQgOiBtX3JlY29yZHMpCi0gICAgICAgICAgICAgICAgcmVxdWVzdHMu
dW5jaGVja2VkQXBwZW5kKHJlY29yZC5yZXF1ZXN0LmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICBw
cm9taXNlLnJlc29sdmUocmVxdWVzdHMpOworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdU
Rjo6bWFwKG1fcmVjb3JkcywgY29weVJlcXVlc3RSZWYpKTsKICAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC00MDksMTIgKzQwOCw3IEBAIHZvaWQgRE9NQ2FjaGU6OmtleXMo
c3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9w
dGlvCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHJlY29y
ZHMgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgIFZlY3RvcjxSZWY8RmV0
Y2hSZXF1ZXN0Pj4gcmVxdWVzdHM7Ci0gICAgICAgIHJlcXVlc3RzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkocmVjb3Jkcy5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJlY29y
ZHMpCi0gICAgICAgICAgICByZXF1ZXN0cy51bmNoZWNrZWRBcHBlbmQocmVjb3JkLnJlcXVlc3Qu
Y29weVJlZigpKTsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlcXVlc3RzKTsKKyAgICAgICAg
cHJvbWlzZS5yZXNvbHZlKFdURjo6bWFwKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29w
eVJlcXVlc3RSZWYpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAppbmRleCBjYzIzZjA2YjNkMGYxYzk2ZmQzYTM2ZGM1
MzhiYjRmZjI3MzQyYWU1Li5kZGUyZTg5ZmIzYmFmOTdiODMwZGFiMDQ4OGUyYmQ1NjdlNGRlOWE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNw
cApAQCAtMTM4LDEzICsxMzgsMTQgQEAgUmVjb3JkIFJlY29yZDo6Y29weSgpIGNvbnN0CiAgICAg
cmV0dXJuIFJlY29yZCB7IGlkZW50aWZpZXIsIHVwZGF0ZVJlc3BvbnNlQ291bnRlciwgcmVxdWVz
dEhlYWRlcnNHdWFyZCwgcmVxdWVzdCwgb3B0aW9ucywgcmVmZXJyZXIsIHJlc3BvbnNlSGVhZGVy
c0d1YXJkLCByZXNwb25zZSwgY29weVJlc3BvbnNlQm9keShyZXNwb25zZUJvZHkpIH07CiB9CiAK
K3N0YXRpYyBpbmxpbmUgQ2FjaGVJbmZvIGlzb2xhdGVDYWNoZUluZm8oY29uc3QgQ2FjaGVJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBDYWNoZUluZm8geyBpbmZvLmlkZW50aWZpZXIsIGluZm8u
bmFtZS5pc29sYXRlZENvcHkoKSB9OworfQorCiBDYWNoZUluZm9zIENhY2hlSW5mb3M6Omlzb2xh
dGVkQ29weSgpCiB7Ci0gICAgVmVjdG9yPENhY2hlSW5mbz4gaXNvbGF0ZWRDYWNoZXM7Ci0gICAg
aXNvbGF0ZWRDYWNoZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbmZvcy5zaXplKCkpOwotICAg
IGZvciAoY29uc3QgYXV0byYgaW5mbyA6IGluZm9zKQotICAgICAgICBpc29sYXRlZENhY2hlcy51
bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZvIHsgaW5mby5pZGVudGlmaWVyLCBpbmZvLm5hbWUuaXNv
bGF0ZWRDb3B5KCkgfSk7Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShpc29sYXRlZENhY2hlcyksIHVw
ZGF0ZUNvdW50ZXIgfTsKKyAgICByZXR1cm4geyBXVEY6Om1hcChpbmZvcywgaXNvbGF0ZUNhY2hl
SW5mbyksIHVwZGF0ZUNvdW50ZXIgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRE9NQ2FjaGVFbmdp
bmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGZiNGQ1OWJmMGVlMTE5ZDBjNDFmMDJl
MTE1ODNiMjkyN2M0MjljNDEuLmFmYTA3ZDJiMTQ2NmIwMjljMzgzYTY5ZTExYTI1YmI4NjIzZjRh
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9X
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMTg1LDExICsxODUsNyBAQCB2b2lk
IFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlcmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcikKIAogc3RhdGljIGlubGluZSBWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRh
PiByZWNvcmRzRGF0YUZyb21SZWNvcmRzKGNvbnN0IFZlY3RvcjxSZWNvcmQ+JiByZWNvcmRzKQog
ewotICAgIFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNEYXRhOwotICAgIHJl
Y29yZHNEYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkpOwotICAgIGZv
ciAoY29uc3QgYXV0byYgcmVjb3JkIDogcmVjb3JkcykKLSAgICAgICAgcmVjb3Jkc0RhdGEudW5j
aGVja2VkQXBwZW5kKHRvQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKHJlY29yZCkpOwotICAgIHJldHVy
biByZWNvcmRzRGF0YTsKKyAgICByZXR1cm4gV1RGOjptYXAocmVjb3JkcywgdG9Dcm9zc1RocmVh
ZFJlY29yZERhdGEpOwogfQogCiBzdGF0aWMgaW5saW5lIEV4cGVjdGVkPFZlY3RvcjxDcm9zc1Ro
cmVhZFJlY29yZERhdGE+LCBFcnJvcj4gcmVjb3Jkc0RhdGFPckVycm9yRnJvbVJlY29yZHMoY29u
c3QgUmVjb3Jkc09yRXJyb3ImIHJlc3VsdCkKQEAgLTIwMiwxMSArMTk4LDcgQEAgc3RhdGljIGlu
bGluZSBFeHBlY3RlZDxWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiwgRXJyb3I+IHJlY29y
ZHNEYXRhT3JFcnJvckYKIAogc3RhdGljIGlubGluZSBWZWN0b3I8UmVjb3JkPiByZWNvcmRzRnJv
bVJlY29yZHNEYXRhKFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+JiYgcmVjb3Jkc0RhdGEp
CiB7Ci0gICAgVmVjdG9yPFJlY29yZD4gcmVjb3JkczsKLSAgICByZWNvcmRzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkocmVjb3Jkc0RhdGEuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHJlY29yZERh
dGEgOiByZWNvcmRzRGF0YSkKLSAgICAgICAgcmVjb3Jkcy51bmNoZWNrZWRBcHBlbmQoZnJvbUNy
b3NzVGhyZWFkUmVjb3JkRGF0YShXVEZNb3ZlKHJlY29yZERhdGEpKSk7Ci0gICAgcmV0dXJuIHJl
Y29yZHM7CisgICAgcmV0dXJuIFdURjo6bWFwKFdURk1vdmUocmVjb3Jkc0RhdGEpLCBmcm9tQ3Jv
c3NUaHJlYWRSZWNvcmREYXRhKTsKIH0KIAogc3RhdGljIGlubGluZSBSZWNvcmRzT3JFcnJvciBy
ZWNvcmRzT3JFcnJvckZyb21SZWNvcmRzRGF0YShFeHBlY3RlZDxWZWN0b3I8Q3Jvc3NUaHJlYWRS
ZWNvcmREYXRhPiwgRXJyb3I+JiYgcmVjb3Jkc0RhdGEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320907</attachid>
            <date>2017-09-15 09:06:55 -0700</date>
            <delta_ts>2017-09-15 09:17:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177002-20170915090654.patch</filename>
            <type>text/plain</type>
            <size>11925</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTYxNGQ2N2JjZDA5NDYz
YjBjOGRjNjI3MjU4YzE2MTQ5YzY0OTY5NC4uYmFiNjQxMzRmMTI2YzkxNjkxYmI1ZmEyN2YyNTNi
OWVmZjI2YTBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdmVjdG9yIG1hcCBy
b3V0aW5lIGluIFdlYkNvcmUgQ2FjaGVTdG9yYWdlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcwMDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZp
b3IuCisgICAgICAgIFJlcGxhY2luZyB1c2Ugb2YgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eS91bmNo
ZWNrZWRBcHBlbmQgYnkgdXNlIG9mIG1hcC4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZVN0b3JhZ2U6Om1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlOjpr
ZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDYWNoZXMpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6
Om1hdGNoQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlSZXF1ZXN0UmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNhY2hlOjprZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRl
Q2FjaGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9z
Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzRGF0YUZyb21SZWNv
cmRzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlY29yZHNGcm9tUmVjb3Jkc0RhdGEpOgorCiAyMDE3
LTA5LTE0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBTcGVsbGluZywgZ3JhbW1hciBhbmQgY29ycmVjdGlvbiBkb3RzIGFyZSBwYWludGVkIHVwc2lk
ZSBkb3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5jcHAK
aW5kZXggNDE1MzUxOGM3MmU4YTQ2ZmQ4MjY3MWY4MTJlOWU3Y2E4MDU2MjExYS4uMjEyMmQ4M2Rl
ZTgzMTk2NjRkYmQ3NzgzYzkxZDRmZGQ2Yjk2ODc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzQsMTMgKzc0LDkgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHN0YXJ0U2VxdWVudGlhbE1hdGNoKFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiYmIGNh
Y2hlcywgRE9NQ2FjaGUKICAgICBkb1NlcXVlbnRpYWxNYXRjaCgwLCBXVEZNb3ZlKGNhY2hlcyks
IFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotc3RhdGljIGlubGluZSBWZWN0b3I8UmVmPERPTUNhY2hlPj4gY29weUNhY2hl
cyhjb25zdCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mIGNhY2hlcykKK3N0YXRpYyBpbmxpbmUgUmVm
PERPTUNhY2hlPiBjb3B5Q2FjaGUoY29uc3QgUmVmPERPTUNhY2hlPiYgY2FjaGUpCiB7Ci0gICAg
VmVjdG9yPFJlZjxET01DYWNoZT4+IGNvcHk7Ci0gICAgY29weS5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNhY2hlcy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgY2FjaGUgOiBjYWNoZXMpCi0gICAg
ICAgIGNvcHkudW5jaGVja2VkQXBwZW5kKGNhY2hlLmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIGNv
cHk7CisgICAgcmV0dXJuIGNhY2hlLmNvcHlSZWYoKTsKIH0KIAogdm9pZCBDYWNoZVN0b3JhZ2U6
Om1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYg
b3B0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAtMTAyLDcgKzk4LDcg
QEAgdm9pZCBDYWNoZVN0b3JhZ2U6Om1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8s
IENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW8KICAgICAgICAgfQogCiAgICAgICAgIHNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgc3RhcnRTZXF1ZW50aWFsTWF0Y2goY29weUNhY2hl
cyhtX2NhY2hlcyksIFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSo+JiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgc3RhcnRTZXF1ZW50aWFsTWF0Y2goV1RGOjptYXAobV9j
YWNoZXMsIGNvcHlDYWNoZSksIFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFt0aGlz
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSo+
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKQEAgLTEy
OSw2ICsxMjUsMTQgQEAgdm9pZCBDYWNoZVN0b3JhZ2U6Omhhcyhjb25zdCBTdHJpbmcmIG5hbWUs
IERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb20KICAgICB9KTsKIH0KIAorUmVm
PERPTUNhY2hlPiBDYWNoZVN0b3JhZ2U6OmZpbmRDYWNoZU9yQ3JlYXRlKENhY2hlSW5mbyYmIGlu
Zm8pCit7CisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0gKGNv
bnN0IGF1dG8mIGNhY2hlKSB7IHJldHVybiBpbmZvLmlkZW50aWZpZXIgPT0gY2FjaGUtPmlkZW50
aWZpZXIoKTsgfSk7CisgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKQorICAgICAgICByZXR1
cm4gbV9jYWNoZXNbcG9zaXRpb25dLmNvcHlSZWYoKTsKKyAgICByZXR1cm4gRE9NQ2FjaGU6OmNy
ZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGluZm8ubmFtZSksIGluZm8u
aWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7Cit9CisKIHZvaWQgQ2FjaGVTdG9y
YWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIFN0cmluZyBvcmlnaW4gPSB0aGlzLT5vcmln
aW4oKTsKQEAgLTE0NywxNyArMTUxLDkgQEAgdm9pZCBDYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2Fj
aGVzKFdURjo6RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJikKIAogICAg
ICAgICAgICAgaWYgKG1fdXBkYXRlQ291bnRlciAhPSBjYWNoZXNJbmZvLnVwZGF0ZUNvdW50ZXIp
IHsKICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNvdW50ZXIgPSBjYWNoZXNJbmZvLnVwZGF0ZUNv
dW50ZXI7Ci0KLSAgICAgICAgICAgICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKLQotICAgICAgICAgICAgICAgIFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiBjYWNoZXM7Ci0gICAg
ICAgICAgICAgICAgY2FjaGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FjaGVzSW5mby5pbmZv
cy5zaXplKCkpOwotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgaW5mbyA6IGNhY2hlc0luZm8u
aW5mb3MpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZp
bmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgY2FjaGUpIHsgcmV0dXJuIGluZm8uaWRlbnRpZmll
ciA9PSBjYWNoZS0+aWRlbnRpZmllcigpOyB9KTsKLSAgICAgICAgICAgICAgICAgICAgY2FjaGVz
LnVuY2hlY2tlZEFwcGVuZChwb3NpdGlvbiAhPSBub3RGb3VuZCA/IG1fY2FjaGVzW3Bvc2l0aW9u
XS5jb3B5UmVmKCkgOiBET01DYWNoZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IFdURk1vdmUoaW5mby5uYW1lKSwgaW5mby5pZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJl
ZigpKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fY2FjaGVzID0gV1RG
TW92ZShjYWNoZXMpOwotCisgICAgICAgICAgICAgICAgbV9jYWNoZXMgPSBXVEY6Om1hcChXVEZN
b3ZlKGNhY2hlc0luZm8uaW5mb3MpLCBbdGhpc10gKENhY2hlSW5mbyYmIGluZm8pIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZpbmRDYWNoZU9yQ3JlYXRlKFdURk1vdmUoaW5mbykpOwor
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FsbGJhY2so
c3RkOjpudWxsb3B0KTsKICAgICAgICAgfQpAQCAtMjUyLDExICsyNDgsOSBAQCB2b2lkIENhY2hl
U3RvcmFnZTo6a2V5cyhLZXlzUHJvbWlzZSYmIHByb21pc2UpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBWZWN0b3I8U3RyaW5nPiBrZXlzOwotICAgICAgICBrZXlz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jYWNoZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChh
dXRvJiBjYWNoZSA6IG1fY2FjaGVzKQotICAgICAgICAgICAga2V5cy51bmNoZWNrZWRBcHBlbmQo
Y2FjaGUtPm5hbWUoKSk7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShrZXlzKTsKKyAgICAgICAg
cHJvbWlzZS5yZXNvbHZlKFdURjo6bWFwKG1fY2FjaGVzLCBbXSAoY29uc3QgYXV0byYgY2FjaGUp
IHsKKyAgICAgICAgICAgIHJldHVybiBjYWNoZS0+bmFtZSgpOworICAgICAgICB9KSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5oCmlu
ZGV4IDRiY2ZiMmU1YzIxZTYwNDMyODlkNmU3ZWI4ZmZiYWU1YTM2MTVjNTguLjg3YmU1N2RkZjQz
NzM4ZjczMzNmOTI5M2JjZjNlNTk5ZmQ2YWFkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2UuaApAQCAtNTMsNiArNTMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwogCiAgICAg
dm9pZCByZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24+JiYpPiYmKTsKKyAgICBSZWY8RE9NQ2FjaGU+IGZpbmRDYWNoZU9yQ3JlYXRlKERPTUNh
Y2hlRW5naW5lOjpDYWNoZUluZm8mJik7CiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0OwogCiAg
ICAgVmVjdG9yPFJlZjxET01DYWNoZT4+IG1fY2FjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA1YTA4NGUyNTIwNTVjYzJmZTcxY2NlNDc4ZTA4NDEw
ZDE0ZDk2ZTFhLi4wYzE1N2M3NjJlNTkyZmZiY2M4MmZmZDFiNzkzZWEwMzljY2EyYjM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMTE2LDEwICsxMTYs
OSBAQCB2b2lkIERPTUNhY2hlOjptYXRjaEFsbChzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZvPiYm
IGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgbwogICAgICAgICAgICAgICAgIHByb21pc2UucmVq
ZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBWZWN0b3I8UmVmPEZldGNoUmVzcG9uc2U+PiBy
ZXNwb25zZXM7Ci0gICAgICAgICAgICByZXNwb25zZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X3JlY29yZHMuc2l6ZSgpKTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9yZWNv
cmRzKQotICAgICAgICAgICAgICAgIHJlc3BvbnNlcy51bmNoZWNrZWRBcHBlbmQocmVjb3JkLnJl
c3BvbnNlLT5jbG9uZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5yZWxlYXNlUmV0dXJuVmFs
dWUoKSk7CisgICAgICAgICAgICBhdXRvIHJlc3BvbnNlcyA9IFdURjo6bWFwKG1fcmVjb3Jkcywg
WyZdIChjb25zdCBhdXRvJiByZWNvcmQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3Jk
LnJlc3BvbnNlLT5jbG9uZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdU
Rk1vdmUocmVzcG9uc2VzKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC0xMjks
MTIgKzEyOCwxMSBAQCB2b2lkIERPTUNhY2hlOjptYXRjaEFsbChzdGQ6Om9wdGlvbmFsPFJlcXVl
c3RJbmZvPiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgbwogICAgICAgICAgICAgcHJvbWlz
ZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgYXV0byByZWNvcmRzID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5W
YWx1ZSgpOwotICAgICAgICBWZWN0b3I8UmVmPEZldGNoUmVzcG9uc2U+PiByZXNwb25zZXM7Ci0g
ICAgICAgIHJlc3BvbnNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHMuc2l6ZSgpKTsK
LSAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiByZWNvcmRzKQotICAgICAgICAgICAgcmVzcG9u
c2VzLnVuY2hlY2tlZEFwcGVuZChyZWNvcmQucmVzcG9uc2UtPmNsb25lKCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKLSAgICAgICAgcHJvbWlzZS5yZXNv
bHZlKHJlc3BvbnNlcyk7CisKKyAgICAgICAgYXV0byByZXNwb25zZXMgPSBXVEY6Om1hcChyZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFsmXSAoY29uc3QgYXV0byYgcmVjb3JkKSB7CisgICAg
ICAgICAgICByZXR1cm4gcmVjb3JkLnJlc3BvbnNlLT5jbG9uZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHByb21p
c2UucmVzb2x2ZShXVEZNb3ZlKHJlc3BvbnNlcykpOwogICAgIH0pOwogfQogCkBAIC0zNzMsNiAr
MzcxLDExIEBAIHZvaWQgRE9NQ2FjaGU6OnJlbW92ZShSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hl
UXVlcnlPcHRpb25zJiYgb3B0aW9ucywgRE9NUHJvbWlzCiAgICAgfSk7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgUmVmPEZldGNoUmVxdWVzdD4gY29weVJlcXVlc3RSZWYoY29uc3QgQ2FjaGVTdG9yYWdl
UmVjb3JkJiByZWNvcmQpCit7CisgICAgcmV0dXJuIHJlY29yZC5yZXF1ZXN0LmNvcHlSZWYoKTsK
K30KKwogdm9pZCBET01DYWNoZTo6a2V5cyhzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZvPiYmIGlu
Zm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgS2V5c1Byb21pc2UmJiBwcm9taXNlKQog
ewogICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKQEAgLTM5NCwx
MSArMzk3LDcgQEAgdm9pZCBET01DYWNoZTo6a2V5cyhzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZv
PiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW8KICAgICAgICAgICAgICAgICBwcm9t
aXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgVmVjdG9yPFJlZjxGZXRjaFJlcXVl
c3Q+PiByZXF1ZXN0czsKLSAgICAgICAgICAgIHJlcXVlc3RzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9yZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1f
cmVjb3JkcykKLSAgICAgICAgICAgICAgICByZXF1ZXN0cy51bmNoZWNrZWRBcHBlbmQocmVjb3Jk
LnJlcXVlc3QuY29weVJlZigpKTsKLSAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShyZXF1ZXN0
cyk7CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RGOjptYXAobV9yZWNvcmRzLCBjb3B5
UmVxdWVzdFJlZikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQw
OSwxMiArNDA4LDcgQEAgdm9pZCBET01DYWNoZTo6a2V5cyhzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJ
bmZvPiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW8KICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gcmVjb3JkcyA9IHJlc3VsdC5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKLSAgICAgICAgVmVjdG9yPFJlZjxGZXRjaFJlcXVlc3Q+PiByZXF1ZXN0czsK
LSAgICAgICAgcmVxdWVzdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7
Ci0gICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVjb3JkcykKLSAgICAgICAgICAgIHJlcXVl
c3RzLnVuY2hlY2tlZEFwcGVuZChyZWNvcmQucmVxdWVzdC5jb3B5UmVmKCkpOwotICAgICAgICBw
cm9taXNlLnJlc29sdmUocmVxdWVzdHMpOworICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RGOjpt
YXAocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb3B5UmVxdWVzdFJlZikpOwogICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwCmluZGV4IGNjMjNmMDZiM2QwZjFjOTZmZDNhMzZkYzUzOGJiNGZmMjczNDJhZTUuLmRkZTJl
ODlmYjNiYWY5N2I4MzBkYWIwNDg4ZTJiZDU2N2U0ZGU5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzgsMTMgKzEzOCwxNCBA
QCBSZWNvcmQgUmVjb3JkOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gUmVjb3JkIHsgaWRlbnRp
ZmllciwgdXBkYXRlUmVzcG9uc2VDb3VudGVyLCByZXF1ZXN0SGVhZGVyc0d1YXJkLCByZXF1ZXN0
LCBvcHRpb25zLCByZWZlcnJlciwgcmVzcG9uc2VIZWFkZXJzR3VhcmQsIHJlc3BvbnNlLCBjb3B5
UmVzcG9uc2VCb2R5KHJlc3BvbnNlQm9keSkgfTsKIH0KIAorc3RhdGljIGlubGluZSBDYWNoZUlu
Zm8gaXNvbGF0ZUNhY2hlSW5mbyhjb25zdCBDYWNoZUluZm8mIGluZm8pCit7CisgICAgcmV0dXJu
IENhY2hlSW5mbyB7IGluZm8uaWRlbnRpZmllciwgaW5mby5uYW1lLmlzb2xhdGVkQ29weSgpIH07
Cit9CisKIENhY2hlSW5mb3MgQ2FjaGVJbmZvczo6aXNvbGF0ZWRDb3B5KCkKIHsKLSAgICBWZWN0
b3I8Q2FjaGVJbmZvPiBpc29sYXRlZENhY2hlczsKLSAgICBpc29sYXRlZENhY2hlcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGluZm9zLnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpbmZv
IDogaW5mb3MpCi0gICAgICAgIGlzb2xhdGVkQ2FjaGVzLnVuY2hlY2tlZEFwcGVuZChDYWNoZUlu
Zm8geyBpbmZvLmlkZW50aWZpZXIsIGluZm8ubmFtZS5pc29sYXRlZENvcHkoKSB9KTsKLSAgICBy
ZXR1cm4geyBXVEZNb3ZlKGlzb2xhdGVkQ2FjaGVzKSwgdXBkYXRlQ291bnRlciB9OworICAgIHJl
dHVybiB7IFdURjo6bWFwKGluZm9zLCBpc29sYXRlQ2FjaGVJbmZvKSwgdXBkYXRlQ291bnRlciB9
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBET01DYWNoZUVuZ2luZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKaW5kZXggZmI0ZDU5YmYwZWUxMTlkMGM0MWYwMmUxMTU4M2IyOTI3YzQyOWM0MS4uYWZh
MDdkMmIxNDY2YjAyOWMzODNhNjllMTFhMjViYjg2MjNmNGFmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwCkBAIC0xODUsMTEgKzE4NSw3IEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6ZGVyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQogCiBzdGF0aWMg
aW5saW5lIFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNEYXRhRnJvbVJlY29y
ZHMoY29uc3QgVmVjdG9yPFJlY29yZD4mIHJlY29yZHMpCiB7Ci0gICAgVmVjdG9yPENyb3NzVGhy
ZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGE7Ci0gICAgcmVjb3Jkc0RhdGEucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmQg
OiByZWNvcmRzKQotICAgICAgICByZWNvcmRzRGF0YS51bmNoZWNrZWRBcHBlbmQodG9Dcm9zc1Ro
cmVhZFJlY29yZERhdGEocmVjb3JkKSk7Ci0gICAgcmV0dXJuIHJlY29yZHNEYXRhOworICAgIHJl
dHVybiBXVEY6Om1hcChyZWNvcmRzLCB0b0Nyb3NzVGhyZWFkUmVjb3JkRGF0YSk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgRXhwZWN0ZWQ8VmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4sIEVycm9y
PiByZWNvcmRzRGF0YU9yRXJyb3JGcm9tUmVjb3Jkcyhjb25zdCBSZWNvcmRzT3JFcnJvciYgcmVz
dWx0KQpAQCAtMjAyLDExICsxOTgsNyBAQCBzdGF0aWMgaW5saW5lIEV4cGVjdGVkPFZlY3RvcjxD
cm9zc1RocmVhZFJlY29yZERhdGE+LCBFcnJvcj4gcmVjb3Jkc0RhdGFPckVycm9yRgogCiBzdGF0
aWMgaW5saW5lIFZlY3RvcjxSZWNvcmQ+IHJlY29yZHNGcm9tUmVjb3Jkc0RhdGEoVmVjdG9yPENy
b3NzVGhyZWFkUmVjb3JkRGF0YT4mJiByZWNvcmRzRGF0YSkKIHsKLSAgICBWZWN0b3I8UmVjb3Jk
PiByZWNvcmRzOwotICAgIHJlY29yZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzRGF0
YS5zaXplKCkpOwotICAgIGZvciAoYXV0byYgcmVjb3JkRGF0YSA6IHJlY29yZHNEYXRhKQotICAg
ICAgICByZWNvcmRzLnVuY2hlY2tlZEFwcGVuZChmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKFdU
Rk1vdmUocmVjb3JkRGF0YSkpKTsKLSAgICByZXR1cm4gcmVjb3JkczsKKyAgICByZXR1cm4gV1RG
OjptYXAoV1RGTW92ZShyZWNvcmRzRGF0YSksIGZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEpOwog
fQogCiBzdGF0aWMgaW5saW5lIFJlY29yZHNPckVycm9yIHJlY29yZHNPckVycm9yRnJvbVJlY29y
ZHNEYXRhKEV4cGVjdGVkPFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+LCBFcnJvcj4mJiBy
ZWNvcmRzRGF0YSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320908</attachid>
            <date>2017-09-15 09:17:50 -0700</date>
            <delta_ts>2017-09-15 09:30:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177002-20170915091749.patch</filename>
            <type>text/plain</type>
            <size>12776</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTYxNGQ2N2JjZDA5NDYz
YjBjOGRjNjI3MjU4YzE2MTQ5YzY0OTY5NC4uYmFiNjQxMzRmMTI2YzkxNjkxYmI1ZmEyN2YyNTNi
OWVmZjI2YTBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdmVjdG9yIG1hcCBy
b3V0aW5lIGluIFdlYkNvcmUgQ2FjaGVTdG9yYWdlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcwMDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZp
b3IuCisgICAgICAgIFJlcGxhY2luZyB1c2Ugb2YgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eS91bmNo
ZWNrZWRBcHBlbmQgYnkgdXNlIG9mIG1hcC4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZVN0b3JhZ2U6Om1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlOjpr
ZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDYWNoZXMpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6
Om1hdGNoQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlSZXF1ZXN0UmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNhY2hlOjprZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRl
Q2FjaGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9z
Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzRGF0YUZyb21SZWNv
cmRzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlY29yZHNGcm9tUmVjb3Jkc0RhdGEpOgorCiAyMDE3
LTA5LTE0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBTcGVsbGluZywgZ3JhbW1hciBhbmQgY29ycmVjdGlvbiBkb3RzIGFyZSBwYWludGVkIHVwc2lk
ZSBkb3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5jcHAK
aW5kZXggNDE1MzUxOGM3MmU4YTQ2ZmQ4MjY3MWY4MTJlOWU3Y2E4MDU2MjExYS4uMjEyMmQ4M2Rl
ZTgzMTk2NjRkYmQ3NzgzYzkxZDRmZGQ2Yjk2ODc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzQsMTMgKzc0LDkgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHN0YXJ0U2VxdWVudGlhbE1hdGNoKFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiYmIGNh
Y2hlcywgRE9NQ2FjaGUKICAgICBkb1NlcXVlbnRpYWxNYXRjaCgwLCBXVEZNb3ZlKGNhY2hlcyks
IFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotc3RhdGljIGlubGluZSBWZWN0b3I8UmVmPERPTUNhY2hlPj4gY29weUNhY2hl
cyhjb25zdCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mIGNhY2hlcykKK3N0YXRpYyBpbmxpbmUgUmVm
PERPTUNhY2hlPiBjb3B5Q2FjaGUoY29uc3QgUmVmPERPTUNhY2hlPiYgY2FjaGUpCiB7Ci0gICAg
VmVjdG9yPFJlZjxET01DYWNoZT4+IGNvcHk7Ci0gICAgY29weS5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNhY2hlcy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgY2FjaGUgOiBjYWNoZXMpCi0gICAg
ICAgIGNvcHkudW5jaGVja2VkQXBwZW5kKGNhY2hlLmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIGNv
cHk7CisgICAgcmV0dXJuIGNhY2hlLmNvcHlSZWYoKTsKIH0KIAogdm9pZCBDYWNoZVN0b3JhZ2U6
Om1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYg
b3B0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAtMTAyLDcgKzk4LDcg
QEAgdm9pZCBDYWNoZVN0b3JhZ2U6Om1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8s
IENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW8KICAgICAgICAgfQogCiAgICAgICAgIHNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgc3RhcnRTZXF1ZW50aWFsTWF0Y2goY29weUNhY2hl
cyhtX2NhY2hlcyksIFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSo+JiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgc3RhcnRTZXF1ZW50aWFsTWF0Y2goV1RGOjptYXAobV9j
YWNoZXMsIGNvcHlDYWNoZSksIFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFt0aGlz
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSo+
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKQEAgLTEy
OSw2ICsxMjUsMTQgQEAgdm9pZCBDYWNoZVN0b3JhZ2U6Omhhcyhjb25zdCBTdHJpbmcmIG5hbWUs
IERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb20KICAgICB9KTsKIH0KIAorUmVm
PERPTUNhY2hlPiBDYWNoZVN0b3JhZ2U6OmZpbmRDYWNoZU9yQ3JlYXRlKENhY2hlSW5mbyYmIGlu
Zm8pCit7CisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0gKGNv
bnN0IGF1dG8mIGNhY2hlKSB7IHJldHVybiBpbmZvLmlkZW50aWZpZXIgPT0gY2FjaGUtPmlkZW50
aWZpZXIoKTsgfSk7CisgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKQorICAgICAgICByZXR1
cm4gbV9jYWNoZXNbcG9zaXRpb25dLmNvcHlSZWYoKTsKKyAgICByZXR1cm4gRE9NQ2FjaGU6OmNy
ZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGluZm8ubmFtZSksIGluZm8u
aWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7Cit9CisKIHZvaWQgQ2FjaGVTdG9y
YWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIFN0cmluZyBvcmlnaW4gPSB0aGlzLT5vcmln
aW4oKTsKQEAgLTE0NywxNyArMTUxLDkgQEAgdm9pZCBDYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2Fj
aGVzKFdURjo6RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJikKIAogICAg
ICAgICAgICAgaWYgKG1fdXBkYXRlQ291bnRlciAhPSBjYWNoZXNJbmZvLnVwZGF0ZUNvdW50ZXIp
IHsKICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNvdW50ZXIgPSBjYWNoZXNJbmZvLnVwZGF0ZUNv
dW50ZXI7Ci0KLSAgICAgICAgICAgICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKLQotICAgICAgICAgICAgICAgIFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiBjYWNoZXM7Ci0gICAg
ICAgICAgICAgICAgY2FjaGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FjaGVzSW5mby5pbmZv
cy5zaXplKCkpOwotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgaW5mbyA6IGNhY2hlc0luZm8u
aW5mb3MpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZp
bmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgY2FjaGUpIHsgcmV0dXJuIGluZm8uaWRlbnRpZmll
ciA9PSBjYWNoZS0+aWRlbnRpZmllcigpOyB9KTsKLSAgICAgICAgICAgICAgICAgICAgY2FjaGVz
LnVuY2hlY2tlZEFwcGVuZChwb3NpdGlvbiAhPSBub3RGb3VuZCA/IG1fY2FjaGVzW3Bvc2l0aW9u
XS5jb3B5UmVmKCkgOiBET01DYWNoZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IFdURk1vdmUoaW5mby5uYW1lKSwgaW5mby5pZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJl
ZigpKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fY2FjaGVzID0gV1RG
TW92ZShjYWNoZXMpOwotCisgICAgICAgICAgICAgICAgbV9jYWNoZXMgPSBXVEY6Om1hcChXVEZN
b3ZlKGNhY2hlc0luZm8uaW5mb3MpLCBbdGhpc10gKENhY2hlSW5mbyYmIGluZm8pIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZpbmRDYWNoZU9yQ3JlYXRlKFdURk1vdmUoaW5mbykpOwor
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FsbGJhY2so
c3RkOjpudWxsb3B0KTsKICAgICAgICAgfQpAQCAtMjUyLDExICsyNDgsOSBAQCB2b2lkIENhY2hl
U3RvcmFnZTo6a2V5cyhLZXlzUHJvbWlzZSYmIHByb21pc2UpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBWZWN0b3I8U3RyaW5nPiBrZXlzOwotICAgICAgICBrZXlz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jYWNoZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChh
dXRvJiBjYWNoZSA6IG1fY2FjaGVzKQotICAgICAgICAgICAga2V5cy51bmNoZWNrZWRBcHBlbmQo
Y2FjaGUtPm5hbWUoKSk7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShrZXlzKTsKKyAgICAgICAg
cHJvbWlzZS5yZXNvbHZlKFdURjo6bWFwKG1fY2FjaGVzLCBbXSAoY29uc3QgYXV0byYgY2FjaGUp
IHsKKyAgICAgICAgICAgIHJldHVybiBjYWNoZS0+bmFtZSgpOworICAgICAgICB9KSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5oCmlu
ZGV4IDRiY2ZiMmU1YzIxZTYwNDMyODlkNmU3ZWI4ZmZiYWU1YTM2MTVjNTguLjg3YmU1N2RkZjQz
NzM4ZjczMzNmOTI5M2JjZjNlNTk5ZmQ2YWFkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2UuaApAQCAtNTMsNiArNTMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwogCiAgICAg
dm9pZCByZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24+JiYpPiYmKTsKKyAgICBSZWY8RE9NQ2FjaGU+IGZpbmRDYWNoZU9yQ3JlYXRlKERPTUNh
Y2hlRW5naW5lOjpDYWNoZUluZm8mJik7CiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0OwogCiAg
ICAgVmVjdG9yPFJlZjxET01DYWNoZT4+IG1fY2FjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA1YTA4NGUyNTIwNTVjYzJmZTcxY2NlNDc4ZTA4NDEw
ZDE0ZDk2ZTFhLi4wYzIwOGZiNjQ3MGY3ODYyODY0NjI5ODlhN2QzOTIxMzUzYmNkMDQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtOTUsNiArOTUsMTMg
QEAgdm9pZCBET01DYWNoZTo6ZG9NYXRjaChSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlP
cHRpb25zJiYgb3B0aW9ucywgTWF0Y2hDYWwKICAgICB9KTsKIH0KIAorVmVjdG9yPFJlZjxGZXRj
aFJlc3BvbnNlPj4gRE9NQ2FjaGU6OmNsb25lUmVzcG9uc2VzKGNvbnN0IFZlY3RvcjxDYWNoZVN0
b3JhZ2VSZWNvcmQ+JiByZWNvcmRzKQoreworICAgIHJldHVybiBXVEY6Om1hcChyZWNvcmRzLCBb
dGhpc10gKGNvbnN0IGF1dG8mIHJlY29yZCkgeworICAgICAgICByZXR1cm4gcmVjb3JkLnJlc3Bv
bnNlLT5jbG9uZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKKyAgICB9KTsKK30KKwogdm9pZCBET01DYWNoZTo6bWF0Y2hBbGwoc3RkOjpvcHRpb25hbDxS
ZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIE1hdGNoQWxs
UHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpKQpAQCAtMTE2LDExICsxMjMsNyBAQCB2b2lkIERPTUNhY2hlOjptYXRjaEFsbChz
dGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZvPiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgbwog
ICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBW
ZWN0b3I8UmVmPEZldGNoUmVzcG9uc2U+PiByZXNwb25zZXM7Ci0gICAgICAgICAgICByZXNwb25z
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3JlY29yZHMuc2l6ZSgpKTsKLSAgICAgICAgICAg
IGZvciAoYXV0byYgcmVjb3JkIDogbV9yZWNvcmRzKQotICAgICAgICAgICAgICAgIHJlc3BvbnNl
cy51bmNoZWNrZWRBcHBlbmQocmVjb3JkLnJlc3BvbnNlLT5jbG9uZSgqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Ci0gICAgICAgICAgICBwcm9taXNlLnJl
c29sdmUoV1RGTW92ZShyZXNwb25zZXMpKTsKKyAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShj
bG9uZVJlc3BvbnNlcyhtX3JlY29yZHMpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xMjksMTIgKzEzMiw3IEBAIHZvaWQgRE9NQ2FjaGU6Om1hdGNoQWxsKHN0ZDo6
b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvCiAgICAg
ICAgICAgICBwcm9taXNlLnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBhdXRvIHJlY29yZHMgPSByZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgIFZlY3RvcjxSZWY8RmV0Y2hSZXNwb25zZT4+
IHJlc3BvbnNlczsKLSAgICAgICAgcmVzcG9uc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVj
b3Jkcy5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJlY29yZHMpCi0gICAg
ICAgICAgICByZXNwb25zZXMudW5jaGVja2VkQXBwZW5kKHJlY29yZC5yZXNwb25zZS0+Y2xvbmUo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucmVsZWFzZVJldHVyblZhbHVlKCkpOwotICAgICAg
ICBwcm9taXNlLnJlc29sdmUocmVzcG9uc2VzKTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNs
b25lUmVzcG9uc2VzKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSkpOwogICAgIH0pOwogfQog
CkBAIC0zNzMsNiArMzcxLDExIEBAIHZvaWQgRE9NQ2FjaGU6OnJlbW92ZShSZXF1ZXN0SW5mbyYm
IGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgRE9NUHJvbWlzCiAgICAgfSk7CiB9
CiAKK3N0YXRpYyBpbmxpbmUgUmVmPEZldGNoUmVxdWVzdD4gY29weVJlcXVlc3RSZWYoY29uc3Qg
Q2FjaGVTdG9yYWdlUmVjb3JkJiByZWNvcmQpCit7CisgICAgcmV0dXJuIHJlY29yZC5yZXF1ZXN0
LmNvcHlSZWYoKTsKK30KKwogdm9pZCBET01DYWNoZTo6a2V5cyhzdGQ6Om9wdGlvbmFsPFJlcXVl
c3RJbmZvPiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgS2V5c1Byb21pc2Um
JiBwcm9taXNlKQogewogICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KSkKQEAgLTM5NCwxMSArMzk3LDcgQEAgdm9pZCBET01DYWNoZTo6a2V5cyhzdGQ6Om9wdGlvbmFs
PFJlcXVlc3RJbmZvPiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW8KICAgICAgICAg
ICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgVmVjdG9yPFJl
ZjxGZXRjaFJlcXVlc3Q+PiByZXF1ZXN0czsKLSAgICAgICAgICAgIHJlcXVlc3RzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobV9yZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IHJlY29yZCA6IG1fcmVjb3JkcykKLSAgICAgICAgICAgICAgICByZXF1ZXN0cy51bmNoZWNrZWRB
cHBlbmQocmVjb3JkLnJlcXVlc3QuY29weVJlZigpKTsKLSAgICAgICAgICAgIHByb21pc2UucmVz
b2x2ZShyZXF1ZXN0cyk7CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RGOjptYXAobV9y
ZWNvcmRzLCBjb3B5UmVxdWVzdFJlZikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTQwOSwxMiArNDA4LDcgQEAgdm9pZCBET01DYWNoZTo6a2V5cyhzdGQ6Om9wdGlv
bmFsPFJlcXVlc3RJbmZvPiYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW8KICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gcmVjb3JkcyA9IHJlc3Vs
dC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgVmVjdG9yPFJlZjxGZXRjaFJlcXVlc3Q+
PiByZXF1ZXN0czsKLSAgICAgICAgcmVxdWVzdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNv
cmRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVjb3JkcykKLSAgICAg
ICAgICAgIHJlcXVlc3RzLnVuY2hlY2tlZEFwcGVuZChyZWNvcmQucmVxdWVzdC5jb3B5UmVmKCkp
OwotICAgICAgICBwcm9taXNlLnJlc29sdmUocmVxdWVzdHMpOworICAgICAgICBwcm9taXNlLnJl
c29sdmUoV1RGOjptYXAocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb3B5UmVxdWVzdFJl
ZikpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgK
aW5kZXggMjBhNDllOTkxZTUzMWRjZWI1MzZkYzUzNzJlMjYwNjY0YzIyMWJmZC4uY2QyMjIxMzBj
Y2FjNzg5MWQ4OWU2NjExNjMxNzgyMTVmMjE0NWQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaApAQCAtNzksNiArNzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYmF0
Y2hQdXRPcGVyYXRpb24oVmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdURjo6RnVu
Y3Rpb248dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7CiAKICAgICB2b2lkIHVwZGF0ZVJl
Y29yZHMoVmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYpOworICAgIFZlY3RvcjxSZWY8
RmV0Y2hSZXNwb25zZT4+IGNsb25lUmVzcG9uc2VzKGNvbnN0IFZlY3RvcjxDYWNoZVN0b3JhZ2VS
ZWNvcmQ+Jik7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIHVpbnQ2NF90IG1faWRlbnRpZmll
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
aW5kZXggY2MyM2YwNmIzZDBmMWM5NmZkM2EzNmRjNTM4YmI0ZmYyNzM0MmFlNS4uZGRlMmU4OWZi
M2JhZjk3YjgzMGRhYjA0ODhlMmJkNTY3ZTRkZTlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzOCwxMyArMTM4LDE0IEBAIFJl
Y29yZCBSZWNvcmQ6OmNvcHkoKSBjb25zdAogICAgIHJldHVybiBSZWNvcmQgeyBpZGVudGlmaWVy
LCB1cGRhdGVSZXNwb25zZUNvdW50ZXIsIHJlcXVlc3RIZWFkZXJzR3VhcmQsIHJlcXVlc3QsIG9w
dGlvbnMsIHJlZmVycmVyLCByZXNwb25zZUhlYWRlcnNHdWFyZCwgcmVzcG9uc2UsIGNvcHlSZXNw
b25zZUJvZHkocmVzcG9uc2VCb2R5KSB9OwogfQogCitzdGF0aWMgaW5saW5lIENhY2hlSW5mbyBp
c29sYXRlQ2FjaGVJbmZvKGNvbnN0IENhY2hlSW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gQ2Fj
aGVJbmZvIHsgaW5mby5pZGVudGlmaWVyLCBpbmZvLm5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsKK30K
KwogQ2FjaGVJbmZvcyBDYWNoZUluZm9zOjppc29sYXRlZENvcHkoKQogewotICAgIFZlY3RvcjxD
YWNoZUluZm8+IGlzb2xhdGVkQ2FjaGVzOwotICAgIGlzb2xhdGVkQ2FjaGVzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoaW5mb3Muc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGluZm8gOiBp
bmZvcykKLSAgICAgICAgaXNvbGF0ZWRDYWNoZXMudW5jaGVja2VkQXBwZW5kKENhY2hlSW5mbyB7
IGluZm8uaWRlbnRpZmllciwgaW5mby5uYW1lLmlzb2xhdGVkQ29weSgpIH0pOwotICAgIHJldHVy
biB7IFdURk1vdmUoaXNvbGF0ZWRDYWNoZXMpLCB1cGRhdGVDb3VudGVyIH07CisgICAgcmV0dXJu
IHsgV1RGOjptYXAoaW5mb3MsIGlzb2xhdGVDYWNoZUluZm8pLCB1cGRhdGVDb3VudGVyIH07CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIERPTUNhY2hlRW5naW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cAppbmRleCBmYjRkNTliZjBlZTExOWQwYzQxZjAyZTExNTgzYjI5MjdjNDI5YzQxLi5hZmEwN2Qy
YjE0NjZiMDI5YzM4M2E2OWUxMWEyNWJiODYyM2Y0YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKQEAgLTE4NSwxMSArMTg1LDcgQEAgdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpkZXJlZmVyZW5jZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiAKIHN0YXRpYyBpbmxp
bmUgVmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGFGcm9tUmVjb3Jkcyhj
b25zdCBWZWN0b3I8UmVjb3JkPiYgcmVjb3JkcykKIHsKLSAgICBWZWN0b3I8Q3Jvc3NUaHJlYWRS
ZWNvcmREYXRhPiByZWNvcmRzRGF0YTsKLSAgICByZWNvcmRzRGF0YS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHJlY29yZHMuc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY29yZCA6IHJl
Y29yZHMpCi0gICAgICAgIHJlY29yZHNEYXRhLnVuY2hlY2tlZEFwcGVuZCh0b0Nyb3NzVGhyZWFk
UmVjb3JkRGF0YShyZWNvcmQpKTsKLSAgICByZXR1cm4gcmVjb3Jkc0RhdGE7CisgICAgcmV0dXJu
IFdURjo6bWFwKHJlY29yZHMsIHRvQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKTsKIH0KIAogc3RhdGlj
IGlubGluZSBFeHBlY3RlZDxWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiwgRXJyb3I+IHJl
Y29yZHNEYXRhT3JFcnJvckZyb21SZWNvcmRzKGNvbnN0IFJlY29yZHNPckVycm9yJiByZXN1bHQp
CkBAIC0yMDIsMTEgKzE5OCw3IEBAIHN0YXRpYyBpbmxpbmUgRXhwZWN0ZWQ8VmVjdG9yPENyb3Nz
VGhyZWFkUmVjb3JkRGF0YT4sIEVycm9yPiByZWNvcmRzRGF0YU9yRXJyb3JGCiAKIHN0YXRpYyBp
bmxpbmUgVmVjdG9yPFJlY29yZD4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShWZWN0b3I8Q3Jvc3NU
aHJlYWRSZWNvcmREYXRhPiYmIHJlY29yZHNEYXRhKQogewotICAgIFZlY3RvcjxSZWNvcmQ+IHJl
Y29yZHM7Ci0gICAgcmVjb3Jkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHNEYXRhLnNp
emUoKSk7Ci0gICAgZm9yIChhdXRvJiByZWNvcmREYXRhIDogcmVjb3Jkc0RhdGEpCi0gICAgICAg
IHJlY29yZHMudW5jaGVja2VkQXBwZW5kKGZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEoV1RGTW92
ZShyZWNvcmREYXRhKSkpOwotICAgIHJldHVybiByZWNvcmRzOworICAgIHJldHVybiBXVEY6Om1h
cChXVEZNb3ZlKHJlY29yZHNEYXRhKSwgZnJvbUNyb3NzVGhyZWFkUmVjb3JkRGF0YSk7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgUmVjb3Jkc09yRXJyb3IgcmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0Rh
dGEoRXhwZWN0ZWQ8VmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4sIEVycm9yPiYmIHJlY29y
ZHNEYXRhKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320911</attachid>
            <date>2017-09-15 09:30:17 -0700</date>
            <delta_ts>2017-10-02 14:37:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177002-20170915093017.patch</filename>
            <type>text/plain</type>
            <size>12810</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTYxNGQ2N2JjZDA5NDYz
YjBjOGRjNjI3MjU4YzE2MTQ5YzY0OTY5NC4uYmFiNjQxMzRmMTI2YzkxNjkxYmI1ZmEyN2YyNTNi
OWVmZjI2YTBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdmVjdG9yIG1hcCBy
b3V0aW5lIGluIFdlYkNvcmUgQ2FjaGVTdG9yYWdlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcwMDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZp
b3IuCisgICAgICAgIFJlcGxhY2luZyB1c2Ugb2YgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eS91bmNo
ZWNrZWRBcHBlbmQgYnkgdXNlIG9mIG1hcC4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZVN0b3JhZ2U6Om1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlOjpr
ZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDYWNoZXMpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6
Om1hdGNoQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlSZXF1ZXN0UmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNhY2hlOjprZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRl
Q2FjaGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9z
Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzRGF0YUZyb21SZWNv
cmRzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlY29yZHNGcm9tUmVjb3Jkc0RhdGEpOgorCiAyMDE3
LTA5LTE0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBTcGVsbGluZywgZ3JhbW1hciBhbmQgY29ycmVjdGlvbiBkb3RzIGFyZSBwYWludGVkIHVwc2lk
ZSBkb3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5jcHAK
aW5kZXggNDE1MzUxOGM3MmU4YTQ2ZmQ4MjY3MWY4MTJlOWU3Y2E4MDU2MjExYS4uMjEyMmQ4M2Rl
ZTgzMTk2NjRkYmQ3NzgzYzkxZDRmZGQ2Yjk2ODc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzQsMTMgKzc0LDkgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHN0YXJ0U2VxdWVudGlhbE1hdGNoKFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiYmIGNh
Y2hlcywgRE9NQ2FjaGUKICAgICBkb1NlcXVlbnRpYWxNYXRjaCgwLCBXVEZNb3ZlKGNhY2hlcyks
IFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotc3RhdGljIGlubGluZSBWZWN0b3I8UmVmPERPTUNhY2hlPj4gY29weUNhY2hl
cyhjb25zdCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mIGNhY2hlcykKK3N0YXRpYyBpbmxpbmUgUmVm
PERPTUNhY2hlPiBjb3B5Q2FjaGUoY29uc3QgUmVmPERPTUNhY2hlPiYgY2FjaGUpCiB7Ci0gICAg
VmVjdG9yPFJlZjxET01DYWNoZT4+IGNvcHk7Ci0gICAgY29weS5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNhY2hlcy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgY2FjaGUgOiBjYWNoZXMpCi0gICAg
ICAgIGNvcHkudW5jaGVja2VkQXBwZW5kKGNhY2hlLmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIGNv
cHk7CisgICAgcmV0dXJuIGNhY2hlLmNvcHlSZWYoKTsKIH0KIAogdm9pZCBDYWNoZVN0b3JhZ2U6
Om1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYg
b3B0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAtMTAyLDcgKzk4LDcg
QEAgdm9pZCBDYWNoZVN0b3JhZ2U6Om1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8s
IENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW8KICAgICAgICAgfQogCiAgICAgICAgIHNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgc3RhcnRTZXF1ZW50aWFsTWF0Y2goY29weUNhY2hl
cyhtX2NhY2hlcyksIFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSo+JiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgc3RhcnRTZXF1ZW50aWFsTWF0Y2goV1RGOjptYXAobV9j
YWNoZXMsIGNvcHlDYWNoZSksIFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFt0aGlz
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSo+
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKQEAgLTEy
OSw2ICsxMjUsMTQgQEAgdm9pZCBDYWNoZVN0b3JhZ2U6Omhhcyhjb25zdCBTdHJpbmcmIG5hbWUs
IERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb20KICAgICB9KTsKIH0KIAorUmVm
PERPTUNhY2hlPiBDYWNoZVN0b3JhZ2U6OmZpbmRDYWNoZU9yQ3JlYXRlKENhY2hlSW5mbyYmIGlu
Zm8pCit7CisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0gKGNv
bnN0IGF1dG8mIGNhY2hlKSB7IHJldHVybiBpbmZvLmlkZW50aWZpZXIgPT0gY2FjaGUtPmlkZW50
aWZpZXIoKTsgfSk7CisgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKQorICAgICAgICByZXR1
cm4gbV9jYWNoZXNbcG9zaXRpb25dLmNvcHlSZWYoKTsKKyAgICByZXR1cm4gRE9NQ2FjaGU6OmNy
ZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGluZm8ubmFtZSksIGluZm8u
aWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7Cit9CisKIHZvaWQgQ2FjaGVTdG9y
YWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIFN0cmluZyBvcmlnaW4gPSB0aGlzLT5vcmln
aW4oKTsKQEAgLTE0NywxNyArMTUxLDkgQEAgdm9pZCBDYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2Fj
aGVzKFdURjo6RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJikKIAogICAg
ICAgICAgICAgaWYgKG1fdXBkYXRlQ291bnRlciAhPSBjYWNoZXNJbmZvLnVwZGF0ZUNvdW50ZXIp
IHsKICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNvdW50ZXIgPSBjYWNoZXNJbmZvLnVwZGF0ZUNv
dW50ZXI7Ci0KLSAgICAgICAgICAgICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKLQotICAgICAgICAgICAgICAgIFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiBjYWNoZXM7Ci0gICAg
ICAgICAgICAgICAgY2FjaGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FjaGVzSW5mby5pbmZv
cy5zaXplKCkpOwotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgaW5mbyA6IGNhY2hlc0luZm8u
aW5mb3MpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZp
bmRNYXRjaGluZyhbJl0oY29uc3QgYXV0byYgY2FjaGUpIHsgcmV0dXJuIGluZm8uaWRlbnRpZmll
ciA9PSBjYWNoZS0+aWRlbnRpZmllcigpOyB9KTsKLSAgICAgICAgICAgICAgICAgICAgY2FjaGVz
LnVuY2hlY2tlZEFwcGVuZChwb3NpdGlvbiAhPSBub3RGb3VuZCA/IG1fY2FjaGVzW3Bvc2l0aW9u
XS5jb3B5UmVmKCkgOiBET01DYWNoZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IFdURk1vdmUoaW5mby5uYW1lKSwgaW5mby5pZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJl
ZigpKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fY2FjaGVzID0gV1RG
TW92ZShjYWNoZXMpOwotCisgICAgICAgICAgICAgICAgbV9jYWNoZXMgPSBXVEY6Om1hcChXVEZN
b3ZlKGNhY2hlc0luZm8uaW5mb3MpLCBbdGhpc10gKENhY2hlSW5mbyYmIGluZm8pIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZpbmRDYWNoZU9yQ3JlYXRlKFdURk1vdmUoaW5mbykpOwor
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FsbGJhY2so
c3RkOjpudWxsb3B0KTsKICAgICAgICAgfQpAQCAtMjUyLDExICsyNDgsOSBAQCB2b2lkIENhY2hl
U3RvcmFnZTo6a2V5cyhLZXlzUHJvbWlzZSYmIHByb21pc2UpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBWZWN0b3I8U3RyaW5nPiBrZXlzOwotICAgICAgICBrZXlz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jYWNoZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChh
dXRvJiBjYWNoZSA6IG1fY2FjaGVzKQotICAgICAgICAgICAga2V5cy51bmNoZWNrZWRBcHBlbmQo
Y2FjaGUtPm5hbWUoKSk7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShrZXlzKTsKKyAgICAgICAg
cHJvbWlzZS5yZXNvbHZlKFdURjo6bWFwKG1fY2FjaGVzLCBbXSAoY29uc3QgYXV0byYgY2FjaGUp
IHsKKyAgICAgICAgICAgIHJldHVybiBjYWNoZS0+bmFtZSgpOworICAgICAgICB9KSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5oCmlu
ZGV4IDRiY2ZiMmU1YzIxZTYwNDMyODlkNmU3ZWI4ZmZiYWU1YTM2MTVjNTguLjg3YmU1N2RkZjQz
NzM4ZjczMzNmOTI5M2JjZjNlNTk5ZmQ2YWFkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2UuaApAQCAtNTMsNiArNTMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwogCiAgICAg
dm9pZCByZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24+JiYpPiYmKTsKKyAgICBSZWY8RE9NQ2FjaGU+IGZpbmRDYWNoZU9yQ3JlYXRlKERPTUNh
Y2hlRW5naW5lOjpDYWNoZUluZm8mJik7CiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0OwogCiAg
ICAgVmVjdG9yPFJlZjxET01DYWNoZT4+IG1fY2FjaGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA1YTA4NGUyNTIwNTVjYzJmZTcxY2NlNDc4ZTA4NDEw
ZDE0ZDk2ZTFhLi4yYjgyZjczMmY2YmFhMzE2MTdhYWVkNGRiYjgyZTg1Y2E2MzczODY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtOTUsNiArOTUsMTQg
QEAgdm9pZCBET01DYWNoZTo6ZG9NYXRjaChSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlP
cHRpb25zJiYgb3B0aW9ucywgTWF0Y2hDYWwKICAgICB9KTsKIH0KIAorVmVjdG9yPFJlZjxGZXRj
aFJlc3BvbnNlPj4gRE9NQ2FjaGU6OmNsb25lUmVzcG9uc2VzKGNvbnN0IFZlY3RvcjxDYWNoZVN0
b3JhZ2VSZWNvcmQ+JiByZWNvcmRzKQoreworICAgIGF1dG8mIGNvbnRleHQgPSAqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgIHJldHVybiBXVEY6Om1hcChyZWNvcmRzLCBbJmNvbnRleHRd
IChjb25zdCBhdXRvJiByZWNvcmQpIHsKKyAgICAgICAgcmV0dXJuIHJlY29yZC5yZXNwb25zZS0+
Y2xvbmUoY29udGV4dCkucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgfSk7Cit9CisKIHZvaWQg
RE9NQ2FjaGU6Om1hdGNoQWxsKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYgaW5mbywgQ2Fj
aGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBNYXRjaEFsbFByb21pc2UmJiBwcm9taXNlKQogewog
ICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKQEAgLTExNiwxMSAr
MTI0LDcgQEAgdm9pZCBET01DYWNoZTo6bWF0Y2hBbGwoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5m
bz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG8KICAgICAgICAgICAgICAgICBwcm9taXNl
LnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgVmVjdG9yPFJlZjxGZXRjaFJlc3BvbnNl
Pj4gcmVzcG9uc2VzOwotICAgICAgICAgICAgcmVzcG9uc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9yZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1f
cmVjb3JkcykKLSAgICAgICAgICAgICAgICByZXNwb25zZXMudW5jaGVja2VkQXBwZW5kKHJlY29y
ZC5yZXNwb25zZS0+Y2xvbmUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucmVsZWFzZVJldHVy
blZhbHVlKCkpOwotICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1vdmUocmVzcG9uc2Vz
KSk7CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2xvbmVSZXNwb25zZXMobV9yZWNvcmRz
KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI5LDEyICsxMzMs
NyBAQCB2b2lkIERPTUNhY2hlOjptYXRjaEFsbChzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZvPiYm
IGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgbwogICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgYXV0byByZWNvcmRzID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwot
ICAgICAgICBWZWN0b3I8UmVmPEZldGNoUmVzcG9uc2U+PiByZXNwb25zZXM7Ci0gICAgICAgIHJl
c3BvbnNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHMuc2l6ZSgpKTsKLSAgICAgICAg
Zm9yIChhdXRvJiByZWNvcmQgOiByZWNvcmRzKQotICAgICAgICAgICAgcmVzcG9uc2VzLnVuY2hl
Y2tlZEFwcGVuZChyZWNvcmQucmVzcG9uc2UtPmNsb25lKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3Bv
bnNlcyk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShjbG9uZVJlc3BvbnNlcyhyZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCkpKTsKICAgICB9KTsKIH0KIApAQCAtMzczLDYgKzM3MiwxMSBAQCB2
b2lkIERPTUNhY2hlOjpyZW1vdmUoUmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9u
cyYmIG9wdGlvbnMsIERPTVByb21pcwogICAgIH0pOwogfQogCitzdGF0aWMgaW5saW5lIFJlZjxG
ZXRjaFJlcXVlc3Q+IGNvcHlSZXF1ZXN0UmVmKGNvbnN0IENhY2hlU3RvcmFnZVJlY29yZCYgcmVj
b3JkKQoreworICAgIHJldHVybiByZWNvcmQucmVxdWVzdC5jb3B5UmVmKCk7Cit9CisKIHZvaWQg
RE9NQ2FjaGU6OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1
ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEtleXNQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBpZiAo
VU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCkBAIC0zOTQsMTEgKzM5OCw3IEBA
IHZvaWQgRE9NQ2FjaGU6OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBD
YWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvCiAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
V1RGTW92ZShleGNlcHRpb24udmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIFZlY3RvcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gcmVxdWVz
dHM7Ci0gICAgICAgICAgICByZXF1ZXN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVjb3Jk
cy5zaXplKCkpOwotICAgICAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3JlY29yZHMpCi0g
ICAgICAgICAgICAgICAgcmVxdWVzdHMudW5jaGVja2VkQXBwZW5kKHJlY29yZC5yZXF1ZXN0LmNv
cHlSZWYoKSk7Ci0gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUocmVxdWVzdHMpOworICAgICAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURjo6bWFwKG1fcmVjb3JkcywgY29weVJlcXVlc3RSZWYp
KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MDksMTIgKzQwOSw3
IEBAIHZvaWQgRE9NQ2FjaGU6OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZv
LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBhdXRvIHJlY29yZHMgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7
Ci0gICAgICAgIFZlY3RvcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gcmVxdWVzdHM7Ci0gICAgICAgIHJl
cXVlc3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkpOwotICAgICAgICBm
b3IgKGF1dG8mIHJlY29yZCA6IHJlY29yZHMpCi0gICAgICAgICAgICByZXF1ZXN0cy51bmNoZWNr
ZWRBcHBlbmQocmVjb3JkLnJlcXVlc3QuY29weVJlZigpKTsKLSAgICAgICAgcHJvbWlzZS5yZXNv
bHZlKHJlcXVlc3RzKTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURjo6bWFwKHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29weVJlcXVlc3RSZWYpKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDIwYTQ5ZTk5MWU1MzFkY2Vi
NTM2ZGM1MzcyZTI2MDY2NGMyMjFiZmQuLmNkMjIyMTMwY2NhYzc4OTFkODllNjYxMTYzMTc4MjE1
ZjIxNDVkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTc5
LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKFZlY3RvcjxE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8
dm9pZD4mJik+JiYpOwogCiAgICAgdm9pZCB1cGRhdGVSZWNvcmRzKFZlY3RvcjxET01DYWNoZUVu
Z2luZTo6UmVjb3JkPiYmKTsKKyAgICBWZWN0b3I8UmVmPEZldGNoUmVzcG9uc2U+PiBjbG9uZVJl
c3BvbnNlcyhjb25zdCBWZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiYpOwogCiAgICAgU3RyaW5n
IG1fbmFtZTsKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IGNjMjNmMDZiM2QwZjFjOTZm
ZDNhMzZkYzUzOGJiNGZmMjczNDJhZTUuLmRkZTJlODlmYjNiYWY5N2I4MzBkYWIwNDg4ZTJiZDU2
N2U0ZGU5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCkBAIC0xMzgsMTMgKzEzOCwxNCBAQCBSZWNvcmQgUmVjb3JkOjpjb3B5KCkgY29u
c3QKICAgICByZXR1cm4gUmVjb3JkIHsgaWRlbnRpZmllciwgdXBkYXRlUmVzcG9uc2VDb3VudGVy
LCByZXF1ZXN0SGVhZGVyc0d1YXJkLCByZXF1ZXN0LCBvcHRpb25zLCByZWZlcnJlciwgcmVzcG9u
c2VIZWFkZXJzR3VhcmQsIHJlc3BvbnNlLCBjb3B5UmVzcG9uc2VCb2R5KHJlc3BvbnNlQm9keSkg
fTsKIH0KIAorc3RhdGljIGlubGluZSBDYWNoZUluZm8gaXNvbGF0ZUNhY2hlSW5mbyhjb25zdCBD
YWNoZUluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIENhY2hlSW5mbyB7IGluZm8uaWRlbnRpZmll
ciwgaW5mby5uYW1lLmlzb2xhdGVkQ29weSgpIH07Cit9CisKIENhY2hlSW5mb3MgQ2FjaGVJbmZv
czo6aXNvbGF0ZWRDb3B5KCkKIHsKLSAgICBWZWN0b3I8Q2FjaGVJbmZvPiBpc29sYXRlZENhY2hl
czsKLSAgICBpc29sYXRlZENhY2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGluZm9zLnNpemUo
KSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpbmZvIDogaW5mb3MpCi0gICAgICAgIGlzb2xhdGVk
Q2FjaGVzLnVuY2hlY2tlZEFwcGVuZChDYWNoZUluZm8geyBpbmZvLmlkZW50aWZpZXIsIGluZm8u
bmFtZS5pc29sYXRlZENvcHkoKSB9KTsKLSAgICByZXR1cm4geyBXVEZNb3ZlKGlzb2xhdGVkQ2Fj
aGVzKSwgdXBkYXRlQ291bnRlciB9OworICAgIHJldHVybiB7IFdURjo6bWFwKGluZm9zLCBpc29s
YXRlQ2FjaGVJbmZvKSwgdXBkYXRlQ291bnRlciB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBET01D
YWNoZUVuZ2luZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggZmI0ZDU5YmYwZWUxMTlk
MGM0MWYwMmUxMTU4M2IyOTI3YzQyOWM0MS4uYWZhMDdkMmIxNDY2YjAyOWMzODNhNjllMTFhMjVi
Yjg2MjNmNGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0xODUsMTEgKzE4NSw3
IEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZGVyZWZlcmVuY2UodWludDY0
X3QgY2FjaGVJZGVudGlmaWVyKQogCiBzdGF0aWMgaW5saW5lIFZlY3RvcjxDcm9zc1RocmVhZFJl
Y29yZERhdGE+IHJlY29yZHNEYXRhRnJvbVJlY29yZHMoY29uc3QgVmVjdG9yPFJlY29yZD4mIHJl
Y29yZHMpCiB7Ci0gICAgVmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGE7
Ci0gICAgcmVjb3Jkc0RhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7
Ci0gICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmQgOiByZWNvcmRzKQotICAgICAgICByZWNvcmRz
RGF0YS51bmNoZWNrZWRBcHBlbmQodG9Dcm9zc1RocmVhZFJlY29yZERhdGEocmVjb3JkKSk7Ci0g
ICAgcmV0dXJuIHJlY29yZHNEYXRhOworICAgIHJldHVybiBXVEY6Om1hcChyZWNvcmRzLCB0b0Ny
b3NzVGhyZWFkUmVjb3JkRGF0YSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRXhwZWN0ZWQ8VmVjdG9y
PENyb3NzVGhyZWFkUmVjb3JkRGF0YT4sIEVycm9yPiByZWNvcmRzRGF0YU9yRXJyb3JGcm9tUmVj
b3Jkcyhjb25zdCBSZWNvcmRzT3JFcnJvciYgcmVzdWx0KQpAQCAtMjAyLDExICsxOTgsNyBAQCBz
dGF0aWMgaW5saW5lIEV4cGVjdGVkPFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+LCBFcnJv
cj4gcmVjb3Jkc0RhdGFPckVycm9yRgogCiBzdGF0aWMgaW5saW5lIFZlY3RvcjxSZWNvcmQ+IHJl
Y29yZHNGcm9tUmVjb3Jkc0RhdGEoVmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4mJiByZWNv
cmRzRGF0YSkKIHsKLSAgICBWZWN0b3I8UmVjb3JkPiByZWNvcmRzOwotICAgIHJlY29yZHMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzRGF0YS5zaXplKCkpOwotICAgIGZvciAoYXV0byYg
cmVjb3JkRGF0YSA6IHJlY29yZHNEYXRhKQotICAgICAgICByZWNvcmRzLnVuY2hlY2tlZEFwcGVu
ZChmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKFdURk1vdmUocmVjb3JkRGF0YSkpKTsKLSAgICBy
ZXR1cm4gcmVjb3JkczsKKyAgICByZXR1cm4gV1RGOjptYXAoV1RGTW92ZShyZWNvcmRzRGF0YSks
IGZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEpOwogfQogCiBzdGF0aWMgaW5saW5lIFJlY29yZHNP
ckVycm9yIHJlY29yZHNPckVycm9yRnJvbVJlY29yZHNEYXRhKEV4cGVjdGVkPFZlY3RvcjxDcm9z
c1RocmVhZFJlY29yZERhdGE+LCBFcnJvcj4mJiByZWNvcmRzRGF0YSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322440</attachid>
            <date>2017-10-02 14:37:53 -0700</date>
            <delta_ts>2017-10-03 02:35:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-177002-20171002233748.patch</filename>
            <type>text/plain</type>
            <size>12811</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRlMTY5OWFhNDZlMzQ1
NzAzMTM0Mjk5MjY5YWM1YzU0MThhNDU2ZC4uNDJjOGI0OThiNmZjYWU0YWFkNzE4YmM1YmRiNTM1
ZWIxNjNkOTZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTEwLTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdmVjdG9yIG1hcCBy
b3V0aW5lIGluIFdlYkNvcmUgQ2FjaGVTdG9yYWdlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcwMDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3Iu
CisgICAgICAgIFJlcGxhY2luZyB1c2Ugb2YgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eS91bmNoZWNr
ZWRBcHBlbmQgYnkgdXNlIG9mIG1hcC4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZVN0b3JhZ2U6Om1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFn
ZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlOjprZXlz
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDYWNoZXMpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6Om1h
dGNoQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlSZXF1ZXN0UmVmKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjprZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRlQ2Fj
aGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zOjpp
c29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzRGF0YUZyb21SZWNvcmRz
KToKKyAgICAgICAgKFdlYkNvcmU6OnJlY29yZHNGcm9tUmVjb3Jkc0RhdGEpOgorCiAyMDE3LTEw
LTAyICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbWVt
b3J5IGxlYWtzIGluIFJlbmRlck11bHRpQ29sdW1uRmxvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBlOTMxMTg1OWU0YmJiM2UwMWJiZmQwNzYxMzhkNjM5
OTAxZDUwNmIwLi41ZDEwZmRkN2E0MmNkOWMzMjBjNTY5OGZmODI5OWVlYzE2MzE3OTIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtOTUsNiArOTUsMTQg
QEAgdm9pZCBET01DYWNoZTo6ZG9NYXRjaChSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlP
cHRpb25zJiYgb3B0aW9ucywgTWF0Y2hDYWwKICAgICB9KTsKIH0KIAorVmVjdG9yPFJlZjxGZXRj
aFJlc3BvbnNlPj4gRE9NQ2FjaGU6OmNsb25lUmVzcG9uc2VzKGNvbnN0IFZlY3RvcjxDYWNoZVN0
b3JhZ2VSZWNvcmQ+JiByZWNvcmRzKQoreworICAgIGF1dG8mIGNvbnRleHQgPSAqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgIHJldHVybiBXVEY6Om1hcChyZWNvcmRzLCBbJmNvbnRleHRd
IChjb25zdCBhdXRvJiByZWNvcmQpIHsKKyAgICAgICAgcmV0dXJuIHJlY29yZC5yZXNwb25zZS0+
Y2xvbmUoY29udGV4dCkucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgfSk7Cit9CisKIHZvaWQg
RE9NQ2FjaGU6Om1hdGNoQWxsKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYgaW5mbywgQ2Fj
aGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBNYXRjaEFsbFByb21pc2UmJiBwcm9taXNlKQogewog
ICAgIGlmIChVTkxJS0VMWSghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKQEAgLTExNiwxMSAr
MTI0LDcgQEAgdm9pZCBET01DYWNoZTo6bWF0Y2hBbGwoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5m
bz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG8KICAgICAgICAgICAgICAgICBwcm9taXNl
LnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgVmVjdG9yPFJlZjxGZXRjaFJlc3BvbnNl
Pj4gcmVzcG9uc2VzOwotICAgICAgICAgICAgcmVzcG9uc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9yZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1f
cmVjb3JkcykKLSAgICAgICAgICAgICAgICByZXNwb25zZXMudW5jaGVja2VkQXBwZW5kKHJlY29y
ZC5yZXNwb25zZS0+Y2xvbmUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucmVsZWFzZVJldHVy
blZhbHVlKCkpOwotICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1vdmUocmVzcG9uc2Vz
KSk7CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2xvbmVSZXNwb25zZXMobV9yZWNvcmRz
KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI5LDEyICsxMzMs
NyBAQCB2b2lkIERPTUNhY2hlOjptYXRjaEFsbChzdGQ6Om9wdGlvbmFsPFJlcXVlc3RJbmZvPiYm
IGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgbwogICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgYXV0byByZWNvcmRzID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwot
ICAgICAgICBWZWN0b3I8UmVmPEZldGNoUmVzcG9uc2U+PiByZXNwb25zZXM7Ci0gICAgICAgIHJl
c3BvbnNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHMuc2l6ZSgpKTsKLSAgICAgICAg
Zm9yIChhdXRvJiByZWNvcmQgOiByZWNvcmRzKQotICAgICAgICAgICAgcmVzcG9uc2VzLnVuY2hl
Y2tlZEFwcGVuZChyZWNvcmQucmVzcG9uc2UtPmNsb25lKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3Bv
bnNlcyk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShjbG9uZVJlc3BvbnNlcyhyZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCkpKTsKICAgICB9KTsKIH0KIApAQCAtMzczLDYgKzM3MiwxMSBAQCB2
b2lkIERPTUNhY2hlOjpyZW1vdmUoUmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9u
cyYmIG9wdGlvbnMsIERPTVByb21pcwogICAgIH0pOwogfQogCitzdGF0aWMgaW5saW5lIFJlZjxG
ZXRjaFJlcXVlc3Q+IGNvcHlSZXF1ZXN0UmVmKGNvbnN0IENhY2hlU3RvcmFnZVJlY29yZCYgcmVj
b3JkKQoreworICAgIHJldHVybiByZWNvcmQucmVxdWVzdC5jb3B5UmVmKCk7Cit9CisKIHZvaWQg
RE9NQ2FjaGU6OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1
ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEtleXNQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBpZiAo
VU5MSUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCkBAIC0zOTQsMTEgKzM5OCw3IEBA
IHZvaWQgRE9NQ2FjaGU6OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBD
YWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvCiAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
V1RGTW92ZShleGNlcHRpb24udmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIFZlY3RvcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gcmVxdWVz
dHM7Ci0gICAgICAgICAgICByZXF1ZXN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVjb3Jk
cy5zaXplKCkpOwotICAgICAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3JlY29yZHMpCi0g
ICAgICAgICAgICAgICAgcmVxdWVzdHMudW5jaGVja2VkQXBwZW5kKHJlY29yZC5yZXF1ZXN0LmNv
cHlSZWYoKSk7Ci0gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUocmVxdWVzdHMpOworICAgICAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURjo6bWFwKG1fcmVjb3JkcywgY29weVJlcXVlc3RSZWYp
KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MDksMTIgKzQwOSw3
IEBAIHZvaWQgRE9NQ2FjaGU6OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZv
LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBhdXRvIHJlY29yZHMgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7
Ci0gICAgICAgIFZlY3RvcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gcmVxdWVzdHM7Ci0gICAgICAgIHJl
cXVlc3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkpOwotICAgICAgICBm
b3IgKGF1dG8mIHJlY29yZCA6IHJlY29yZHMpCi0gICAgICAgICAgICByZXF1ZXN0cy51bmNoZWNr
ZWRBcHBlbmQocmVjb3JkLnJlcXVlc3QuY29weVJlZigpKTsKLSAgICAgICAgcHJvbWlzZS5yZXNv
bHZlKHJlcXVlc3RzKTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURjo6bWFwKHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29weVJlcXVlc3RSZWYpKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDIwYTQ5ZTk5MWU1MzFkY2Vi
NTM2ZGM1MzcyZTI2MDY2NGMyMjFiZmQuLmNkMjIyMTMwY2NhYzc4OTFkODllNjYxMTYzMTc4MjE1
ZjIxNDVkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTc5
LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKFZlY3RvcjxE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8
dm9pZD4mJik+JiYpOwogCiAgICAgdm9pZCB1cGRhdGVSZWNvcmRzKFZlY3RvcjxET01DYWNoZUVu
Z2luZTo6UmVjb3JkPiYmKTsKKyAgICBWZWN0b3I8UmVmPEZldGNoUmVzcG9uc2U+PiBjbG9uZVJl
c3BvbnNlcyhjb25zdCBWZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiYpOwogCiAgICAgU3RyaW5n
IG1fbmFtZTsKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IGNjMjNmMDZiM2QwZjFjOTZm
ZDNhMzZkYzUzOGJiNGZmMjczNDJhZTUuLmRkZTJlODlmYjNiYWY5N2I4MzBkYWIwNDg4ZTJiZDU2
N2U0ZGU5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCkBAIC0xMzgsMTMgKzEzOCwxNCBAQCBSZWNvcmQgUmVjb3JkOjpjb3B5KCkgY29u
c3QKICAgICByZXR1cm4gUmVjb3JkIHsgaWRlbnRpZmllciwgdXBkYXRlUmVzcG9uc2VDb3VudGVy
LCByZXF1ZXN0SGVhZGVyc0d1YXJkLCByZXF1ZXN0LCBvcHRpb25zLCByZWZlcnJlciwgcmVzcG9u
c2VIZWFkZXJzR3VhcmQsIHJlc3BvbnNlLCBjb3B5UmVzcG9uc2VCb2R5KHJlc3BvbnNlQm9keSkg
fTsKIH0KIAorc3RhdGljIGlubGluZSBDYWNoZUluZm8gaXNvbGF0ZUNhY2hlSW5mbyhjb25zdCBD
YWNoZUluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIENhY2hlSW5mbyB7IGluZm8uaWRlbnRpZmll
ciwgaW5mby5uYW1lLmlzb2xhdGVkQ29weSgpIH07Cit9CisKIENhY2hlSW5mb3MgQ2FjaGVJbmZv
czo6aXNvbGF0ZWRDb3B5KCkKIHsKLSAgICBWZWN0b3I8Q2FjaGVJbmZvPiBpc29sYXRlZENhY2hl
czsKLSAgICBpc29sYXRlZENhY2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGluZm9zLnNpemUo
KSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpbmZvIDogaW5mb3MpCi0gICAgICAgIGlzb2xhdGVk
Q2FjaGVzLnVuY2hlY2tlZEFwcGVuZChDYWNoZUluZm8geyBpbmZvLmlkZW50aWZpZXIsIGluZm8u
bmFtZS5pc29sYXRlZENvcHkoKSB9KTsKLSAgICByZXR1cm4geyBXVEZNb3ZlKGlzb2xhdGVkQ2Fj
aGVzKSwgdXBkYXRlQ291bnRlciB9OworICAgIHJldHVybiB7IFdURjo6bWFwKGluZm9zLCBpc29s
YXRlQ2FjaGVJbmZvKSwgdXBkYXRlQ291bnRlciB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBET01D
YWNoZUVuZ2luZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0
b3JhZ2UuY3BwCmluZGV4IGFkYzc4YjFkYjQyNzRhN2Q3M2Q3ZjBhMTA3YTlhMWQxOGFhMjBkYTEu
LmE4YTk3ODZhZWU2NjJjMDBlODJhNWQyMDk5ZGNiMzIzYTdkZTVlNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKQEAgLTc0LDEzICs3
NCw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFNlcXVlbnRpYWxNYXRjaChWZWN0b3I8UmVm
PERPTUNhY2hlPj4mJiBjYWNoZXMsIERPTUNhY2hlCiAgICAgZG9TZXF1ZW50aWFsTWF0Y2goMCwg
V1RGTW92ZShjYWNoZXMpLCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgVmVjdG9yPFJlZjxET01D
YWNoZT4+IGNvcHlDYWNoZXMoY29uc3QgVmVjdG9yPFJlZjxET01DYWNoZT4+JiBjYWNoZXMpCitz
dGF0aWMgaW5saW5lIFJlZjxET01DYWNoZT4gY29weUNhY2hlKGNvbnN0IFJlZjxET01DYWNoZT4m
IGNhY2hlKQogewotICAgIFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiBjb3B5OwotICAgIGNvcHkucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShjYWNoZXMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIGNhY2hl
IDogY2FjaGVzKQotICAgICAgICBjb3B5LnVuY2hlY2tlZEFwcGVuZChjYWNoZS5jb3B5UmVmKCkp
OwotICAgIHJldHVybiBjb3B5OworICAgIHJldHVybiBjYWNoZS5jb3B5UmVmKCk7CiB9CiAKIHZv
aWQgRE9NQ2FjaGVTdG9yYWdlOjptYXRjaChET01DYWNoZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBD
YWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKQEAgLTEwMiw3ICs5OCw3IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjptYXRjaChET01DYWNo
ZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wCiAgICAgICAgIH0K
IAogICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgICAgIHN0YXJ0U2VxdWVu
dGlhbE1hdGNoKGNvcHlDYWNoZXMobV9jYWNoZXMpLCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9w
dGlvbnMpLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPEZl
dGNoUmVzcG9uc2UqPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHN0YXJ0U2VxdWVudGlh
bE1hdGNoKFdURjo6bWFwKG1fY2FjaGVzLCBjb3B5Q2FjaGUpLCBXVEZNb3ZlKGluZm8pLCBXVEZN
b3ZlKG9wdGlvbnMpLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlv
bk9yPEZldGNoUmVzcG9uc2UqPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
IW1faXNTdG9wcGVkKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgewogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKSk7CkBAIC0xMjksNiArMTI1LDE0IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpo
YXMoY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBw
CiAgICAgfSk7CiB9CiAKK1JlZjxET01DYWNoZT4gRE9NQ2FjaGVTdG9yYWdlOjpmaW5kQ2FjaGVP
ckNyZWF0ZShDYWNoZUluZm8mJiBpbmZvKQoreworICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVz
LmZpbmRNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGNhY2hlKSB7IHJldHVybiBpbmZvLmlkZW50
aWZpZXIgPT0gY2FjaGUtPmlkZW50aWZpZXIoKTsgfSk7CisgICBpZiAocG9zaXRpb24gIT0gbm90
Rm91bmQpCisgICAgICAgcmV0dXJuIG1fY2FjaGVzW3Bvc2l0aW9uXS5jb3B5UmVmKCk7CisgICBy
ZXR1cm4gRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3Zl
KGluZm8ubmFtZSksIGluZm8uaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7Cit9
CisKIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZv
aWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIFN0cmlu
ZyBvcmlnaW4gPSB0aGlzLT5vcmlnaW4oKTsKQEAgLTE0OCwxNiArMTUyLDkgQEAgdm9pZCBET01D
YWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2FjaGVzKFdURjo6RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlv
bmFsPEV4Y2VwdGlvbj4KICAgICAgICAgICAgIGlmIChtX3VwZGF0ZUNvdW50ZXIgIT0gY2FjaGVz
SW5mby51cGRhdGVDb3VudGVyKSB7CiAgICAgICAgICAgICAgICAgbV91cGRhdGVDb3VudGVyID0g
Y2FjaGVzSW5mby51cGRhdGVDb3VudGVyOwogCi0gICAgICAgICAgICAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0KLSAgICAgICAgICAgICAgICBWZWN0b3I8UmVmPERPTUNh
Y2hlPj4gY2FjaGVzOwotICAgICAgICAgICAgICAgIGNhY2hlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNhY2hlc0luZm8uaW5mb3Muc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8m
IGluZm8gOiBjYWNoZXNJbmZvLmluZm9zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gcG9z
aXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGNhY2hlKSB7IHJl
dHVybiBpbmZvLmlkZW50aWZpZXIgPT0gY2FjaGUtPmlkZW50aWZpZXIoKTsgfSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhY2hlcy51bmNoZWNrZWRBcHBlbmQocG9zaXRpb24gIT0gbm90Rm91bmQg
PyBtX2NhY2hlc1twb3NpdGlvbl0uY29weVJlZigpIDogRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGluZm8ubmFtZSksIGluZm8uaWRlbnRpZmllciwg
bV9jb25uZWN0aW9uLmNvcHlSZWYoKSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBtX2NhY2hlcyA9IFdURk1vdmUoY2FjaGVzKTsKLQorICAgICAgICAgICAgICAgIG1fY2Fj
aGVzID0gV1RGOjptYXAoV1RGTW92ZShjYWNoZXNJbmZvLmluZm9zKSwgW3RoaXNdIChDYWNoZUlu
Zm8mJiBpbmZvKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaW5kQ2FjaGVPckNyZWF0
ZShXVEZNb3ZlKGluZm8pKTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0KQEAgLTI1MiwxMSAr
MjQ5LDkgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OmtleXMoS2V5c1Byb21pc2UmJiBwcm9taXNl
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVmVjdG9yPFN0cmlu
Zz4ga2V5czsKLSAgICAgICAga2V5cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fY2FjaGVzLnNp
emUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgY2FjaGUgOiBtX2NhY2hlcykKLSAgICAgICAgICAg
IGtleXMudW5jaGVja2VkQXBwZW5kKGNhY2hlLT5uYW1lKCkpOwotICAgICAgICBwcm9taXNlLnJl
c29sdmUoa2V5cyk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShXVEY6Om1hcChtX2NhY2hlcywg
W10gKGNvbnN0IGF1dG8mIGNhY2hlKSB7CisgICAgICAgICAgICByZXR1cm4gY2FjaGUtPm5hbWUo
KTsKKyAgICAgICAgfSkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaAppbmRleCBjMGI5OTA0NjIwMzFhNGM0YzFkYzg1Njlj
N2E0N2ZlODhjYzY4YmI5Li45M2E4MmZiYjczZDU0MzAxZWZiYjU3NDVkYjBhNmIzMGM2OTkyZWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmgK
QEAgLTUzLDYgKzUzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVu
dFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoV1RG
OjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CisgICAgUmVm
PERPTUNhY2hlPiBmaW5kQ2FjaGVPckNyZWF0ZShET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvJiYp
OwogICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdDsKIAogICAgIFZlY3RvcjxSZWY8RE9NQ2FjaGU+
PiBtX2NhY2hlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGZiNGQ1OWJmMGVlMTE5
ZDBjNDFmMDJlMTE1ODNiMjkyN2M0MjljNDEuLmFmYTA3ZDJiMTQ2NmIwMjljMzgzYTY5ZTExYTI1
YmI4NjIzZjRhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMTg1LDExICsxODUs
NyBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlcmVmZXJlbmNlKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllcikKIAogc3RhdGljIGlubGluZSBWZWN0b3I8Q3Jvc3NUaHJlYWRS
ZWNvcmREYXRhPiByZWNvcmRzRGF0YUZyb21SZWNvcmRzKGNvbnN0IFZlY3RvcjxSZWNvcmQ+JiBy
ZWNvcmRzKQogewotICAgIFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNEYXRh
OwotICAgIHJlY29yZHNEYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkp
OwotICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkIDogcmVjb3JkcykKLSAgICAgICAgcmVjb3Jk
c0RhdGEudW5jaGVja2VkQXBwZW5kKHRvQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKHJlY29yZCkpOwot
ICAgIHJldHVybiByZWNvcmRzRGF0YTsKKyAgICByZXR1cm4gV1RGOjptYXAocmVjb3JkcywgdG9D
cm9zc1RocmVhZFJlY29yZERhdGEpOwogfQogCiBzdGF0aWMgaW5saW5lIEV4cGVjdGVkPFZlY3Rv
cjxDcm9zc1RocmVhZFJlY29yZERhdGE+LCBFcnJvcj4gcmVjb3Jkc0RhdGFPckVycm9yRnJvbVJl
Y29yZHMoY29uc3QgUmVjb3Jkc09yRXJyb3ImIHJlc3VsdCkKQEAgLTIwMiwxMSArMTk4LDcgQEAg
c3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiwgRXJy
b3I+IHJlY29yZHNEYXRhT3JFcnJvckYKIAogc3RhdGljIGlubGluZSBWZWN0b3I8UmVjb3JkPiBy
ZWNvcmRzRnJvbVJlY29yZHNEYXRhKFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+JiYgcmVj
b3Jkc0RhdGEpCiB7Ci0gICAgVmVjdG9yPFJlY29yZD4gcmVjb3JkczsKLSAgICByZWNvcmRzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkc0RhdGEuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8m
IHJlY29yZERhdGEgOiByZWNvcmRzRGF0YSkKLSAgICAgICAgcmVjb3Jkcy51bmNoZWNrZWRBcHBl
bmQoZnJvbUNyb3NzVGhyZWFkUmVjb3JkRGF0YShXVEZNb3ZlKHJlY29yZERhdGEpKSk7Ci0gICAg
cmV0dXJuIHJlY29yZHM7CisgICAgcmV0dXJuIFdURjo6bWFwKFdURk1vdmUocmVjb3Jkc0RhdGEp
LCBmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKTsKIH0KIAogc3RhdGljIGlubGluZSBSZWNvcmRz
T3JFcnJvciByZWNvcmRzT3JFcnJvckZyb21SZWNvcmRzRGF0YShFeHBlY3RlZDxWZWN0b3I8Q3Jv
c3NUaHJlYWRSZWNvcmREYXRhPiwgRXJyb3I+JiYgcmVjb3Jkc0RhdGEpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>