<?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>202090</bug_id>
          
          <creation_ts>2019-09-22 04:47:43 -0700</creation_ts>
          <short_desc>clang-tidy: Fix unnecessary copy/ref churn of for loop variables in WebCore</short_desc>
          <delta_ts>2019-09-22 20:47:05 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=202069</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=202096</see_also>
          <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="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1573181</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-09-22 04:47:43 -0700</bug_when>
    <thetext>Running clang-tidy on WebCore resulted in these potential performance improvements to prevent object copies or reference churn in for loop variables:

Source/WebCore/Modules/encryptedmedia/InitDataRegistry.cpp:174:27: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
                for (auto request : fpsPssh.initDataBox().requests()) {
                          ^
                     const  &amp;
--
Source/WebCore/svg/SVGStringList.h:78:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (auto string : m_items) {
                  ^
             const  &amp;
--
Source/WebCore/./platform/ios/PlatformPasteboardIOS.mm:729:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto type : types)
              ^
         const  &amp;
--
Source/WebCore/./accessibility/AccessibilityObject.cpp:493:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (auto misspelling : misspellings) {
                  ^
             const  &amp;
--
Source/WebCore/./accessibility/AccessibilityObject.cpp:985:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto textRange : operation.textRanges) {
              ^
         const  &amp;
--
Source/WebCore/./html/HTMLSlotElement.cpp:119:23: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (RefPtr&lt;Node&gt; node : *assignedNodes) {
                      ^
         const       &amp;
--
Source/WebCore/./layout/inlineformatting/InlineFormattingContextLineLayout.cpp:368:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto floatItem : floats) {
              ^
         const  &amp;
--
Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:664:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto loadResult : _loadResults) {
              ^
         const  &amp;
--
Source/WebCore/html/track/WebVTTParser.cpp:392:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto rule : childRules) {
              ^
         const  &amp;
--
Source/WebCore/testing/MockLibWebRTCPeerConnection.cpp:81:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto transceiver : m_transceivers)
              ^
         const  &amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573182</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-22 04:50:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/55600665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573184</commentid>
    <comment_count>2</comment_count>
      <attachid>379343</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-09-22 04:58:51 -0700</bug_when>
    <thetext>Created attachment 379343
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573196</commentid>
    <comment_count>3</comment_count>
      <attachid>379343</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-09-22 09:20:00 -0700</bug_when>
    <thetext>Comment on attachment 379343
Patch v1

View in context: https://bugs.webkit.org/attachment.cgi?id=379343&amp;action=review
This patch looks good.

&gt; Source/WebCore/testing/MockLibWebRTCPeerConnection.cpp:80
&gt; +    std::vector&lt;rtc::scoped_refptr&lt;webrtc::RtpTransceiverInterface&gt;&gt; transceivers(m_transceivers.size());

This change doubles the size of the final vector. This constructor takes a vector size (read: not capacity).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573198</commentid>
    <comment_count>4</comment_count>
      <attachid>379343</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-09-22 10:13:35 -0700</bug_when>
    <thetext>Comment on attachment 379343
Patch v1

This causes failures in fast/mediastream tests.  Removing r+/cq? flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573199</commentid>
    <comment_count>5</comment_count>
      <attachid>379347</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-09-22 10:29:01 -0700</bug_when>
    <thetext>Created attachment 379347
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573200</commentid>
    <comment_count>6</comment_count>
      <attachid>379343</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-09-22 10:30:59 -0700</bug_when>
    <thetext>Comment on attachment 379343
Patch v1

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

&gt;&gt; Source/WebCore/testing/MockLibWebRTCPeerConnection.cpp:80
&gt;&gt; +    std::vector&lt;rtc::scoped_refptr&lt;webrtc::RtpTransceiverInterface&gt;&gt; transceivers(m_transceivers.size());
&gt; 
&gt; This change doubles the size of the final vector. This constructor takes a vector size (read: not capacity).

It also instantiates m_transceivers.size() objects using the default constructor, which is not what I wanted!

Switched to use std::vector&lt;&gt;::reserve() in Patch v2.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573221</commentid>
    <comment_count>7</comment_count>
      <attachid>379347</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-09-22 19:12:08 -0700</bug_when>
    <thetext>Comment on attachment 379347
Patch v2

Thanks for updating the patch. Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573222</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-09-22 19:45:43 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #5)
&gt; Created attachment 379347 [details]
&gt; Patch v2

ios-wk2 ews failure:

media/presentationmodechanged-fired-once.html

This test is crashing intermittently without this patch:

&lt;https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=media/presentationmodechanged-fired-once.html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573232</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-22 20:46:19 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 379347:

imported/w3c/web-platform-tests/websockets/bufferedAmount-unchanged-by-sync-xhr.any.worker.html bug 202003 (author: youennf@gmail.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573233</commentid>
    <comment_count>10</comment_count>
      <attachid>379347</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-22 20:47:03 -0700</bug_when>
    <thetext>Comment on attachment 379347
Patch v2

Clearing flags on attachment: 379347

Committed r250201: &lt;https://trac.webkit.org/changeset/250201&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573234</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-22 20:47:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379343</attachid>
            <date>2019-09-22 04:58:51 -0700</date>
            <delta_ts>2019-09-22 10:28:59 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-202090-20190922045850.patch</filename>
            <type>text/plain</type>
            <size>9236</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEzZDI3NjQ0NjgxNTE4
OGViMTA3MTgyMzVkN2NhYTMxM2Q1M2Y2NS4uMzE0NDFhNGM3MWE2YjIzMTJiODRlNTczZjVmMTE5
ZDg3ZDUyZjk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTA5LTIyICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgY2xhbmctdGlkeTogRml4
IHVubmVjZXNzYXJ5IGNvcHkvcmVmIGNodXJuIG9mIGZvciBsb29wIHZhcmlhYmxlcyBpbiBXZWJD
b3JlCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDIwOTA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHVud2FudGVkIGNvcHlpbmcv
cmVmIGNodXJuIG9mIGxvb3AgdmFyaWFibGVzIGJ5IG1ha2luZyB0aGVtCisgICAgICAgIGNvbnN0
IHJlZmVyZW5jZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRh
UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEc0NlbmMpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRNaXNzcGVs
bGluZ1JhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnBlcmZvcm1UZXh0T3BlcmF0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxTbG90RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpmbGF0dGVuQXNzaWduZWROb2Rlcyk6CisgICAgICAgICog
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFy
c2VyOjpjaGVja0FuZFN0b3JlU3R5bGVTaGVldCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6
Y3JlYXRlRGlzcGxheVJ1bnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQgYWxsRHJvcHBlZEZpbGVVUkxzXSk6CisgICAgICAgICogc3ZnL1NWR1N0cmlu
Z0xpc3QuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb246OkdldFRy
YW5zY2VpdmVycyBjb25zdCk6CisgICAgICAgIEFsc28gc2l6ZSBgdHJhbnNjZWl2ZXJzYCB1c2lu
ZyBtX3RyYW5zY2VpdmVycy5zaXplKCkgdG8gb3B0aW1pemUKKyAgICAgICAgYWxsb2NhdGlvbnMu
CisKIDIwMTktMDktMTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OIChyMjQ3NTY2KTogTGVhayBvZiBVSUNURm9udERlc2NyaXB0b3IgaW4g
V2ViQ29yZTo6Rm9udERhdGFiYXNlOjpJbnN0YWxsZWRGb250OjpJbnN0YWxsZWRGb250KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCmluZGV4IDc1ZWRiNmE5MzYzODgwZTU4N2MzNTc1NmIxNGRlYzlmOWI0
NWU2OTcuLjdjNTQ2ZGM2MDBiMTJjNTc2ZGQwODI3OWFiN2M2NjdmYTU1ZmI5MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIE9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNo
CiAKICAgICAgICAgICAgIEZvdXJDQyBzY2hlbWUgPSBmcHNQc3NoLmluaXREYXRhQm94KCkuaW5m
bygpLnNjaGVtZSgpOwogICAgICAgICAgICAgaWYgKENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6dmFsaWRGYWlyUGxheVN0cmVhbWluZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpKSB7Ci0g
ICAgICAgICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBmcHNQc3NoLmluaXREYXRhQm94KCku
cmVxdWVzdHMoKSkgeworICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVxdWVzdCA6
IGZwc1Bzc2guaW5pdERhdGFCb3goKS5yZXF1ZXN0cygpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGF1dG8mIGtleUlEID0gcmVxdWVzdC5yZXF1ZXN0SW5mbygpLmtleUlEKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGtleUlEcy5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoa2V5SUQuZGF0YSgp
LCBrZXlJRC5zaXplKCkpKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAyNTRlOWIy
YWU0YTU3ZjAyNTNmYmU4OGY1OGY2NDJiYmVkNTQzMTQ0Li4zOGQ2ZjVjNDY2N2VhZGViNDk0ZWE2
YjAxYWZiMGI3NGRiZWIzY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTQ5MCw3ICs0OTAsNyBAQCBSZWZQdHI8
UmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldE1pc3NwZWxsaW5nUmFuZ2UoUmVmUHRyPFJh
bmdlPiBjb25zdCYgc3RhcgogICAgIC8vIFNvIGl0ZXJhdGUgZm9yd2FyZCBvciBiYWNrd2FyZHMg
ZGVwZW5kaW5nIG9uIHRoZSBkZXNpcmVkIHNlYXJjaAogICAgIC8vIGRpcmVjdGlvbiB0byBmaW5k
IHRoZSBjbG9zZXN0IG1pc3NwZWxsaW5nIGluIHRoYXQgZGlyZWN0aW9uLgogICAgIGlmIChkaXJl
Y3Rpb24gPT0gQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbjo6TmV4dCkgewotICAgICAgICBm
b3IgKGF1dG8gbWlzc3BlbGxpbmcgOiBtaXNzcGVsbGluZ3MpIHsKKyAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBtaXNzcGVsbGluZyA6IG1pc3NwZWxsaW5ncykgewogICAgICAgICAgICAgYXV0byBt
aXNzcGVsbGluZ1JhbmdlID0gZWRpdG9yLnJhbmdlRm9yVGV4dENoZWNraW5nUmVzdWx0KG1pc3Nw
ZWxsaW5nKTsKICAgICAgICAgICAgIGlmICghbWlzc3BlbGxpbmdSYW5nZSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTk4Miw3ICs5ODIsNyBAQCBWZWN0b3I8U3RyaW5nPiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJh
dAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBmb3IgKGF1
dG8gdGV4dFJhbmdlIDogb3BlcmF0aW9uLnRleHRSYW5nZXMpIHsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIHRleHRSYW5nZSA6IG9wZXJhdGlvbi50ZXh0UmFuZ2VzKSB7CiAgICAgICAgIGlmICghZnJh
bWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UodGV4dFJhbmdlLmdldCgpLCBET1dOU1RS
RUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcykpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCmluZGV4
IDdmNGZhOGI5YTIxN2UzZDM5NjY0M2NkOTE1NjdmZmY0YTA5ZjA0OWIuLmZiMWFkYTJlNGQzMGFk
MjM0YjAzMzFjZWE0NzU2NjQ3M2E1MTBkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNsb3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90
RWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgdm9pZCBmbGF0dGVuQXNzaWdu
ZWROb2RlcyhWZWN0b3I8UmVmPE5vZGU+PiYgbm9kZXMsIGNvbnN0IEhUTUxTbG90RWxlbWVudAog
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZm9yIChSZWZQdHI8Tm9kZT4g
bm9kZSA6ICphc3NpZ25lZE5vZGVzKSB7CisgICAgZm9yIChjb25zdCBSZWZQdHI8Tm9kZT4mIG5v
ZGUgOiAqYXNzaWduZWROb2RlcykgewogICAgICAgICBpZiAoaXM8SFRNTFNsb3RFbGVtZW50Pigq
bm9kZSkpCiAgICAgICAgICAgICBmbGF0dGVuQXNzaWduZWROb2Rlcyhub2RlcywgZG93bmNhc3Q8
SFRNTFNsb3RFbGVtZW50Pigqbm9kZSkpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggYzJmODgwNjE1ZDlkMGRiYWViMGY1MzNl
ZTE5YjIzZDBkMTI1ZWE3Yi4uNTMyNTAzYzBiNGE4ZTgyMzA4NzlhYTJjOGM2YTBkMzg0NWRlODg3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMzg5
LDcgKzM4OSw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpjaGVja0FuZFN0b3JlU3R5bGVTaGVldChj
b25zdCBTdHJpbmcmIGxpbmUpCiAgICAgaWYgKCFjaGlsZFJ1bGVzLnNpemUoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCi0gICAgZm9yIChhdXRvIHJ1bGUgOiBjaGlsZFJ1bGVzKSB7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBydWxlIDogY2hpbGRSdWxlcykgewogICAgICAgICBpZiAoIXJ1
bGUtPmlzU3R5bGVSdWxlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY29u
c3QgYXV0byYgc3R5bGVSdWxlID0gZG93bmNhc3Q8U3R5bGVSdWxlPihydWxlLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCmluZGV4
IDg4M2Y3NDhmZjIwMWUzMmU1NmE1OWM5ZjgwMGM4NmU2MWY0Y2Q2ZjIuLjRjNGNmOWM1NjA1YjUw
ODA2NzE0OTNhMjhkZGM2Njc0NTllOGY0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcApAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29u
c3QgTGluZTo6Q29udGVuCiAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRl
eHQgeyBmb3JtYXR0aW5nQ29udGV4dCwgZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKSB9
OwogCiAgICAgLy8gTW92ZSBmbG9hdHMgdG8gdGhlaXIgZmluYWwgcG9zaXRpb24uCi0gICAgZm9y
IChhdXRvIGZsb2F0SXRlbSA6IGZsb2F0cykgeworICAgIGZvciAoY29uc3QgYXV0byYgZmxvYXRJ
dGVtIDogZmxvYXRzKSB7CiAgICAgICAgIGF1dG8mIGZsb2F0Qm94ID0gZmxvYXRJdGVtLT5sYXlv
dXRCb3goKTsKICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZS5kaXNw
bGF5Qm94KGZsb2F0Qm94KTsKICAgICAgICAgLy8gU2V0IHN0YXRpYyBwb3NpdGlvbiBmaXJzdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tCmluZGV4IGZhYzk3NmZlMjZkOGZjNWVjNjk2MzAwNmM4ZTU4NDhjMDFjOWRhZGEuLmQ4
YzU2Zjk1YWFhM2YzNmZlYmYxNDAzZDA5N2FhOGM3YjcxYTU1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzI2
LDcgKzcyNiw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cGRhdGVTdXBwb3J0ZWRUeXBl
SWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5CiAgICAgICAgIHJldHVybjsKIAog
ICAgIE5TTXV0YWJsZUFycmF5ICp0eXBlc0FycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0
aENhcGFjaXR5OnR5cGVzLnNpemUoKV07Ci0gICAgZm9yIChhdXRvIHR5cGUgOiB0eXBlcykKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIHR5cGUgOiB0eXBlcykKICAgICAgICAgW3R5cGVzQXJyYXkgYWRk
T2JqZWN0OihOU1N0cmluZyAqKXR5cGVdOwogCiAgICAgW21fcGFzdGVib2FyZCB1cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnM6dHlwZXNBcnJheV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDU3
NmNlYTYzZGJiNGE5YjllNGEzODhkNjU0ZDFjY2NiYjExNDk0N2QuLjQzYWZiZGQwYTU0NGVjMTJk
MTQ0NzYxMWExYzE4ZjhlNGE0M2NkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC02NjEsNyArNjYx
LDcgQEAgLSAoTlNBcnJheTxOU1VSTCAqPiAqKWZpbGVVcGxvYWRVUkxzQXRJbmRleDooTlNVSW50
ZWdlcilpbmRleCBmaWxlVHlwZXM6KE5TQXJyYXkKIC0gKE5TQXJyYXk8TlNVUkwgKj4gKilhbGxE
cm9wcGVkRmlsZVVSTHMKIHsKICAgICBOU011dGFibGVBcnJheTxOU1VSTCAqPiAqZmlsZVVSTHMg
PSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotICAgIGZvciAoYXV0byBsb2FkUmVzdWx0IDogX2xv
YWRSZXN1bHRzKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBsb2FkUmVzdWx0IDogX2xvYWRSZXN1
bHRzKSB7CiAgICAgICAgIGlmIChbbG9hZFJlc3VsdCBjYW5CZVJlcHJlc2VudGVkQXNGaWxlVXBs
b2FkXSkKICAgICAgICAgICAgIFtmaWxlVVJMcyBhZGRPYmplY3RzRnJvbUFycmF5Oltsb2FkUmVz
dWx0IGxvYWRlZEZpbGVVUkxzXV07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0cmluZ0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgK
aW5kZXggZDFlMDEwNjliMTJjN2U5MDYwMmFmMDAyZmUyOTNjNDBkNGI3MGVjNS4uM2IzNzY1YzVk
OWUwNzQ2OTAwYTJkNzc5NzlmZmRmNThiNDNhZGQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0cmluZ0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5n
TGlzdC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKIAotICAgICAgICBmb3IgKGF1dG8gc3RyaW5nIDogbV9pdGVtcykgewor
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmluZyA6IG1faXRlbXMpIHsKICAgICAgICAgICAg
IGlmIChidWlsZGVyLmxlbmd0aCgpKQogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcg
Jyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uLmNwcAppbmRleCA4MzQ2YzIzNWY1NGZmNzhiNDZjN2RjODgxYmJkM2IyMWQz
ZDVhZDNmLi4xZTNjY2IwOTkzYzAyOWNjMjkxN2Q2ZWRmNjk5MmVkY2VhZTM0Yzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rp
b24uY3BwCkBAIC03Nyw4ICs3Nyw4IEBAIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbjo6fk1v
Y2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbigpCiAKIHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPj4gTW9ja0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uOjpHZXRUcmFuc2NlaXZlcnMoKSBjb25zdAogewotICAgIHN0ZDo6dmVjdG9yPHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPj4gdHJhbnNj
ZWl2ZXJzOwotICAgIGZvciAoYXV0byB0cmFuc2NlaXZlciA6IG1fdHJhbnNjZWl2ZXJzKQorICAg
IHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zY2VpdmVySW50
ZXJmYWNlPj4gdHJhbnNjZWl2ZXJzKG1fdHJhbnNjZWl2ZXJzLnNpemUoKSk7CisgICAgZm9yIChj
b25zdCBhdXRvJiB0cmFuc2NlaXZlciA6IG1fdHJhbnNjZWl2ZXJzKQogICAgICAgICB0cmFuc2Nl
aXZlcnMucHVzaF9iYWNrKHRyYW5zY2VpdmVyKTsKICAgICByZXR1cm4gdHJhbnNjZWl2ZXJzOwog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379347</attachid>
            <date>2019-09-22 10:29:01 -0700</date>
            <delta_ts>2019-09-22 20:47:03 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-202090-20190922102900.patch</filename>
            <type>text/plain</type>
            <size>9148</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEzZDI3NjQ0NjgxNTE4
OGViMTA3MTgyMzVkN2NhYTMxM2Q1M2Y2NS4uNzhmYmNiYTZhNjZhZDJhMDRlODZhZTBlNWQ0NTNj
YTYxMTgxMDkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTA5LTIyICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgY2xhbmctdGlkeTogRml4
IHVubmVjZXNzYXJ5IGNvcHkvcmVmIGNodXJuIG9mIGZvciBsb29wIHZhcmlhYmxlcyBpbiBXZWJD
b3JlCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDIwOTA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHVud2FudGVkIGNvcHlpbmcv
cmVmIGNodXJuIG9mIGxvb3AgdmFyaWFibGVzIGJ5IG1ha2luZyB0aGVtCisgICAgICAgIGNvbnN0
IHJlZmVyZW5jZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRh
UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEc0NlbmMpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRNaXNzcGVs
bGluZ1JhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnBlcmZvcm1UZXh0T3BlcmF0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxTbG90RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpmbGF0dGVuQXNzaWduZWROb2Rlcyk6CisgICAgICAgICog
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFy
c2VyOjpjaGVja0FuZFN0b3JlU3R5bGVTaGVldCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6
Y3JlYXRlRGlzcGxheVJ1bnMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQgYWxsRHJvcHBlZEZpbGVVUkxzXSk6CisgICAgICAgICogc3ZnL1NWR1N0cmlu
Z0xpc3QuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb246OkdldFRy
YW5zY2VpdmVycyBjb25zdCk6CisgICAgICAgIEFsc28gY2FsbCB0cmFuc2NlaXZlcnMucmVzZXJ2
ZSgpIHRvIG9wdGltaXplIGFsbG9jYXRpb25zLgorCiAyMDE5LTA5LTE3ICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI0NzU2Nik6IExl
YWsgb2YgVUlDVEZvbnREZXNjcmlwdG9yIGluIFdlYkNvcmU6OkZvbnREYXRhYmFzZTo6SW5zdGFs
bGVkRm9udDo6SW5zdGFsbGVkRm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCA3NWVkYjZh
OTM2Mzg4MGU1ODdjMzU3NTZiMTRkZWM5ZjliNDVlNjk3Li43YzU0NmRjNjAwYjEyYzU3NmRkMDgy
NzlhYjdjNjY3ZmE1NWZiOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTE3MSw3ICsxNzEs
NyBAQCBPcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5
OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaAogCiAgICAgICAgICAgICBGb3VyQ0Mgc2NoZW1l
ID0gZnBzUHNzaC5pbml0RGF0YUJveCgpLmluZm8oKS5zY2hlbWUoKTsKICAgICAgICAgICAgIGlm
IChDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnZhbGlkRmFpclBsYXlTdHJlYW1pbmdTY2hl
bWVzKCkuY29udGFpbnMoc2NoZW1lKSkgewotICAgICAgICAgICAgICAgIGZvciAoYXV0byByZXF1
ZXN0IDogZnBzUHNzaC5pbml0RGF0YUJveCgpLnJlcXVlc3RzKCkpIHsKKyAgICAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHJlcXVlc3QgOiBmcHNQc3NoLmluaXREYXRhQm94KCkucmVxdWVz
dHMoKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3QucmVxdWVz
dEluZm8oKS5rZXlJRCgpOwogICAgICAgICAgICAgICAgICAgICBrZXlJRHMuYXBwZW5kKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGtleUlELmRhdGEoKSwga2V5SUQuc2l6ZSgpKSk7CiAgICAgICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKaW5kZXggMjU0ZTliMmFlNGE1N2YwMjUzZmJlODhmNThmNjQyYmJlZDU0
MzE0NC4uMzhkNmY1YzQ2NjdlYWRlYjQ5NGVhNmIwMWFmYjBiNzRkYmViM2NlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CkBAIC00OTAsNyArNDkwLDcgQEAgUmVmUHRyPFJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpn
ZXRNaXNzcGVsbGluZ1JhbmdlKFJlZlB0cjxSYW5nZT4gY29uc3QmIHN0YXIKICAgICAvLyBTbyBp
dGVyYXRlIGZvcndhcmQgb3IgYmFja3dhcmRzIGRlcGVuZGluZyBvbiB0aGUgZGVzaXJlZCBzZWFy
Y2gKICAgICAvLyBkaXJlY3Rpb24gdG8gZmluZCB0aGUgY2xvc2VzdCBtaXNzcGVsbGluZyBpbiB0
aGF0IGRpcmVjdGlvbi4KICAgICBpZiAoZGlyZWN0aW9uID09IEFjY2Vzc2liaWxpdHlTZWFyY2hE
aXJlY3Rpb246Ok5leHQpIHsKLSAgICAgICAgZm9yIChhdXRvIG1pc3NwZWxsaW5nIDogbWlzc3Bl
bGxpbmdzKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgbWlzc3BlbGxpbmcgOiBtaXNzcGVs
bGluZ3MpIHsKICAgICAgICAgICAgIGF1dG8gbWlzc3BlbGxpbmdSYW5nZSA9IGVkaXRvci5yYW5n
ZUZvclRleHRDaGVja2luZ1Jlc3VsdChtaXNzcGVsbGluZyk7CiAgICAgICAgICAgICBpZiAoIW1p
c3NwZWxsaW5nUmFuZ2UpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC05ODIsNyArOTgy
LDcgQEAgVmVjdG9yPFN0cmluZz4gQWNjZXNzaWJpbGl0eU9iamVjdDo6cGVyZm9ybVRleHRPcGVy
YXRpb24oQWNjZXNzaWJpbGl0eVRleHRPcGVyYXQKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogCi0gICAgZm9yIChhdXRvIHRleHRSYW5nZSA6IG9wZXJhdGlvbi50ZXh0
UmFuZ2VzKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiB0ZXh0UmFuZ2UgOiBvcGVyYXRpb24udGV4
dFJhbmdlcykgewogICAgICAgICBpZiAoIWZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJh
bmdlKHRleHRSYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENs
b3NlVHlwaW5nOjpZZXMpKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNsb3RFbGVtZW50LmNwcAppbmRleCA3ZjRmYThiOWEyMTdlM2QzOTY2NDNjZDkxNTY3
ZmZmNGEwOWYwNDliLi5mYjFhZGEyZTRkMzBhZDIzNGIwMzMxY2VhNDc1NjY0NzNhNTEwZDVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcg
QEAgc3RhdGljIHZvaWQgZmxhdHRlbkFzc2lnbmVkTm9kZXMoVmVjdG9yPFJlZjxOb2RlPj4mIG5v
ZGVzLCBjb25zdCBIVE1MU2xvdEVsZW1lbnQKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgOiAqYXNzaWduZWROb2RlcykgeworICAg
IGZvciAoY29uc3QgUmVmUHRyPE5vZGU+JiBub2RlIDogKmFzc2lnbmVkTm9kZXMpIHsKICAgICAg
ICAgaWYgKGlzPEhUTUxTbG90RWxlbWVudD4oKm5vZGUpKQogICAgICAgICAgICAgZmxhdHRlbkFz
c2lnbmVkTm9kZXMobm9kZXMsIGRvd25jYXN0PEhUTUxTbG90RWxlbWVudD4oKm5vZGUpKTsKICAg
ICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmlu
ZGV4IGMyZjg4MDYxNWQ5ZDBkYmFlYjBmNTMzZWUxOWIyM2QwZDEyNWVhN2IuLjUzMjUwM2MwYjRh
OGU4MjMwODc5YWEyYzhjNmEwZDM4NDVkZTg4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM4OSw3ICszODksNyBAQCBib29sIFdlYlZUVFBhcnNl
cjo6Y2hlY2tBbmRTdG9yZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBsaW5lKQogICAgIGlmICgh
Y2hpbGRSdWxlcy5zaXplKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIGZvciAo
YXV0byBydWxlIDogY2hpbGRSdWxlcykgeworICAgIGZvciAoY29uc3QgYXV0byYgcnVsZSA6IGNo
aWxkUnVsZXMpIHsKICAgICAgICAgaWYgKCFydWxlLT5pc1N0eWxlUnVsZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNvbnN0IGF1dG8mIHN0eWxlUnVsZSA9IGRvd25jYXN0
PFN0eWxlUnVsZT4ocnVsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRMaW5lTGF5b3V0LmNwcAppbmRleCA4ODNmNzQ4ZmYyMDFlMzJlNTZhNTljOWY4MDBj
ODZlNjFmNGNkNmYyLi40YzRjZjljNTYwNWI1MDgwNjcxNDkzYTI4ZGRjNjY3NDU5ZThmNDdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAK
QEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVM
YXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgIGF1dG8gZmxv
YXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgZm9ybWF0dGluZ0NvbnRleHQsIGZvcm1h
dHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCkgfTsKIAogICAgIC8vIE1vdmUgZmxvYXRzIHRvIHRo
ZWlyIGZpbmFsIHBvc2l0aW9uLgotICAgIGZvciAoYXV0byBmbG9hdEl0ZW0gOiBmbG9hdHMpIHsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGZsb2F0SXRlbSA6IGZsb2F0cykgewogICAgICAgICBhdXRv
JiBmbG9hdEJveCA9IGZsb2F0SXRlbS0+bGF5b3V0Qm94KCk7CiAgICAgICAgIGF1dG8mIGRpc3Bs
YXlCb3ggPSBmb3JtYXR0aW5nU3RhdGUuZGlzcGxheUJveChmbG9hdEJveCk7CiAgICAgICAgIC8v
IFNldCBzdGF0aWMgcG9zaXRpb24gZmlyc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBmYWM5NzZmZTI2ZDhmYzVl
YzY5NjMwMDZjOGU1ODQ4YzAxYzlkYWRhLi5kOGM1NmY5NWFhYTNmMzZmZWJmMTQwM2QwOTdhYThj
N2I3MWE1NTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB0eQogICAgICAgICByZXR1cm47CiAKICAgICBOU011dGFibGVBcnJheSAqdHlwZXNBcnJh
eSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp0eXBlcy5zaXplKCldOwotICAg
IGZvciAoYXV0byB0eXBlIDogdHlwZXMpCisgICAgZm9yIChjb25zdCBhdXRvJiB0eXBlIDogdHlw
ZXMpCiAgICAgICAgIFt0eXBlc0FycmF5IGFkZE9iamVjdDooTlNTdHJpbmcgKil0eXBlXTsKIAog
ICAgIFttX3Bhc3RlYm9hcmQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzOnR5cGVzQXJy
YXldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCA1NzZjZWE2M2RiYjRhOWI5ZTRhMzg4ZDY1NGQxY2Nj
YmIxMTQ5NDdkLi40M2FmYmRkMGE1NDRlYzEyZDE0NDc2MTFhMWMxOGY4ZTRhNDNjZGVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5tbQpAQCAtNjYxLDcgKzY2MSw3IEBAIC0gKE5TQXJyYXk8TlNVUkwgKj4gKilm
aWxlVXBsb2FkVVJMc0F0SW5kZXg6KE5TVUludGVnZXIpaW5kZXggZmlsZVR5cGVzOihOU0FycmF5
CiAtIChOU0FycmF5PE5TVVJMICo+ICopYWxsRHJvcHBlZEZpbGVVUkxzCiB7CiAgICAgTlNNdXRh
YmxlQXJyYXk8TlNVUkwgKj4gKmZpbGVVUkxzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAg
ICBmb3IgKGF1dG8gbG9hZFJlc3VsdCA6IF9sb2FkUmVzdWx0cykgeworICAgIGZvciAoY29uc3Qg
YXV0byYgbG9hZFJlc3VsdCA6IF9sb2FkUmVzdWx0cykgewogICAgICAgICBpZiAoW2xvYWRSZXN1
bHQgY2FuQmVSZXByZXNlbnRlZEFzRmlsZVVwbG9hZF0pCiAgICAgICAgICAgICBbZmlsZVVSTHMg
YWRkT2JqZWN0c0Zyb21BcnJheTpbbG9hZFJlc3VsdCBsb2FkZWRGaWxlVVJMc11dOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCmluZGV4IGQxZTAxMDY5YjEyYzdlOTA2MDJhZjAw
MmZlMjkzYzQwZDRiNzBlYzUuLjNiMzc2NWM1ZDllMDc0NjkwMGEyZDc3OTc5ZmZkZjU4YjQzYWRk
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAKLSAgICAgICAgZm9y
IChhdXRvIHN0cmluZyA6IG1faXRlbXMpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdHJp
bmcgOiBtX2l0ZW1zKSB7CiAgICAgICAgICAgICBpZiAoYnVpbGRlci5sZW5ndGgoKSkKICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggODM0NmMy
MzVmNTRmZjc4YjQ2YzdkYzg4MWJiZDNiMjFkM2Q1YWQzZi4uYTQyOWZmNThhNDI2ODA3YmQ4NDA4
NGUyNWEzMmJjMDQyNTI3ZmZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtNzgsNyArNzgsOCBAQCBNb2Nr
TGliV2ViUlRDUGVlckNvbm5lY3Rpb246On5Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24oKQog
c3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwVHJhbnNjZWl2ZXJJbnRl
cmZhY2U+PiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb246OkdldFRyYW5zY2VpdmVycygpIGNv
bnN0CiB7CiAgICAgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwVHJh
bnNjZWl2ZXJJbnRlcmZhY2U+PiB0cmFuc2NlaXZlcnM7Ci0gICAgZm9yIChhdXRvIHRyYW5zY2Vp
dmVyIDogbV90cmFuc2NlaXZlcnMpCisgICAgdHJhbnNjZWl2ZXJzLnJlc2VydmUobV90cmFuc2Nl
aXZlcnMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zY2VpdmVyIDogbV90cmFu
c2NlaXZlcnMpCiAgICAgICAgIHRyYW5zY2VpdmVycy5wdXNoX2JhY2sodHJhbnNjZWl2ZXIpOwog
ICAgIHJldHVybiB0cmFuc2NlaXZlcnM7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>