<?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>32595</bug_id>
          
          <creation_ts>2009-12-15 21:05:28 -0800</creation_ts>
          <short_desc>When scrolling by page, hold back a fraction of the page size</short_desc>
          <delta_ts>2012-12-05 17:33:31 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Kasting">pkasting</reporter>
          <assigned_to name="Peter Kasting">pkasting</assigned_to>
          <cc>bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>rootdan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>172151</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-12-15 21:05:28 -0800</bug_when>
    <thetext>From WebCore/platform/Scrollbar.h:

const int cAmountToKeepWhenPaging = 40;

This means that when we scroll by &quot;one page&quot;, we overlap by 40 px.  This is an extremely small amount -- for any nontrivial window height, barely enough to be noticeable.  For trivially tiny windows this also degenerates badly -- at a height of 41 px, we scroll by 1 px per &quot;page&quot;.  (At 40 px and below, we scroll by the height of the window.)

By contrast, IE overlaps by 1/8th of the page height.  This strikes me as much better for readability (and indeed, when reading on my full-height window, it&apos;s much easier to read without losing my place).

I&apos;d like to change to this scheme, if there aren&apos;t objections.  It would also be good to know if we need to make this behavior platform-dependent (it currently isn&apos;t).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179461</commentid>
    <comment_count>1</comment_count>
      <attachid>46295</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-11 12:01:13 -0800</bug_when>
    <thetext>Created attachment 46295
patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179464</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-11 12:02:10 -0800</bug_when>
    <thetext>Attachment 46295 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/Scrollbar.h:43:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179495</commentid>
    <comment_count>3</comment_count>
      <attachid>46302</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-11 12:54:51 -0800</bug_when>
    <thetext>Created attachment 46302
patch v2

Fix style nit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180026</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-12 16:33:34 -0800</bug_when>
    <thetext>Attachment 46302 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/182803</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180032</commentid>
    <comment_count>5</comment_count>
      <attachid>46411</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-12 16:41:34 -0800</bug_when>
    <thetext>Created attachment 46411
patch v3

Try this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180268</commentid>
    <comment_count>6</comment_count>
      <attachid>46411</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-13 09:55:28 -0800</bug_when>
    <thetext>Comment on attachment 46411
patch v3

I haven&apos;t had a chance to review, but my first thought is that this patch changes WebCore, but leaves the Mac OS X WebKit code that does the same thing with the old behavior. It would be better to keep the two consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180290</commentid>
    <comment_count>7</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-13 10:49:38 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 46411 [details])
&gt; I haven&apos;t had a chance to review, but my first thought is that this patch
&gt; changes WebCore, but leaves the Mac OS X WebKit code that does the same thing
&gt; with the old behavior. It would be better to keep the two consistent.

I agree, but I didn&apos;t know that there was code in WebKit that did this.  I hadn&apos;t found any references to this constant there, just to the line-scrolling size.  Do you know where the relevant code is?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181052</commentid>
    <comment_count>8</comment_count>
      <attachid>46627</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-14 18:00:15 -0800</bug_when>
    <thetext>Created attachment 46627
patch v4

Added a blind change to the Mac code to keep things in sync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181055</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 18:03:31 -0800</bug_when>
    <thetext>Attachment 46627 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/186829</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181059</commentid>
    <comment_count>10</comment_count>
      <attachid>46630</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-14 18:12:28 -0800</bug_when>
    <thetext>Created attachment 46630
patch v5

That&apos;s interesting, I wouldn&apos;t have thought Scrollbar.h would be in scope... if it is, I can just use that set of constants everywhere.  Let&apos;s see if this patch compiles on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183792</commentid>
    <comment_count>11</comment_count>
      <attachid>46630</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-01-22 14:00:19 -0800</bug_when>
    <thetext>Comment on attachment 46630
patch v5

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183805</commentid>
    <comment_count>12</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-22 14:18:06 -0800</bug_when>
    <thetext>Fixed in r53718.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184080</commentid>
    <comment_count>13</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-24 10:14:09 -0800</bug_when>
    <thetext>This patch introduced bunches of pixel test failures -- all trivial changes to the size of the scrollbar handle.

I was tempted to roll out but, Peter persuaded me to let him fix the problem as a follow-up patch, since the patch revealed a possible bug in another place. Bug 34049 filed to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224048</commentid>
    <comment_count>14</comment_count>
    <who name="Dan Root">rootdan</who>
    <bug_when>2010-05-11 11:42:23 -0700</bug_when>
    <thetext>Please consider backing this out or providing another method to determine page overlap on scrolling.

40 px an extremely small amount for any nontrivial window height, but the conversion to a page percentage provides absolutely horrible user experience when reading long pages of prose text on large (tall) browser windows.

I have a 1600 pixel tall display, and run my browser window that full height.   When I scroll down a page, that means that approximately 200 pixels of overlap occur.  Using a standard fonts, that means that I&apos;m getting around 12-14 lines of overlapping text.   Even on more modest displays, it can be 8-10 lines of overlapping text.   That can be several inches of text that I have to rescan in order to find where I left off reading at the bottom of the previous &quot;page&quot;.

On pages with plenty of visual structure, this doesn&apos;t seem bad, but on pages that do not have any sort of texture to provide context, the user has to rescan a full 1/8th of a page of text just to find where they left off, instead of being able to use the visual cues provided by the window itself.  This makes reading long blocks of prose especially painful.  Ideally for these use cases there should be no more than about two lines of overlap.  Just enough to be able to ensure context and that more than one &quot;page&quot; was not skipped by accident.  Conveniently, 40px is 2-3 lines of text at standard font sizes, just about right for comfortable scanning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224051</commentid>
    <comment_count>15</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-05-11 11:46:47 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Please consider backing this out or providing another method to determine page overlap on scrolling.

See bug 34371.

&gt; 40 px an extremely small amount for any nontrivial window height, but the conversion to a page percentage provides absolutely horrible user experience when reading long pages of prose text on large (tall) browser windows.

I agree. &lt;http://trac.webkit.org/projects/webkit/changeset/54345&gt; re-instated the 40px cap on Mac OS X.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224060</commentid>
    <comment_count>16</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-05-11 11:52:50 -0700</bug_when>
    <thetext>When looking solely at overlap, it makes sense to me to tune for the common case, which is where there are at least a few visually identifiable features in or around the content; in such scenarios, an increased overlap value makes it easier to quickly relocate one&apos;s position.

However, instead of focusing on tuning overlap as the primary means of position location, I think we should work on more effective methods, such as smooth scrolling (which I&apos;m currently working on), or subtle graphical effects (which we Chromium folks have brainstormed a bit but never written a formal bug for-- an example would be that the scrolled-in page region would have a very slight lightening or darkening that would fade away).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224064</commentid>
    <comment_count>17</comment_count>
    <who name="Dan Root">rootdan</who>
    <bug_when>2010-05-11 12:03:08 -0700</bug_when>
    <thetext>Either of those options might solve the issue I see, though it&apos;d be hard to say for certain without some usability testing.

But right now, having just come from Firefox and older versions of Safari to a Chromium browser, I was immediately struck by how difficult it was to read long blocks of prose.  Distracting to the point that I actually found it more comfortable to open those pages in an entirely separate browser window resized to the point where 1/8th of the page did not represent such a large amount of duplicated text to re-read every time I hit page down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783966</commentid>
    <comment_count>18</comment_count>
    <who name="Graeme Hewson">bugs</who>
    <bug_when>2012-12-05 12:08:25 -0800</bug_when>
    <thetext>So, following on after 2½ years from comments #14 to #17, has anything happened about research into the user experience?

I asked about UX here: http://ux.stackexchange.com/questions/28773/guidelines-for-browser-page-overlap. The replies didn&apos;t lead on to any solid evidence for how much the overlap should be, so ISTM the user should be allowed to choose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784339</commentid>
    <comment_count>19</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2012-12-05 17:33:31 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; So, following on after 2½ years from comments #14 to #17, has anything happened about research into the user experience?
&gt; 
&gt; I asked about UX here: http://ux.stackexchange.com/questions/28773/guidelines-for-browser-page-overlap. The replies didn&apos;t lead on to any solid evidence for how much the overlap should be, so ISTM the user should be allowed to choose.

I already addressed this in the other bug where you posted -- see bug 34371 comment 21.

In short, this is configurable by the port as far as WebKit is concerned.  If you want your port maintainer to add a UI hook for controlling this, you&apos;ll need to file a bug with that port.  I can tell you in advance that Chromium won&apos;t be adding such a hook.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46295</attachid>
            <date>2010-01-11 12:01:13 -0800</date>
            <delta_ts>2010-01-11 12:54:51 -0800</delta_ts>
            <desc>patch v1</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>6613</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzA4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDEtMTEgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gc2Nyb2xsaW5nIGJ5IHBhZ2UsIGhvbGQgYmFjayAxLzh0aCBvZiB0aGUgdmlzaWJsZSBz
aXplIGluc3RlYWQgb2YKKyAgICAgICAgNDAgcHguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjU5NQorCisgICAgICAgICogZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vd3gvU2Nyb2xsVmlld1d4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNj
cm9sbFZpZXdQcml2YXRlOjpPblNjcm9sbFdpbkV2ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVT
Y3JvbGxJbmZvQWZ0ZXJMYXlvdXQpOgorCiAyMDEwLTAxLTExICBOaWtvbGFzIFppbW1lcm1hbm4g
IDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gQXR0ZW1wdCB0
byBmaXggd2luZG93cyBidWlsZHMsIGJ5IHJlbW92aW5nIHRoZSBuby1sb25nZXIgZXhpc3RhbnQg
SlNTVkdQb2ludExpc3RDdXN0b20uY3BwIGZyb20gSlNCaW5kaW5nc0FsbEluT25lLmNwcC4KSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDUzMDg1KQorKysgV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNyArMjYw
LDcgQEAgc3RhdGljIGludCB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKEZyYW1lKgogICAgIGlmICgh
KHN0eWxlLT5vdmVyZmxvd1koKSA9PSBPU0NST0xMIHx8IHN0eWxlLT5vdmVyZmxvd1koKSA9PSBP
QVVUTyB8fCByZW5kZXJlci0+aXNUZXh0QXJlYSgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
aW50IGhlaWdodCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2xpZW50SGVpZ2h0KCk7Ci0gICAg
cmV0dXJuIG1heCgoaGVpZ2h0ICsgMSkgLyAyLCBoZWlnaHQgLSBjQW1vdW50VG9LZWVwV2hlblBh
Z2luZyk7CisgICAgcmV0dXJuIG1heChoZWlnaHQgKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5n
LCAxLmYpOwogfQogCiBzdGF0aWMgUmVmUHRyPFJhbmdlPiB1bmlvbkRPTVJhbmdlcyhSYW5nZSog
YSwgUmFuZ2UqIGIpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDUzMDg1
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDI1LDkgKzQyNSw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAK
ICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0
aCA9IHZpc2libGVXaWR0aCgpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEVu
YWJsZWQoY29udGVudHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOwotICAgICAgICBpbnQgcGFnZVN0
ZXAgPSAoY2xpZW50V2lkdGggLSBjQW1vdW50VG9LZWVwV2hlblBhZ2luZyk7Ci0gICAgICAgIGlm
IChwYWdlU3RlcCA8IDApCi0gICAgICAgICAgICBwYWdlU3RlcCA9IGNsaWVudFdpZHRoOworICAg
ICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgoY2xpZW50V2lkdGggKiBjRnJhY3Rpb25Ub1N0ZXBXaGVu
UGFnaW5nLCAxLmYpOwogICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV9ob3Jpem9udGFsU2Nyb2xs
YmFyLT5mcmFtZVJlY3QoKSk7CiAgICAgICAgIEludFJlY3QgaEJhclJlY3QgPSBJbnRSZWN0KDAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIC0gbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSwKQEAgLTQ0OSw3ICs0NDcsNyBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIp
IHsKICAgICAgICAgaW50IGNsaWVudEhlaWdodCA9IHZpc2libGVIZWlnaHQoKTsKICAgICAgICAg
bV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0RW5hYmxlZChjb250ZW50c0hlaWdodCgpID4gY2xpZW50
SGVpZ2h0KTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gKGNsaWVudEhlaWdodCAtIGNBbW91bnRU
b0tlZXBXaGVuUGFnaW5nKTsKKyAgICAgICAgaW50IHBhZ2VTdGVwID0gbWF4KGNsaWVudEhlaWdo
dCAqIGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcsIDEuZik7CiAgICAgICAgIGlmIChwYWdlU3Rl
cCA8IDApCiAgICAgICAgICAgICBwYWdlU3RlcCA9IGNsaWVudEhlaWdodDsKICAgICAgICAgSW50
UmVjdCBvbGRSZWN0KG1fdmVydGljYWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKQEAgLTY3Myw3
ICs2NzEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OndoZWVsRXZlbnQoUGxhdGZvcm1XaGVlCiAgICAg
ICAgIGlmIChlLmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgewogICAg
ICAgICAgICAgQVNTRVJUKGRlbHRhWCA9PSAwKTsKICAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUg
PSBkZWx0YVkgPCAwOwotICAgICAgICAgICAgZGVsdGFZID0gbWF4KDAsIHZpc2libGVIZWlnaHQo
KSAtIGNBbW91bnRUb0tlZXBXaGVuUGFnaW5nKTsKKyAgICAgICAgICAgIGRlbHRhWSA9IG1heCh2
aXNpYmxlSGVpZ2h0KCkgKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nLCAxLmYpOwogICAgICAg
ICAgICAgaWYgKG5lZ2F0aXZlKQogICAgICAgICAgICAgICAgIGRlbHRhWSA9IC1kZWx0YVk7CiAg
ICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAkocmV2aXNpb24gNTMwODUpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw4IEBA
IGNsYXNzIFNjcm9sbGJhckNsaWVudDsKIGNsYXNzIFNjcm9sbGJhclRoZW1lOwogY2xhc3MgUGxh
dGZvcm1Nb3VzZUV2ZW50OwogCi0vLyBUaGVzZSBtYXRjaCB0aGUgbnVtYmVycyB3ZSB1c2Ugb3Zl
ciBpbiBXZWJLaXQgKFdlYkZyYW1lVmlldy5tKS4KLWNvbnN0IGludCBjU2Nyb2xsYmFyUGl4ZWxz
UGVyTGluZVN0ZXAgPSA0MDsKLWNvbnN0IGludCBjQW1vdW50VG9LZWVwV2hlblBhZ2luZyA9IDQw
OworY29uc3QgaW50IGNTY3JvbGxiYXJQaXhlbHNQZXJMaW5lU3RlcCA9IDQwOyAgLy8gVGhpcyBt
YXRjaGVzIHRoZSBudW1iZXIgd2UgdXNlIGluIFdlYkZyYW1lVmlldy5tbS4KK2NvbnN0IGZsb2F0
IGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcgPSAwLjg3NTsKIAogY2xhc3MgU2Nyb2xsYmFyIDog
cHVibGljIFdpZGdldCB7CiBwcm90ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3d4L1Nj
cm9sbFZpZXdXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxW
aWV3V3guY3BwCShyZXZpc2lvbiA1MzA4NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xs
Vmlld1d4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTUgKzk2LDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgICAgICBlbHNlIGlmIChzY3JvbGxUeXBlID09IHd4RVZUX1NDUk9MTFdJTl9Q
QUdFVVApIHsKICAgICAgICAgICAgIGlmIChob3JpeikgCi0gICAgICAgICAgICAgICAgcG9zLngg
LT0gbV9zY3JvbGxWaWV3LT52aXNpYmxlV2lkdGgoKSAtIGNBbW91bnRUb0tlZXBXaGVuUGFnaW5n
OworICAgICAgICAgICAgICAgIHBvcy54IC09IG1fc2Nyb2xsVmlldy0+dmlzaWJsZVdpZHRoKCkg
KiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nOwogICAgICAgICAgICAgZWxzZSAgICAgICAKLSAg
ICAgICAgICAgICAgICBwb3MueSAtPSBtX3Njcm9sbFZpZXctPnZpc2libGVIZWlnaHQoKSAtIGNB
bW91bnRUb0tlZXBXaGVuUGFnaW5nOworICAgICAgICAgICAgICAgIHBvcy55IC09IG1fc2Nyb2xs
Vmlldy0+dmlzaWJsZUhlaWdodCgpICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZzsKICAgICAg
ICAgfQogICAgICAgICBlbHNlIGlmIChzY3JvbGxUeXBlID09IHd4RVZUX1NDUk9MTFdJTl9QQUdF
RE9XTikgewogICAgICAgICAgICAgaWYgKGhvcml6KSAKLSAgICAgICAgICAgICAgICBwb3MueCAr
PSBtX3Njcm9sbFZpZXctPnZpc2libGVXaWR0aCgpIC0gY0Ftb3VudFRvS2VlcFdoZW5QYWdpbmc7
CisgICAgICAgICAgICAgICAgcG9zLnggKz0gbV9zY3JvbGxWaWV3LT52aXNpYmxlV2lkdGgoKSAq
IGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmc7CiAgICAgICAgICAgICBlbHNlICAgICAgIAotICAg
ICAgICAgICAgICAgIHBvcy55ICs9IG1fc2Nyb2xsVmlldy0+dmlzaWJsZUhlaWdodCgpIC0gY0Ft
b3VudFRvS2VlcFdoZW5QYWdpbmc7CisgICAgICAgICAgICAgICAgcG9zLnkgKz0gbV9zY3JvbGxW
aWV3LT52aXNpYmxlSGVpZ2h0KCkgKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nOwogICAgICAg
ICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBlLlNraXAoKTsKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDUzMDg1KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODkxLDggKzE4OTEsNyBA
QCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0CiAgICAgLy8gU2V0IHVw
IHRoZSByYW5nZSAoYW5kIHBhZ2Ugc3RlcC9saW5lIHN0ZXApLgogICAgIGlmIChtX2hCYXIpIHsK
ICAgICAgICAgaW50IGNsaWVudFdpZHRoID0gYm94LT5jbGllbnRXaWR0aCgpOwotICAgICAgICBp
bnQgcGFnZVN0ZXAgPSAoY2xpZW50V2lkdGggLSBjQW1vdW50VG9LZWVwV2hlblBhZ2luZyk7Ci0g
ICAgICAgIGlmIChwYWdlU3RlcCA8IDApIHBhZ2VTdGVwID0gY2xpZW50V2lkdGg7CisgICAgICAg
IGludCBwYWdlU3RlcCA9IG1heChjbGllbnRXaWR0aCAqIGNGcmFjdGlvblRvU3RlcFdoZW5QYWdp
bmcsIDEuZik7CiAgICAgICAgIG1faEJhci0+c2V0U3RlcHMoY1Njcm9sbGJhclBpeGVsc1Blckxp
bmVTdGVwLCBwYWdlU3RlcCk7CiAgICAgICAgIG1faEJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRX
aWR0aCwgbV9zY3JvbGxXaWR0aCk7CiAgICAgICAgIC8vIEV4cGxpY2l0bHkgc2V0IHRoZSBob3Jp
em9udGFsIHNjcm9sbCB2YWx1ZS4gIFRoaXMgZW5zdXJlcyB0aGF0IHdoZW4gYQpAQCAtMTkwNyw4
ICsxOTA2LDcgQEAgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dAogICAg
IH0KICAgICBpZiAobV92QmFyKSB7CiAgICAgICAgIGludCBjbGllbnRIZWlnaHQgPSBib3gtPmNs
aWVudEhlaWdodCgpOwotICAgICAgICBpbnQgcGFnZVN0ZXAgPSAoY2xpZW50SGVpZ2h0IC0gY0Ft
b3VudFRvS2VlcFdoZW5QYWdpbmcpOwotICAgICAgICBpZiAocGFnZVN0ZXAgPCAwKSBwYWdlU3Rl
cCA9IGNsaWVudEhlaWdodDsKKyAgICAgICAgaW50IHBhZ2VTdGVwID0gbWF4KGNsaWVudEhlaWdo
dCAqIGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcsIDEuZik7CiAgICAgICAgIG1fdkJhci0+c2V0
U3RlcHMoY1Njcm9sbGJhclBpeGVsc1BlckxpbmVTdGVwLCBwYWdlU3RlcCk7CiAgICAgICAgIG1f
dkJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIG1fc2Nyb2xsSGVpZ2h0KTsKICAgICB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46302</attachid>
            <date>2010-01-11 12:54:51 -0800</date>
            <delta_ts>2010-01-12 16:41:34 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>6612</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzA5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDEtMTEgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gc2Nyb2xsaW5nIGJ5IHBhZ2UsIGhvbGQgYmFjayAxLzh0aCBvZiB0aGUgdmlzaWJsZSBz
aXplIGluc3RlYWQgb2YKKyAgICAgICAgNDAgcHguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjU5NQorCisgICAgICAgICogZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vd3gvU2Nyb2xsVmlld1d4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNj
cm9sbFZpZXdQcml2YXRlOjpPblNjcm9sbFdpbkV2ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVT
Y3JvbGxJbmZvQWZ0ZXJMYXlvdXQpOgorCiAyMDEwLTAxLTExICBOaWtvbGFzIFppbW1lcm1hbm4g
IDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gQXR0ZW1wdCB0
byBmaXggd2luZG93cyBidWlsZHMsIGJ5IHJlbW92aW5nIHRoZSBuby1sb25nZXIgZXhpc3RhbnQg
SlNTVkdQb2ludExpc3RDdXN0b20uY3BwIGZyb20gSlNCaW5kaW5nc0FsbEluT25lLmNwcC4KSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDUzMDg1KQorKysgV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNyArMjYw
LDcgQEAgc3RhdGljIGludCB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKEZyYW1lKgogICAgIGlmICgh
KHN0eWxlLT5vdmVyZmxvd1koKSA9PSBPU0NST0xMIHx8IHN0eWxlLT5vdmVyZmxvd1koKSA9PSBP
QVVUTyB8fCByZW5kZXJlci0+aXNUZXh0QXJlYSgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
aW50IGhlaWdodCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2xpZW50SGVpZ2h0KCk7Ci0gICAg
cmV0dXJuIG1heCgoaGVpZ2h0ICsgMSkgLyAyLCBoZWlnaHQgLSBjQW1vdW50VG9LZWVwV2hlblBh
Z2luZyk7CisgICAgcmV0dXJuIG1heChoZWlnaHQgKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5n
LCAxLmYpOwogfQogCiBzdGF0aWMgUmVmUHRyPFJhbmdlPiB1bmlvbkRPTVJhbmdlcyhSYW5nZSog
YSwgUmFuZ2UqIGIpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDUzMDg1
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDI1LDkgKzQyNSw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAK
ICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0
aCA9IHZpc2libGVXaWR0aCgpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEVu
YWJsZWQoY29udGVudHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOwotICAgICAgICBpbnQgcGFnZVN0
ZXAgPSAoY2xpZW50V2lkdGggLSBjQW1vdW50VG9LZWVwV2hlblBhZ2luZyk7Ci0gICAgICAgIGlm
IChwYWdlU3RlcCA8IDApCi0gICAgICAgICAgICBwYWdlU3RlcCA9IGNsaWVudFdpZHRoOworICAg
ICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgoY2xpZW50V2lkdGggKiBjRnJhY3Rpb25Ub1N0ZXBXaGVu
UGFnaW5nLCAxLmYpOwogICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV9ob3Jpem9udGFsU2Nyb2xs
YmFyLT5mcmFtZVJlY3QoKSk7CiAgICAgICAgIEludFJlY3QgaEJhclJlY3QgPSBJbnRSZWN0KDAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIC0gbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSwKQEAgLTQ0OSw3ICs0NDcsNyBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIp
IHsKICAgICAgICAgaW50IGNsaWVudEhlaWdodCA9IHZpc2libGVIZWlnaHQoKTsKICAgICAgICAg
bV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0RW5hYmxlZChjb250ZW50c0hlaWdodCgpID4gY2xpZW50
SGVpZ2h0KTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gKGNsaWVudEhlaWdodCAtIGNBbW91bnRU
b0tlZXBXaGVuUGFnaW5nKTsKKyAgICAgICAgaW50IHBhZ2VTdGVwID0gbWF4KGNsaWVudEhlaWdo
dCAqIGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcsIDEuZik7CiAgICAgICAgIGlmIChwYWdlU3Rl
cCA8IDApCiAgICAgICAgICAgICBwYWdlU3RlcCA9IGNsaWVudEhlaWdodDsKICAgICAgICAgSW50
UmVjdCBvbGRSZWN0KG1fdmVydGljYWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKQEAgLTY3Myw3
ICs2NzEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OndoZWVsRXZlbnQoUGxhdGZvcm1XaGVlCiAgICAg
ICAgIGlmIChlLmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgewogICAg
ICAgICAgICAgQVNTRVJUKGRlbHRhWCA9PSAwKTsKICAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUg
PSBkZWx0YVkgPCAwOwotICAgICAgICAgICAgZGVsdGFZID0gbWF4KDAsIHZpc2libGVIZWlnaHQo
KSAtIGNBbW91bnRUb0tlZXBXaGVuUGFnaW5nKTsKKyAgICAgICAgICAgIGRlbHRhWSA9IG1heCh2
aXNpYmxlSGVpZ2h0KCkgKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nLCAxLmYpOwogICAgICAg
ICAgICAgaWYgKG5lZ2F0aXZlKQogICAgICAgICAgICAgICAgIGRlbHRhWSA9IC1kZWx0YVk7CiAg
ICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAkocmV2aXNpb24gNTMwODUpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw4IEBA
IGNsYXNzIFNjcm9sbGJhckNsaWVudDsKIGNsYXNzIFNjcm9sbGJhclRoZW1lOwogY2xhc3MgUGxh
dGZvcm1Nb3VzZUV2ZW50OwogCi0vLyBUaGVzZSBtYXRjaCB0aGUgbnVtYmVycyB3ZSB1c2Ugb3Zl
ciBpbiBXZWJLaXQgKFdlYkZyYW1lVmlldy5tKS4KLWNvbnN0IGludCBjU2Nyb2xsYmFyUGl4ZWxz
UGVyTGluZVN0ZXAgPSA0MDsKLWNvbnN0IGludCBjQW1vdW50VG9LZWVwV2hlblBhZ2luZyA9IDQw
OworY29uc3QgaW50IGNTY3JvbGxiYXJQaXhlbHNQZXJMaW5lU3RlcCA9IDQwOyAvLyBUaGlzIG1h
dGNoZXMgdGhlIG51bWJlciB3ZSB1c2UgaW4gV2ViRnJhbWVWaWV3Lm1tLgorY29uc3QgZmxvYXQg
Y0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZyA9IDAuODc1OwogCiBjbGFzcyBTY3JvbGxiYXIgOiBw
dWJsaWMgV2lkZ2V0IHsKIHByb3RlY3RlZDoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd3gvU2Ny
b2xsVmlld1d4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3d4L1Njcm9sbFZp
ZXdXeC5jcHAJKHJldmlzaW9uIDUzMDg1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxW
aWV3V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxNSArOTYsMTUgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHNjcm9sbFR5cGUgPT0gd3hFVlRfU0NST0xMV0lOX1BB
R0VVUCkgewogICAgICAgICAgICAgaWYgKGhvcml6KSAKLSAgICAgICAgICAgICAgICBwb3MueCAt
PSBtX3Njcm9sbFZpZXctPnZpc2libGVXaWR0aCgpIC0gY0Ftb3VudFRvS2VlcFdoZW5QYWdpbmc7
CisgICAgICAgICAgICAgICAgcG9zLnggLT0gbV9zY3JvbGxWaWV3LT52aXNpYmxlV2lkdGgoKSAq
IGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmc7CiAgICAgICAgICAgICBlbHNlICAgICAgIAotICAg
ICAgICAgICAgICAgIHBvcy55IC09IG1fc2Nyb2xsVmlldy0+dmlzaWJsZUhlaWdodCgpIC0gY0Ft
b3VudFRvS2VlcFdoZW5QYWdpbmc7CisgICAgICAgICAgICAgICAgcG9zLnkgLT0gbV9zY3JvbGxW
aWV3LT52aXNpYmxlSGVpZ2h0KCkgKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nOwogICAgICAg
ICB9CiAgICAgICAgIGVsc2UgaWYgKHNjcm9sbFR5cGUgPT0gd3hFVlRfU0NST0xMV0lOX1BBR0VE
T1dOKSB7CiAgICAgICAgICAgICBpZiAoaG9yaXopIAotICAgICAgICAgICAgICAgIHBvcy54ICs9
IG1fc2Nyb2xsVmlldy0+dmlzaWJsZVdpZHRoKCkgLSBjQW1vdW50VG9LZWVwV2hlblBhZ2luZzsK
KyAgICAgICAgICAgICAgICBwb3MueCArPSBtX3Njcm9sbFZpZXctPnZpc2libGVXaWR0aCgpICog
Y0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZzsKICAgICAgICAgICAgIGVsc2UgICAgICAgCi0gICAg
ICAgICAgICAgICAgcG9zLnkgKz0gbV9zY3JvbGxWaWV3LT52aXNpYmxlSGVpZ2h0KCkgLSBjQW1v
dW50VG9LZWVwV2hlblBhZ2luZzsKKyAgICAgICAgICAgICAgICBwb3MueSArPSBtX3Njcm9sbFZp
ZXctPnZpc2libGVIZWlnaHQoKSAqIGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmc7CiAgICAgICAg
IH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIGUuU2tpcCgpOwpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gNTMwODUpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OTEsOCArMTg5MSw3IEBA
IFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQKICAgICAvLyBTZXQgdXAg
dGhlIHJhbmdlIChhbmQgcGFnZSBzdGVwL2xpbmUgc3RlcCkuCiAgICAgaWYgKG1faEJhcikgewog
ICAgICAgICBpbnQgY2xpZW50V2lkdGggPSBib3gtPmNsaWVudFdpZHRoKCk7Ci0gICAgICAgIGlu
dCBwYWdlU3RlcCA9IChjbGllbnRXaWR0aCAtIGNBbW91bnRUb0tlZXBXaGVuUGFnaW5nKTsKLSAg
ICAgICAgaWYgKHBhZ2VTdGVwIDwgMCkgcGFnZVN0ZXAgPSBjbGllbnRXaWR0aDsKKyAgICAgICAg
aW50IHBhZ2VTdGVwID0gbWF4KGNsaWVudFdpZHRoICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2lu
ZywgMS5mKTsKICAgICAgICAgbV9oQmFyLT5zZXRTdGVwcyhjU2Nyb2xsYmFyUGl4ZWxzUGVyTGlu
ZVN0ZXAsIHBhZ2VTdGVwKTsKICAgICAgICAgbV9oQmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudFdp
ZHRoLCBtX3Njcm9sbFdpZHRoKTsKICAgICAgICAgLy8gRXhwbGljaXRseSBzZXQgdGhlIGhvcml6
b250YWwgc2Nyb2xsIHZhbHVlLiAgVGhpcyBlbnN1cmVzIHRoYXQgd2hlbiBhCkBAIC0xOTA3LDgg
KzE5MDYsNyBAQCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0CiAgICAg
fQogICAgIGlmIChtX3ZCYXIpIHsKICAgICAgICAgaW50IGNsaWVudEhlaWdodCA9IGJveC0+Y2xp
ZW50SGVpZ2h0KCk7Ci0gICAgICAgIGludCBwYWdlU3RlcCA9IChjbGllbnRIZWlnaHQgLSBjQW1v
dW50VG9LZWVwV2hlblBhZ2luZyk7Ci0gICAgICAgIGlmIChwYWdlU3RlcCA8IDApIHBhZ2VTdGVw
ID0gY2xpZW50SGVpZ2h0OworICAgICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgoY2xpZW50SGVpZ2h0
ICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZywgMS5mKTsKICAgICAgICAgbV92QmFyLT5zZXRT
dGVwcyhjU2Nyb2xsYmFyUGl4ZWxzUGVyTGluZVN0ZXAsIHBhZ2VTdGVwKTsKICAgICAgICAgbV92
QmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudEhlaWdodCwgbV9zY3JvbGxIZWlnaHQpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46411</attachid>
            <date>2010-01-12 16:41:34 -0800</date>
            <delta_ts>2010-01-14 18:00:15 -0800</delta_ts>
            <desc>patch v3</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>6613</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzA5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDEtMTEgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gc2Nyb2xsaW5nIGJ5IHBhZ2UsIGhvbGQgYmFjayAxLzh0aCBvZiB0aGUgdmlzaWJsZSBz
aXplIGluc3RlYWQgb2YKKyAgICAgICAgNDAgcHguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjU5NQorCisgICAgICAgICogZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vd3gvU2Nyb2xsVmlld1d4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNj
cm9sbFZpZXdQcml2YXRlOjpPblNjcm9sbFdpbkV2ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVT
Y3JvbGxJbmZvQWZ0ZXJMYXlvdXQpOgorCiAyMDEwLTAxLTExICBOaWtvbGFzIFppbW1lcm1hbm4g
IDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gQXR0ZW1wdCB0
byBmaXggd2luZG93cyBidWlsZHMsIGJ5IHJlbW92aW5nIHRoZSBuby1sb25nZXIgZXhpc3RhbnQg
SlNTVkdQb2ludExpc3RDdXN0b20uY3BwIGZyb20gSlNCaW5kaW5nc0FsbEluT25lLmNwcC4KSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDUzMDg1KQorKysgV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNyArMjYw
LDcgQEAgc3RhdGljIGludCB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKEZyYW1lKgogICAgIGlmICgh
KHN0eWxlLT5vdmVyZmxvd1koKSA9PSBPU0NST0xMIHx8IHN0eWxlLT5vdmVyZmxvd1koKSA9PSBP
QVVUTyB8fCByZW5kZXJlci0+aXNUZXh0QXJlYSgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
aW50IGhlaWdodCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2xpZW50SGVpZ2h0KCk7Ci0gICAg
cmV0dXJuIG1heCgoaGVpZ2h0ICsgMSkgLyAyLCBoZWlnaHQgLSBjQW1vdW50VG9LZWVwV2hlblBh
Z2luZyk7CisgICAgcmV0dXJuIG1heChoZWlnaHQgKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5n
LCAxLmYpOwogfQogCiBzdGF0aWMgUmVmUHRyPFJhbmdlPiB1bmlvbkRPTVJhbmdlcyhSYW5nZSog
YSwgUmFuZ2UqIGIpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDUzMDg1
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDI1LDkgKzQyNSw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAK
ICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0
aCA9IHZpc2libGVXaWR0aCgpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEVu
YWJsZWQoY29udGVudHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOwotICAgICAgICBpbnQgcGFnZVN0
ZXAgPSAoY2xpZW50V2lkdGggLSBjQW1vdW50VG9LZWVwV2hlblBhZ2luZyk7Ci0gICAgICAgIGlm
IChwYWdlU3RlcCA8IDApCi0gICAgICAgICAgICBwYWdlU3RlcCA9IGNsaWVudFdpZHRoOworICAg
ICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgoY2xpZW50V2lkdGggKiBjRnJhY3Rpb25Ub1N0ZXBXaGVu
UGFnaW5nLCAxLmYpOwogICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV9ob3Jpem9udGFsU2Nyb2xs
YmFyLT5mcmFtZVJlY3QoKSk7CiAgICAgICAgIEludFJlY3QgaEJhclJlY3QgPSBJbnRSZWN0KDAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIC0gbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSwKQEAgLTQ0OSw3ICs0NDcsNyBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIp
IHsKICAgICAgICAgaW50IGNsaWVudEhlaWdodCA9IHZpc2libGVIZWlnaHQoKTsKICAgICAgICAg
bV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0RW5hYmxlZChjb250ZW50c0hlaWdodCgpID4gY2xpZW50
SGVpZ2h0KTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gKGNsaWVudEhlaWdodCAtIGNBbW91bnRU
b0tlZXBXaGVuUGFnaW5nKTsKKyAgICAgICAgaW50IHBhZ2VTdGVwID0gbWF4KGNsaWVudEhlaWdo
dCAqIGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcsIDEuZik7CiAgICAgICAgIGlmIChwYWdlU3Rl
cCA8IDApCiAgICAgICAgICAgICBwYWdlU3RlcCA9IGNsaWVudEhlaWdodDsKICAgICAgICAgSW50
UmVjdCBvbGRSZWN0KG1fdmVydGljYWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKQEAgLTY3Myw3
ICs2NzEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OndoZWVsRXZlbnQoUGxhdGZvcm1XaGVlCiAgICAg
ICAgIGlmIChlLmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgewogICAg
ICAgICAgICAgQVNTRVJUKGRlbHRhWCA9PSAwKTsKICAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUg
PSBkZWx0YVkgPCAwOwotICAgICAgICAgICAgZGVsdGFZID0gbWF4KDAsIHZpc2libGVIZWlnaHQo
KSAtIGNBbW91bnRUb0tlZXBXaGVuUGFnaW5nKTsKKyAgICAgICAgICAgIGRlbHRhWSA9IG1heCh2
aXNpYmxlSGVpZ2h0KCkgKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nLCAxLmYpOwogICAgICAg
ICAgICAgaWYgKG5lZ2F0aXZlKQogICAgICAgICAgICAgICAgIGRlbHRhWSA9IC1kZWx0YVk7CiAg
ICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAkocmV2aXNpb24gNTMwODUpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw4IEBA
IGNsYXNzIFNjcm9sbGJhckNsaWVudDsKIGNsYXNzIFNjcm9sbGJhclRoZW1lOwogY2xhc3MgUGxh
dGZvcm1Nb3VzZUV2ZW50OwogCi0vLyBUaGVzZSBtYXRjaCB0aGUgbnVtYmVycyB3ZSB1c2Ugb3Zl
ciBpbiBXZWJLaXQgKFdlYkZyYW1lVmlldy5tKS4KLWNvbnN0IGludCBjU2Nyb2xsYmFyUGl4ZWxz
UGVyTGluZVN0ZXAgPSA0MDsKLWNvbnN0IGludCBjQW1vdW50VG9LZWVwV2hlblBhZ2luZyA9IDQw
OworY29uc3QgaW50IGNTY3JvbGxiYXJQaXhlbHNQZXJMaW5lU3RlcCA9IDQwOyAvLyBUaGlzIG1h
dGNoZXMgdGhlIG51bWJlciB3ZSB1c2UgaW4gV2ViRnJhbWVWaWV3Lm1tLgorY29uc3QgZmxvYXQg
Y0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZyA9IDAuODc1ZjsKIAogY2xhc3MgU2Nyb2xsYmFyIDog
cHVibGljIFdpZGdldCB7CiBwcm90ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3d4L1Nj
cm9sbFZpZXdXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxW
aWV3V3guY3BwCShyZXZpc2lvbiA1MzA4NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xs
Vmlld1d4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTUgKzk2LDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgICAgICBlbHNlIGlmIChzY3JvbGxUeXBlID09IHd4RVZUX1NDUk9MTFdJTl9Q
QUdFVVApIHsKICAgICAgICAgICAgIGlmIChob3JpeikgCi0gICAgICAgICAgICAgICAgcG9zLngg
LT0gbV9zY3JvbGxWaWV3LT52aXNpYmxlV2lkdGgoKSAtIGNBbW91bnRUb0tlZXBXaGVuUGFnaW5n
OworICAgICAgICAgICAgICAgIHBvcy54IC09IG1fc2Nyb2xsVmlldy0+dmlzaWJsZVdpZHRoKCkg
KiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nOwogICAgICAgICAgICAgZWxzZSAgICAgICAKLSAg
ICAgICAgICAgICAgICBwb3MueSAtPSBtX3Njcm9sbFZpZXctPnZpc2libGVIZWlnaHQoKSAtIGNB
bW91bnRUb0tlZXBXaGVuUGFnaW5nOworICAgICAgICAgICAgICAgIHBvcy55IC09IG1fc2Nyb2xs
Vmlldy0+dmlzaWJsZUhlaWdodCgpICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZzsKICAgICAg
ICAgfQogICAgICAgICBlbHNlIGlmIChzY3JvbGxUeXBlID09IHd4RVZUX1NDUk9MTFdJTl9QQUdF
RE9XTikgewogICAgICAgICAgICAgaWYgKGhvcml6KSAKLSAgICAgICAgICAgICAgICBwb3MueCAr
PSBtX3Njcm9sbFZpZXctPnZpc2libGVXaWR0aCgpIC0gY0Ftb3VudFRvS2VlcFdoZW5QYWdpbmc7
CisgICAgICAgICAgICAgICAgcG9zLnggKz0gbV9zY3JvbGxWaWV3LT52aXNpYmxlV2lkdGgoKSAq
IGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmc7CiAgICAgICAgICAgICBlbHNlICAgICAgIAotICAg
ICAgICAgICAgICAgIHBvcy55ICs9IG1fc2Nyb2xsVmlldy0+dmlzaWJsZUhlaWdodCgpIC0gY0Ft
b3VudFRvS2VlcFdoZW5QYWdpbmc7CisgICAgICAgICAgICAgICAgcG9zLnkgKz0gbV9zY3JvbGxW
aWV3LT52aXNpYmxlSGVpZ2h0KCkgKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nOwogICAgICAg
ICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBlLlNraXAoKTsKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDUzMDg1KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODkxLDggKzE4OTEsNyBA
QCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0CiAgICAgLy8gU2V0IHVw
IHRoZSByYW5nZSAoYW5kIHBhZ2Ugc3RlcC9saW5lIHN0ZXApLgogICAgIGlmIChtX2hCYXIpIHsK
ICAgICAgICAgaW50IGNsaWVudFdpZHRoID0gYm94LT5jbGllbnRXaWR0aCgpOwotICAgICAgICBp
bnQgcGFnZVN0ZXAgPSAoY2xpZW50V2lkdGggLSBjQW1vdW50VG9LZWVwV2hlblBhZ2luZyk7Ci0g
ICAgICAgIGlmIChwYWdlU3RlcCA8IDApIHBhZ2VTdGVwID0gY2xpZW50V2lkdGg7CisgICAgICAg
IGludCBwYWdlU3RlcCA9IG1heChjbGllbnRXaWR0aCAqIGNGcmFjdGlvblRvU3RlcFdoZW5QYWdp
bmcsIDEuZik7CiAgICAgICAgIG1faEJhci0+c2V0U3RlcHMoY1Njcm9sbGJhclBpeGVsc1Blckxp
bmVTdGVwLCBwYWdlU3RlcCk7CiAgICAgICAgIG1faEJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRX
aWR0aCwgbV9zY3JvbGxXaWR0aCk7CiAgICAgICAgIC8vIEV4cGxpY2l0bHkgc2V0IHRoZSBob3Jp
em9udGFsIHNjcm9sbCB2YWx1ZS4gIFRoaXMgZW5zdXJlcyB0aGF0IHdoZW4gYQpAQCAtMTkwNyw4
ICsxOTA2LDcgQEAgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dAogICAg
IH0KICAgICBpZiAobV92QmFyKSB7CiAgICAgICAgIGludCBjbGllbnRIZWlnaHQgPSBib3gtPmNs
aWVudEhlaWdodCgpOwotICAgICAgICBpbnQgcGFnZVN0ZXAgPSAoY2xpZW50SGVpZ2h0IC0gY0Ft
b3VudFRvS2VlcFdoZW5QYWdpbmcpOwotICAgICAgICBpZiAocGFnZVN0ZXAgPCAwKSBwYWdlU3Rl
cCA9IGNsaWVudEhlaWdodDsKKyAgICAgICAgaW50IHBhZ2VTdGVwID0gbWF4KGNsaWVudEhlaWdo
dCAqIGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcsIDEuZik7CiAgICAgICAgIG1fdkJhci0+c2V0
U3RlcHMoY1Njcm9sbGJhclBpeGVsc1BlckxpbmVTdGVwLCBwYWdlU3RlcCk7CiAgICAgICAgIG1f
dkJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIG1fc2Nyb2xsSGVpZ2h0KTsKICAgICB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46627</attachid>
            <date>2010-01-14 18:00:15 -0800</date>
            <delta_ts>2010-01-14 18:12:28 -0800</delta_ts>
            <desc>patch v4</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>8399</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzMxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDEtMTQgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gc2Nyb2xsaW5nIGJ5IHBhZ2UsIGhvbGQgYmFjayAxLzh0aCBvZiB0aGUgdmlzaWJsZSBz
aXplIGluc3RlYWQgb2YKKyAgICAgICAgNDAgcHguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjU5NQorCisgICAgICAgICogZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vd3gvU2Nyb2xsVmlld1d4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNj
cm9sbFZpZXdQcml2YXRlOjpPblNjcm9sbFdpbkV2ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVT
Y3JvbGxJbmZvQWZ0ZXJMYXlvdXQpOgorCiAyMDEwLTAxLTE0ICBQZXRlciBLYXN0aW5nICA8cGth
c3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRl
eDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gNTMxNzUpCisrKyBXZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MCw3ICsyNjAs
NyBAQCBzdGF0aWMgaW50IHZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UoRnJhbWUqCiAgICAgaWYgKCEo
c3R5bGUtPm92ZXJmbG93WSgpID09IE9TQ1JPTEwgfHwgc3R5bGUtPm92ZXJmbG93WSgpID09IE9B
VVRPIHx8IHJlbmRlcmVyLT5pc1RleHRBcmVhKCkpKQogICAgICAgICByZXR1cm4gMDsKICAgICBp
bnQgaGVpZ2h0ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jbGllbnRIZWlnaHQoKTsKLSAgICBy
ZXR1cm4gbWF4KChoZWlnaHQgKyAxKSAvIDIsIGhlaWdodCAtIGNBbW91bnRUb0tlZXBXaGVuUGFn
aW5nKTsKKyAgICByZXR1cm4gbWF4KGhlaWdodCAqIGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcs
IDEuZik7CiB9CiAKIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHVuaW9uRE9NUmFuZ2VzKFJhbmdlKiBh
LCBSYW5nZSogYikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gNTMxNzUp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MjUsOSArNDI1LDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAog
ICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50IGNsaWVudFdpZHRo
ID0gdmlzaWJsZVdpZHRoKCk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0RW5h
YmxlZChjb250ZW50c1dpZHRoKCkgPiBjbGllbnRXaWR0aCk7Ci0gICAgICAgIGludCBwYWdlU3Rl
cCA9IChjbGllbnRXaWR0aCAtIGNBbW91bnRUb0tlZXBXaGVuUGFnaW5nKTsKLSAgICAgICAgaWYg
KHBhZ2VTdGVwIDwgMCkKLSAgICAgICAgICAgIHBhZ2VTdGVwID0gY2xpZW50V2lkdGg7CisgICAg
ICAgIGludCBwYWdlU3RlcCA9IG1heChjbGllbnRXaWR0aCAqIGNGcmFjdGlvblRvU3RlcFdoZW5Q
YWdpbmcsIDEuZik7CiAgICAgICAgIEludFJlY3Qgb2xkUmVjdChtX2hvcml6b250YWxTY3JvbGxi
YXItPmZyYW1lUmVjdCgpKTsKICAgICAgICAgSW50UmVjdCBoQmFyUmVjdCA9IEludFJlY3QoMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KCkgLSBtX2hvcml6b250
YWxTY3JvbGxiYXItPmhlaWdodCgpLApAQCAtNDQ5LDcgKzQ0Nyw3IEBAIHZvaWQgU2Nyb2xsVmll
dzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAKICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhcikg
ewogICAgICAgICBpbnQgY2xpZW50SGVpZ2h0ID0gdmlzaWJsZUhlaWdodCgpOwogICAgICAgICBt
X3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzSGVpZ2h0KCkgPiBjbGllbnRI
ZWlnaHQpOwotICAgICAgICBpbnQgcGFnZVN0ZXAgPSAoY2xpZW50SGVpZ2h0IC0gY0Ftb3VudFRv
S2VlcFdoZW5QYWdpbmcpOworICAgICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgoY2xpZW50SGVpZ2h0
ICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZywgMS5mKTsKICAgICAgICAgaWYgKHBhZ2VTdGVw
IDwgMCkKICAgICAgICAgICAgIHBhZ2VTdGVwID0gY2xpZW50SGVpZ2h0OwogICAgICAgICBJbnRS
ZWN0IG9sZFJlY3QobV92ZXJ0aWNhbFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkpOwpAQCAtNjczLDcg
KzY3MSw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6d2hlZWxFdmVudChQbGF0Zm9ybVdoZWUKICAgICAg
ICAgaWYgKGUuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSB7CiAgICAg
ICAgICAgICBBU1NFUlQoZGVsdGFYID09IDApOwogICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9
IGRlbHRhWSA8IDA7Ci0gICAgICAgICAgICBkZWx0YVkgPSBtYXgoMCwgdmlzaWJsZUhlaWdodCgp
IC0gY0Ftb3VudFRvS2VlcFdoZW5QYWdpbmcpOworICAgICAgICAgICAgZGVsdGFZID0gbWF4KHZp
c2libGVIZWlnaHQoKSAqIGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcsIDEuZik7CiAgICAgICAg
ICAgICBpZiAobmVnYXRpdmUpCiAgICAgICAgICAgICAgICAgZGVsdGFZID0gLWRlbHRhWTsKICAg
ICAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCShyZXZpc2lvbiA1MzE3NSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDkgQEAg
Y2xhc3MgU2Nyb2xsYmFyQ2xpZW50OwogY2xhc3MgU2Nyb2xsYmFyVGhlbWU7CiBjbGFzcyBQbGF0
Zm9ybU1vdXNlRXZlbnQ7CiAKLS8vIFRoZXNlIG1hdGNoIHRoZSBudW1iZXJzIHdlIHVzZSBvdmVy
IGluIFdlYktpdCAoV2ViRnJhbWVWaWV3Lm0pLgorLy8gVGhlc2UgbWF0Y2ggdGhlIG51bWJlcnMg
d2UgdXNlIG92ZXIgaW4gV2ViS2l0IChXZWJGcmFtZVZpZXcubW0pLgogY29uc3QgaW50IGNTY3Jv
bGxiYXJQaXhlbHNQZXJMaW5lU3RlcCA9IDQwOwotY29uc3QgaW50IGNBbW91bnRUb0tlZXBXaGVu
UGFnaW5nID0gNDA7Citjb25zdCBmbG9hdCBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nID0gMC44
NzVmOwogCiBjbGFzcyBTY3JvbGxiYXIgOiBwdWJsaWMgV2lkZ2V0IHsKIHByb3RlY3RlZDoKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsVmlld1d4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL3d4L1Njcm9sbFZpZXdXeC5jcHAJKHJldmlzaW9uIDUzMTc1KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxWaWV3V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NiwxNSArOTYsMTUgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHNjcm9s
bFR5cGUgPT0gd3hFVlRfU0NST0xMV0lOX1BBR0VVUCkgewogICAgICAgICAgICAgaWYgKGhvcml6
KSAKLSAgICAgICAgICAgICAgICBwb3MueCAtPSBtX3Njcm9sbFZpZXctPnZpc2libGVXaWR0aCgp
IC0gY0Ftb3VudFRvS2VlcFdoZW5QYWdpbmc7CisgICAgICAgICAgICAgICAgcG9zLnggLT0gbV9z
Y3JvbGxWaWV3LT52aXNpYmxlV2lkdGgoKSAqIGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmc7CiAg
ICAgICAgICAgICBlbHNlICAgICAgIAotICAgICAgICAgICAgICAgIHBvcy55IC09IG1fc2Nyb2xs
Vmlldy0+dmlzaWJsZUhlaWdodCgpIC0gY0Ftb3VudFRvS2VlcFdoZW5QYWdpbmc7CisgICAgICAg
ICAgICAgICAgcG9zLnkgLT0gbV9zY3JvbGxWaWV3LT52aXNpYmxlSGVpZ2h0KCkgKiBjRnJhY3Rp
b25Ub1N0ZXBXaGVuUGFnaW5nOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHNjcm9sbFR5
cGUgPT0gd3hFVlRfU0NST0xMV0lOX1BBR0VET1dOKSB7CiAgICAgICAgICAgICBpZiAoaG9yaXop
IAotICAgICAgICAgICAgICAgIHBvcy54ICs9IG1fc2Nyb2xsVmlldy0+dmlzaWJsZVdpZHRoKCkg
LSBjQW1vdW50VG9LZWVwV2hlblBhZ2luZzsKKyAgICAgICAgICAgICAgICBwb3MueCArPSBtX3Nj
cm9sbFZpZXctPnZpc2libGVXaWR0aCgpICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZzsKICAg
ICAgICAgICAgIGVsc2UgICAgICAgCi0gICAgICAgICAgICAgICAgcG9zLnkgKz0gbV9zY3JvbGxW
aWV3LT52aXNpYmxlSGVpZ2h0KCkgLSBjQW1vdW50VG9LZWVwV2hlblBhZ2luZzsKKyAgICAgICAg
ICAgICAgICBwb3MueSArPSBtX3Njcm9sbFZpZXctPnZpc2libGVIZWlnaHQoKSAqIGNGcmFjdGlv
blRvU3RlcFdoZW5QYWdpbmc7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cmV0dXJuIGUuU2tpcCgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNp
b24gNTMxNzUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4OTUsOCArMTg5NSw3IEBAIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZv
QWZ0ZXJMYXlvdXQKICAgICAvLyBTZXQgdXAgdGhlIHJhbmdlIChhbmQgcGFnZSBzdGVwL2xpbmUg
c3RlcCkuCiAgICAgaWYgKG1faEJhcikgewogICAgICAgICBpbnQgY2xpZW50V2lkdGggPSBib3gt
PmNsaWVudFdpZHRoKCk7Ci0gICAgICAgIGludCBwYWdlU3RlcCA9IChjbGllbnRXaWR0aCAtIGNB
bW91bnRUb0tlZXBXaGVuUGFnaW5nKTsKLSAgICAgICAgaWYgKHBhZ2VTdGVwIDwgMCkgcGFnZVN0
ZXAgPSBjbGllbnRXaWR0aDsKKyAgICAgICAgaW50IHBhZ2VTdGVwID0gbWF4KGNsaWVudFdpZHRo
ICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZywgMS5mKTsKICAgICAgICAgbV9oQmFyLT5zZXRT
dGVwcyhjU2Nyb2xsYmFyUGl4ZWxzUGVyTGluZVN0ZXAsIHBhZ2VTdGVwKTsKICAgICAgICAgbV9o
QmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudFdpZHRoLCBtX3Njcm9sbFdpZHRoKTsKICAgICAgICAg
Ly8gRXhwbGljaXRseSBzZXQgdGhlIGhvcml6b250YWwgc2Nyb2xsIHZhbHVlLiAgVGhpcyBlbnN1
cmVzIHRoYXQgd2hlbiBhCkBAIC0xOTExLDggKzE5MTAsNyBAQCBSZW5kZXJMYXllcjo6dXBkYXRl
U2Nyb2xsSW5mb0FmdGVyTGF5b3V0CiAgICAgfQogICAgIGlmIChtX3ZCYXIpIHsKICAgICAgICAg
aW50IGNsaWVudEhlaWdodCA9IGJveC0+Y2xpZW50SGVpZ2h0KCk7Ci0gICAgICAgIGludCBwYWdl
U3RlcCA9IChjbGllbnRIZWlnaHQgLSBjQW1vdW50VG9LZWVwV2hlblBhZ2luZyk7Ci0gICAgICAg
IGlmIChwYWdlU3RlcCA8IDApIHBhZ2VTdGVwID0gY2xpZW50SGVpZ2h0OworICAgICAgICBpbnQg
cGFnZVN0ZXAgPSBtYXgoY2xpZW50SGVpZ2h0ICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZywg
MS5mKTsKICAgICAgICAgbV92QmFyLT5zZXRTdGVwcyhjU2Nyb2xsYmFyUGl4ZWxzUGVyTGluZVN0
ZXAsIHBhZ2VTdGVwKTsKICAgICAgICAgbV92QmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudEhlaWdo
dCwgbV9zY3JvbGxIZWlnaHQpOwogICAgIH0KSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzMxMCkKKysrIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAt
MDEtMTQgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gc2Nyb2xsaW5nIGJ5IHBh
Z2UsIGhvbGQgYmFjayAxLzh0aCBvZiB0aGUgdmlzaWJsZSBzaXplIGluc3RlYWQgb2YKKyAgICAg
ICAgNDAgcHguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjU5NQorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgt
W1dlYkZyYW1lVmlldyBfdmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2VdKToKKyAgICAgICAgKC1b
V2ViRnJhbWVWaWV3IF9ob3Jpem9udGFsUGFnZVNjcm9sbERpc3RhbmNlXSk6CisKIDIwMTAtMDEt
MTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0J
KHJldmlzaW9uIDUzMTc1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorY29uc3QgZmxvYXQgY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZyA9IDAuODc1ZjsKKwog
QGludGVyZmFjZSBOU1dpbmRvdyAoV2luZG93UHJpdmF0ZSkKIC0gKEJPT0wpX25lZWRzVG9SZXNl
dERyYWdNYXJnaW5zOwogLSAodm9pZClfc2V0TmVlZHNUb1Jlc2V0RHJhZ01hcmdpbnM6KEJPT0wp
czsKQEAgLTIwMCw5ICsyMDIsOCBAQCBlbnVtIHsKIAogLSAoZmxvYXQpX3ZlcnRpY2FsUGFnZVNj
cm9sbERpc3RhbmNlCiB7Ci0gICAgZmxvYXQgb3ZlcmxhcCA9IFtzZWxmIF92ZXJ0aWNhbEtleWJv
YXJkU2Nyb2xsRGlzdGFuY2VdOwogICAgIGZsb2F0IGhlaWdodCA9IFtbc2VsZiBfY29udGVudFZp
ZXddIGJvdW5kc10uc2l6ZS5oZWlnaHQ7Ci0gICAgcmV0dXJuIChoZWlnaHQgPCBvdmVybGFwKSA/
IGhlaWdodCAvIDIgOiBoZWlnaHQgLSBvdmVybGFwOworICAgIHJldHVybiBtYXgoaGVpZ2h0ICog
Y0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZywgMS5mKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lk
IGFkZFR5cGVzRnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBv
YmpDQ2xhc3MsIE5TQXJyYXkgKnN1cHBvcnRUeXBlcykKQEAgLTYxMyw5ICs2MTQsOCBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgYWRkVHlwZXNGcm9tQ2xhc3MoTlNNCiAKIC0gKGZsb2F0KV9ob3Jpem9u
dGFsUGFnZVNjcm9sbERpc3RhbmNlCiB7Ci0gICAgZmxvYXQgb3ZlcmxhcCA9IFtzZWxmIF9ob3Jp
em9udGFsS2V5Ym9hcmRTY3JvbGxEaXN0YW5jZV07CiAgICAgZmxvYXQgd2lkdGggPSBbW3NlbGYg
X2NvbnRlbnRWaWV3XSBib3VuZHNdLnNpemUud2lkdGg7Ci0gICAgcmV0dXJuICh3aWR0aCA8IG92
ZXJsYXApID8gd2lkdGggLyAyIDogd2lkdGggLSBvdmVybGFwOworICAgIHJldHVybiBtYXgod2lk
dGggKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nLCAxLmYpOwogfQogCiAtIChCT09MKV9wYWdl
VmVydGljYWxseTooQk9PTCl1cAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46630</attachid>
            <date>2010-01-14 18:12:28 -0800</date>
            <delta_ts>2010-01-22 14:00:18 -0800</delta_ts>
            <desc>patch v5</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>8621</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzMxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDEtMTQgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gc2Nyb2xsaW5nIGJ5IHBhZ2UsIGhvbGQgYmFjayAxLzh0aCBvZiB0aGUgdmlzaWJsZSBz
aXplIGluc3RlYWQgb2YKKyAgICAgICAgNDAgcHguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjU5NQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9P
UFMhKQorCisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFy
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9TY3JvbGxWaWV3
V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6U2Nyb2xsVmlld1ByaXZhdGU6
Ok9uU2Nyb2xsV2luRXZlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxh
eW91dCk6CisKIDIwMTAtMDEtMTQgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGF0dGVtcHRlZCBidWlsZCBmaXguCkluZGV4OiBXZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0
aW5nL0VkaXRvckNvbW1hbmQuY3BwCShyZXZpc2lvbiA1MzE3NSkKKysrIFdlYkNvcmUvZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDcgKzI2MCw3IEBAIHN0
YXRpYyBpbnQgdmVydGljYWxTY3JvbGxEaXN0YW5jZShGcmFtZSoKICAgICBpZiAoIShzdHlsZS0+
b3ZlcmZsb3dZKCkgPT0gT1NDUk9MTCB8fCBzdHlsZS0+b3ZlcmZsb3dZKCkgPT0gT0FVVE8gfHwg
cmVuZGVyZXItPmlzVGV4dEFyZWEoKSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGludCBoZWln
aHQgPSB0b1JlbmRlckJveChyZW5kZXJlciktPmNsaWVudEhlaWdodCgpOwotICAgIHJldHVybiBt
YXgoKGhlaWdodCArIDEpIC8gMiwgaGVpZ2h0IC0gY0Ftb3VudFRvS2VlcFdoZW5QYWdpbmcpOwor
ICAgIHJldHVybiBtYXgoaGVpZ2h0ICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZywgMS5mKTsK
IH0KIAogc3RhdGljIFJlZlB0cjxSYW5nZT4gdW5pb25ET01SYW5nZXMoUmFuZ2UqIGEsIFJhbmdl
KiBiKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCShyZXZpc2lvbiA1MzE3NSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNSw5ICs0
MjUsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAgICAgaWYg
KG1faG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBpbnQgY2xpZW50V2lkdGggPSB2aXNp
YmxlV2lkdGgoKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRFbmFibGVkKGNv
bnRlbnRzV2lkdGgoKSA+IGNsaWVudFdpZHRoKTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gKGNs
aWVudFdpZHRoIC0gY0Ftb3VudFRvS2VlcFdoZW5QYWdpbmcpOwotICAgICAgICBpZiAocGFnZVN0
ZXAgPCAwKQotICAgICAgICAgICAgcGFnZVN0ZXAgPSBjbGllbnRXaWR0aDsKKyAgICAgICAgaW50
IHBhZ2VTdGVwID0gbWF4KGNsaWVudFdpZHRoICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZywg
MS5mKTsKICAgICAgICAgSW50UmVjdCBvbGRSZWN0KG1faG9yaXpvbnRhbFNjcm9sbGJhci0+ZnJh
bWVSZWN0KCkpOwogICAgICAgICBJbnRSZWN0IGhCYXJSZWN0ID0gSW50UmVjdCgwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQoKSAtIG1faG9yaXpvbnRhbFNjcm9s
bGJhci0+aGVpZ2h0KCksCkBAIC00NDksNyArNDQ3LDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRh
dGVTY3JvbGxiYXJzKGNvbnN0IAogICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAg
ICAgIGludCBjbGllbnRIZWlnaHQgPSB2aXNpYmxlSGVpZ2h0KCk7CiAgICAgICAgIG1fdmVydGlj
YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29udGVudHNIZWlnaHQoKSA+IGNsaWVudEhlaWdodCk7
Ci0gICAgICAgIGludCBwYWdlU3RlcCA9IChjbGllbnRIZWlnaHQgLSBjQW1vdW50VG9LZWVwV2hl
blBhZ2luZyk7CisgICAgICAgIGludCBwYWdlU3RlcCA9IG1heChjbGllbnRIZWlnaHQgKiBjRnJh
Y3Rpb25Ub1N0ZXBXaGVuUGFnaW5nLCAxLmYpOwogICAgICAgICBpZiAocGFnZVN0ZXAgPCAwKQog
ICAgICAgICAgICAgcGFnZVN0ZXAgPSBjbGllbnRIZWlnaHQ7CiAgICAgICAgIEludFJlY3Qgb2xk
UmVjdChtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSk7CkBAIC02NzMsNyArNjcxLDcg
QEAgdm9pZCBTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KFBsYXRmb3JtV2hlZQogICAgICAgICBpZiAo
ZS5ncmFudWxhcml0eSgpID09IFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQpIHsKICAgICAgICAgICAg
IEFTU0VSVChkZWx0YVggPT0gMCk7CiAgICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFZ
IDwgMDsKLSAgICAgICAgICAgIGRlbHRhWSA9IG1heCgwLCB2aXNpYmxlSGVpZ2h0KCkgLSBjQW1v
dW50VG9LZWVwV2hlblBhZ2luZyk7CisgICAgICAgICAgICBkZWx0YVkgPSBtYXgodmlzaWJsZUhl
aWdodCgpICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZywgMS5mKTsKICAgICAgICAgICAgIGlm
IChuZWdhdGl2ZSkKICAgICAgICAgICAgICAgICBkZWx0YVkgPSAtZGVsdGFZOwogICAgICAgICB9
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgJKHJldmlzaW9uIDUzMTc1KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAsOCBAQCBjbGFzcyBT
Y3JvbGxiYXJDbGllbnQ7CiBjbGFzcyBTY3JvbGxiYXJUaGVtZTsKIGNsYXNzIFBsYXRmb3JtTW91
c2VFdmVudDsKIAotLy8gVGhlc2UgbWF0Y2ggdGhlIG51bWJlcnMgd2UgdXNlIG92ZXIgaW4gV2Vi
S2l0IChXZWJGcmFtZVZpZXcubSkuCiBjb25zdCBpbnQgY1Njcm9sbGJhclBpeGVsc1BlckxpbmVT
dGVwID0gNDA7Ci1jb25zdCBpbnQgY0Ftb3VudFRvS2VlcFdoZW5QYWdpbmcgPSA0MDsKK2NvbnN0
IGZsb2F0IGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcgPSAwLjg3NWY7CiAKIGNsYXNzIFNjcm9s
bGJhciA6IHB1YmxpYyBXaWRnZXQgewogcHJvdGVjdGVkOgpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS93eC9TY3JvbGxWaWV3V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd3gv
U2Nyb2xsVmlld1d4LmNwcAkocmV2aXNpb24gNTMxNzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3d4
L1Njcm9sbFZpZXdXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDE1ICs5NiwxNSBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoc2Nyb2xsVHlwZSA9PSB3eEVWVF9TQ1JP
TExXSU5fUEFHRVVQKSB7CiAgICAgICAgICAgICBpZiAoaG9yaXopIAotICAgICAgICAgICAgICAg
IHBvcy54IC09IG1fc2Nyb2xsVmlldy0+dmlzaWJsZVdpZHRoKCkgLSBjQW1vdW50VG9LZWVwV2hl
blBhZ2luZzsKKyAgICAgICAgICAgICAgICBwb3MueCAtPSBtX3Njcm9sbFZpZXctPnZpc2libGVX
aWR0aCgpICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZzsKICAgICAgICAgICAgIGVsc2UgICAg
ICAgCi0gICAgICAgICAgICAgICAgcG9zLnkgLT0gbV9zY3JvbGxWaWV3LT52aXNpYmxlSGVpZ2h0
KCkgLSBjQW1vdW50VG9LZWVwV2hlblBhZ2luZzsKKyAgICAgICAgICAgICAgICBwb3MueSAtPSBt
X3Njcm9sbFZpZXctPnZpc2libGVIZWlnaHQoKSAqIGNGcmFjdGlvblRvU3RlcFdoZW5QYWdpbmc7
CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoc2Nyb2xsVHlwZSA9PSB3eEVWVF9TQ1JPTExX
SU5fUEFHRURPV04pIHsKICAgICAgICAgICAgIGlmIChob3JpeikgCi0gICAgICAgICAgICAgICAg
cG9zLnggKz0gbV9zY3JvbGxWaWV3LT52aXNpYmxlV2lkdGgoKSAtIGNBbW91bnRUb0tlZXBXaGVu
UGFnaW5nOworICAgICAgICAgICAgICAgIHBvcy54ICs9IG1fc2Nyb2xsVmlldy0+dmlzaWJsZVdp
ZHRoKCkgKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nOwogICAgICAgICAgICAgZWxzZSAgICAg
ICAKLSAgICAgICAgICAgICAgICBwb3MueSArPSBtX3Njcm9sbFZpZXctPnZpc2libGVIZWlnaHQo
KSAtIGNBbW91bnRUb0tlZXBXaGVuUGFnaW5nOworICAgICAgICAgICAgICAgIHBvcy55ICs9IG1f
c2Nyb2xsVmlldy0+dmlzaWJsZUhlaWdodCgpICogY0ZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZzsK
ICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gZS5Ta2lwKCk7Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiA1MzE3NSkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5NSw4ICsx
ODk1LDcgQEAgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dAogICAgIC8v
IFNldCB1cCB0aGUgcmFuZ2UgKGFuZCBwYWdlIHN0ZXAvbGluZSBzdGVwKS4KICAgICBpZiAobV9o
QmFyKSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0aCA9IGJveC0+Y2xpZW50V2lkdGgoKTsKLSAg
ICAgICAgaW50IHBhZ2VTdGVwID0gKGNsaWVudFdpZHRoIC0gY0Ftb3VudFRvS2VlcFdoZW5QYWdp
bmcpOwotICAgICAgICBpZiAocGFnZVN0ZXAgPCAwKSBwYWdlU3RlcCA9IGNsaWVudFdpZHRoOwor
ICAgICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgoY2xpZW50V2lkdGggKiBjRnJhY3Rpb25Ub1N0ZXBX
aGVuUGFnaW5nLCAxLmYpOwogICAgICAgICBtX2hCYXItPnNldFN0ZXBzKGNTY3JvbGxiYXJQaXhl
bHNQZXJMaW5lU3RlcCwgcGFnZVN0ZXApOwogICAgICAgICBtX2hCYXItPnNldFByb3BvcnRpb24o
Y2xpZW50V2lkdGgsIG1fc2Nyb2xsV2lkdGgpOwogICAgICAgICAvLyBFeHBsaWNpdGx5IHNldCB0
aGUgaG9yaXpvbnRhbCBzY3JvbGwgdmFsdWUuICBUaGlzIGVuc3VyZXMgdGhhdCB3aGVuIGEKQEAg
LTE5MTEsOCArMTkxMCw3IEBAIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlv
dXQKICAgICB9CiAgICAgaWYgKG1fdkJhcikgewogICAgICAgICBpbnQgY2xpZW50SGVpZ2h0ID0g
Ym94LT5jbGllbnRIZWlnaHQoKTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gKGNsaWVudEhlaWdo
dCAtIGNBbW91bnRUb0tlZXBXaGVuUGFnaW5nKTsKLSAgICAgICAgaWYgKHBhZ2VTdGVwIDwgMCkg
cGFnZVN0ZXAgPSBjbGllbnRIZWlnaHQ7CisgICAgICAgIGludCBwYWdlU3RlcCA9IG1heChjbGll
bnRIZWlnaHQgKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nLCAxLmYpOwogICAgICAgICBtX3ZC
YXItPnNldFN0ZXBzKGNTY3JvbGxiYXJQaXhlbHNQZXJMaW5lU3RlcCwgcGFnZVN0ZXApOwogICAg
ICAgICBtX3ZCYXItPnNldFByb3BvcnRpb24oY2xpZW50SGVpZ2h0LCBtX3Njcm9sbEhlaWdodCk7
CiAgICAgfQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUzMzExKQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMS0xNCAgUGV0ZXIgS2FzdGlu
ZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hlbiBzY3JvbGxpbmcgYnkgcGFnZSwgaG9sZCBiYWNrIDEvOHRo
IG9mIHRoZSB2aXNpYmxlIHNpemUgaW5zdGVhZCBvZgorICAgICAgICA0MCBweC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNTk1CisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IF92ZXJ0
aWNhbFBhZ2VTY3JvbGxEaXN0YW5jZV0pOgorICAgICAgICAoLVtXZWJGcmFtZVZpZXcgaW5pdFdp
dGhGcmFtZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IF9ob3Jpem9udGFsUGFnZVNjcm9s
bERpc3RhbmNlXSk6CisKIDIwMTAtMDEtMTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZVZpZXcubW0JKHJldmlzaW9uIDUzMTc1KQorKysgV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAwLDkgKzIwMCw4IEBA
IGVudW0gewogCiAtIChmbG9hdClfdmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2UKIHsKLSAgICBm
bG9hdCBvdmVybGFwID0gW3NlbGYgX3ZlcnRpY2FsS2V5Ym9hcmRTY3JvbGxEaXN0YW5jZV07CiAg
ICAgZmxvYXQgaGVpZ2h0ID0gW1tzZWxmIF9jb250ZW50Vmlld10gYm91bmRzXS5zaXplLmhlaWdo
dDsKLSAgICByZXR1cm4gKGhlaWdodCA8IG92ZXJsYXApID8gaGVpZ2h0IC8gMiA6IGhlaWdodCAt
IG92ZXJsYXA7CisgICAgcmV0dXJuIG1heChoZWlnaHQgKiBjRnJhY3Rpb25Ub1N0ZXBXaGVuUGFn
aW5nLCAxLmYpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRkVHlwZXNGcm9tQ2xhc3MoTlNN
dXRhYmxlRGljdGlvbmFyeSAqYWxsVHlwZXMsIENsYXNzIG9iakNDbGFzcywgTlNBcnJheSAqc3Vw
cG9ydFR5cGVzKQpAQCAtMzQzLDcgKzM0Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBl
c0Zyb21DbGFzcyhOU00KICAgICBbc2Nyb2xsVmlldyBzZXRIYXNWZXJ0aWNhbFNjcm9sbGVyOk5P
XTsKICAgICBbc2Nyb2xsVmlldyBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsZXI6Tk9dOwogICAgIFtz
Y3JvbGxWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6TlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3
SGVpZ2h0U2l6YWJsZV07Ci0gICAgW3Njcm9sbFZpZXcgc2V0TGluZVNjcm9sbDo0MC4wZl07Cisg
ICAgW3Njcm9sbFZpZXcgc2V0TGluZVNjcm9sbDpjU2Nyb2xsYmFyUGl4ZWxzUGVyTGluZVN0ZXBd
OwogICAgIFtzZWxmIGFkZFN1YnZpZXc6c2Nyb2xsVmlld107CiAKICAgICAvLyBEb24ndCBjYWxs
IG91ciBvdmVycmlkZGVuIHZlcnNpb24gb2Ygc2V0TmV4dEtleVZpZXcgaGVyZTsgd2UgbmVlZCB0
byBtYWtlIHRoZSBzdGFuZGFyZCBOU1ZpZXcKQEAgLTYxMyw5ICs2MTIsOCBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgYWRkVHlwZXNGcm9tQ2xhc3MoTlNNCiAKIC0gKGZsb2F0KV9ob3Jpem9udGFsUGFn
ZVNjcm9sbERpc3RhbmNlCiB7Ci0gICAgZmxvYXQgb3ZlcmxhcCA9IFtzZWxmIF9ob3Jpem9udGFs
S2V5Ym9hcmRTY3JvbGxEaXN0YW5jZV07CiAgICAgZmxvYXQgd2lkdGggPSBbW3NlbGYgX2NvbnRl
bnRWaWV3XSBib3VuZHNdLnNpemUud2lkdGg7Ci0gICAgcmV0dXJuICh3aWR0aCA8IG92ZXJsYXAp
ID8gd2lkdGggLyAyIDogd2lkdGggLSBvdmVybGFwOworICAgIHJldHVybiBtYXgod2lkdGggKiBj
RnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nLCAxLmYpOwogfQogCiAtIChCT09MKV9wYWdlVmVydGlj
YWxseTooQk9PTCl1cAo=
</data>
<flag name="review"
          id="28932"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>