<?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>23384</bug_id>
          
          <creation_ts>2009-01-16 09:33:54 -0800</creation_ts>
          <short_desc>PLATFORM(CHROMIUM) needs to delegate BackForwardList.cpp methods to the embedder</short_desc>
          <delta_ts>2009-01-16 14:52:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>23480</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>106069</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-01-16 09:33:54 -0800</bug_when>
    <thetext>PLATFORM(CHROMIUM) needs to delegate BackForwardList.cpp methods to the embedder

Locally, we have just #ifdef&apos;d this file and introduced a BackForwardListClient interface.  I will attach that patch for consideration.  I&apos;m definitely open to alternative solutions that avoid hacking up BackForwardList.{h,cpp} so much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106070</commentid>
    <comment_count>1</comment_count>
      <attachid>26797</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-01-16 09:36:54 -0800</bug_when>
    <thetext>Created attachment 26797
prototype patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106071</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-01-16 09:37:58 -0800</bug_when>
    <thetext>One idea I was considering was to create a BackForwardListChromium.cpp file.  That way at least the normal .cpp file could be left unmodified.  The changes to BackForwardList.h are minor, so perhaps this solution would be nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106087</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-16 10:49:28 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; One idea I was considering was to create a BackForwardListChromium.cpp file. 
&gt; That way at least the normal .cpp file could be left unmodified.  The changes
&gt; to BackForwardList.h are minor, so perhaps this solution would be nicer.

I think that&apos;s the way to go.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106091</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-01-16 11:36:47 -0800</bug_when>
    <thetext>OK, will do.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106101</commentid>
    <comment_count>5</comment_count>
      <attachid>26805</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-01-16 12:36:46 -0800</bug_when>
    <thetext>Created attachment 26805
v1 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106112</commentid>
    <comment_count>6</comment_count>
      <attachid>26805</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-16 14:09:54 -0800</bug_when>
    <thetext>Comment on attachment 26805
v1 patch

&gt; +        * history/BackForwardListChromium.cpp: Added.
&gt; +        (WebCore::BackForwardList::BackForwardList):
&gt; +        (WebCore::BackForwardList::~BackForwardList):
&gt; +        (WebCore::BackForwardList::addItem):
&gt; +        (WebCore::BackForwardList::goBack):
&gt; +        (WebCore::BackForwardList::goForward):
&gt; +        (WebCore::BackForwardList::goToItem):
&gt; +        (WebCore::BackForwardList::backItem):
&gt; +        (WebCore::BackForwardList::currentItem):
&gt; +        (WebCore::BackForwardList::forwardItem):
&gt; +        (WebCore::BackForwardList::backListWithLimit):
&gt; +        (WebCore::BackForwardList::forwardListWithLimit):
&gt; +        (WebCore::BackForwardList::capacity):
&gt; +        (WebCore::BackForwardList::setCapacity):
&gt; +        (WebCore::BackForwardList::enabled):
&gt; +        (WebCore::BackForwardList::setEnabled):
&gt; +        (WebCore::BackForwardList::backListCount):
&gt; +        (WebCore::BackForwardList::forwardListCount):
&gt; +        (WebCore::BackForwardList::itemAtIndex):
&gt; +        (WebCore::BackForwardList::entries):
&gt; +        (WebCore::BackForwardList::close):
&gt; +        (WebCore::BackForwardList::closed):
&gt; +        (WebCore::BackForwardList::removeItem):
&gt; +        (WebCore::BackForwardList::containsItem):

As I mentioned in other recent reviews, I don&apos;t think it&apos;s especially useful to keep prepare-ChangeLog&apos;s output list of functions when we&apos;re dealing with new files. That&apos;s just a personal view though. Maybe we should discuss it.

&gt; +#if PLATFORM(CHROMIUM)
&gt; +// In the Chromium port, the back/forward list is managed externally.
&gt; +// See BackForwardListChromium.cpp
&gt; +class BackForwardListClient {
&gt; +public:
&gt; +    virtual ~BackForwardListClient() {}
&gt; +    virtual void addItem(PassRefPtr&lt;HistoryItem&gt;) = 0;
&gt; +    virtual void goToItem(HistoryItem*) = 0;
&gt; +    virtual HistoryItem* currentItem() = 0;
&gt; +    virtual HistoryItem* itemAtIndex(int) = 0;
&gt; +    virtual int backListCount() = 0;
&gt; +    virtual int forwardListCount() = 0;
&gt; +    virtual void close() = 0;
&gt; +};
&gt; +#endif

It might make more sense to make this part of the frame load client in the future, but it seems good for now.

&gt; +void BackForwardList::goBack()
&gt; +{
&gt; +    ASSERT_NOT_REACHED();
&gt; +}
&gt; +
&gt; +void BackForwardList::goForward()
&gt; +{
&gt; +    ASSERT_NOT_REACHED();
&gt; +}
&gt; +
&gt; +HistoryItem* BackForwardList::backItem()
&gt; +{
&gt; +    ASSERT_NOT_REACHED();
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +HistoryItem* BackForwardList::forwardItem()
&gt; +{
&gt; +    ASSERT_NOT_REACHED();
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +void BackForwardList::backListWithLimit(int limit, HistoryItemVector&amp; list)
&gt; +{
&gt; +    list.clear();
&gt; +    ASSERT_NOT_REACHED();
&gt; +}
&gt; +
&gt; +void BackForwardList::forwardListWithLimit(int limit, HistoryItemVector&amp; list)
&gt; +{
&gt; +    list.clear();
&gt; +    ASSERT_NOT_REACHED();
&gt; +}
&gt; +
&gt; +void BackForwardList::removeItem(HistoryItem* item)
&gt; +{
&gt; +    ASSERT_NOT_REACHED();
&gt; +}
&gt; +
&gt; +bool BackForwardList::containsItem(HistoryItem* entry)
&gt; +{
&gt; +    ASSERT_NOT_REACHED();
&gt; +    return false;
&gt; +}

Why not simply omit these definitions and let the linker catch the mistake if someone calls one of them?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106113</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-01-16 14:14:07 -0800</bug_when>
    <thetext>+1 on no members in additions. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106116</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-01-16 14:36:43 -0800</bug_when>
    <thetext>Good suggestion about leveraging the linker and about pruning the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106121</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-01-16 14:52:02 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/39989</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26797</attachid>
            <date>2009-01-16 09:36:54 -0800</date>
            <delta_ts>2009-01-16 11:36:58 -0800</delta_ts>
            <desc>prototype patch</desc>
            <filename>bf_hack_1.diff</filename>
            <type>text/plain</type>
            <size>7501</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IGhpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBoaXN0b3J5
L0JhY2tGb3J3YXJkTGlzdC5jcHAJKHJldmlzaW9uIDM5OTcxKQorKysgaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw5IEBAIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBOb0N1cnJlbnRJdGVtSW5kZXgKIAogQmFja0ZvcndhcmRMaXN0OjpCYWNrRm9y
d2FyZExpc3QoUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQorI2lmICFQTEFURk9STShD
SFJPTUlVTSkKICAgICAsIG1fY3VycmVudChOb0N1cnJlbnRJdGVtSW5kZXgpCisjZW5kaWYKICAg
ICAsIG1fY2FwYWNpdHkoRGVmYXVsdENhcGFjaXR5KQogICAgICwgbV9jbG9zZWQodHJ1ZSkKICAg
ICAsIG1fZW5hYmxlZCh0cnVlKQpAQCAtNTcsNyArNTksMTAgQEAgdm9pZCBCYWNrRm9yd2FyZExp
c3Q6OmFkZEl0ZW0oUGFzc1JlZlB0cgogICAgIEFTU0VSVChwcnBJdGVtKTsKICAgICBpZiAobV9j
YXBhY2l0eSA9PSAwIHx8ICFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAKKyAKKyNp
ZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBtX2NsaWVudC0+YWRkSXRlbShwcnBJdGVtKTsKKyNl
bHNlCiAgICAgLy8gVG9zcyBhbnl0aGluZyBpbiB0aGUgZm9yd2FyZCBsaXN0ICAgIAogICAgIGlm
IChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7CiAgICAgICAgIHVuc2lnbmVkIHRh
cmdldFNpemUgPSBtX2N1cnJlbnQgKyAxOwpAQCAtODIsMjQgKzg3LDM2IEBAIHZvaWQgQmFja0Zv
cndhcmRMaXN0OjphZGRJdGVtKFBhc3NSZWZQdHIKICAgICBtX2VudHJpZXMuYXBwZW5kKHBycEl0
ZW0pOwogICAgIG1fZW50cnlIYXNoLmFkZChtX2VudHJpZXMubGFzdCgpKTsKICAgICBtX2N1cnJl
bnQrKzsKKyNlbmRpZgogfQogCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29CYWNrKCkKIHsKKyNp
ZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbHNlCiAg
ICAgQVNTRVJUKG1fY3VycmVudCA+IDApOwogICAgIGlmIChtX2N1cnJlbnQgPiAwKQogICAgICAg
ICBtX2N1cnJlbnQtLTsKKyNlbmRpZgogfQogCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29Gb3J3
YXJkKCkKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbHNlCiAgICAgQVNTRVJUKG1fY3VycmVudCA8IG1fZW50cmllcy5zaXplKCkgLSAxKTsK
ICAgICBpZiAobV9jdXJyZW50IDwgbV9lbnRyaWVzLnNpemUoKSAtIDEpCiAgICAgICAgIG1fY3Vy
cmVudCsrOworI2VuZGlmCiB9CiAKIHZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShIaXN0
b3J5SXRlbSogaXRlbSkKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBtX2NsaWVudC0+
Z29Ub0l0ZW0oaXRlbSk7CisjZWxzZQogICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSB8fCAhaXRl
bSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTEwOSw0MyArMTI2LDY1IEBAIHZvaWQg
QmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShIaXN0b3J5SXQKICAgICAgICAgICAgIGJyZWFrOwog
ICAgIGlmIChpbmRleCA8IG1fZW50cmllcy5zaXplKCkpCiAgICAgICAgIG1fY3VycmVudCA9IGlu
ZGV4OworI2VuZGlmCiB9CiAKIEhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVt
KCkKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gMDsKKyNlbHNlCiAgICAgaWYgKG1fY3VycmVudCAmJiBtX2N1cnJlbnQgIT0g
Tm9DdXJyZW50SXRlbUluZGV4KQogICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAt
IDFdLmdldCgpOwogICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIEhpc3RvcnlJdGVtKiBCYWNr
Rm9yd2FyZExpc3Q6OmN1cnJlbnRJdGVtKCkKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAg
ICByZXR1cm4gbV9jbGllbnQtPmN1cnJlbnRJdGVtKCk7CisjZWxzZQogICAgIGlmIChtX2N1cnJl
bnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQogICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3Vy
cmVudF0uZ2V0KCk7CiAgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogSGlzdG9yeUl0ZW0qIEJh
Y2tGb3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworI2Vsc2UKICAgICBpZiAo
bV9lbnRyaWVzLnNpemUoKSAmJiBtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSkKICAg
ICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgKyAxXS5nZXQoKTsKICAgICByZXR1cm4g
MDsKKyNlbmRpZgogfQogCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RXaXRoTGltaXQo
aW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYgbGlzdCkKIHsKICAgICBsaXN0LmNsZWFyKCk7
CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZWxz
ZQogICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7CiAgICAgICAgIHVu
c2lnbmVkIGZpcnN0ID0gbWF4KChpbnQpbV9jdXJyZW50IC0gbGltaXQsIDApOwogICAgICAgICBm
b3IgKDsgZmlyc3QgPCBtX2N1cnJlbnQ7ICsrZmlyc3QpCiAgICAgICAgICAgICBsaXN0LmFwcGVu
ZChtX2VudHJpZXNbZmlyc3RdKTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBCYWNrRm9yd2Fy
ZExpc3Q6OmZvcndhcmRMaXN0V2l0aExpbWl0KGludCBsaW1pdCwgSGlzdG9yeUl0ZW1WZWN0b3Im
IGxpc3QpCiB7Ci0gICAgQVNTRVJUKGxpbWl0ID4gLTEpOwogICAgIGxpc3QuY2xlYXIoKTsKKyNp
ZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbHNlCisg
ICAgQVNTRVJUKGxpbWl0ID4gLTEpOwogICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKQEAgLTE1Niw2ICsxOTUsNyBAQCB2b2lkIEJhY2tGb3J3YXJk
TGlzdDo6Zm9yd2FyZExpc3RXaXRoTGltCiAgICAgICAgIGZvciAoOyBsaW1pdCA8PSBsYXN0OyAr
K2xpbWl0KQogICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2xpbWl0XSk7CiAgICAg
fQorI2VuZGlmCiB9CiAKIGludCBCYWNrRm9yd2FyZExpc3Q6OmNhcGFjaXR5KCkKQEAgLTE2NCw3
ICsyMDQsOCBAQCBpbnQgQmFja0ZvcndhcmRMaXN0OjpjYXBhY2l0eSgpCiB9CiAKIHZvaWQgQmFj
a0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eShpbnQgc2l6ZSkKLXsgICAgCit7CisjaWYgIVBMQVRG
T1JNKENIUk9NSVVNKQogICAgIHdoaWxlIChzaXplIDwgKGludCltX2VudHJpZXMuc2l6ZSgpKSB7
CiAgICAgICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CiAg
ICAgICAgIG1fZW50cmllcy5yZW1vdmVMYXN0KCk7CkBAIC0xNzYsNyArMjE3LDggQEAgdm9pZCBC
YWNrRm9yd2FyZExpc3Q6OnNldENhcGFjaXR5KGludCBzaQogICAgICAgICBtX2N1cnJlbnQgPSBO
b0N1cnJlbnRJdGVtSW5kZXg7CiAgICAgZWxzZSBpZiAobV9jdXJyZW50ID4gbV9lbnRyaWVzLnNp
emUoKSAtIDEpCiAgICAgICAgIG1fY3VycmVudCA9IG1fZW50cmllcy5zaXplKCkgLSAxOwotICAg
ICAgICAKKyNlbmRpZgorCiAgICAgbV9jYXBhY2l0eSA9IHNpemU7CiB9CiAKQEAgLTE5NywxNiAr
MjM5LDI3IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRFbmFibGVkKGJvb2wgZW4KIAogaW50
IEJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCgpCiB7CisjaWYgUExBVEZPUk0oQ0hST01J
VU0pCisgICAgcmV0dXJuIG1fY2xpZW50LT5iYWNrTGlzdENvdW50KCk7CisjZWxzZQogICAgIHJl
dHVybiBtX2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IG1fY3VycmVudDsKKyNl
bmRpZgogfQogCiBpbnQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkKIHsKKyNp
ZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICByZXR1cm4gbV9jbGllbnQtPmZvcndhcmRMaXN0Q291
bnQoKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVtSW5kZXgg
PyAwIDogKGludCltX2VudHJpZXMuc2l6ZSgpIC0gKG1fY3VycmVudCArIDEpOworI2VuZGlmCiB9
CiAKIEhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkK
IHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICByZXR1cm4gbV9jbGllbnQtPml0ZW1BdElu
ZGV4KGluZGV4KTsKKyNlbHNlCiAgICAgLy8gRG8gcmFuZ2UgY2hlY2tzIHdpdGhvdXQgZG9pbmcg
bWF0aCBvbiBpbmRleCB0byBhdm9pZCBvdmVyZmxvdy4KICAgICBpZiAoaW5kZXggPCAtKGludClt
X2N1cnJlbnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjE1LDIwICsyNjgsMzAgQEAgSGlzdG9y
eUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZQogICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgCiAgICAgcmV0dXJuIG1fZW50cmllc1tpbmRleCArIG1fY3VycmVudF0uZ2V0KCk7Cisj
ZW5kaWYKIH0KIAogSGlzdG9yeUl0ZW1WZWN0b3ImIEJhY2tGb3J3YXJkTGlzdDo6ZW50cmllcygp
CiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgc3RhdGljIEhpc3RvcnlJdGVtVmVjdG9y
IG5vRW50cmllczsKKyAgICByZXR1cm4gbm9FbnRyaWVzOworI2Vsc2UKICAgICByZXR1cm4gbV9l
bnRyaWVzOworI2VuZGlmCiB9CiAKIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpjbG9zZSgpCiB7Cisj
aWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgbV9jbGllbnQtPmNsb3NlKCk7CisjZWxzZQogICAg
IGludCBzaXplID0gbV9lbnRyaWVzLnNpemUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNp
emU7ICsraSkKICAgICAgICAgcGFnZUNhY2hlKCktPnJlbW92ZShtX2VudHJpZXNbaV0uZ2V0KCkp
OwogICAgIG1fZW50cmllcy5jbGVhcigpOwogICAgIG1fZW50cnlIYXNoLmNsZWFyKCk7CisjZW5k
aWYKICAgICBtX3BhZ2UgPSAwOwogICAgIG1fY2xvc2VkID0gdHJ1ZTsKIH0KQEAgLTI0MCw2ICsz
MDMsOSBAQCBib29sIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2VkKCkKIAogdm9pZCBCYWNrRm9yd2Fy
ZExpc3Q6OnJlbW92ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CisjaWYgUExBVEZPUk0oQ0hS
T01JVU0pCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZWxzZQogICAgIGlmICghaXRlbSkK
ICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtMjU4LDExICszMjQsMTcgQEAgdm9pZCBCYWNrRm9y
d2FyZExpc3Q6OnJlbW92ZUl0ZW0oSGlzdG9yeQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyNlbmRpZgogfQogCiBib29sIEJhY2tGb3J3YXJkTGlzdDo6Y29u
dGFpbnNJdGVtKEhpc3RvcnlJdGVtKiBlbnRyeSkKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZWxzZQogICAg
IHJldHVybiBtX2VudHJ5SGFzaC5jb250YWlucyhlbnRyeSk7CisjZW5kaWYKIH0KIAogI2lmIEVO
QUJMRShXTUwpCkBAIC0yODAsMyArMzUyLDQgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmNsZWFy
V21sUGFnZUhpc3RvcgogI2VuZGlmCiAKIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKSW5kZXg6
IGhpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuaAkocmV2aXNpb24gMzk5NzEpCisrKyBoaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMCArNDAsMzAgQEAgY2xhc3MgUGFnZTsKIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxIaXN0b3J5SXRlbT4gPiBIaXN0b3J5SXRlbVZlY3RvcjsKIHR5cGVkZWYg
SGFzaFNldDxSZWZQdHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1IYXNoU2V0OwogCisjaWYg
UExBVEZPUk0oQ0hST01JVU0pCisvLyBJbiB0aGUgQ2hyb21pdW0gcG9ydCwgdGhlIGJhY2svZm9y
d2FyZCBsaXN0IGlzIG1hbmFnZWQgZXh0ZXJuYWxseS4KK2NsYXNzIEJhY2tGb3J3YXJkTGlzdENs
aWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QmFja0ZvcndhcmRMaXN0Q2xpZW50KCkge30K
KyAgICB2aXJ0dWFsIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnb1RvSXRlbShIaXN0b3J5SXRlbSopID0gMDsKKyAgICB2aXJ0dWFs
IEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpID0gMDsKKyAgICB2aXJ0dWFsIEhpc3RvcnlJdGVt
KiBpdGVtQXRJbmRleChpbnQpID0gMDsKKyAgICB2aXJ0dWFsIGludCBiYWNrTGlzdENvdW50KCkg
PSAwOworICAgIHZpcnR1YWwgaW50IGZvcndhcmRMaXN0Q291bnQoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNsb3NlKCkgPSAwOworfTsKKyNlbmRpZgorCiBjbGFzcyBCYWNrRm9yd2FyZExpc3Qg
OiBwdWJsaWMgUmVmQ291bnRlZDxCYWNrRm9yd2FyZExpc3Q+IHsKIHB1YmxpYzogCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiBjcmVhdGUoUGFnZSogcGFnZSkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IEJhY2tGb3J3YXJkTGlzdChwYWdlKSk7IH0KICAgICB+QmFja0Zvcndh
cmRMaXN0KCk7CisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAvLyBNdXN0IGJlIGNhbGxl
ZCBiZWZvcmUgYW55IG90aGVyIG1ldGhvZHMuIAorICAgIHZvaWQgc2V0Q2xpZW50KEJhY2tGb3J3
YXJkTGlzdENsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisjZW5kaWYKICAg
ICAKICAgICBQYWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CiAgICAgCkBAIC04MiwxNCAr
MTAyLDE4IEBAIHByaXZhdGU6CiAgICAgQmFja0ZvcndhcmRMaXN0KFBhZ2UqKTsKIAogICAgIFBh
Z2UqIG1fcGFnZTsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkgCisgICAgQmFja0ZvcndhcmRMaXN0
Q2xpZW50KiBtX2NsaWVudDsKKyNlbHNlCiAgICAgSGlzdG9yeUl0ZW1WZWN0b3IgbV9lbnRyaWVz
OwogICAgIEhpc3RvcnlJdGVtSGFzaFNldCBtX2VudHJ5SGFzaDsKICAgICB1bnNpZ25lZCBtX2N1
cnJlbnQ7CisjZW5kaWYKICAgICB1bnNpZ25lZCBtX2NhcGFjaXR5OwogICAgIGJvb2wgbV9jbG9z
ZWQ7CiAgICAgYm9vbCBtX2VuYWJsZWQ7Ci19OyAvL2NsYXNzIEJhY2tGb3J3YXJkTGlzdAorfTsK
ICAgICAKLX07IC8vbmFtZXNwYWNlIFdlYkNvcmUKK30gLy9uYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy9CQUNLRk9SV0FSRExJU1RfSAorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26805</attachid>
            <date>2009-01-16 12:36:46 -0800</date>
            <delta_ts>2009-01-16 14:09:54 -0800</delta_ts>
            <desc>v1 patch</desc>
            <filename>bf_1.diff</filename>
            <type>text/plain</type>
            <size>8320</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM5OTc1
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMDktMDEt
MTYgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzODQKKyAgICAgICAgUExBVEZPUk0oQ0hST01JVU0pIG5lZWRzIHRv
IGRlbGVnYXRlIEJhY2tGb3J3YXJkTGlzdC5jcHAgbWV0aG9kcyB0byB0aGUgZW1iZWRkZXIKKwor
ICAgICAgICAqIGhpc3RvcnkvQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpC
YWNrRm9yd2FyZExpc3RDbGllbnQ6On5CYWNrRm9yd2FyZExpc3RDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0OjpzZXRDbGllbnQpOgorICAgICAgICAqIGhpc3Rvcnkv
QmFja0ZvcndhcmRMaXN0Q2hyb21pdW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJh
Y2tGb3J3YXJkTGlzdDo6QmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tG
b3J3YXJkTGlzdDo6fkJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9y
d2FyZExpc3Q6OmFkZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Ojpn
b0JhY2spOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Ojpnb0ZvcndhcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
Y2tGb3J3YXJkTGlzdDo6Y3VycmVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja0Zvcndh
cmRMaXN0Ojpmb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6
OmJhY2tMaXN0V2l0aExpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdDo6
Zm9yd2FyZExpc3RXaXRoTGltaXQpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0
OjpjYXBhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6OnNldENhcGFj
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdDo6ZW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6OnNldEVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpC
YWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3
YXJkTGlzdDo6ZW50cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6OmNs
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdDo6Y2xvc2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdDo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrRm9yd2FyZExpc3Q6OmNvbnRhaW5zSXRlbSk6CisKIDIwMDktMDEtMTYgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyCkluZGV4OiBoaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGhp
c3RvcnkvQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDM5OTc1KQorKysgaGlzdG9yeS9CYWNr
Rm9yd2FyZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDAsMTAgKzQxLDMxIEBAIGNsYXNzIFBhZ2U7CiB0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1WZWN0b3I7CiB0eXBlZGVmIEhhc2hT
ZXQ8UmVmUHRyPEhpc3RvcnlJdGVtPiA+IEhpc3RvcnlJdGVtSGFzaFNldDsKIAorI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQorLy8gSW4gdGhlIENocm9taXVtIHBvcnQsIHRoZSBiYWNrL2ZvcndhcmQg
bGlzdCBpcyBtYW5hZ2VkIGV4dGVybmFsbHkuCisvLyBTZWUgQmFja0ZvcndhcmRMaXN0Q2hyb21p
dW0uY3BwCitjbGFzcyBCYWNrRm9yd2FyZExpc3RDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgfkJhY2tGb3J3YXJkTGlzdENsaWVudCgpIHt9CisgICAgdmlydHVhbCB2b2lkIGFkZEl0ZW0o
UGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0o
SGlzdG9yeUl0ZW0qKSA9IDA7CisgICAgdmlydHVhbCBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0o
KSA9IDA7CisgICAgdmlydHVhbCBIaXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50KSA9IDA7Cisg
ICAgdmlydHVhbCBpbnQgYmFja0xpc3RDb3VudCgpID0gMDsKKyAgICB2aXJ0dWFsIGludCBmb3J3
YXJkTGlzdENvdW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKK307Cisj
ZW5kaWYKKwogY2xhc3MgQmFja0ZvcndhcmRMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8QmFja0Zv
cndhcmRMaXN0PiB7CiBwdWJsaWM6IAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhY2tGb3J3YXJk
TGlzdD4gY3JlYXRlKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYWNrRm9yd2Fy
ZExpc3QocGFnZSkpOyB9CiAgICAgfkJhY2tGb3J3YXJkTGlzdCgpOworCisjaWYgUExBVEZPUk0o
Q0hST01JVU0pCisgICAgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBtZXRob2Rz
LiAKKyAgICB2b2lkIHNldENsaWVudChCYWNrRm9yd2FyZExpc3RDbGllbnQqIGNsaWVudCkgeyBt
X2NsaWVudCA9IGNsaWVudDsgfQorI2VuZGlmCiAgICAgCiAgICAgUGFnZSogcGFnZSgpIHsgcmV0
dXJuIG1fcGFnZTsgfQogICAgIApAQCAtODIsMTQgKzEwNCwxOCBAQCBwcml2YXRlOgogICAgIEJh
Y2tGb3J3YXJkTGlzdChQYWdlKik7CiAKICAgICBQYWdlKiBtX3BhZ2U7CisjaWYgUExBVEZPUk0o
Q0hST01JVU0pIAorICAgIEJhY2tGb3J3YXJkTGlzdENsaWVudCogbV9jbGllbnQ7CisjZWxzZQog
ICAgIEhpc3RvcnlJdGVtVmVjdG9yIG1fZW50cmllczsKICAgICBIaXN0b3J5SXRlbUhhc2hTZXQg
bV9lbnRyeUhhc2g7CiAgICAgdW5zaWduZWQgbV9jdXJyZW50OworI2VuZGlmCiAgICAgdW5zaWdu
ZWQgbV9jYXBhY2l0eTsKICAgICBib29sIG1fY2xvc2VkOwogICAgIGJvb2wgbV9lbmFibGVkOwot
fTsgLy9jbGFzcyBCYWNrRm9yd2FyZExpc3QKK307CiAgICAgCi19OyAvL25hbWVzcGFjZSBXZWJD
b3JlCit9IC8vbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vQkFDS0ZPUldBUkRMSVNUX0gK
KyNlbmRpZgpJbmRleDogaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDAp
CisrKyBoaXN0b3J5L0JhY2tGb3J3YXJkTGlzdENocm9taXVtLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
VG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2ht
b2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJhY2tG
b3J3YXJkTGlzdC5oIgorCisjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIERl
ZmF1bHRDYXBhY2l0eSA9IDEwMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBOb0N1cnJlbnRJdGVt
SW5kZXggPSBVSU5UX01BWDsKKworQmFja0ZvcndhcmRMaXN0OjpCYWNrRm9yd2FyZExpc3QoUGFn
ZSogcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9jYXBhY2l0eShEZWZhdWx0Q2Fw
YWNpdHkpCisgICAgLCBtX2Nsb3NlZCh0cnVlKQorICAgICwgbV9lbmFibGVkKHRydWUpCit7Cit9
CisKK0JhY2tGb3J3YXJkTGlzdDo6fkJhY2tGb3J3YXJkTGlzdCgpCit7CisgICAgQVNTRVJUKG1f
Y2xvc2VkKTsKK30KKwordm9pZCBCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUGFzc1JlZlB0cjxI
aXN0b3J5SXRlbT4gcHJwSXRlbSkKK3sKKyAgICBBU1NFUlQocHJwSXRlbSk7CisgICAgaWYgKG1f
Y2FwYWNpdHkgPT0gMCB8fCAhbV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisgCisgICAgbV9j
bGllbnQtPmFkZEl0ZW0ocHJwSXRlbSk7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb0Jh
Y2soKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEJhY2tGb3J3YXJk
TGlzdDo6Z29Gb3J3YXJkKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9p
ZCBCYWNrRm9yd2FyZExpc3Q6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQoreworICAgIG1f
Y2xpZW50LT5nb1RvSXRlbShpdGVtKTsKK30KKworSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlz
dDo6YmFja0l0ZW0oKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAw
OworfQorCitIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0OjpjdXJyZW50SXRlbSgpCit7Cisg
ICAgcmV0dXJuIG1fY2xpZW50LT5jdXJyZW50SXRlbSgpOworfQorCitIaXN0b3J5SXRlbSogQmFj
a0ZvcndhcmRMaXN0Ojpmb3J3YXJkSXRlbSgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdFdpdGhM
aW1pdChpbnQgbGltaXQsIEhpc3RvcnlJdGVtVmVjdG9yJiBsaXN0KQoreworICAgIGxpc3QuY2xl
YXIoKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBCYWNrRm9yd2FyZExp
c3Q6OmZvcndhcmRMaXN0V2l0aExpbWl0KGludCBsaW1pdCwgSGlzdG9yeUl0ZW1WZWN0b3ImIGxp
c3QpCit7CisgICAgbGlzdC5jbGVhcigpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
CitpbnQgQmFja0ZvcndhcmRMaXN0OjpjYXBhY2l0eSgpCit7CisgICAgcmV0dXJuIG1fY2FwYWNp
dHk7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eShpbnQgc2l6ZSkKK3sK
KyAgICBtX2NhcGFjaXR5ID0gc2l6ZTsKK30KKworYm9vbCBCYWNrRm9yd2FyZExpc3Q6OmVuYWJs
ZWQoKQoreworICAgIHJldHVybiBtX2VuYWJsZWQ7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0
OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwor
ICAgIGlmICghZW5hYmxlZCkgeworICAgICAgICBpbnQgY2FwYWNpdHkgPSBtX2NhcGFjaXR5Owor
ICAgICAgICBzZXRDYXBhY2l0eSgwKTsKKyAgICAgICAgc2V0Q2FwYWNpdHkoY2FwYWNpdHkpOwor
ICAgIH0KK30KKworaW50IEJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCgpCit7CisgICAg
cmV0dXJuIG1fY2xpZW50LT5iYWNrTGlzdENvdW50KCk7Cit9CisKK2ludCBCYWNrRm9yd2FyZExp
c3Q6OmZvcndhcmRMaXN0Q291bnQoKQoreworICAgIHJldHVybiBtX2NsaWVudC0+Zm9yd2FyZExp
c3RDb3VudCgpOworfQorCitIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0OjppdGVtQXRJbmRl
eChpbnQgaW5kZXgpCit7CisgICAgcmV0dXJuIG1fY2xpZW50LT5pdGVtQXRJbmRleChpbmRleCk7
Cit9CisKK0hpc3RvcnlJdGVtVmVjdG9yJiBCYWNrRm9yd2FyZExpc3Q6OmVudHJpZXMoKQorewor
ICAgIHN0YXRpYyBIaXN0b3J5SXRlbVZlY3RvciBub0VudHJpZXM7CisgICAgcmV0dXJuIG5vRW50
cmllczsKK30KKwordm9pZCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlKCkKK3sKKyAgICBtX2NsaWVu
dC0+Y2xvc2UoKTsKKyAgICBtX3BhZ2UgPSAwOworICAgIG1fY2xvc2VkID0gdHJ1ZTsKK30KKwor
Ym9vbCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlZCgpCit7CisgICAgcmV0dXJuIG1fY2xvc2VkOwor
fQorCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSogaXRlbSkK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBCYWNrRm9yd2FyZExpc3Q6
OmNvbnRhaW5zSXRlbShIaXN0b3J5SXRlbSogZW50cnkpCit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="12797"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>