<?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>201735</bug_id>
          
          <creation_ts>2019-09-12 13:07:07 -0700</creation_ts>
          <short_desc>Web Inspector: Improve auto completion typing performance by avoiding global forced layouts</short_desc>
          <delta_ts>2019-09-13 17:51:16 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1570346</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-12 13:07:07 -0700</bug_when>
    <thetext>Improve auto completion typing performance by avoiding global forced layouts

Steps to Reproduce:
1. Inspect &lt;http://bogojoker.com/shell/&gt;
2. Open inspector²
3. Set a breakpoint in closeAllContentViews loop
4. Reload inspector¹
  =&gt; Should pause in inspector²
5. In console drawer quickly type &quot;entry.contentView&quot;
  =&gt; Typing is very slowly, with a forced layout each keypress

Notes:
• Content jumps between the body and back and has multiple layouts.
• Main element keeps getting re-attached to the document unnecessarily causing another layout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570361</commentid>
    <comment_count>1</comment_count>
      <attachid>378675</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-12 13:37:52 -0700</bug_when>
    <thetext>Created attachment 378675
[PATCH] Proposed Fix

This was a dramatic improvement for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570391</commentid>
    <comment_count>2</comment_count>
      <attachid>378675</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-09-12 15:16:04 -0700</bug_when>
    <thetext>Comment on attachment 378675
[PATCH] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.css:44
&gt; +    position: absolute;

Should we also move the container offscreen, or would that break the `offsetWidth`/`offsetHeight`?

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:51
&gt; +        this._completionLayoutElement = document.createElement(&quot;div&quot;);

You could just do a deep clone of the container element.
```
    this._completionLayoutElement = document.body.appendChild(this._containerElement.cloneNode(true));
    this._completionLayoutElement.classList.add(&quot;completion-layout-container&quot;);
```

We may also want some sort of safeguard for possible future class extension (which could modify `this._containerElement` which wouldn&apos;t be applied to `this._completionLayoutElement`), so maybe we should add an assert.
```
    console.assert(this.constructor === WI.CompletionSuggestionsView &amp;&amp; this instanceof WI.CompletionSuggestionsView, &quot;This class should not be subclassed, as that may interfere with the `this._completionLayoutElement` performance optimization.&quot;);
```

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:124
&gt; +        var containerWidth = this._completionLayoutElement.offsetWidth;
&gt; +        var containerHeight = this._completionLayoutElement.offsetHeight;

`let`

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:163
&gt;      hide()

We likely also need to remove `this._completionLayoutElement` from the &lt;body&gt; when we hide (and should therefore re-add it when we `show`).

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:201
&gt; +            this._completionLayoutElement.appendChild(itemElementMirror);

Ditto (51) for using `cloneNode`.
```
    this._completionLayoutElement.appendChild(itemElement.cloneNode(true));
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570395</commentid>
    <comment_count>3</comment_count>
      <attachid>378675</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-12 15:26:08 -0700</bug_when>
    <thetext>Comment on attachment 378675
[PATCH] Proposed Fix

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

&gt; Source/WebInspectorUI/ChangeLog:14
&gt; +        (WI.CompletionSuggestionsView.prototype.show):
&gt; +        Scroll position doesn&apos;t seem to ever need to be maintained.

I just tried to find the case when it would be needed and I couldn&apos;t. It should be safe to remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570404</commentid>
    <comment_count>4</comment_count>
      <attachid>378675</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-12 15:35:19 -0700</bug_when>
    <thetext>Comment on attachment 378675
[PATCH] Proposed Fix

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.css:44
&gt;&gt; +    position: absolute;
&gt; 
&gt; Should we also move the container offscreen, or would that break the `offsetWidth`/`offsetHeight`?

It is hidden. Is there an advantage to moving it offscreen?

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:51
&gt;&gt; +        this._completionLayoutElement = document.createElement(&quot;div&quot;);
&gt; 
&gt; You could just do a deep clone of the container element.
&gt; ```
&gt;     this._completionLayoutElement = document.body.appendChild(this._containerElement.cloneNode(true));
&gt;     this._completionLayoutElement.classList.add(&quot;completion-layout-container&quot;);
&gt; ```
&gt; 
&gt; We may also want some sort of safeguard for possible future class extension (which could modify `this._containerElement` which wouldn&apos;t be applied to `this._completionLayoutElement`), so maybe we should add an assert.
&gt; ```
&gt;     console.assert(this.constructor === WI.CompletionSuggestionsView &amp;&amp; this instanceof WI.CompletionSuggestionsView, &quot;This class should not be subclassed, as that may interfere with the `this._completionLayoutElement` performance optimization.&quot;);
&gt; ```

Hmm, that seems unlikely.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:163
&gt;&gt;      hide()
&gt; 
&gt; We likely also need to remove `this._completionLayoutElement` from the &lt;body&gt; when we hide (and should therefore re-add it when we `show`).

I&apos;m avoiding the add/remove to body specifically to avoid layout performance issues. That would likely bring back a forced layout we don&apos;t want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570415</commentid>
    <comment_count>5</comment_count>
      <attachid>378675</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-09-12 15:52:38 -0700</bug_when>
    <thetext>Comment on attachment 378675
[PATCH] Proposed Fix

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.css:44
&gt;&gt;&gt; +    position: absolute;
&gt;&gt; 
&gt;&gt; Should we also move the container offscreen, or would that break the `offsetWidth`/`offsetHeight`?
&gt; 
&gt; It is hidden. Is there an advantage to moving it offscreen?

It&apos;s _extra_ hidden :P

In all seriousness though, having it be offscreen completely removes any chance of it ever being visible (or having to be rendered).  I don&apos;t think that&apos;ll affect any sizing calculations, but that may be worth checking with one of the layout folks.

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:163
&gt;&gt;&gt;      hide()
&gt;&gt; 
&gt;&gt; We likely also need to remove `this._completionLayoutElement` from the &lt;body&gt; when we hide (and should therefore re-add it when we `show`).
&gt; 
&gt; I&apos;m avoiding the add/remove to body specifically to avoid layout performance issues. That would likely bring back a forced layout we don&apos;t want.

How about we make the layout container a static instance that&apos;s shared among all instances, and is initialized when the first one is created?  We already `removeChildren` each time we update (and all instances of `WI.CompletionSuggestionsView` share the same container structure) so we could just have one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570678</commentid>
    <comment_count>6</comment_count>
      <attachid>378746</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-13 12:42:37 -0700</bug_when>
    <thetext>Created attachment 378746
[PATCH] Proposed Fix

Much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570679</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-13 12:43:52 -0700</bug_when>
    <thetext>Before: ~100ms per update (just the measure portion)

&gt;    [101.762, 98.976, 102.695, 101.644, 100.673, 101.136, 103.207, 100.807, 103.894, 103.913, 104.202, 100.951, 100.806, 103.633, 104.596, 95.166, 95.29] (17)
&gt;    MIN: 95.166
&gt;    MAX: 104.596
&gt;    SUM: 1723.351
&gt;    AVG: 101.3736
&gt;     SD: 2.7871

After: ~2.1ms per update (just the measure portion)

&gt;    [2.229, 2.197, 1.744, 2.115, 1.963, 1.986, 2.147, 1.963, 2.32, 1.976, 1.953, 1.851, 2.202, 2.066, 1.977, 2.809, 1.999, 1.817, 2.094, 1.883, 1.827, 2.179, 1.958, 2.11, 1.91, 2.05, 1.946, 1.88, 2.184, 1.876, 2.533, 2.068, 1.97] (33)
&gt;    MIN: 1.744
&gt;    MAX: 2.809
&gt;    SUM: 67.782
&gt;    AVG: 2.054
&gt;     SD: 0.211</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570779</commentid>
    <comment_count>8</comment_count>
      <attachid>378746</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-09-13 17:43:24 -0700</bug_when>
    <thetext>Comment on attachment 378746
[PATCH] Proposed Fix

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

r=me, with some quick changes

&gt; Source/WebInspectorUI/ChangeLog:12
&gt; +        Provide a helper for measuring an element in a hidden containment

You could just say “container” instead of “containment div”.

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:300
&gt; +    WI.layoutMeasurementContainer = document.body.appendChild(document.createElement(&quot;div&quot;));

Can we lazily create this element, or at the very least wait to add it to the DOM till the first invocation? Or is the reason you’re doing this to also avoid an “expensive” layout on the first call too?

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:2789
&gt; +WI.measureElement = function(element)

This is awesome!!!

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:2791
&gt; +    WI.layoutMeasurementContainer.className = element.className;

I don’t think we want to do this, especially since `cloneNode` will copy any CSS classes on the child for us, so we’d potentially have a duplicate selector on BOTH the parent and child. That could also cause issues if any class selectors have any `!important` and overrode our hiding styles.

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:2797
&gt; +    WI.layoutMeasurementContainer.className = &quot;&quot;;

Ditto (2791)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570780</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-13 17:48:54 -0700</bug_when>
    <thetext>&gt; Can we lazily create this element, or at the very least wait to add it to
&gt; the DOM till the first invocation? Or is the reason you’re doing this to
&gt; also avoid an “expensive” layout on the first call too?

Yes, I&apos;ve seen large layouts when appending an element to the body for the first time and I want to avoid that.

&gt; &gt; Source/WebInspectorUI/UserInterface/Base/Main.js:2791
&gt; &gt; +    WI.layoutMeasurementContainer.className = element.className;
&gt; 
&gt; I don’t think we want to do this, especially since `cloneNode` will copy any
&gt; CSS classes on the child for us, so we’d potentially have a duplicate
&gt; selector on BOTH the parent and child. That could also cause issues if any
&gt; class selectors have any `!important` and overrode our hiding styles.

Good point, I don&apos;t know why I did this. I was thinking the client might want to add class names to the layout container element, but then I went and added the child element&apos;s class names. That was dumb!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570781</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-13 17:50:58 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/249863/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570782</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-13 17:51:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/55359073&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378675</attachid>
            <date>2019-09-12 13:37:52 -0700</date>
            <delta_ts>2019-09-13 12:42:37 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>autocompletion-1.patch</filename>
            <type>text/plain</type>
            <size>5941</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGY5ZDVhMjdkYzk3Li4wMDc3MzI0YWY2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTktMDktMTIgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBJbXByb3ZlIGF1dG8gY29tcGxldGlvbiB0eXBpbmcgcGVyZm9ybWFuY2UgYnkgYXZvaWRpbmcg
Z2xvYmFsIGZvcmNlZCBsYXlvdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDE3MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25z
Vmlldy5jc3M6CisgICAgICAgICguY29tcGxldGlvbi1sYXlvdXQtY29udGFpbmVyKToKKyAgICAg
ICAgSW52aXNpYmxlIGNvbnRhaW5lciB1c2VkIGZvciBsYXlpbmcgb3V0IGVsZW1lbnRzIHRvIGdl
dCB0aGVpciBpbnRyaW5zaWMgc2l6ZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
Q29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qczoKKyAgICAgICAgKFdJLkNvbXBsZXRpb25TdWdn
ZXN0aW9uc1ZpZXcucHJvdG90eXBlLnNob3cpOgorICAgICAgICBTY3JvbGwgcG9zaXRpb24gZG9l
c24ndCBzZWVtIHRvIGV2ZXIgbmVlZCB0byBiZSBtYWludGFpbmVkLgorICAgICAgICBVc2UgdGhl
IGxheW91dCBjb250YWluZXIgdG8gY2FsY3VsYXRlIHNpemVzLgorICAgICAgICBBdm9pZCByZS1h
ZGRpbmcgdGhlIGZpbmFsIGVsZW1lbnQgdG8gdGhlIGJvZHkgY2F1c2luZyBhIGxheW91dC4KKwor
ICAgICAgICAoV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUudXBkYXRlKToK
KyAgICAgICAgTWlycm9yIGl0ZW1zIGluIHRoZSBsYXlvdXQgY29udGFpbmVyIGZvciBlYXN5IHNp
emluZyBsYXRlci4KKwogMjAxOS0wOS0xMiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFVuY2F1Z2h0IEV4Y2VwdGlvbjogbnVsbCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdPYmplY3Qua2V5cyhwcm9wZXJ0eU5hbWVzKeKAiycp4oCLIChhdCBK
YXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5qczrigIsyNDQ64oCLNTcp4oCLCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21w
bGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuY3NzCmluZGV4IDY2N2EwMjNl
NzlhLi5hMjQwNThjZTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5jc3MKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25z
Vmlldy5jc3MKQEAgLTQwLDYgKzQwLDEyIEBACiAgICAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwg
MCUsIDAuMjUpIDAgNXB4IDEwcHgsIGhzbGEoMCwgMCUsIDAlLCAwLjE1KSAwIDAgMCAxcHg7CiB9
CiAKKy5jb21wbGV0aW9uLWxheW91dC1jb250YWluZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICB2aXNpYmlsaXR5OiBoaWRkZW47CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9
CisKIC5jb21wbGV0aW9uLXN1Z2dlc3Rpb25zID4gLmNvbXBsZXRpb24tc3VnZ2VzdGlvbnMtY29u
dGFpbmVyIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1
Z2dlc3Rpb25zVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMKaW5kZXggOWQ4OGNmNjJjZjUuLmIzMTg1
MzdkZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMKQEAg
LTQ0LDcgKzQ0LDEzIEBAIFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgPSBjbGFzcyBDb21w
bGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX2Nv
bnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VE
b3duLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9tb3VzZVVwLmJpbmQodGhpcykpOwogICAgICAgICB0
aGlzLl9jb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5faXRl
bUNsaWNrZWQuYmluZCh0aGlzKSk7CisKICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9jb250YWluZXJFbGVtZW50KTsKKworICAgICAgICAvLyBNaXJyb3IgaXRlbXMgaW4g
dGhlIGxheW91dCBjb250YWluZXIgc28gdGhhdCBtZWFzdXJlbWVudHMgaGF2ZSBsb2NhbGl6ZWQg
bGF5b3V0LgorICAgICAgICB0aGlzLl9jb21wbGV0aW9uTGF5b3V0RWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9jb21wbGV0aW9uTGF5b3V0RWxl
bWVudC5jbGFzc05hbWUgPSAiY29tcGxldGlvbi1sYXlvdXQtY29udGFpbmVyIGNvbXBsZXRpb24t
c3VnZ2VzdGlvbnMtY29udGFpbmVyIjsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZCh0aGlzLl9jb21wbGV0aW9uTGF5b3V0RWxlbWVudCk7CiAgICAgfQogCiAgICAgLy8gUHVibGlj
CkBAIC0xMTMsMTcgKzExOSw5IEBAIFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgPSBjbGFz
cyBDb21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBzaG93
KGFuY2hvckJvdW5kcykKICAgICB7Ci0gICAgICAgIGxldCBzY3JvbGxUb3AgPSB0aGlzLl9jb250
YWluZXJFbGVtZW50LnNjcm9sbFRvcDsKLQogICAgICAgICAvLyBNZWFzdXJlIHRoZSBjb250YWlu
ZXIgc28gd2UgY2FuIGtub3cgdGhlIGludHJpbnNpYyBzaXplIG9mIHRoZSBpdGVtcy4KLSAgICAg
ICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7Ci0g
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyRWxlbWVudCk7
Ci0KLSAgICAgICAgdmFyIGNvbnRhaW5lcldpZHRoID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5v
ZmZzZXRXaWR0aDsKLSAgICAgICAgdmFyIGNvbnRhaW5lckhlaWdodCA9IHRoaXMuX2NvbnRhaW5l
ckVsZW1lbnQub2Zmc2V0SGVpZ2h0OwotCi0gICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQu
cmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQpOworICAgICAgICB2YXIgY29udGFpbmVyV2lkdGgg
PSB0aGlzLl9jb21wbGV0aW9uTGF5b3V0RWxlbWVudC5vZmZzZXRXaWR0aDsKKyAgICAgICAgdmFy
IGNvbnRhaW5lckhlaWdodCA9IHRoaXMuX2NvbXBsZXRpb25MYXlvdXRFbGVtZW50Lm9mZnNldEhl
aWdodDsKIAogICAgICAgICAvLyBMYXkgb3V0IHRoZSBzdWdnZXN0LWJveCByZWxhdGl2ZSB0byB0
aGUgYW5jaG9yQm91bmRzLgogICAgICAgICB2YXIgbWFyZ2luID0gMTA7CkBAIC0xNTgsMTAgKzE1
Niw4IEBAIFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgPSBjbGFzcyBDb21wbGV0aW9uU3Vn
Z2VzdGlvbnNWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5
bGUud2lkdGggPSB3aWR0aCArICJweCI7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuaGVp
Z2h0ID0gaGVpZ2h0ICsgInB4IjsKIAotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHRoaXMuX2VsZW1lbnQpOwotCi0gICAgICAgIGlmIChzY3JvbGxUb3ApCi0gICAgICAgICAgICB0
aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDsKKyAgICAgICAgaWYg
KCF0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUpCisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpOwogICAgIH0KIAogICAgIGhpZGUoKQpAQCAtMTg2LDE3
ICsxODIsMjQgQEAgV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyA9IGNsYXNzIENvbXBsZXRp
b25TdWdnZXN0aW9uc1ZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB1cGRhdGUoY29tcGxldGlv
bnMsIHNlbGVjdGVkSW5kZXgpCiAgICAgewogICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50
LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25MYXlvdXRFbGVtZW50
LnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgaWYgKHR5cGVvZiBzZWxlY3RlZEluZGV4ID09
PSAibnVtYmVyIikKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSBzZWxlY3RlZElu
ZGV4OwogCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcGxldGlvbnMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgIHZhciBpdGVtRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbXBsZXRpb25zLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgaXRlbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgIGl0ZW1FbGVtZW50LmNsYXNzTGlzdC5hZGQoIml0
ZW0iKTsKICAgICAgICAgICAgIGl0ZW1FbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNlbGVjdGVk
IiwgaSA9PT0gdGhpcy5fc2VsZWN0ZWRJbmRleCk7CiAgICAgICAgICAgICBpdGVtRWxlbWVudC50
ZXh0Q29udGVudCA9IGNvbXBsZXRpb25zW2ldOwogICAgICAgICAgICAgdGhpcy5fY29udGFpbmVy
RWxlbWVudC5hcHBlbmRDaGlsZChpdGVtRWxlbWVudCk7CiAKKyAgICAgICAgICAgIGxldCBpdGVt
RWxlbWVudE1pcnJvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAg
ICAgaXRlbUVsZW1lbnRNaXJyb3IuY2xhc3NMaXN0LmFkZCgiaXRlbSIpOworICAgICAgICAgICAg
aXRlbUVsZW1lbnRNaXJyb3IuY2xhc3NMaXN0LnRvZ2dsZSgic2VsZWN0ZWQiLCBpID09PSB0aGlz
Ll9zZWxlY3RlZEluZGV4KTsKKyAgICAgICAgICAgIGl0ZW1FbGVtZW50TWlycm9yLnRleHRDb250
ZW50ID0gY29tcGxldGlvbnNbaV07CisgICAgICAgICAgICB0aGlzLl9jb21wbGV0aW9uTGF5b3V0
RWxlbWVudC5hcHBlbmRDaGlsZChpdGVtRWxlbWVudE1pcnJvcik7CisKICAgICAgICAgICAgIGlm
ICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dl
c3Rpb25zVmlld0N1c3RvbWl6ZUNvbXBsZXRpb25FbGVtZW50ID09PSAiZnVuY3Rpb24iKQogICAg
ICAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXdDdXN0
b21pemVDb21wbGV0aW9uRWxlbWVudCh0aGlzLCBpdGVtRWxlbWVudCwgY29tcGxldGlvbnNbaV0p
OwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378746</attachid>
            <date>2019-09-13 12:42:37 -0700</date>
            <delta_ts>2019-09-13 17:43:24 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>measure-1.patch</filename>
            <type>text/plain</type>
            <size>5109</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDZlMzVlZmRhNWI3Li4zZDdhOWU4MjZjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMDktMTMgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBJbXByb3ZlIGF1dG8gY29tcGxldGlvbiB0eXBpbmcgcGVyZm9ybWFuY2UgYnkgYXZvaWRpbmcg
Z2xvYmFsIGZvcmNlZCBsYXlvdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDE3MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTWFpbi5jc3M6CisgICAgICAgICgj
bGF5b3V0LW1lYXN1cmVtZW50LWNvbnRhaW5lcik6CisgICAgICAgICogVXNlckludGVyZmFjZS9C
YXNlL01haW4uanM6CisgICAgICAgIChXSS5tZWFzdXJlRWxlbWVudCk6CisgICAgICAgIFByb3Zp
ZGUgYSBoZWxwZXIgZm9yIG1lYXN1cmluZyBhbiBlbGVtZW50IGluIGEgaGlkZGVuIGNvbnRhaW5t
ZW50CisgICAgICAgIGRpdiB0aGF0IGhlbHBzIGF2b2lkIG1vcmUgZ2xvYmFsIGxheW91dC4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5q
czoKKyAgICAgICAgKFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlLnNob3cp
OgorICAgICAgICBVc2UgbWVhc3VyZSBlbGVtZW50IHRvIGF2b2lkIGEgZ2xvYmFsIGZvcmNlZCBs
YXlvdXQuCisKIDIwMTktMDktMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBUaWdodGVyIGF1dG9jb21wbGV0ZSBidWJibGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01h
aW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMK
aW5kZXggZjk1YzljZjc3YTcuLmIzNjM0OWVjMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC0yOTcsNiArMjk3LDkgQEAgV0ku
Y29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5h
ZGQoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlKTsKICAgICBkb2N1bWVudC5ib2R5LnNldEF0
dHJpYnV0ZSgiZGlyIiwgV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSk7CiAKKyAgICBXSS5s
YXlvdXRNZWFzdXJlbWVudENvbnRhaW5lciA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgIFdJLmxheW91dE1lYXN1cmVtZW50Q29u
dGFpbmVyLmlkID0gImxheW91dC1tZWFzdXJlbWVudC1jb250YWluZXIiOworCiAgICAgV0kuc2V0
dGluZ3Muc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5T
ZXR0aW5nLkV2ZW50LkNoYW5nZWQsIFdJLl9zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNl
dHRpbmdDaGFuZ2VkKTsKICAgICBXSS5zZXR0aW5ncy5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCBXSS5fZW5hYmxlQ29u
dHJvbEZsb3dQcm9maWxlclNldHRpbmdDaGFuZ2VkKTsKICAgICBXSS5zZXR0aW5ncy5yZXNvdXJj
ZUNhY2hpbmdEaXNhYmxlZC5hZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdl
ZCwgV0kuX3Jlc291cmNlQ2FjaGluZ0Rpc2FibGVkU2V0dGluZ0NoYW5nZWQpOwpAQCAtMjc4Myw2
ICsyNzg2LDE5IEBAIFdJLl9yZXNvdXJjZUNhY2hpbmdEaXNhYmxlZFNldHRpbmdDaGFuZ2VkID0g
ZnVuY3Rpb24oZXZlbnQpCiAgICAgTmV0d29ya0FnZW50LnNldFJlc291cmNlQ2FjaGluZ0Rpc2Fi
bGVkKFdJLnNldHRpbmdzLnJlc291cmNlQ2FjaGluZ0Rpc2FibGVkLnZhbHVlKTsKIH07CiAKK1dJ
Lm1lYXN1cmVFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICBXSS5sYXlvdXRNZWFz
dXJlbWVudENvbnRhaW5lci5jbGFzc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZTsKKyAgICBXSS5s
YXlvdXRNZWFzdXJlbWVudENvbnRhaW5lci5hcHBlbmRDaGlsZChlbGVtZW50LmNsb25lTm9kZSh0
cnVlKSk7CisKKyAgICBsZXQgcmVjdCA9IFdJLmxheW91dE1lYXN1cmVtZW50Q29udGFpbmVyLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpOworCisgICAgV0kubGF5b3V0TWVhc3VyZW1lbnRDb250YWlu
ZXIucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICBXSS5sYXlvdXRNZWFzdXJlbWVudENvbnRhaW5lci5j
bGFzc05hbWUgPSAiIjsKKworICAgIHJldHVybiByZWN0OworfTsKKwogV0kuZWxlbWVudERyYWdT
dGFydCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGRpdmlkZXJEcmFnLCBlbGVtZW50RHJhZ0VuZCwgZXZl
bnQsIGN1cnNvciwgZXZlbnRUYXJnZXQpCiB7CiAgICAgaWYgKFdJLl9lbGVtZW50RHJhZ2dpbmdF
dmVudExpc3RlbmVyIHx8IFdJLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMKaW5kZXggMWMzZjFjMjc2ZDQu
LjgzNjgzMjlkMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcu
anMKQEAgLTExMywxOSArMTEzLDExIEBAIFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgPSBj
bGFzcyBDb21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBz
aG93KGFuY2hvckJvdW5kcykKICAgICB7Ci0gICAgICAgIGxldCBzY3JvbGxUb3AgPSB0aGlzLl9j
b250YWluZXJFbGVtZW50LnNjcm9sbFRvcDsKLQogICAgICAgICAvLyBNZWFzdXJlIHRoZSBjb250
YWluZXIgc28gd2UgY2FuIGtub3cgdGhlIGludHJpbnNpYyBzaXplIG9mIHRoZSBpdGVtcy4KLSAg
ICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7
Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyRWxlbWVu
dCk7Ci0KLSAgICAgICAgbGV0IGludHJpbnNpY1NpemUgPSB0aGlzLl9jb250YWluZXJFbGVtZW50
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBsZXQgaW50cmluc2ljU2l6ZSA9IFdJ
Lm1lYXN1cmVFbGVtZW50KHRoaXMuX2NvbnRhaW5lckVsZW1lbnQpOwogICAgICAgICBsZXQgY29u
dGFpbmVyV2lkdGggPSBNYXRoLmNlaWwoaW50cmluc2ljU2l6ZS53aWR0aCk7CiAgICAgICAgIGxl
dCBjb250YWluZXJIZWlnaHQgPSBNYXRoLmNlaWwoaW50cmluc2ljU2l6ZS5oZWlnaHQpOwogCi0g
ICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpOwot
ICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQp
OwotCiAgICAgICAgIC8vIExheSBvdXQgdGhlIHN1Z2dlc3QtYm94IHJlbGF0aXZlIHRvIHRoZSBh
bmNob3JCb3VuZHMuCiAgICAgICAgIGxldCBtYXJnaW4gPSAxMDsKICAgICAgICAgbGV0IGFic29s
dXRlTWF4aW11bUhlaWdodCA9IDE2MDsKQEAgLTE1NywxMCArMTQ5LDggQEAgV0kuQ29tcGxldGlv
blN1Z2dlc3Rpb25zVmlldyA9IGNsYXNzIENvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS53aWR0aCA9IHdpZHRoICsg
InB4IjsKICAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAicHgi
OwogCi0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCk7Ci0K
LSAgICAgICAgaWYgKHNjcm9sbFRvcCkKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1l
bnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wOworICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnQucGFy
ZW50Tm9kZSkKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZWxl
bWVudCk7CiAgICAgfQogCiAgICAgaGlkZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9NYWluLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01haW4uY3NzCmluZGV4IGM2MDIxZTgxYjllLi45ZjEwNWYx
ZTk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTWFpbi5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTWFpbi5jc3MKQEAgLTE3NSw2ICsxNzUsMTIgQEAgYm9keS5kb2NrZWQ6bWF0Y2hlcygucmln
aHQsIC5sZWZ0KSAjbmF2aWdhdGlvbi1zaWRlYmFyLmNvbGxhcHNlZCA+IC5yZXNpemVyIHsKICAg
ICBoZWlnaHQ6IDEwMCU7CiB9CiAKKyNsYXlvdXQtbWVhc3VyZW1lbnQtY29udGFpbmVyIHsKKyAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdmlzaWJpbGl0eTogaGlkZGVuOworICAgIHBvaW50
ZXItZXZlbnRzOiBub25lOworfQorCiAubWVzc2FnZS10ZXh0LXZpZXcgewogICAgIGRpc3BsYXk6
IGZsZXg7CiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsK
</data>
<flag name="review"
          id="394388"
          type_id="1"
          status="+"
          setter="hi"
    />
    <flag name="commit-queue"
          id="394389"
          type_id="3"
          status="-"
          setter="hi"
    />
          </attachment>
      

    </bug>

</bugzilla>