<?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>62746</bug_id>
          
          <creation_ts>2011-06-15 12:31:15 -0700</creation_ts>
          <short_desc>Crash possible when switching scrollbar appearance preference on Mac</short_desc>
          <delta_ts>2011-06-15 16:13:42 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>421500</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-06-15 12:31:15 -0700</bug_when>
    <thetext>A crash is *still* possible when switching the scrollbar appearance on Mac because the current mechanism that is intended to flag ScrollAnimators as being in the page cache or not does not work correctly. Long-term the fix for this is to move the ScrollabelArea HashSet to a more appropriate place -- it&apos;s on Page right now, but instead it should be on another class that represents a single web page. Something like the top-level Document. In the meantime, I have a patch that fixes the crash.

&lt;rdar://problem/9323983&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421511</commentid>
    <comment_count>1</comment_count>
      <attachid>97347</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-06-15 12:48:18 -0700</bug_when>
    <thetext>Created attachment 97347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421571</commentid>
    <comment_count>2</comment_count>
      <attachid>97347</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-15 14:24:52 -0700</bug_when>
    <thetext>Comment on attachment 97347
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:2258
&gt; +        if (!(*it)-&gt;isInPageCache())
&gt; +            (*it)-&gt;scrollAnimator()-&gt;setIsActive();

Wait, what? Why do we need both ScrollableArea::isInPageCache() and ScrollAnimator::setIsActive()?

&gt; Source/WebCore/platform/ScrollableArea.h:140
&gt; +    virtual bool isInPageCache() const { ASSERT_NOT_REACHED(); return false; }

It seems wrong that ScrollableArea knows anything about the page cache. Maybe make this more generic and flip the sense, like isOnActivePage()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421584</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-06-15 14:37:06 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 97347 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97347&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/FrameView.cpp:2258
&gt; &gt; +        if (!(*it)-&gt;isInPageCache())
&gt; &gt; +            (*it)-&gt;scrollAnimator()-&gt;setIsActive();
&gt; 
&gt; Wait, what? Why do we need both ScrollableArea::isInPageCache() and ScrollAnimator::setIsActive()?
&gt; 

This is basically the whole source of the crash. And it&apos;s why the REAL fix is to move the HashSet away from Page. Page does not correspond to a single &quot;web page,&quot; but we crash because this code originally assumed that it did. There can be ScrollableAreas in the HashSet that are in the page cache right now and are NOT a part of the &quot;web page&quot; that is becoming active. The real fix involves re-arhitecting this, but this is a quick fix in the meantime. 

&gt; &gt; Source/WebCore/platform/ScrollableArea.h:140
&gt; &gt; +    virtual bool isInPageCache() const { ASSERT_NOT_REACHED(); return false; }
&gt; 
&gt; It seems wrong that ScrollableArea knows anything about the page cache. Maybe make this more generic and flip the sense, like isOnActivePage()

I like this idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421630</commentid>
    <comment_count>4</comment_count>
      <attachid>97372</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-06-15 16:05:12 -0700</bug_when>
    <thetext>Created attachment 97372
Patch with better names</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421634</commentid>
    <comment_count>5</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-06-15 16:13:42 -0700</bug_when>
    <thetext>Change committed with revision 88982.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97347</attachid>
            <date>2011-06-15 12:48:18 -0700</date>
            <delta_ts>2011-06-15 16:05:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>12600</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTY0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMDYtMTUgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Mjc0NgorICAgICAgICBDcmFzaCBwb3NzaWJsZSB3aGVuIHN3aXRjaGluZyBzY3JvbGxiYXIgYXBw
ZWFyYW5jZSBwcmVmZXJlbmNlIG9uIE1hYworICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MzIzOTgzPgorICAgICAgICAKKyAgICAgICAgVGhpcyBj
cmFzaCBoYXBwZW5zIGJlY2F1c2UgdGhlIGN1cnJlbnQgbWVjaGFuaXNtIHRoYXQgaXMgaW50ZW5k
ZWQgdG8gZmxhZyAKKyAgICAgICAgU2Nyb2xsQW5pbWF0b3JzIGFzIGJlaW5nIGluIHRoZSBwYWdl
IGNhY2hlIG9yIG5vdCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseS4gCisgICAgICAgIExvbmctdGVy
bSB0aGUgZml4IGZvciB0aGlzIGlzIHRvIG1vdmUgdGhlIFNjcm9sbGFibGVBcmVhIEhhc2hTZXQg
dG8gYSBtb3JlIAorICAgICAgICBhcHByb3ByaWF0ZSBwbGFjZS4gSW4gdGhlIG1lYW50aW1lLCB0
aGlzIHBhdGNoIGFkZHJlc3NlcyB0aGUgY3Jhc2ggYnkgZ2V0dGluZyAKKyAgICAgICAgcmlkIG9m
IHRoZSBtX2lzQWN0aXZlIGJvb2wgb24gU2Nyb2xsQW5pbWF0b3IgdGhhdCB3YXMgaW50ZW5kZWQg
dG8gcmVwcmVzZW50IAorICAgICAgICB3aGV0aGVyIG9yIG5vdCB0aGUgU2Nyb2xsYWJsZUFyZWEg
aXMgaW4gdGhlIHBhZ2UgY2FjaGUuIEluc3RlYWQsIFNjcm9sbGFibGVBcmVhIAorICAgICAgICBp
bXBsZW1lbnRhdGlvbnMgbm93IGhhdmUgdGhlaXIgb3duIGZ1bmN0aW9ucyB0byBjb21wdXRlIHdo
ZXRoZXIgdGhleSBhcmUgaW4gdGhlIAorICAgICAgICBwYWdlIGNhY2hlLiBTY3JvbGxBbmltYXRv
cjo6c2V0SXNBY3RpdmUoKSBuZWVkcyB0byBiZSBrZXB0IGFyb3VuZCBldmVuIHRob3VnaCAKKyAg
ICAgICAgdGhlcmUgaXMgbm8gYm9vbCB0byBmbGlwIGFueW1vcmUgYmVjYXVzZSBzY3JvbGxiYXJz
IG1heSBuZWVkIHRvIGJlIHByb3Blcmx5IAorICAgICAgICB1cGRhdGVkIGlmIHRoZSBhcHBlYXJh
bmNlIHdhcyBzd2l0Y2hlZCB3aGlsZSB0aGUgZG9jdW1lbnQgd2FzIGluIHRoZSBwYWdlIGNhY2hl
LgorCisgICAgICAgIE5vIGxvbmdlciBjYWxsIEZyYW1lVmlldzo6c2V0QW5pbWF0b3JzQXJlQWN0
aXZlKCkgZnJvbSAKKyAgICAgICAgRG9jdW1lbnQ6OnNldElzSW5QYWdlQ2FjaGUoKSwgaW5zdGVh
ZCBjYWxsIGl0IGluIAorICAgICAgICBEb2N1bWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUo
KQorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0SW5QYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3VtZW50
RGlkQmVjb21lQWN0aXZlKToKKworICAgICAgICBTY3JvbGxhYmxlQXJlYXMgY2FuIG5vdyBhc3Nl
c3Mgd2hldGhlciBvciBub3QgdGhleSBhcmUgaW4gdGhlIHBhZ2UgY2FjaGUuCisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVB
cmVhOjppc0luUGFnZUNhY2hlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmlzSW5QYWdlQ2FjaGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmlzSW5QYWdlQ2Fj
aGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisKKyAgICAgICAgQSBG
cmFtZVZpZXcgY2Fubm90IGFjY2VzcyBpdCdzIERvY3VtZW50IHdoZW4gaXQncyBpbiB0aGUgcGFn
ZSBjYWNoZSwgc28gaXQgCisgICAgICAgIHVzdWFsbHkgZGV0ZXJtaW5lcyB3aGV0aGVyIGl0J3Mg
aW4gdGhlIHBhZ2UgY2FjaGUgYnkgY2hlY2tpbmcgaWYgaXRzIGZyYW1lIAorICAgICAgICBwb2lu
dHMgdG8gYSBGcmFtZVZpZXcgb3RoZXIgdGhhbiBpdHNlbGYuCisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojppc0luUGFnZUNhY2hlKToK
KyAgICAgICAgCisgICAgICAgIE1ha2Ugc3VyZSBTY3JvbGxhYmxlQXJlYXMgYXJlIG5vdCBpbiB0
aGUgcGFnZSBjYWNoZSBiZWZvcmUgc2V0dGluZyB0aGVtIGFzIAorICAgICAgICBhY3RpdmUuIFRo
aXMgd2lsbCBub3QgYmUgbmVjZXNzYXJ5IHdoZW4gdGhlIEhhc2hTZXQgYmVjb21lIGEgcGVyLXdl
YiBwYWdlIAorICAgICAgICBIYXNoU2V0LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpz
ZXRBbmltYXRvcnNBcmVBY3RpdmUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAg
ICAgIAorICAgICAgICBTY3JvbGxBbmltYXRvciBubyBsb25nZXIgdHJhY2tzIHRoZSBtX2lzQWN0
aXZlIGJvb2wuIAorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcik6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yOjpzZXRJc0FjdGl2ZSk6CisgICAgICAgIAorICAgICAgICBzZXRJc0FjdGl2ZSgpIG5vdyBl
eGNsdXNpdmVseSBjYWxscyB1cGRhdGVTY3JvbGxTdHlsZSgpIGlmIHRoZXJlIGlzIGEgcGVuZGlu
ZyAKKyAgICAgICAgbmVlZCB0byBkbyBzby4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2V0SXNBY3RpdmUpOgor
ICAgICAgICAKKyAgICAgICAgUmV0dXJuIGVhcmx5IGlmIHRoZSBTY3JvbGxhYmxlQXJlYSBpcyBp
biB0aGUgcGFnZSBjYWNoZS4gCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6
dXBkYXRlU2Nyb2xsZXJTdHlsZSk6CisKIDIwMTEtMDYtMTUgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5
YWtvdi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gODg4MzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODE4LDkg
KzM4MTgsNiBAQCB2b2lkIERvY3VtZW50OjpzZXRJblBhZ2VDYWNoZShib29sIGZsYWcpCiAgICAg
ICAgIGlmIChjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSkKICAgICAgICAgICAgIHNjaGVkdWxlU3R5
bGVSZWNhbGMoKTsKICAgICB9Ci0KLSAgICBpZiAodikKLSAgICAgICAgdi0+c2V0QW5pbWF0b3Jz
QXJlQWN0aXZlKCFtX2luUGFnZUNhY2hlKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6ZG9jdW1lbnRX
aWxsQmVjb21lSW5hY3RpdmUoKSAKQEAgLTM4NDYsNiArMzg0Myw5IEBAIHZvaWQgRG9jdW1lbnQ6
OmRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCkKICAgICAgICAgcmVuZGVyVmlldygpLT5kaWRNb3Zl
T25zY3JlZW4oKTsKICNlbmRpZgogCisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdmll
dygpKQorICAgICAgICBmcmFtZVZpZXctPnNldEFuaW1hdG9yc0FyZUFjdGl2ZSgpOworCiAgICAg
QVNTRVJUKG1fZnJhbWUpOwogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0
Y2hEaWRCZWNvbWVGcmFtZXNldChpc0ZyYW1lU2V0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAkocmV2aXNpb24gODg4NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMjYsMTIgKzIyMjYsMTkgQEAgdm9pZCBG
cmFtZVZpZXc6OnNldFZpc2libGVTY3JvbGxlclRodW1iUgogICAgIHJldHVybiBwYWdlLT5jaHJv
bWUoKS0+Y2xpZW50KCktPm5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3Qoc2Nyb2xs
ZXJUaHVtYik7CiB9CiAKK2Jvb2wgRnJhbWVWaWV3Ojppc0luUGFnZUNhY2hlKCkgY29uc3QKK3sK
KyAgICBpZiAobV9mcmFtZS0+dmlldygpICE9IHRoaXMpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpOworfQorCiBib29s
IEZyYW1lVmlldzo6c2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdAogewogICAg
IHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+c3RhdGUoKSAhPSBGcmFtZVN0YXRlQ29tcGxldGU7
CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpzZXRBbmltYXRvcnNBcmVBY3RpdmUoYm9vbCBhY3RpdmUp
Cit2b2lkIEZyYW1lVmlldzo6c2V0QW5pbWF0b3JzQXJlQWN0aXZlKCkKIHsKICAgICBQYWdlKiBw
YWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKQEAgLTIyNDIsOCArMjI0OSwx
NCBAQCB2b2lkIEZyYW1lVmlldzo6c2V0QW5pbWF0b3JzQXJlQWN0aXZlKGJvCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPjo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gc2Nyb2xsYWJsZUFyZWFzLT5lbmQoKTsgCi0gICAgZm9yIChIYXNoU2V0PFNjcm9sbGFibGVB
cmVhKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2Nyb2xsYWJsZUFyZWFzLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5zY3JvbGxBbmltYXRvcigpLT5zZXRJc0FjdGl2
ZShhY3RpdmUpOworICAgIGZvciAoSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IHNjcm9sbGFibGVBcmVhcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGV4dHJhIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgU2Nyb2xs
YWJsZUFyZWEgaXMgbm90IGluIHRoZSBwYWdlIGNhY2hlIG5lZWRzIAorICAgICAgICAvLyB0byBi
ZSBoZXJlIGFzIGxvbmcgYXMgdGhlIFNjcm9sbGFibGVBcmVhIEhhc2hTZXQgbGl2ZXMgb24gUGFn
ZS4gQnV0IGl0IHNob3VsZCByZWFsbHkgYmUKKyAgICAgICAgLy8gbW92ZWQgdG8gdGhlIHRvcC1s
ZXZlbCBEb2N1bWVudCBvciBhIHNpbWlsYXIgY2xhc3MgdGhhdCByZWFsbHkgcmVwcmVzZW50cyBh
IHNpbmdsZSAKKyAgICAgICAgLy8gd2ViIHBhZ2UuIAorICAgICAgICBpZiAoISgqaXQpLT5pc0lu
UGFnZUNhY2hlKCkpCisgICAgICAgICAgICAoKml0KS0+c2Nyb2xsQW5pbWF0b3IoKS0+c2V0SXNB
Y3RpdmUoKTsKKyAgICB9CiB9CiAKIHZvaWQgRnJhbWVWaWV3Ojpub3RpZnlQYWdlVGhhdENvbnRl
bnRBcmVhV2lsbFBhaW50KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkocmV2
aXNpb24gODg4NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzcsNyArMjc3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNo
b3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEFuaW1h
dG9yc0FyZUFjdGl2ZShib29sKTsKKyAgICB2b2lkIHNldEFuaW1hdG9yc0FyZUFjdGl2ZSgpOwog
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29u
c3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29u
c3QgSW50UmVjdCYgY2xpcFJlY3QpOwpAQCAtMzI4LDYgKzMyOCw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGRpZFN0YXJ0QW5pbWF0ZWRTY3JvbGwoKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tcGxldGVBbmltYXRlZFNjcm9sbCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1
YWwgYm9vbCBpc0luUGFnZUNhY2hlKCkgY29uc3Q7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JIb3Jpem9udGFsU2Ny
b2xsYmFyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRp
Y2FsU2Nyb2xsYmFyKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuY3BwCShyZXZpc2lvbiA4ODgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCBT
Y3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsCiAgICAgOiBtX3Njcm9sbGFi
bGVBcmVhKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9jdXJyZW50UG9zWCgwKQogICAgICwgbV9j
dXJyZW50UG9zWSgwKQotICAgICwgbV9pc0FjdGl2ZSh0cnVlKQogewogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgJKHJldmlzaW9uIDg4ODM1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNjEsOCArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJs
ZUFyZWEoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpIHsgbV9pc0FjdGl2ZSA9IGFjdGl2ZTsgfQot
ICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2lzQWN0aXZlOyB9CisgICAgdmly
dHVhbCB2b2lkIHNldElzQWN0aXZlKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hl
ZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMp
CkBAIC05Niw3ICs5NSw2IEBAIHByb3RlY3RlZDoKICAgICBTY3JvbGxhYmxlQXJlYSogbV9zY3Jv
bGxhYmxlQXJlYTsKICAgICBmbG9hdCBtX2N1cnJlbnRQb3NYOyAvLyBXZSBhdm9pZCB1c2luZyBh
IEZsb2F0UG9pbnQgaW4gb3JkZXIgdG8gcmVkdWNlCiAgICAgZmxvYXQgbV9jdXJyZW50UG9zWTsg
Ly8gc3ViY2xhc3MgY29kZSBjb21wbGV4aXR5LgotICAgIGJvb2wgbV9pc0FjdGl2ZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuaAkocmV2aXNpb24gODg4MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFyU3R5bGVDaGFu
Z2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChj
b25zdCBJbnRSZWN0JikgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJblBhZ2VDYWNoZSgpIGNv
bnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIGJv
b2wgaXNIb3Jpem9udGFsU2Nyb2xsZXJQaW5uZWRUb01pbmltdW1Qb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuICFob3Jpem9udGFsU2Nyb2xsYmFyKCkgfHwgc2Nyb2xsUG9zaXRpb24oaG9yaXpvbnRh
bFNjcm9sbGJhcigpKSA8PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCk7IH0KICAgICBib29s
IGlzSG9yaXpvbnRhbFNjcm9sbGVyUGlubmVkVG9NYXhpbXVtUG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiAhaG9yaXpvbnRhbFNjcm9sbGJhcigpIHx8IHNjcm9sbFBvc2l0aW9uKGhvcml6b250YWxT
Y3JvbGxiYXIoKSkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAkocmV2aXNp
b24gODg4MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JN
YWMuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IGhhdmVTY3JvbGxlZFNpbmNlUGFnZUxvYWQoKSBjb25zdCB7IHJldHVybiBtX2hhdmVTY3JvbGxl
ZFNpbmNlUGFnZUxvYWQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRJc0FjdGl2ZShib29sKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNBY3RpdmUoKTsKIAogI2lmIFVTRShXS19TQ1JPTExCQVJf
UEFJTlRFUikKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGVyU3R5bGUoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0JKHJldmlzaW9u
IDg4ODc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE2LDEwICsxMjE2LDggQEAgdm9pZCBTY3JvbGxBbmlt
YXRvck1hYzo6c25hcFJ1YmJlckJhbmRUaQogfQogI2VuZGlmCiAKLXZvaWQgU2Nyb2xsQW5pbWF0
b3JNYWM6OnNldElzQWN0aXZlKGJvb2wgYWN0aXZlKQordm9pZCBTY3JvbGxBbmltYXRvck1hYzo6
c2V0SXNBY3RpdmUoKQogewotICAgIFNjcm9sbEFuaW1hdG9yOjpzZXRJc0FjdGl2ZShhY3RpdmUp
OwotCiAjaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQogICAgIGlmIChuZWVkc1Njcm9sbGVy
U3R5bGVVcGRhdGUoKSkKICAgICAgICAgdXBkYXRlU2Nyb2xsZXJTdHlsZSgpOwpAQCAtMTIyOSw3
ICsxMjI3LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c2V0SXNBY3RpdmUoYm9vbAogI2lm
IFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OnVwZGF0
ZVNjcm9sbGVyU3R5bGUoKQogewotICAgIGlmICghaXNBY3RpdmUoKSkgeworICAgIGlmIChzY3Jv
bGxhYmxlQXJlYSgpLT5pc0luUGFnZUNhY2hlKCkpIHsKICAgICAgICAgc2V0TmVlZHNTY3JvbGxl
clN0eWxlVXBkYXRlKHRydWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiA4ODgzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4MTcsNiArMTgxNywxMSBAQCBib29sIFJlbmRlckxheWVyOjpzaG91bGRTdXNwZW5kU2Nyb2xs
QW5pCiAgICAgcmV0dXJuIHZpZXctPmZyYW1lVmlldygpLT5zaG91bGRTdXNwZW5kU2Nyb2xsQW5p
bWF0aW9ucygpOwogfQogCitib29sIFJlbmRlckxheWVyOjppc0luUGFnZUNhY2hlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKTsKK30K
KwogSW50UG9pbnQgUmVuZGVyTGF5ZXI6OmN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gcmVuZGVyZXIoKS0+ZnJhbWUoKSA/IHJlbmRlcmVyKCktPmZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5jdXJyZW50TW91c2VQb3NpdGlvbigpIDogSW50UG9pbnQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCShyZXZpc2lvbiA4ODgzNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NDYsNiArNTQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEludFBvaW50IGN1cnJlbnRN
b3VzZVBvc2l0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUnViYmVy
QmFuZChjb25zdCBJbnRTaXplJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN1c3Bl
bmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzSW5QYWdlQ2Fj
aGUoKSBjb25zdDsKIAogICAgIC8vIFJlY3RhbmdsZSBlbmNvbXBhc3NpbmcgdGhlIHNjcm9sbCBj
b3JuZXIgYW5kIHJlc2l6ZXIgcmVjdC4KICAgICBJbnRSZWN0IHNjcm9sbENvcm5lckFuZFJlc2l6
ZXJSZWN0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCShyZXZpc2lvbiA4ODgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAxLDYgKzgwMSwxMSBAQCBib29s
IFJlbmRlckxpc3RCb3g6OnNob3VsZFN1c3BlbmRTY3JvbGxBCiAgICAgcmV0dXJuIHZpZXctPmZy
YW1lVmlldygpLT5zaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpOwogfQogCitib29sIFJl
bmRlckxpc3RCb3g6OmlzSW5QYWdlQ2FjaGUoKSBjb25zdAoreworICAgIHJldHVybiBkb2N1bWVu
dCgpLT5pblBhZ2VDYWNoZSgpOworfQorCiBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyTGlz
dEJveDo6Y3JlYXRlU2Nyb2xsYmFyKCkKIHsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRnZXQ7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgJKHJldmlzaW9u
IDg4ODM1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAkod29y
a2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBpbnQg
dmlzaWJsZVdpZHRoKCkgY29uc3Q7CiAgICAgdmlydHVhbCBJbnRQb2ludCBjdXJyZW50TW91c2VQ
b3NpdGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5p
bWF0aW9ucygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0luUGFnZUNhY2hlKCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21QYWdlKCkgeyBtX3BhZ2UgPSAwOyB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97372</attachid>
            <date>2011-06-15 16:05:12 -0700</date>
            <delta_ts>2011-06-15 16:08:15 -0700</delta_ts>
            <desc>Patch with better names</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>12684</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTY0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjggQEAKKzIwMTEtMDYtMTUgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Mjc0NgorICAgICAgICBDcmFzaCBwb3NzaWJsZSB3aGVuIHN3aXRjaGluZyBzY3JvbGxiYXIgYXBw
ZWFyYW5jZSBwcmVmZXJlbmNlIG9uIE1hYworICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MzIzOTgzPgorICAgICAgICAKKyAgICAgICAgVGhpcyBj
cmFzaCBoYXBwZW5zIGJlY2F1c2UgdGhlIGN1cnJlbnQgbWVjaGFuaXNtIHRoYXQgaXMgaW50ZW5k
ZWQgdG8gZmxhZyAKKyAgICAgICAgU2Nyb2xsQW5pbWF0b3JzIGFzIGJlaW5nIGluIHRoZSBwYWdl
IGNhY2hlIG9yIG5vdCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseS4gCisgICAgICAgIExvbmctdGVy
bSB0aGUgZml4IGZvciB0aGlzIGlzIHRvIG1vdmUgdGhlIFNjcm9sbGFibGVBcmVhIEhhc2hTZXQg
dG8gYSBtb3JlIAorICAgICAgICBhcHByb3ByaWF0ZSBwbGFjZS4gSW4gdGhlIG1lYW50aW1lLCB0
aGlzIHBhdGNoIGFkZHJlc3NlcyB0aGUgY3Jhc2ggYnkgZ2V0dGluZyAKKyAgICAgICAgcmlkIG9m
IHRoZSBtX2lzQWN0aXZlIGJvb2wgb24gU2Nyb2xsQW5pbWF0b3IgdGhhdCB3YXMgaW50ZW5kZWQg
dG8gcmVwcmVzZW50IAorICAgICAgICB3aGV0aGVyIG9yIG5vdCB0aGUgU2Nyb2xsYWJsZUFyZWEg
aXMgaW4gdGhlIHBhZ2UgY2FjaGUuIEluc3RlYWQsIFNjcm9sbGFibGVBcmVhIAorICAgICAgICBp
bXBsZW1lbnRhdGlvbnMgbm93IGhhdmUgdGhlaXIgb3duIGZ1bmN0aW9ucyB0byBjb21wdXRlIHdo
ZXRoZXIgdGhleSBhcmUgaW4gCisgICAgICAgIGFjdGl2ZSBwYWdlcy4gU2Nyb2xsQW5pbWF0b3I6
OnNldElzQWN0aXZlKCkgbmVlZHMgdG8gYmUga2VwdCBhcm91bmQgZXZlbiB0aG91Z2ggCisgICAg
ICAgIHRoZXJlIGlzIG5vIGJvb2wgdG8gZmxpcCBhbnltb3JlIGJlY2F1c2Ugc2Nyb2xsYmFycyBt
YXkgbmVlZCB0byBiZSBwcm9wZXJseSAKKyAgICAgICAgdXBkYXRlZCBpZiB0aGUgYXBwZWFyYW5j
ZSB3YXMgc3dpdGNoZWQgd2hpbGUgdGhlIGRvY3VtZW50IHdhcyBpbiB0aGUgcGFnZSBjYWNoZS4K
KworICAgICAgICBObyBsb25nZXIgY2FsbCBGcmFtZVZpZXc6OnNldEFuaW1hdG9yc0FyZUFjdGl2
ZSgpIGZyb20gCisgICAgICAgIERvY3VtZW50OjpzZXRJc0luUGFnZUNhY2hlKCksIGluc3RlYWQg
Y2FsbCBpdCBpbiAKKyAgICAgICAgRG9jdW1lbnQ6OmRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCkK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnNldEluUGFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb2N1bWVudERp
ZEJlY29tZUFjdGl2ZSk6CisKKyAgICAgICAgU2Nyb2xsYWJsZUFyZWFzIGNhbiBub3cgYXNzZXNz
IHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIG9uIGFjdGl2ZSBwYWdlcyAoaWUsIG5vdCAKKyAgICAg
ICAgaW4gdGhlIHBhZ2UgY2FjaGUpLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6aXNPbkFjdGl2ZVBhZ2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6aXNPbkFjdGl2ZVBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmlzT25BY3RpdmVQYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oOgorCisgICAgICAgIEEgRnJhbWVWaWV3IGNhbm5vdCBhY2Nl
c3MgaXRzIERvY3VtZW50IHdoZW4gaXQncyBpbiB0aGUgcGFnZSBjYWNoZSwgc28gaXQgCisgICAg
ICAgIHVzdWFsbHkgZGV0ZXJtaW5lcyB3aGV0aGVyIGl0J3MgaW4gdGhlIHBhZ2UgY2FjaGUgYnkg
Y2hlY2tpbmcgaWYgaXRzIGZyYW1lIAorICAgICAgICBwb2ludHMgdG8gYSBGcmFtZVZpZXcgb3Ro
ZXIgdGhhbiBpdHNlbGYuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3Ojppc09uQWN0aXZlUGFnZSk6CisgICAgICAgIAorICAgICAgICBN
YWtlIHN1cmUgU2Nyb2xsYWJsZUFyZWFzIGFyZSBvbiBhY3RpdmUgcGFnZXMgYmVmb3JlIHNldHRp
bmcgdGhlbSBhcyAKKyAgICAgICAgYWN0aXZlLiBUaGlzIHdpbGwgbm90IGJlIG5lY2Vzc2FyeSB3
aGVuIHRoZSBIYXNoU2V0IGJlY29tZSBhIHBlci13ZWIgcGFnZSAKKyAgICAgICAgSGFzaFNldC4K
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0QW5pbWF0b3JzQXJlQWN0aXZlKToKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAKKyAgICAgICAgU2Nyb2xsQW5pbWF0
b3Igbm8gbG9uZ2VyIHRyYWNrcyB0aGUgbV9pc0FjdGl2ZSBib29sLiAKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6U2Nyb2xsQW5pbWF0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2V0SXNBY3RpdmUpOgorICAgICAg
ICAKKyAgICAgICAgc2V0SXNBY3RpdmUoKSBub3cgZXhjbHVzaXZlbHkgY2FsbHMgdXBkYXRlU2Ny
b2xsU3R5bGUoKSBpZiB0aGVyZSBpcyBhIHBlbmRpbmcgCisgICAgICAgIG5lZWQgdG8gZG8gc28u
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JNYWM6OnNldElzQWN0aXZlKToKKyAgICAgICAgCisgICAgICAgIFJldHVybiBl
YXJseSBpZiB0aGUgU2Nyb2xsYWJsZUFyZWEgaXMgaW4gdGhlIHBhZ2UgY2FjaGUuIAorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnVwZGF0ZVNjcm9sbGVyU3R5bGUpOgorCiAy
MDExLTA2LTE1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDg4ODM1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgxOCw5ICszODE4LDYgQEAgdm9pZCBEb2N1bWVudDo6
c2V0SW5QYWdlQ2FjaGUoYm9vbCBmbGFnKQogICAgICAgICBpZiAoY2hpbGROZWVkc1N0eWxlUmVj
YWxjKCkpCiAgICAgICAgICAgICBzY2hlZHVsZVN0eWxlUmVjYWxjKCk7CiAgICAgfQotCi0gICAg
aWYgKHYpCi0gICAgICAgIHYtPnNldEFuaW1hdG9yc0FyZUFjdGl2ZSghbV9pblBhZ2VDYWNoZSk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCkgCkBAIC0z
ODQ2LDYgKzM4NDMsOSBAQCB2b2lkIERvY3VtZW50Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgp
CiAgICAgICAgIHJlbmRlclZpZXcoKS0+ZGlkTW92ZU9uc2NyZWVuKCk7CiAjZW5kaWYKIAorICAg
IGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHZpZXcoKSkKKyAgICAgICAgZnJhbWVWaWV3LT5z
ZXRBbmltYXRvcnNBcmVBY3RpdmUoKTsKKwogICAgIEFTU0VSVChtX2ZyYW1lKTsKICAgICBtX2Zy
YW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoaXNGcmFt
ZVNldCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDg4
ODc3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjI2LDEyICsyMjI2LDE5IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRWaXNpYmxlU2Nyb2xs
ZXJUaHVtYlIKICAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5ub3RpZnlTY3Jv
bGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KHNjcm9sbGVyVGh1bWIpOwogfQogCitib29sIEZyYW1l
Vmlldzo6aXNPbkFjdGl2ZVBhZ2UoKSBjb25zdAoreworICAgIGlmIChtX2ZyYW1lLT52aWV3KCkg
IT0gdGhpcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+aW5QYWdlQ2FjaGUoKTsKK30KKwogYm9vbCBGcmFtZVZpZXc6OnNob3VsZFN1c3Bl
bmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVy
KCktPnN0YXRlKCkgIT0gRnJhbWVTdGF0ZUNvbXBsZXRlOwogfQogCi12b2lkIEZyYW1lVmlldzo6
c2V0QW5pbWF0b3JzQXJlQWN0aXZlKGJvb2wgYWN0aXZlKQordm9pZCBGcmFtZVZpZXc6OnNldEFu
aW1hdG9yc0FyZUFjdGl2ZSgpCiB7CiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
ICAgICBpZiAoIXBhZ2UpCkBAIC0yMjQyLDggKzIyNDksMTQgQEAgdm9pZCBGcmFtZVZpZXc6OnNl
dEFuaW1hdG9yc0FyZUFjdGl2ZShibwogICAgICAgICByZXR1cm47CiAKICAgICBIYXNoU2V0PFNj
cm9sbGFibGVBcmVhKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHNjcm9sbGFibGVBcmVhcy0+ZW5k
KCk7IAotICAgIGZvciAoSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHNjcm9sbGFibGVBcmVhcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAo
Kml0KS0+c2Nyb2xsQW5pbWF0b3IoKS0+c2V0SXNBY3RpdmUoYWN0aXZlKTsKKyAgICBmb3IgKEhh
c2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzY3JvbGxhYmxlQXJl
YXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBl
eHRyYSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIFNjcm9sbGFibGVBcmVhIGlzIG9uIGFuIGFjdGl2
ZSBwYWdlIG5lZWRzIAorICAgICAgICAvLyB0byBiZSBoZXJlIGFzIGxvbmcgYXMgdGhlIFNjcm9s
bGFibGVBcmVhIEhhc2hTZXQgbGl2ZXMgb24gUGFnZS4gQnV0IGl0IHNob3VsZCByZWFsbHkgYmUK
KyAgICAgICAgLy8gbW92ZWQgdG8gdGhlIHRvcC1sZXZlbCBEb2N1bWVudCBvciBhIHNpbWlsYXIg
Y2xhc3MgdGhhdCByZWFsbHkgcmVwcmVzZW50cyBhIHNpbmdsZSAKKyAgICAgICAgLy8gd2ViIHBh
Z2UuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc2MgorICAgICAg
ICBpZiAoKCppdCktPmlzT25BY3RpdmVQYWdlKCkpCisgICAgICAgICAgICAoKml0KS0+c2Nyb2xs
QW5pbWF0b3IoKS0+c2V0SXNBY3RpdmUoKTsKKyAgICB9CiB9CiAKIHZvaWQgRnJhbWVWaWV3Ojpu
b3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gODg4NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNyArMjc3LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBib29sIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Q7CiAK
LSAgICB2b2lkIHNldEFuaW1hdG9yc0FyZUFjdGl2ZShib29sKTsKKyAgICB2b2lkIHNldEFuaW1h
dG9yc0FyZUFjdGl2ZSgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHNjcm9sbENv
bnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3Qm
IHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwpAQCAtMzI4LDYgKzMyOCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0QW5pbWF0ZWRTY3JvbGwoKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVBbmltYXRlZFNjcm9sbCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgpIGNvbnN0OwogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxh
eWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0OwogICAgIHZpcnR1YWwgR3JhcGhpY3NM
YXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAkocmV2aXNpb24gODg4MzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDcgKzUyLDYgQEAgU2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9sbGFi
bAogICAgIDogbV9zY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fY3VycmVu
dFBvc1goMCkKICAgICAsIG1fY3VycmVudFBvc1koMCkKLSAgICAsIG1faXNBY3RpdmUodHJ1ZSkK
IHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCShy
ZXZpc2lvbiA4ODgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDggKzYxLDcgQEAgcHVibGljOgogCiAgICAgU2Nyb2xs
YWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJl
YTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldElzQWN0aXZlKGJvb2wgYWN0aXZlKSB7IG1faXNB
Y3RpdmUgPSBhY3RpdmU7IH0KLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9p
c0FjdGl2ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJc0FjdGl2ZSgpIHsgfQogCiAgICAgdmly
dHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAjaWYgRU5B
QkxFKEdFU1RVUkVfRVZFTlRTKQpAQCAtOTYsNyArOTUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgU2Ny
b2xsYWJsZUFyZWEqIG1fc2Nyb2xsYWJsZUFyZWE7CiAgICAgZmxvYXQgbV9jdXJyZW50UG9zWDsg
Ly8gV2UgYXZvaWQgdXNpbmcgYSBGbG9hdFBvaW50IGluIG9yZGVyIHRvIHJlZHVjZQogICAgIGZs
b2F0IG1fY3VycmVudFBvc1k7IC8vIHN1YmNsYXNzIGNvZGUgY29tcGxleGl0eS4KLSAgICBib29s
IG1faXNBY3RpdmU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgJKHJldmlzaW9uIDg4ODM1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAkod29ya2luZyBjb3B5KQpAQCAt
MTM2LDYgKzEzNiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNj
cm9sbEFuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbGJhclN0eWxlQ2hhbmdlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxl
U2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYpIHsgfQorCisgICAgdmlydHVhbCBib29s
IGlzT25BY3RpdmVQYWdlKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHRy
dWU7IH0KICAgICAKICAgICBib29sIGlzSG9yaXpvbnRhbFNjcm9sbGVyUGlubmVkVG9NaW5pbXVt
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiAhaG9yaXpvbnRhbFNjcm9sbGJhcigpIHx8IHNjcm9s
bFBvc2l0aW9uKGhvcml6b250YWxTY3JvbGxiYXIoKSkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9u
KCkueCgpOyB9CiAgICAgYm9vbCBpc0hvcml6b250YWxTY3JvbGxlclBpbm5lZFRvTWF4aW11bVBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gIWhvcml6b250YWxTY3JvbGxiYXIoKSB8fCBzY3JvbGxQ
b3NpdGlvbihob3Jpem9udGFsU2Nyb2xsYmFyKCkpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigp
LngoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9y
TWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLmgJKHJldmlzaW9uIDg4ODM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBoYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0SXNBY3RpdmUoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldElzQWN0aXZlKCk7CiAKICNp
ZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxlclN0eWxl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tCShyZXZpc2lvbiA4ODg3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIxNiwxMCArMTIxNiw4
IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OnNuYXBSdWJiZXJCYW5kVGkKIH0KICNlbmRpZgog
Ci12b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpzZXRJc0FjdGl2ZShib29sIGFjdGl2ZSkKK3ZvaWQg
U2Nyb2xsQW5pbWF0b3JNYWM6OnNldElzQWN0aXZlKCkKIHsKLSAgICBTY3JvbGxBbmltYXRvcjo6
c2V0SXNBY3RpdmUoYWN0aXZlKTsKLQogI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKICAg
ICBpZiAobmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlKCkpCiAgICAgICAgIHVwZGF0ZVNjcm9sbGVy
U3R5bGUoKTsKQEAgLTEyMjksNyArMTIyNyw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OnNl
dElzQWN0aXZlKGJvb2wKICNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCiB2b2lkIFNjcm9s
bEFuaW1hdG9yTWFjOjp1cGRhdGVTY3JvbGxlclN0eWxlKCkKIHsKLSAgICBpZiAoIWlzQWN0aXZl
KCkpIHsKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKCktPmlzT25BY3RpdmVQYWdlKCkpIHsKICAg
ICAgICAgc2V0TmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlKHRydWUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShy
ZXZpc2lvbiA4ODgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MTcsNiArMTgxNywxMSBAQCBib29sIFJlbmRlckxheWVy
OjpzaG91bGRTdXNwZW5kU2Nyb2xsQW5pCiAgICAgcmV0dXJuIHZpZXctPmZyYW1lVmlldygpLT5z
aG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpOwogfQogCitib29sIFJlbmRlckxheWVyOjpp
c09uQWN0aXZlUGFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3JlbmRlcmVyLT5kb2N1bWVu
dCgpLT5pblBhZ2VDYWNoZSgpOworfQorCiBJbnRQb2ludCBSZW5kZXJMYXllcjo6Y3VycmVudE1v
dXNlUG9zaXRpb24oKSBjb25zdAogewogICAgIHJldHVybiByZW5kZXJlcigpLT5mcmFtZSgpID8g
cmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9u
KCkgOiBJbnRQb2ludCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgJKHJldmlzaW9uIDg4ODM1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0Niw2ICs1NDYsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgSW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tcGxldGVSdWJiZXJCYW5kKGNvbnN0IEludFNpemUmKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdDsKIAogICAgIC8vIFJlY3RhbmdsZSBl
bmNvbXBhc3NpbmcgdGhlIHNjcm9sbCBjb3JuZXIgYW5kIHJlc2l6ZXIgcmVjdC4KICAgICBJbnRS
ZWN0IHNjcm9sbENvcm5lckFuZFJlc2l6ZXJSZWN0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCShyZXZpc2lvbiA4ODgzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODAxLDYgKzgwMSwxMSBAQCBib29sIFJlbmRlckxpc3RCb3g6OnNob3VsZFN1c3BlbmRTY3Jv
bGxBCiAgICAgcmV0dXJuIHZpZXctPmZyYW1lVmlldygpLT5zaG91bGRTdXNwZW5kU2Nyb2xsQW5p
bWF0aW9ucygpOwogfQogCitib29sIFJlbmRlckxpc3RCb3g6OmlzT25BY3RpdmVQYWdlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIWRvY3VtZW50KCktPmluUGFnZUNhY2hlKCk7Cit9CisKIFBhc3NS
ZWZQdHI8U2Nyb2xsYmFyPiBSZW5kZXJMaXN0Qm94OjpjcmVhdGVTY3JvbGxiYXIoKQogewogICAg
IFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guaAkocmV2aXNpb24gODg4MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdDsKICAgICB2aXJ0
dWFsIEludFBvaW50IGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVj
dEZyb21QYWdlKCkgeyBtX3BhZ2UgPSAwOyB9CiAK
</data>
<flag name="review"
          id="91299"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>