<?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>12087</bug_id>
          
          <creation_ts>2007-01-02 21:05:53 -0800</creation_ts>
          <short_desc>REGRESSION: Reproducible crash going back in Back/Forward history</short_desc>
          <delta_ts>2007-01-04 13:09:28 -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>History</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>37535</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-02 21:05:53 -0800</bug_when>
    <thetext>I&apos;m seeing intermittent (so far, two) crashes when going back in history using Cmd-Right-Arrow.  The first crash happened after only a few (less than 10) pages were loaded after a restart, while the second crash happened after dozens of page loads.  In both cases, I was reading webkit-unassigned archives, had clicked on a specific message, then hit Cmd-Right-Arrow to go back to the Jan 2007 by-date page.

Here&apos;s the first stack trace:

Exception:  EXC_BAD_ACCESS (0x0001)
Codes:      KERN_INVALID_ADDRESS (0x0001) at 0xe5895590

Thread 0 Crashed:
0   libobjc.A.dylib             0x90a564c7 objc_msgSend + 23
1   com.apple.WebKit            0x003d562f WebCore::RetainPtr&lt;WebDataSource&gt;::operator=(WebDataSource*) + 23 (RetainPtr.
h:128)
2   com.apple.WebKit            0x0039323f WebDocumentLoaderMac::attachToFrame() + 145 (WebDocumentLoaderMac.mm:57)
3   com.apple.WebCore           0x0136d33b WebCore::DocumentLoader::setFrame(WebCore::Frame*) + 119 (DocumentLoaderMac.m
m:399)
4   com.apple.WebCore           0x01392b67 WebCore::FrameLoader::setPolicyDocumentLoader(WebCore::DocumentLoader*) + 129
 (FrameLoader.cpp:1852)
5   com.apple.WebCore           0x01372d4c WebCore::FrameLoader::load(WebCore::DocumentLoader*, WebCore::FrameLoadType, 
WTF::PassRefPtr&lt;WebCore::FormState&gt;) + 312 (FrameLoaderMac.mm:272)
6   com.apple.WebCore           0x01397e83 WebCore::FrameLoader::loadItem(WebCore::HistoryItem*, WebCore::FrameLoadType)
 + 879 (FrameLoader.cpp:2796)
7   com.apple.WebCore           0x013986b9 WebCore::FrameLoader::recursiveGoToItem(WebCore::HistoryItem*, WebCore::Histo
ryItem*, WebCore::FrameLoadType) + 1031 (FrameLoader.cpp:2952)
8   com.apple.WebCore           0x013987a7 WebCore::FrameLoader::goToItem(WebCore::HistoryItem*, WebCore::FrameLoadType)
 + 205 (FrameLoader.cpp:2901)
9   com.apple.WebCore           0x0119e12c WebCore::Page::goToItem(WebCore::HistoryItem*, WebCore::FrameLoadType) + 308 
(Page.cpp:133)
10  com.apple.WebCore           0x0119e1c7 WebCore::Page::goBack() + 63 (Page.cpp:109)
11  com.apple.WebKit            0x00365af1 -[WebView goBack] + 23 (WebView.mm:2158)
12  com.apple.WebKit            0x0035c27d -[WebFrameView _goBack] + 57 (WebFrameView.mm:556)
13  com.apple.WebKit            0x0035d4bb -[WebFrameView keyDown:] + 2085 (WebFrameView.mm:809)
14  com.apple.AppKit            0x932f2b59 forwardMethod + 82
15  com.apple.AppKit            0x932f2b59 forwardMethod + 82
16  com.apple.AppKit            0x932f2b59 forwardMethod + 82
17  com.apple.AppKit            0x934483a1 -[NSControl keyDown:] + 122
18  com.apple.WebKit            0x003403a1 -[WebHTMLView keyDown:] + 553 (WebHTMLView.m:3410)
19  com.apple.AppKit            0x9335cbe1 -[NSWindow sendEvent:] + 7377
20  com.apple.Safari            0x000230c6 0x1000 + 139462
21  com.apple.AppKit            0x9334e350 -[NSApplication sendEvent:] + 5023
22  com.apple.Safari            0x00022c56 0x1000 + 138326
23  com.apple.AppKit            0x93278dfe -[NSApplication run] + 547
24  com.apple.AppKit            0x9326cd2f NSApplicationMain + 573
25  com.apple.Safari            0x0005f54a 0x1000 + 386378
26  com.apple.Safari            0x0005f471 0x1000 + 386161


Here&apos;s the second stack trace:

Exception:  EXC_BAD_ACCESS (0x0001)
Codes:      KERN_PROTECTION_FAILURE (0x0002) at 0x00000000

Thread 0 Crashed:
0   libobjc.A.dylib                	0x90a564c7 objc_msgSend + 23
1   com.apple.WebKit               	0x003d562f WebCore::RetainPtr&lt;WebDataSource&gt;::operator=(WebDataSource*) + 23 (RetainPtr.h:128)
2   com.apple.WebKit               	0x0039323f WebDocumentLoaderMac::attachToFrame() + 145 (WebDocumentLoaderMac.mm:57)
3   com.apple.WebCore              	0x0136d33b WebCore::DocumentLoader::setFrame(WebCore::Frame*) + 119 (DocumentLoaderMac.mm:399)
4   com.apple.WebCore              	0x01392b67 WebCore::FrameLoader::setPolicyDocumentLoader(WebCore::DocumentLoader*) + 129 (FrameLoader.cpp:1852)
5   com.apple.WebCore              	0x01372d4c WebCore::FrameLoader::load(WebCore::DocumentLoader*, WebCore::FrameLoadType, WTF::PassRefPtr&lt;WebCore::FormState&gt;) + 312 (FrameLoaderMac.mm:272)
6   com.apple.WebCore              	0x01397e83 WebCore::FrameLoader::loadItem(WebCore::HistoryItem*, WebCore::FrameLoadType) + 879 (FrameLoader.cpp:2796)
7   com.apple.WebCore              	0x013986b9 WebCore::FrameLoader::recursiveGoToItem(WebCore::HistoryItem*, WebCore::HistoryItem*, WebCore::FrameLoadType) + 1031 (FrameLoader.cpp:2952)
8   com.apple.WebCore              	0x013987a7 WebCore::FrameLoader::goToItem(WebCore::HistoryItem*, WebCore::FrameLoadType) + 205 (FrameLoader.cpp:2901)
9   com.apple.WebCore              	0x0119e12c WebCore::Page::goToItem(WebCore::HistoryItem*, WebCore::FrameLoadType) + 308 (Page.cpp:133)
10  com.apple.WebCore              	0x0119e1c7 WebCore::Page::goBack() + 63 (Page.cpp:109)
11  com.apple.WebKit               	0x00365af1 -[WebView goBack] + 23 (WebView.mm:2158)
12  com.apple.WebKit               	0x0035c27d -[WebFrameView _goBack] + 57 (WebFrameView.mm:556)
13  com.apple.WebKit               	0x0035d4bb -[WebFrameView keyDown:] + 2085 (WebFrameView.mm:809)
14  com.apple.AppKit               	0x932f2b59 forwardMethod + 82
15  com.apple.AppKit               	0x932f2b59 forwardMethod + 82
16  com.apple.AppKit               	0x932f2b59 forwardMethod + 82
17  com.apple.AppKit               	0x934483a1 -[NSControl keyDown:] + 122
18  com.apple.WebKit               	0x003403a1 -[WebHTMLView keyDown:] + 553 (WebHTMLView.m:3410)
19  com.apple.AppKit               	0x9335cbe1 -[NSWindow sendEvent:] + 7377
20  com.apple.Safari               	0x000230c6 0x1000 + 139462
21  com.apple.AppKit               	0x9334e350 -[NSApplication sendEvent:] + 5023
22  com.apple.Safari               	0x00022c56 0x1000 + 138326
23  com.apple.AppKit               	0x93278dfe -[NSApplication run] + 547
24  com.apple.AppKit               	0x9326cd2f NSApplicationMain + 573
25  com.apple.Safari               	0x0005f54a 0x1000 + 386378
26  com.apple.Safari               	0x0005f471 0x1000 + 386161

Both crashes occurred on a locally-built debug build of WebKit r18541 with Safari 2.0.4 (419.3) on Mac OS X 10.4.8 (8N1037).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37463</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-02 21:25:49 -0800</bug_when>
    <thetext>To test, try this (no guarantees):

1. Open URL:  http://lists.macosforge.org/pipermail/webkit-unassigned/2007-January/date.html
2. Click message URL.
3. Hit Cmd-Right-Arrow.
4. Repeat Steps 2-3 on new messages until crash.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37261</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-03 21:04:20 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; To test, try this (no guarantees):
&gt; 
&gt; 1. Open URL: 
&gt; http://lists.macosforge.org/pipermail/webkit-unassigned/2007-January/date.html
&gt; 2. Click message URL.
&gt; 3. Hit Cmd-LEFT-Arrow.
&gt; 4. Repeat Steps 2-3 on new messages until crash.

Sorry, Step 3 should be Cmd-LEFT-Arrow to go back one page, not Cmd-Right-Arrow.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37263</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2007-01-03 21:18:50 -0800</bug_when>
    <thetext>Herewego, 100% repro steps
1. Open URL: 
http://lists.macosforge.org/pipermail/webkit-unassigned/2007-January/date.html
2. Click 1st message URL.
3. Hit Cmd-LEFT-Arrow.
4. Click 2nd message URL
5. Wait on this page - hands off your computer! - for about 5 or 6 seconds
6. Hit Cmd-LEFT-Arrow
7. Crash!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37264</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2007-01-03 21:31:43 -0800</bug_when>
    <thetext>A fuller backtrace at the top shows - 
#0	0x90a554c7 in objc_msgSend
#1	0x162704c0 in ??
#2	0x004d758b in WebCore::RetainPtr&lt;WebDataSource&gt;::operator= at RetainPtr.h:127
#3	0x00494149 in WebDocumentLoaderMac::attachToFrame at WebDocumentLoaderMac.mm:56
#4	0x01370d83 in WebCore::DocumentLoader::setFrame at DocumentLoaderMac.mm:398

Seems to be messaging an already-dealloced objc object.

bdash helped confirm this via Zombie mode, giving us -
#0	0x926d89a1 in -[_NSZombie retain]
#1	0x9080e1af in CFRetain
#2	0x004d758b in WebCore::RetainPtr&lt;WebDataSource&gt;::operator= at RetainPtr.h:127
#3	0x00494149 in WebDocumentLoaderMac::attachToFrame at WebDocumentLoaderMac.mm:56
#4	0x01370d83 in WebCore::DocumentLoader::setFrame at DocumentLoaderMac.mm:398

A little more exploring tonite, then I hafta go home  ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37223</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2007-01-03 21:34:43 -0800</bug_when>
    <thetext>Cmd-left-arrow is a red herring.  David only noticed this and gets hit by it because using that shortcut while browsing lists of links helps this misbehavior come out.  If you follow my 100% repro steps but click on the back button for the last step instead of cmd-left-arrow, the result is the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37222</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-01-03 23:11:49 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Herewego, 100% repro steps
&gt; 1. Open URL: 
&gt; http://lists.macosforge.org/pipermail/webkit-unassigned/2007-January/date.html
&gt; 2. Click 1st message URL.
&gt; 3. Hit Cmd-LEFT-Arrow.
&gt; 4. Click 2nd message URL
&gt; 5. Wait on this page - hands off your computer! - for about 5 or 6 seconds
&gt; 6. Hit Cmd-LEFT-Arrow
&gt; 7. Crash!
&gt; 

Makes me think this has the same root cause as bug 11675. See the third paragraph in bug 11675 comment #4. Looks like something is being &quot;reused&quot; despite having been &quot;finalized&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37199</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-01-04 00:28:41 -0800</bug_when>
    <thetext>Yeah, this is the same pattern as bug 11675. The &quot;reused&quot; object is a WebDocumentLoaderMac, whose m_detachedDataSource points to a released data source. The data source is released when the WebHTMLView is closed. 

setDocumentViewFromPageCache used to rely on the pageCache holding (and retaining) the data source directly. Now it is held indirectly by the pageCache via the DocumentLoader, however the latter does not retain.

I&apos;m not sure why m_detachedDataSource in WebDocumentLoaderMac is not retained (can&apos;t see how it could lead to a retain cycle), so changing this might be a possible fix. However, I still don&apos;t like the fact that HistoryItem::setHasPageCache doesn&apos;t resurrect an existing-but-scheduled-for-release pageCache, but instead creates a new one. It seems unnecessarily risky to have two pageCache objects for a single HistoryItem at a point in time (the new one and the old one scheduled for release), and I don&apos;t see any benefit in doing things this way. I think it is also the only reason that WebViews are required to support the &quot;reopening&quot; behavior, which is not trivial to get right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37183</commentid>
    <comment_count>8</comment_count>
      <attachid>12210</attachid>
    <who name="">mitz</who>
    <bug_when>2007-01-04 02:11:07 -0800</bug_when>
    <thetext>Created attachment 12210
Make PageCaches resurrect-able

As I said, I think this approach would confine the &quot;reuse&quot; or &quot;resurrection&quot; problem to HistoryItem, where it is quite manageable, and allow other objects to continue with their normal life cycle which does not necessarily support &quot;reuse&quot;. Note that this patch does not mean &quot;instead of reusing, throw away objects and make new ones&quot;, but rather &quot;before making something new, see if you can find something old in the trash&quot; :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37177</commentid>
    <comment_count>9</comment_count>
      <attachid>12211</attachid>
    <who name="">mitz</who>
    <bug_when>2007-01-04 02:20:16 -0800</bug_when>
    <thetext>Created attachment 12211
Make PageCaches resurrect-able

Corrected style. See comment #8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37141</commentid>
    <comment_count>10</comment_count>
      <attachid>12211</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2007-01-04 10:55:11 -0800</bug_when>
    <thetext>Comment on attachment 12211
Make PageCaches resurrect-able

Great patch!  Mitz and I discussed some changes on IRC that he&apos;s cooking up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37142</commentid>
    <comment_count>11</comment_count>
      <attachid>12211</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2007-01-04 10:56:36 -0800</bug_when>
    <thetext>Comment on attachment 12211
Make PageCaches resurrect-able

s/r-/r+/
I trust mitz to make the changes we discussed  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37131</commentid>
    <comment_count>12</comment_count>
      <attachid>12220</attachid>
    <who name="">mitz</who>
    <bug_when>2007-01-04 11:23:23 -0800</bug_when>
    <thetext>Created attachment 12220
Make PageCaches resurrect-able

Did some renaming and rolled closeObjectsInPendingPageCaches() into releaseAllPendingPageCaches() (couldn&apos;t rolled the latter into releasePageCachesOrReschedule() since it&apos;s also called directly from BackForwardList). Added change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37123</commentid>
    <comment_count>13</comment_count>
      <attachid>12220</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2007-01-04 11:30:12 -0800</bug_when>
    <thetext>Comment on attachment 12220
Make PageCaches resurrect-able

Do it! 

r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37105</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2007-01-04 13:09:28 -0800</bug_when>
    <thetext>Committed in r18588</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12210</attachid>
            <date>2007-01-04 02:11:07 -0800</date>
            <delta_ts>2007-01-04 02:20:16 -0800</delta_ts>
            <desc>Make PageCaches resurrect-able</desc>
            <filename>12087_r0.patch</filename>
            <type>text/plain</type>
            <size>6671</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAkocmV2aXNpb24gMTg1NzQpCisrKyBXZWJDb3Jl
L2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBA
IHZvaWQgKCpub3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQpKCkgPSBkZWYKIAogSGlzdG9yeUl0ZW06
Okhpc3RvcnlJdGVtKCkKICAgICA6IG1fbGFzdFZpc2l0ZWRUaW1lKDApCisgICAgLCBtX3BhZ2VD
YWNoZUlzUGVuZGluZ1JlbGVhc2UoZmFsc2UpCiAgICAgLCBtX2lzVGFyZ2V0SXRlbShmYWxzZSkK
ICAgICAsIG1fYWx3YXlzQXR0ZW1wdFRvVXNlUGFnZUNhY2hlKGZhbHNlKQogICAgICwgbV92aXNp
dENvdW50KDApCkBAIC01NCw2ICs1NSw3IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25z
dCBTdHJpbmcmIHUKICAgICAsIG1fb3JpZ2luYWxVUkxTdHJpbmcodXJsU3RyaW5nKQogICAgICwg
bV90aXRsZSh0aXRsZSkKICAgICAsIG1fbGFzdFZpc2l0ZWRUaW1lKHRpbWUpCisgICAgLCBtX3Bh
Z2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UoZmFsc2UpCiAgICAgLCBtX2lzVGFyZ2V0SXRlbShmYWxz
ZSkKICAgICAsIG1fYWx3YXlzQXR0ZW1wdFRvVXNlUGFnZUNhY2hlKGZhbHNlKQogICAgICwgbV92
aXNpdENvdW50KDApCkBAIC02Niw2ICs2OCw3IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShj
b25zdCBLVVJMJiB1cmwKICAgICAsIG1fb3JpZ2luYWxVUkxTdHJpbmcodXJsLnVybCgpKQogICAg
ICwgbV90aXRsZSh0aXRsZSkKICAgICAsIG1fbGFzdFZpc2l0ZWRUaW1lKDApCisgICAgLCBtX3Bh
Z2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UoZmFsc2UpCiAgICAgLCBtX2lzVGFyZ2V0SXRlbShmYWxz
ZSkKICAgICAsIG1fYWx3YXlzQXR0ZW1wdFRvVXNlUGFnZUNhY2hlKGZhbHNlKQogICAgICwgbV92
aXNpdENvdW50KDApCkBAIC04MCw2ICs4Myw3IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShj
b25zdCBLVVJMJiB1cmwKICAgICAsIG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fdGl0bGUodGl0
bGUpCiAgICAgLCBtX2xhc3RWaXNpdGVkVGltZSgwKQorICAgICwgbV9wYWdlQ2FjaGVJc1BlbmRp
bmdSZWxlYXNlKGZhbHNlKQogICAgICwgbV9pc1RhcmdldEl0ZW0oZmFsc2UpCiAgICAgLCBtX2Fs
d2F5c0F0dGVtcHRUb1VzZVBhZ2VDYWNoZShmYWxzZSkKICAgICAsIG1fdmlzaXRDb3VudCgwKQpA
QCAtMTAzLDYgKzEwNyw3IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBIaXN0b3J5
SXQKICAgICAsIG1fbGFzdFZpc2l0ZWRUaW1lKGl0ZW0ubV9sYXN0VmlzaXRlZFRpbWUpCiAgICAg
LCBtX3Njcm9sbFBvaW50KGl0ZW0ubV9zY3JvbGxQb2ludCkKICAgICAsIG1fc3ViSXRlbXMoaXRl
bS5tX3N1Ykl0ZW1zLnNpemUoKSkKKyAgICAsIG1fcGFnZUNhY2hlSXNQZW5kaW5nUmVsZWFzZShm
YWxzZSkKICAgICAsIG1faXNUYXJnZXRJdGVtKGl0ZW0ubV9pc1RhcmdldEl0ZW0pCiAgICAgLCBt
X2Fsd2F5c0F0dGVtcHRUb1VzZVBhZ2VDYWNoZShpdGVtLm1fYWx3YXlzQXR0ZW1wdFRvVXNlUGFn
ZUNhY2hlKQogICAgICwgbV92aXNpdENvdW50KGl0ZW0ubV92aXNpdENvdW50KQpAQCAtMTI3LDkg
KzEzMiwxMiBAQCB2b2lkIEhpc3RvcnlJdGVtOjpzZXRIYXNQYWdlQ2FjaGUoYm9vbCBoCiB7CiAg
ICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVQYWdlQ2FjaGUgLSBIaXN0b3J5SXRlbSAlcCBzZXR0
aW5nIGhhcyBwYWdlIGNhY2hlIHRvICVzIiwgdGhpcywgaGFzQ2FjaGUgPyAiVFJVRSIgOiAiRkFM
U0UiICk7CiAgICAgICAgIAotICAgIGlmIChoYXNDYWNoZSAmJiAhbV9wYWdlQ2FjaGUpCi0gICAg
ICAgIG1fcGFnZUNhY2hlID0gbmV3IFBhZ2VDYWNoZTsKLSAgICBpZiAoIWhhc0NhY2hlICYmIG1f
cGFnZUNhY2hlKQorICAgIGlmIChoYXNDYWNoZSkgeworICAgICAgICBpZiAoIW1fcGFnZUNhY2hl
KQorICAgICAgICAgICAgbV9wYWdlQ2FjaGUgPSBuZXcgUGFnZUNhY2hlOworICAgICAgICBlbHNl
IGlmIChtX3BhZ2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UpCisgICAgICAgICAgICBjYW5jZWxSZWxl
YXNlKCk7CisgICAgfSBlbHNlIGlmIChtX3BhZ2VDYWNoZSkKICAgICAgICAgc2NoZWR1bGVSZWxl
YXNlKCk7CiB9CiAKQEAgLTM1Myw2ICszNjEsOCBAQCBIaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06
OnRhcmdldEl0ZW0oKQogCiBQYWdlQ2FjaGUqIEhpc3RvcnlJdGVtOjpwYWdlQ2FjaGUoKQogewor
ICAgIGlmIChtX3BhZ2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UpCisgICAgICAgIHJldHVybiAwOwog
ICAgIHJldHVybiBtX3BhZ2VDYWNoZS5nZXQoKTsKIH0KIApAQCAtNDI2LDEzICs0MzYsMTMgQEAg
c3RhdGljIEhpc3RvcnlJdGVtVGltZXImIHRpbWVyKCkKICAgICByZXR1cm4gaGlzdG9yeUl0ZW1U
aW1lcjsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWZQdHI8UGFnZUNhY2hlPiA+JiBwZW5kaW5nUGFn
ZUNhY2hlVG9SZWxlYXNlKCkKK3N0YXRpYyBIYXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4gPiYg
aXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpCiB7CiAgICAgLy8gV2Uga2VlcCB0
aGlzIG9uIHRoZSBoZWFwIGJlY2F1c2Ugb3RoZXJ3aXNlLCBhdCBhcHAgc2h1dGRvd24sIHdlIHJ1
biBpbnRvIHRoZSAic3RhdGljIGRlc3RydWN0aW9uIG9yZGVyIGZpYXNjbyIgCiAgICAgLy8gd2hl
cmUgdGhlIHZlY3RvciBpcyB0b3JuIGRvd24sIHRoZSBQYWdlQ2FjaGVzIGRlc3Ryb3llZCwgYW5k
IGFsbCBoYXZvayBtYXkgYnJlYWsgbG9vc2UuICBJbnN0ZWFkLCB3ZSBqdXN0IGxlYWsgYXQgc2h1
dGRvd24KICAgICAvLyBzaW5jZSBub3RoaW5nIGhlcmUgcGVyc2lzdHMKLSAgICBzdGF0aWMgVmVj
dG9yPFJlZlB0cjxQYWdlQ2FjaGU+ID4qIHBlbmRpbmdQYWdlQ2FjaGVUb1JlbGVhc2UgPSBuZXcg
VmVjdG9yPFJlZlB0cjxQYWdlQ2FjaGU+ID47Ci0gICAgcmV0dXJuICpwZW5kaW5nUGFnZUNhY2hl
VG9SZWxlYXNlOworICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4gPiogaXRl
bXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSA9IG5ldyBIYXNoU2V0PFJlZlB0cjxIaXN0
b3J5SXRlbT4gPjsKKyAgICByZXR1cm4gKml0ZW1zV2l0aFBlbmRpbmdQYWdlQ2FjaGVUb1JlbGVh
c2U7CiB9CiAKIHZvaWQgSGlzdG9yeUl0ZW06OnJlbGVhc2VQYWdlQ2FjaGUoKQpAQCAtNDQyLDI4
ICs0NTIsMzcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6cmVsZWFzZVBhZ2VDYWNoZSgpCiAgICAgCiAg
ICAgLy8gRklYTUU6IFRoaXMgc2l6ZSBvZiA0MiBwZW5kaW5nIGNhY2hlcyB0byByZWxlYXNlIHNl
ZW1zIGF3ZnVsbHkgYXJiaXRyYXJ5CiAgICAgLy8gV29uZGVyIGlmIGFueW9uZSBrbm93cyB0aGUg
cmF0aW9uYWxpemF0aW9uCi0gICAgaWYgKCh1c2VyRGVsdGEgPCAwLjUgfHwgbG9hZERlbHRhIDwg
MS4yNSkgJiYgcGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpLnNpemUoKSA8IDQyKSB7Ci0gICAg
ICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlUGFnZUNhY2hlOiBQb3N0cG9uaW5nIHJlbGVhc2VQ
YWdlQ2FjaGUoKSAtICVmIHNpbmNlIGxhc3QgbG9hZCwgJWYgc2luY2UgbGFzdCBpbnB1dCwgJWkg
b2JqZWN0cyBwZW5kaW5nIHJlbGVhc2UiLCBsb2FkRGVsdGEsIHVzZXJEZWx0YSwgcGVuZGluZ1Bh
Z2VDYWNoZVRvUmVsZWFzZSgpLnNpemUoKSk7CisgICAgaWYgKCh1c2VyRGVsdGEgPCAwLjUgfHwg
bG9hZERlbHRhIDwgMS4yNSkgJiYgaXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgp
LnNpemUoKSA8IDQyKSB7CisgICAgICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlUGFnZUNhY2hl
OiBQb3N0cG9uaW5nIHJlbGVhc2VQYWdlQ2FjaGUoKSAtICVmIHNpbmNlIGxhc3QgbG9hZCwgJWYg
c2luY2UgbGFzdCBpbnB1dCwgJWkgb2JqZWN0cyBwZW5kaW5nIHJlbGVhc2UiLCBsb2FkRGVsdGEs
IHVzZXJEZWx0YSwgaXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpLnNpemUoKSk7
CiAgICAgICAgIHRpbWVyKCkuc2NoZWR1bGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlUGFnZUNhY2hlOiBSZWxlYXNpbmcgcGFnZSBjYWNo
ZXMgLSAlZiBzZWNvbmRzIHNpbmNlIGxhc3QgbG9hZCwgJWYgc2luY2UgbGFzdCBpbnB1dCwgJWkg
b2JqZWN0cyBwZW5kaW5nIHJlbGVhc2UiLCBsb2FkRGVsdGEsIHVzZXJEZWx0YSwgcGVuZGluZ1Bh
Z2VDYWNoZVRvUmVsZWFzZSgpLnNpemUoKSk7CisgICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVQ
YWdlQ2FjaGU6IFJlbGVhc2luZyBwYWdlIGNhY2hlcyAtICVmIHNlY29uZHMgc2luY2UgbGFzdCBs
b2FkLCAlZiBzaW5jZSBsYXN0IGlucHV0LCAlaSBvYmplY3RzIHBlbmRpbmcgcmVsZWFzZSIsIGxv
YWREZWx0YSwgdXNlckRlbHRhLCBpdGVtc1dpdGhQZW5kaW5nUGFnZUNhY2hlVG9SZWxlYXNlKCku
c2l6ZSgpKTsKICAgICByZWxlYXNlQWxsUGVuZGluZ1BhZ2VDYWNoZXMoKTsKIH0KIAordm9pZCBI
aXN0b3J5SXRlbTo6ZmluaXNoUmVsZWFzaW5nUGFnZUNhY2hlKCkKK3sKKyAgICBtX3BhZ2VDYWNo
ZS0+Y2xvc2UoKTsKKyAgICBtX3BhZ2VDYWNoZSA9IDA7CisgICAgbV9wYWdlQ2FjaGVJc1BlbmRp
bmdSZWxlYXNlID0gZmFsc2U7Cit9CisKIHZvaWQgY2xvc2VPYmplY3RzSW5QZW5kaW5nUGFnZUNh
Y2hlcygpCiB7Ci0gICAgc2l6ZV90IHNpemUgPSBwZW5kaW5nUGFnZUNhY2hlVG9SZWxlYXNlKCku
c2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBw
ZW5kaW5nUGFnZUNhY2hlVG9SZWxlYXNlKClbaV0tPmNsb3NlKCk7CisgICAgSGFzaFNldDxSZWZQ
dHI8SGlzdG9yeUl0ZW0+ID46Oml0ZXJhdG9yIGkgPSBpdGVtc1dpdGhQZW5kaW5nUGFnZUNhY2hl
VG9SZWxlYXNlKCkuYmVnaW4oKTsKKyAgICBIYXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4gPjo6
aXRlcmF0b3IgZW5kID0gaXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpLmVuZCgp
OworICAgIGZvciAoOyBpICE9IGVuZDsgKytpKSB7CisgICAgICAgICgqaSktPmZpbmlzaFJlbGVh
c2luZ1BhZ2VDYWNoZSgpOworICAgIH0KIH0KIAogdm9pZCBIaXN0b3J5SXRlbTo6cmVsZWFzZUFs
bFBlbmRpbmdQYWdlQ2FjaGVzKCkKIHsKICAgICB0aW1lcigpLmludmFsaWRhdGUoKTsKICAgICBj
bG9zZU9iamVjdHNJblBlbmRpbmdQYWdlQ2FjaGVzKCk7Ci0gICAgcGVuZGluZ1BhZ2VDYWNoZVRv
UmVsZWFzZSgpLmNsZWFyKCk7CisgICAgaXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFz
ZSgpLmNsZWFyKCk7CiB9CiAKIHZvaWQgSGlzdG9yeUl0ZW06OnNjaGVkdWxlUmVsZWFzZSgpCkBA
IC00NzMsMTIgKzQ5MiwxNyBAQCB2b2lkIEhpc3RvcnlJdGVtOjpzY2hlZHVsZVJlbGVhc2UoKQog
ICAgIGlmICghdGltZXIoKS5pc0FjdGl2ZSgpKQogICAgICAgICB0aW1lcigpLnNjaGVkdWxlKCk7
CiAKLSAgICBpZiAobV9wYWdlQ2FjaGUpIHsKLSAgICAgICAgcGVuZGluZ1BhZ2VDYWNoZVRvUmVs
ZWFzZSgpLmFwcGVuZChtX3BhZ2VDYWNoZSk7Ci0gICAgICAgIG1fcGFnZUNhY2hlID0gMDsKKyAg
ICBpZiAobV9wYWdlQ2FjaGUgJiYgIW1fcGFnZUNhY2hlSXNQZW5kaW5nUmVsZWFzZSkgeworICAg
ICAgICBtX3BhZ2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UgPSB0cnVlOworICAgICAgICBpdGVtc1dp
dGhQZW5kaW5nUGFnZUNhY2hlVG9SZWxlYXNlKCkuYWRkKHRoaXMpOwogICAgIH0KIH0KIAordm9p
ZCBIaXN0b3J5SXRlbTo6Y2FuY2VsUmVsZWFzZSgpCit7CisgICAgaXRlbXNXaXRoUGVuZGluZ1Bh
Z2VDYWNoZVRvUmVsZWFzZSgpLnJlbW92ZSh0aGlzKTsKKyAgICBtX3BhZ2VDYWNoZUlzUGVuZGlu
Z1JlbGVhc2UgPSBmYWxzZTsKK30KICNpZm5kZWYgTkRFQlVHCiB2b2lkIEhpc3RvcnlJdGVtOjpw
cmludCgpIGNvbnN0CiB7CkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAkocmV2aXNpb24gMTg1NzQp
CisrKyBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTQz
LDcgKzE0Myw5IEBAIHB1YmxpYzogCiAjZW5kaWYKIAogICAgIHZvaWQgc2NoZWR1bGVSZWxlYXNl
KCk7Ci0gICAgCisgICAgdm9pZCBjYW5jZWxSZWxlYXNlKCk7CisgICAgdm9pZCBmaW5pc2hSZWxl
YXNpbmdQYWdlQ2FjaGUoKTsgICAgCisKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBwcmludCgp
IGNvbnN0OwogI2VuZGlmCkBAIC0xNjYsNiArMTY4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
U3RyaW5nPiBtX2RvY3VtZW50U3RhdGU7CiAgICAgCiAgICAgSGlzdG9yeUl0ZW1WZWN0b3IgbV9z
dWJJdGVtczsKKyAgICBib29sIG1fcGFnZUNhY2hlSXNQZW5kaW5nUmVsZWFzZTsKICAgICBSZWZQ
dHI8UGFnZUNhY2hlPiBtX3BhZ2VDYWNoZTsKICAgICAKICAgICBib29sIG1faXNUYXJnZXRJdGVt
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12211</attachid>
            <date>2007-01-04 02:20:16 -0800</date>
            <delta_ts>2007-01-04 12:18:43 -0800</delta_ts>
            <desc>Make PageCaches resurrect-able</desc>
            <filename>12087_r0.patch</filename>
            <type>text/plain</type>
            <size>6662</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAkocmV2aXNpb24gMTg1NzQpCisrKyBXZWJDb3Jl
L2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBA
IHZvaWQgKCpub3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQpKCkgPSBkZWYKIAogSGlzdG9yeUl0ZW06
Okhpc3RvcnlJdGVtKCkKICAgICA6IG1fbGFzdFZpc2l0ZWRUaW1lKDApCisgICAgLCBtX3BhZ2VD
YWNoZUlzUGVuZGluZ1JlbGVhc2UoZmFsc2UpCiAgICAgLCBtX2lzVGFyZ2V0SXRlbShmYWxzZSkK
ICAgICAsIG1fYWx3YXlzQXR0ZW1wdFRvVXNlUGFnZUNhY2hlKGZhbHNlKQogICAgICwgbV92aXNp
dENvdW50KDApCkBAIC01NCw2ICs1NSw3IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25z
dCBTdHJpbmcmIHUKICAgICAsIG1fb3JpZ2luYWxVUkxTdHJpbmcodXJsU3RyaW5nKQogICAgICwg
bV90aXRsZSh0aXRsZSkKICAgICAsIG1fbGFzdFZpc2l0ZWRUaW1lKHRpbWUpCisgICAgLCBtX3Bh
Z2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UoZmFsc2UpCiAgICAgLCBtX2lzVGFyZ2V0SXRlbShmYWxz
ZSkKICAgICAsIG1fYWx3YXlzQXR0ZW1wdFRvVXNlUGFnZUNhY2hlKGZhbHNlKQogICAgICwgbV92
aXNpdENvdW50KDApCkBAIC02Niw2ICs2OCw3IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShj
b25zdCBLVVJMJiB1cmwKICAgICAsIG1fb3JpZ2luYWxVUkxTdHJpbmcodXJsLnVybCgpKQogICAg
ICwgbV90aXRsZSh0aXRsZSkKICAgICAsIG1fbGFzdFZpc2l0ZWRUaW1lKDApCisgICAgLCBtX3Bh
Z2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UoZmFsc2UpCiAgICAgLCBtX2lzVGFyZ2V0SXRlbShmYWxz
ZSkKICAgICAsIG1fYWx3YXlzQXR0ZW1wdFRvVXNlUGFnZUNhY2hlKGZhbHNlKQogICAgICwgbV92
aXNpdENvdW50KDApCkBAIC04MCw2ICs4Myw3IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShj
b25zdCBLVVJMJiB1cmwKICAgICAsIG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fdGl0bGUodGl0
bGUpCiAgICAgLCBtX2xhc3RWaXNpdGVkVGltZSgwKQorICAgICwgbV9wYWdlQ2FjaGVJc1BlbmRp
bmdSZWxlYXNlKGZhbHNlKQogICAgICwgbV9pc1RhcmdldEl0ZW0oZmFsc2UpCiAgICAgLCBtX2Fs
d2F5c0F0dGVtcHRUb1VzZVBhZ2VDYWNoZShmYWxzZSkKICAgICAsIG1fdmlzaXRDb3VudCgwKQpA
QCAtMTAzLDYgKzEwNyw3IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBIaXN0b3J5
SXQKICAgICAsIG1fbGFzdFZpc2l0ZWRUaW1lKGl0ZW0ubV9sYXN0VmlzaXRlZFRpbWUpCiAgICAg
LCBtX3Njcm9sbFBvaW50KGl0ZW0ubV9zY3JvbGxQb2ludCkKICAgICAsIG1fc3ViSXRlbXMoaXRl
bS5tX3N1Ykl0ZW1zLnNpemUoKSkKKyAgICAsIG1fcGFnZUNhY2hlSXNQZW5kaW5nUmVsZWFzZShm
YWxzZSkKICAgICAsIG1faXNUYXJnZXRJdGVtKGl0ZW0ubV9pc1RhcmdldEl0ZW0pCiAgICAgLCBt
X2Fsd2F5c0F0dGVtcHRUb1VzZVBhZ2VDYWNoZShpdGVtLm1fYWx3YXlzQXR0ZW1wdFRvVXNlUGFn
ZUNhY2hlKQogICAgICwgbV92aXNpdENvdW50KGl0ZW0ubV92aXNpdENvdW50KQpAQCAtMTI3LDkg
KzEzMiwxMiBAQCB2b2lkIEhpc3RvcnlJdGVtOjpzZXRIYXNQYWdlQ2FjaGUoYm9vbCBoCiB7CiAg
ICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVQYWdlQ2FjaGUgLSBIaXN0b3J5SXRlbSAlcCBzZXR0
aW5nIGhhcyBwYWdlIGNhY2hlIHRvICVzIiwgdGhpcywgaGFzQ2FjaGUgPyAiVFJVRSIgOiAiRkFM
U0UiICk7CiAgICAgICAgIAotICAgIGlmIChoYXNDYWNoZSAmJiAhbV9wYWdlQ2FjaGUpCi0gICAg
ICAgIG1fcGFnZUNhY2hlID0gbmV3IFBhZ2VDYWNoZTsKLSAgICBpZiAoIWhhc0NhY2hlICYmIG1f
cGFnZUNhY2hlKQorICAgIGlmIChoYXNDYWNoZSkgeworICAgICAgICBpZiAoIW1fcGFnZUNhY2hl
KQorICAgICAgICAgICAgbV9wYWdlQ2FjaGUgPSBuZXcgUGFnZUNhY2hlOworICAgICAgICBlbHNl
IGlmIChtX3BhZ2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UpCisgICAgICAgICAgICBjYW5jZWxSZWxl
YXNlKCk7CisgICAgfSBlbHNlIGlmIChtX3BhZ2VDYWNoZSkKICAgICAgICAgc2NoZWR1bGVSZWxl
YXNlKCk7CiB9CiAKQEAgLTM1Myw2ICszNjEsOCBAQCBIaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06
OnRhcmdldEl0ZW0oKQogCiBQYWdlQ2FjaGUqIEhpc3RvcnlJdGVtOjpwYWdlQ2FjaGUoKQogewor
ICAgIGlmIChtX3BhZ2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UpCisgICAgICAgIHJldHVybiAwOwog
ICAgIHJldHVybiBtX3BhZ2VDYWNoZS5nZXQoKTsKIH0KIApAQCAtNDI2LDEzICs0MzYsMTMgQEAg
c3RhdGljIEhpc3RvcnlJdGVtVGltZXImIHRpbWVyKCkKICAgICByZXR1cm4gaGlzdG9yeUl0ZW1U
aW1lcjsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWZQdHI8UGFnZUNhY2hlPiA+JiBwZW5kaW5nUGFn
ZUNhY2hlVG9SZWxlYXNlKCkKK3N0YXRpYyBIYXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4gPiYg
aXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpCiB7CiAgICAgLy8gV2Uga2VlcCB0
aGlzIG9uIHRoZSBoZWFwIGJlY2F1c2Ugb3RoZXJ3aXNlLCBhdCBhcHAgc2h1dGRvd24sIHdlIHJ1
biBpbnRvIHRoZSAic3RhdGljIGRlc3RydWN0aW9uIG9yZGVyIGZpYXNjbyIgCiAgICAgLy8gd2hl
cmUgdGhlIHZlY3RvciBpcyB0b3JuIGRvd24sIHRoZSBQYWdlQ2FjaGVzIGRlc3Ryb3llZCwgYW5k
IGFsbCBoYXZvayBtYXkgYnJlYWsgbG9vc2UuICBJbnN0ZWFkLCB3ZSBqdXN0IGxlYWsgYXQgc2h1
dGRvd24KICAgICAvLyBzaW5jZSBub3RoaW5nIGhlcmUgcGVyc2lzdHMKLSAgICBzdGF0aWMgVmVj
dG9yPFJlZlB0cjxQYWdlQ2FjaGU+ID4qIHBlbmRpbmdQYWdlQ2FjaGVUb1JlbGVhc2UgPSBuZXcg
VmVjdG9yPFJlZlB0cjxQYWdlQ2FjaGU+ID47Ci0gICAgcmV0dXJuICpwZW5kaW5nUGFnZUNhY2hl
VG9SZWxlYXNlOworICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4gPiogaXRl
bXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSA9IG5ldyBIYXNoU2V0PFJlZlB0cjxIaXN0
b3J5SXRlbT4gPjsKKyAgICByZXR1cm4gKml0ZW1zV2l0aFBlbmRpbmdQYWdlQ2FjaGVUb1JlbGVh
c2U7CiB9CiAKIHZvaWQgSGlzdG9yeUl0ZW06OnJlbGVhc2VQYWdlQ2FjaGUoKQpAQCAtNDQyLDI4
ICs0NTIsMzYgQEAgdm9pZCBIaXN0b3J5SXRlbTo6cmVsZWFzZVBhZ2VDYWNoZSgpCiAgICAgCiAg
ICAgLy8gRklYTUU6IFRoaXMgc2l6ZSBvZiA0MiBwZW5kaW5nIGNhY2hlcyB0byByZWxlYXNlIHNl
ZW1zIGF3ZnVsbHkgYXJiaXRyYXJ5CiAgICAgLy8gV29uZGVyIGlmIGFueW9uZSBrbm93cyB0aGUg
cmF0aW9uYWxpemF0aW9uCi0gICAgaWYgKCh1c2VyRGVsdGEgPCAwLjUgfHwgbG9hZERlbHRhIDwg
MS4yNSkgJiYgcGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpLnNpemUoKSA8IDQyKSB7Ci0gICAg
ICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlUGFnZUNhY2hlOiBQb3N0cG9uaW5nIHJlbGVhc2VQ
YWdlQ2FjaGUoKSAtICVmIHNpbmNlIGxhc3QgbG9hZCwgJWYgc2luY2UgbGFzdCBpbnB1dCwgJWkg
b2JqZWN0cyBwZW5kaW5nIHJlbGVhc2UiLCBsb2FkRGVsdGEsIHVzZXJEZWx0YSwgcGVuZGluZ1Bh
Z2VDYWNoZVRvUmVsZWFzZSgpLnNpemUoKSk7CisgICAgaWYgKCh1c2VyRGVsdGEgPCAwLjUgfHwg
bG9hZERlbHRhIDwgMS4yNSkgJiYgaXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgp
LnNpemUoKSA8IDQyKSB7CisgICAgICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlUGFnZUNhY2hl
OiBQb3N0cG9uaW5nIHJlbGVhc2VQYWdlQ2FjaGUoKSAtICVmIHNpbmNlIGxhc3QgbG9hZCwgJWYg
c2luY2UgbGFzdCBpbnB1dCwgJWkgb2JqZWN0cyBwZW5kaW5nIHJlbGVhc2UiLCBsb2FkRGVsdGEs
IHVzZXJEZWx0YSwgaXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpLnNpemUoKSk7
CiAgICAgICAgIHRpbWVyKCkuc2NoZWR1bGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlUGFnZUNhY2hlOiBSZWxlYXNpbmcgcGFnZSBjYWNo
ZXMgLSAlZiBzZWNvbmRzIHNpbmNlIGxhc3QgbG9hZCwgJWYgc2luY2UgbGFzdCBpbnB1dCwgJWkg
b2JqZWN0cyBwZW5kaW5nIHJlbGVhc2UiLCBsb2FkRGVsdGEsIHVzZXJEZWx0YSwgcGVuZGluZ1Bh
Z2VDYWNoZVRvUmVsZWFzZSgpLnNpemUoKSk7CisgICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVQ
YWdlQ2FjaGU6IFJlbGVhc2luZyBwYWdlIGNhY2hlcyAtICVmIHNlY29uZHMgc2luY2UgbGFzdCBs
b2FkLCAlZiBzaW5jZSBsYXN0IGlucHV0LCAlaSBvYmplY3RzIHBlbmRpbmcgcmVsZWFzZSIsIGxv
YWREZWx0YSwgdXNlckRlbHRhLCBpdGVtc1dpdGhQZW5kaW5nUGFnZUNhY2hlVG9SZWxlYXNlKCku
c2l6ZSgpKTsKICAgICByZWxlYXNlQWxsUGVuZGluZ1BhZ2VDYWNoZXMoKTsKIH0KIAordm9pZCBI
aXN0b3J5SXRlbTo6ZmluaXNoUmVsZWFzaW5nUGFnZUNhY2hlKCkKK3sKKyAgICBtX3BhZ2VDYWNo
ZS0+Y2xvc2UoKTsKKyAgICBtX3BhZ2VDYWNoZSA9IDA7CisgICAgbV9wYWdlQ2FjaGVJc1BlbmRp
bmdSZWxlYXNlID0gZmFsc2U7Cit9CisKIHZvaWQgY2xvc2VPYmplY3RzSW5QZW5kaW5nUGFnZUNh
Y2hlcygpCiB7Ci0gICAgc2l6ZV90IHNpemUgPSBwZW5kaW5nUGFnZUNhY2hlVG9SZWxlYXNlKCku
c2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBw
ZW5kaW5nUGFnZUNhY2hlVG9SZWxlYXNlKClbaV0tPmNsb3NlKCk7CisgICAgSGFzaFNldDxSZWZQ
dHI8SGlzdG9yeUl0ZW0+ID46Oml0ZXJhdG9yIGkgPSBpdGVtc1dpdGhQZW5kaW5nUGFnZUNhY2hl
VG9SZWxlYXNlKCkuYmVnaW4oKTsKKyAgICBIYXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4gPjo6
aXRlcmF0b3IgZW5kID0gaXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpLmVuZCgp
OworICAgIGZvciAoOyBpICE9IGVuZDsgKytpKQorICAgICAgICAoKmkpLT5maW5pc2hSZWxlYXNp
bmdQYWdlQ2FjaGUoKTsKIH0KIAogdm9pZCBIaXN0b3J5SXRlbTo6cmVsZWFzZUFsbFBlbmRpbmdQ
YWdlQ2FjaGVzKCkKIHsKICAgICB0aW1lcigpLmludmFsaWRhdGUoKTsKICAgICBjbG9zZU9iamVj
dHNJblBlbmRpbmdQYWdlQ2FjaGVzKCk7Ci0gICAgcGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgp
LmNsZWFyKCk7CisgICAgaXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpLmNsZWFy
KCk7CiB9CiAKIHZvaWQgSGlzdG9yeUl0ZW06OnNjaGVkdWxlUmVsZWFzZSgpCkBAIC00NzMsMTIg
KzQ5MSwxNyBAQCB2b2lkIEhpc3RvcnlJdGVtOjpzY2hlZHVsZVJlbGVhc2UoKQogICAgIGlmICgh
dGltZXIoKS5pc0FjdGl2ZSgpKQogICAgICAgICB0aW1lcigpLnNjaGVkdWxlKCk7CiAKLSAgICBp
ZiAobV9wYWdlQ2FjaGUpIHsKLSAgICAgICAgcGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpLmFw
cGVuZChtX3BhZ2VDYWNoZSk7Ci0gICAgICAgIG1fcGFnZUNhY2hlID0gMDsKKyAgICBpZiAobV9w
YWdlQ2FjaGUgJiYgIW1fcGFnZUNhY2hlSXNQZW5kaW5nUmVsZWFzZSkgeworICAgICAgICBtX3Bh
Z2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UgPSB0cnVlOworICAgICAgICBpdGVtc1dpdGhQZW5kaW5n
UGFnZUNhY2hlVG9SZWxlYXNlKCkuYWRkKHRoaXMpOwogICAgIH0KIH0KIAordm9pZCBIaXN0b3J5
SXRlbTo6Y2FuY2VsUmVsZWFzZSgpCit7CisgICAgaXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRv
UmVsZWFzZSgpLnJlbW92ZSh0aGlzKTsKKyAgICBtX3BhZ2VDYWNoZUlzUGVuZGluZ1JlbGVhc2Ug
PSBmYWxzZTsKK30KICNpZm5kZWYgTkRFQlVHCiB2b2lkIEhpc3RvcnlJdGVtOjpwcmludCgpIGNv
bnN0CiB7CkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAkocmV2aXNpb24gMTg1NzQpCisrKyBXZWJD
b3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw5
IEBAIHB1YmxpYzogCiAjZW5kaWYKIAogICAgIHZvaWQgc2NoZWR1bGVSZWxlYXNlKCk7Ci0gICAg
CisgICAgdm9pZCBjYW5jZWxSZWxlYXNlKCk7CisgICAgdm9pZCBmaW5pc2hSZWxlYXNpbmdQYWdl
Q2FjaGUoKTsgICAgCisKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBwcmludCgpIGNvbnN0Owog
I2VuZGlmCkBAIC0xNjYsNiArMTY4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBt
X2RvY3VtZW50U3RhdGU7CiAgICAgCiAgICAgSGlzdG9yeUl0ZW1WZWN0b3IgbV9zdWJJdGVtczsK
KyAgICBib29sIG1fcGFnZUNhY2hlSXNQZW5kaW5nUmVsZWFzZTsKICAgICBSZWZQdHI8UGFnZUNh
Y2hlPiBtX3BhZ2VDYWNoZTsKICAgICAKICAgICBib29sIG1faXNUYXJnZXRJdGVtOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12220</attachid>
            <date>2007-01-04 11:23:23 -0800</date>
            <delta_ts>2007-01-04 11:30:12 -0800</delta_ts>
            <desc>Make PageCaches resurrect-able</desc>
            <filename>12087_r1.patch</filename>
            <type>text/plain</type>
            <size>10627</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODU4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMDctMDEtMDQgIE1pdHogUGV0dGVsICA8bWl0ekB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDg3CisgICAgICAgICAg
UkVHUkVTU0lPTjogUmVwcm9kdWNpYmxlIGNyYXNoIGdvaW5nIGJhY2sgaW4gQmFjay9Gb3J3YXJk
IGhpc3RvcnkKKworICAgICAgICBBbGxvdyBhIFBhZ2VDYWNoZSB0aGF0IGlzIHBlbmRpbmcgcmVs
ZWFzZSB0byBiZSByZXN1cnJlY3RlZCBieSBpdHMKKyAgICAgICAgSGlzdG9yeUl0ZW0gaW5zdGVh
ZCBvZiBjcmVhdGluZyBhIG5ldyBQYWdlQ2FjaGUuIFRoaXMgYXZvaWRzIHRoZQorICAgICAgICB0
aGUgY29uZGl0aW9uIG9mIGhhdmluZyB0d28gUGFnZUNhY2hlcyBmb3IgdGhlIHNhbWUgSGlzdG9y
eUl0ZW0sIG9uZQorICAgICAgICBjdXJyZW50IGFuZCBvbmUgcGVuZGluZyByZWxlYXNlIGJ1dCBu
b3QgeWV0IHJlbGVhc2VkLCB3aGljaCB3YXMgY2F1c2luZworICAgICAgICB0aGlzIGFuZCBvdGhl
ciBidWdzIGJlZm9yZS4KKyAgICAgICAgCisgICAgICAgIFJlcGxhY2VkIHRoZSB2ZWN0b3Igb2Yg
UGFnZUNhY2hlcyBwZW5kaW5nIHJlbGVhc2Ugd2l0aCBhIHNldCBvZgorICAgICAgICBIaXN0b3J5
SXRlbXMgdGhhdCBhcmUgcGVuZGluZyByZWxlYXNlIG9mIHRoZWlyIFBhZ2VDYWNoZS4KKworICAg
ICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUl0ZW06Okhpc3RvcnlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpzZXRI
YXNQYWdlQ2FjaGUpOiBDaGVjayBmb3IgYW4gZXhpc3RpbmcgUGFnZUNhY2hlCisgICAgICAgIHBl
bmRpbmcgcmVsZWFzZSwgYW5kIGlmIGZvdW5kLCByZXN1cnJlY3QgaXQgYnkgY2FuY2VsaW5nIHRo
ZSByZWxlYXNlLgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OnBhZ2VDYWNoZSk6IFJl
dHVybiAwIGlmIHRoZSBQYWdlQ2FjaGUgaXMgcGVuZGluZworICAgICAgICByZWxlYXNlLgorICAg
ICAgICAoV2ViQ29yZTo6aXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSk6IFJlbmFt
ZWQgcGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZQorICAgICAgICB0byB0aGlzLiBUaGlzIG1ldGhv
ZCBub3cgcmV0dXJucyBhIEhhc2hTZXQgb2YgSGlzdG9yeUl0ZW1zIHRoYXQgaGF2ZSBzY2hlZHVs
ZWQKKyAgICAgICAgdGhlaXIgUGFnZUNhY2hlcyBmb3IgcmVsZWFzZS4KKyAgICAgICAgKFdlYkNv
cmU6Okhpc3RvcnlJdGVtOjpyZWxlYXNlUGFnZUNhY2hlc09yUmVzY2hlZHVsZSk6IFJlbmFtZWQg
cmVsZWFzZVBhZ2VDYWNoZQorICAgICAgICB0byB0aGlzLgorICAgICAgICAoV2ViQ29yZTo6SGlz
dG9yeUl0ZW06OnJlbGVhc2VQYWdlQ2FjaGUpOiBBZGRlZC4gQWN0dWFsbHkgY2xvc2VzIGFuZCBy
ZWxlYXNlcworICAgICAgICB0aGUgUGFnZUNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUl0ZW06OnJlbGVhc2VBbGxQZW5kaW5nUGFnZUNhY2hlcyk6IFJvbGxlZCBjbG9zZU9iamVjdHNJ
blBlbmRpbmdQYWdlQ2FjaGVzCisgICAgICAgIGludG8gdGhpcyBtZXRob2QuCisgICAgICAgIChX
ZWJDb3JlOjpIaXN0b3J5SXRlbTo6c2NoZWR1bGVSZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
Okhpc3RvcnlJdGVtOjpjYW5jZWxSZWxlYXNlKTogQWRkZWQuCisgICAgICAgICogaGlzdG9yeS9I
aXN0b3J5SXRlbS5oOiBSZW1vdmVkIHVudXNlZCBkZWNsYXJhdGlvbiBvZiBzY2hlZHVsZVJlbGVh
c2VUaW1lcigpCisgICAgICAgICogaGlzdG9yeS9IaXN0b3J5SXRlbVRpbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtVGltZXI6Okhpc3RvcnlJdGVtVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW1UaW1lcjo6Y2FsbFJlbGVhc2VQYWdlQ2FjaGVzT3JSZXNj
aGVkdWxlKToKKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtVGltZXIuaDoKKwogMjAwNy0w
MS0wNCAgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPgogCiAgICAgICAgICogcGxhdGZv
cm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcDoKSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9IaXN0
b3J5SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNw
cAkocmV2aXNpb24gMTg1NzQpCisrKyBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHZvaWQgKCpub3RpZnlIaXN0b3J5SXRlbUNo
YW5nZWQpKCkgPSBkZWYKIAogSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKCkKICAgICA6IG1fbGFz
dFZpc2l0ZWRUaW1lKDApCisgICAgLCBtX3BhZ2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UoZmFsc2Up
CiAgICAgLCBtX2lzVGFyZ2V0SXRlbShmYWxzZSkKICAgICAsIG1fYWx3YXlzQXR0ZW1wdFRvVXNl
UGFnZUNhY2hlKGZhbHNlKQogICAgICwgbV92aXNpdENvdW50KDApCkBAIC01NCw2ICs1NSw3IEBA
IEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHUKICAgICAsIG1fb3JpZ2lu
YWxVUkxTdHJpbmcodXJsU3RyaW5nKQogICAgICwgbV90aXRsZSh0aXRsZSkKICAgICAsIG1fbGFz
dFZpc2l0ZWRUaW1lKHRpbWUpCisgICAgLCBtX3BhZ2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UoZmFs
c2UpCiAgICAgLCBtX2lzVGFyZ2V0SXRlbShmYWxzZSkKICAgICAsIG1fYWx3YXlzQXR0ZW1wdFRv
VXNlUGFnZUNhY2hlKGZhbHNlKQogICAgICwgbV92aXNpdENvdW50KDApCkBAIC02Niw2ICs2OCw3
IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBLVVJMJiB1cmwKICAgICAsIG1fb3Jp
Z2luYWxVUkxTdHJpbmcodXJsLnVybCgpKQogICAgICwgbV90aXRsZSh0aXRsZSkKICAgICAsIG1f
bGFzdFZpc2l0ZWRUaW1lKDApCisgICAgLCBtX3BhZ2VDYWNoZUlzUGVuZGluZ1JlbGVhc2UoZmFs
c2UpCiAgICAgLCBtX2lzVGFyZ2V0SXRlbShmYWxzZSkKICAgICAsIG1fYWx3YXlzQXR0ZW1wdFRv
VXNlUGFnZUNhY2hlKGZhbHNlKQogICAgICwgbV92aXNpdENvdW50KDApCkBAIC04MCw2ICs4Myw3
IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBLVVJMJiB1cmwKICAgICAsIG1fcGFy
ZW50KHBhcmVudCkKICAgICAsIG1fdGl0bGUodGl0bGUpCiAgICAgLCBtX2xhc3RWaXNpdGVkVGlt
ZSgwKQorICAgICwgbV9wYWdlQ2FjaGVJc1BlbmRpbmdSZWxlYXNlKGZhbHNlKQogICAgICwgbV9p
c1RhcmdldEl0ZW0oZmFsc2UpCiAgICAgLCBtX2Fsd2F5c0F0dGVtcHRUb1VzZVBhZ2VDYWNoZShm
YWxzZSkKICAgICAsIG1fdmlzaXRDb3VudCgwKQpAQCAtMTAzLDYgKzEwNyw3IEBAIEhpc3RvcnlJ
dGVtOjpIaXN0b3J5SXRlbShjb25zdCBIaXN0b3J5SXQKICAgICAsIG1fbGFzdFZpc2l0ZWRUaW1l
KGl0ZW0ubV9sYXN0VmlzaXRlZFRpbWUpCiAgICAgLCBtX3Njcm9sbFBvaW50KGl0ZW0ubV9zY3Jv
bGxQb2ludCkKICAgICAsIG1fc3ViSXRlbXMoaXRlbS5tX3N1Ykl0ZW1zLnNpemUoKSkKKyAgICAs
IG1fcGFnZUNhY2hlSXNQZW5kaW5nUmVsZWFzZShmYWxzZSkKICAgICAsIG1faXNUYXJnZXRJdGVt
KGl0ZW0ubV9pc1RhcmdldEl0ZW0pCiAgICAgLCBtX2Fsd2F5c0F0dGVtcHRUb1VzZVBhZ2VDYWNo
ZShpdGVtLm1fYWx3YXlzQXR0ZW1wdFRvVXNlUGFnZUNhY2hlKQogICAgICwgbV92aXNpdENvdW50
KGl0ZW0ubV92aXNpdENvdW50KQpAQCAtMTI3LDkgKzEzMiwxMiBAQCB2b2lkIEhpc3RvcnlJdGVt
OjpzZXRIYXNQYWdlQ2FjaGUoYm9vbCBoCiB7CiAgICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVQ
YWdlQ2FjaGUgLSBIaXN0b3J5SXRlbSAlcCBzZXR0aW5nIGhhcyBwYWdlIGNhY2hlIHRvICVzIiwg
dGhpcywgaGFzQ2FjaGUgPyAiVFJVRSIgOiAiRkFMU0UiICk7CiAgICAgICAgIAotICAgIGlmICho
YXNDYWNoZSAmJiAhbV9wYWdlQ2FjaGUpCi0gICAgICAgIG1fcGFnZUNhY2hlID0gbmV3IFBhZ2VD
YWNoZTsKLSAgICBpZiAoIWhhc0NhY2hlICYmIG1fcGFnZUNhY2hlKQorICAgIGlmIChoYXNDYWNo
ZSkgeworICAgICAgICBpZiAoIW1fcGFnZUNhY2hlKQorICAgICAgICAgICAgbV9wYWdlQ2FjaGUg
PSBuZXcgUGFnZUNhY2hlOworICAgICAgICBlbHNlIGlmIChtX3BhZ2VDYWNoZUlzUGVuZGluZ1Jl
bGVhc2UpCisgICAgICAgICAgICBjYW5jZWxSZWxlYXNlKCk7CisgICAgfSBlbHNlIGlmIChtX3Bh
Z2VDYWNoZSkKICAgICAgICAgc2NoZWR1bGVSZWxlYXNlKCk7CiB9CiAKQEAgLTM1Myw2ICszNjEs
OCBAQCBIaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OnRhcmdldEl0ZW0oKQogCiBQYWdlQ2FjaGUq
IEhpc3RvcnlJdGVtOjpwYWdlQ2FjaGUoKQogeworICAgIGlmIChtX3BhZ2VDYWNoZUlzUGVuZGlu
Z1JlbGVhc2UpCisgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBtX3BhZ2VDYWNoZS5nZXQo
KTsKIH0KIApAQCAtNDI2LDQ0ICs0MzYsNDkgQEAgc3RhdGljIEhpc3RvcnlJdGVtVGltZXImIHRp
bWVyKCkKICAgICByZXR1cm4gaGlzdG9yeUl0ZW1UaW1lcjsKIH0KIAotc3RhdGljIFZlY3RvcjxS
ZWZQdHI8UGFnZUNhY2hlPiA+JiBwZW5kaW5nUGFnZUNhY2hlVG9SZWxlYXNlKCkKK3N0YXRpYyBI
YXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4gPiYgaXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRv
UmVsZWFzZSgpCiB7CiAgICAgLy8gV2Uga2VlcCB0aGlzIG9uIHRoZSBoZWFwIGJlY2F1c2Ugb3Ro
ZXJ3aXNlLCBhdCBhcHAgc2h1dGRvd24sIHdlIHJ1biBpbnRvIHRoZSAic3RhdGljIGRlc3RydWN0
aW9uIG9yZGVyIGZpYXNjbyIgCiAgICAgLy8gd2hlcmUgdGhlIHZlY3RvciBpcyB0b3JuIGRvd24s
IHRoZSBQYWdlQ2FjaGVzIGRlc3Ryb3llZCwgYW5kIGFsbCBoYXZvayBtYXkgYnJlYWsgbG9vc2Uu
ICBJbnN0ZWFkLCB3ZSBqdXN0IGxlYWsgYXQgc2h1dGRvd24KICAgICAvLyBzaW5jZSBub3RoaW5n
IGhlcmUgcGVyc2lzdHMKLSAgICBzdGF0aWMgVmVjdG9yPFJlZlB0cjxQYWdlQ2FjaGU+ID4qIHBl
bmRpbmdQYWdlQ2FjaGVUb1JlbGVhc2UgPSBuZXcgVmVjdG9yPFJlZlB0cjxQYWdlQ2FjaGU+ID47
Ci0gICAgcmV0dXJuICpwZW5kaW5nUGFnZUNhY2hlVG9SZWxlYXNlOworICAgIHN0YXRpYyBIYXNo
U2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4gPiogaXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVs
ZWFzZSA9IG5ldyBIYXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4gPjsKKyAgICByZXR1cm4gKml0
ZW1zV2l0aFBlbmRpbmdQYWdlQ2FjaGVUb1JlbGVhc2U7CiB9CiAKLXZvaWQgSGlzdG9yeUl0ZW06
OnJlbGVhc2VQYWdlQ2FjaGUoKQordm9pZCBIaXN0b3J5SXRlbTo6cmVsZWFzZVBhZ2VDYWNoZXNP
clJlc2NoZWR1bGUoKQogewogICAgIGRvdWJsZSBsb2FkRGVsdGEgPSBjdXJyZW50VGltZSgpIC0g
RnJhbWVMb2FkZXI6OnRpbWVPZkxhc3RDb21wbGV0ZWRMb2FkKCk7CiAgICAgZmxvYXQgdXNlckRl
bHRhID0gdXNlcklkbGVUaW1lKCk7CiAgICAgCiAgICAgLy8gRklYTUU6IFRoaXMgc2l6ZSBvZiA0
MiBwZW5kaW5nIGNhY2hlcyB0byByZWxlYXNlIHNlZW1zIGF3ZnVsbHkgYXJiaXRyYXJ5CiAgICAg
Ly8gV29uZGVyIGlmIGFueW9uZSBrbm93cyB0aGUgcmF0aW9uYWxpemF0aW9uCi0gICAgaWYgKCh1
c2VyRGVsdGEgPCAwLjUgfHwgbG9hZERlbHRhIDwgMS4yNSkgJiYgcGVuZGluZ1BhZ2VDYWNoZVRv
UmVsZWFzZSgpLnNpemUoKSA8IDQyKSB7Ci0gICAgICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3Jl
UGFnZUNhY2hlOiBQb3N0cG9uaW5nIHJlbGVhc2VQYWdlQ2FjaGUoKSAtICVmIHNpbmNlIGxhc3Qg
bG9hZCwgJWYgc2luY2UgbGFzdCBpbnB1dCwgJWkgb2JqZWN0cyBwZW5kaW5nIHJlbGVhc2UiLCBs
b2FkRGVsdGEsIHVzZXJEZWx0YSwgcGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpLnNpemUoKSk7
CisgICAgaWYgKCh1c2VyRGVsdGEgPCAwLjUgfHwgbG9hZERlbHRhIDwgMS4yNSkgJiYgaXRlbXNX
aXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpLnNpemUoKSA8IDQyKSB7CisgICAgICAgIExP
RyhQYWdlQ2FjaGUsICJXZWJDb3JlUGFnZUNhY2hlOiBQb3N0cG9uaW5nIHJlbGVhc2VQYWdlQ2Fj
aGVzT3JSZXNjaGVkdWxlKCkgLSAlZiBzaW5jZSBsYXN0IGxvYWQsICVmIHNpbmNlIGxhc3QgaW5w
dXQsICVpIG9iamVjdHMgcGVuZGluZyByZWxlYXNlIiwgbG9hZERlbHRhLCB1c2VyRGVsdGEsIGl0
ZW1zV2l0aFBlbmRpbmdQYWdlQ2FjaGVUb1JlbGVhc2UoKS5zaXplKCkpOwogICAgICAgICB0aW1l
cigpLnNjaGVkdWxlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBMT0coUGFnZUNh
Y2hlLCAiV2ViQ29yZVBhZ2VDYWNoZTogUmVsZWFzaW5nIHBhZ2UgY2FjaGVzIC0gJWYgc2Vjb25k
cyBzaW5jZSBsYXN0IGxvYWQsICVmIHNpbmNlIGxhc3QgaW5wdXQsICVpIG9iamVjdHMgcGVuZGlu
ZyByZWxlYXNlIiwgbG9hZERlbHRhLCB1c2VyRGVsdGEsIHBlbmRpbmdQYWdlQ2FjaGVUb1JlbGVh
c2UoKS5zaXplKCkpOworICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlUGFnZUNhY2hlOiBSZWxl
YXNpbmcgcGFnZSBjYWNoZXMgLSAlZiBzZWNvbmRzIHNpbmNlIGxhc3QgbG9hZCwgJWYgc2luY2Ug
bGFzdCBpbnB1dCwgJWkgb2JqZWN0cyBwZW5kaW5nIHJlbGVhc2UiLCBsb2FkRGVsdGEsIHVzZXJE
ZWx0YSwgaXRlbXNXaXRoUGVuZGluZ1BhZ2VDYWNoZVRvUmVsZWFzZSgpLnNpemUoKSk7CiAgICAg
cmVsZWFzZUFsbFBlbmRpbmdQYWdlQ2FjaGVzKCk7CiB9CiAKLXZvaWQgY2xvc2VPYmplY3RzSW5Q
ZW5kaW5nUGFnZUNhY2hlcygpCit2b2lkIEhpc3RvcnlJdGVtOjpyZWxlYXNlUGFnZUNhY2hlKCkK
IHsKLSAgICBzaXplX3Qgc2l6ZSA9IHBlbmRpbmdQYWdlQ2FjaGVUb1JlbGVhc2UoKS5zaXplKCk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHBlbmRpbmdQ
YWdlQ2FjaGVUb1JlbGVhc2UoKVtpXS0+Y2xvc2UoKTsKKyAgICBtX3BhZ2VDYWNoZS0+Y2xvc2Uo
KTsKKyAgICBtX3BhZ2VDYWNoZSA9IDA7CisgICAgbV9wYWdlQ2FjaGVJc1BlbmRpbmdSZWxlYXNl
ID0gZmFsc2U7CiB9CiAKIHZvaWQgSGlzdG9yeUl0ZW06OnJlbGVhc2VBbGxQZW5kaW5nUGFnZUNh
Y2hlcygpCiB7CiAgICAgdGltZXIoKS5pbnZhbGlkYXRlKCk7Ci0gICAgY2xvc2VPYmplY3RzSW5Q
ZW5kaW5nUGFnZUNhY2hlcygpOwotICAgIHBlbmRpbmdQYWdlQ2FjaGVUb1JlbGVhc2UoKS5jbGVh
cigpOworCisgICAgSGFzaFNldDxSZWZQdHI8SGlzdG9yeUl0ZW0+ID46Oml0ZXJhdG9yIGkgPSBp
dGVtc1dpdGhQZW5kaW5nUGFnZUNhY2hlVG9SZWxlYXNlKCkuYmVnaW4oKTsKKyAgICBIYXNoU2V0
PFJlZlB0cjxIaXN0b3J5SXRlbT4gPjo6aXRlcmF0b3IgZW5kID0gaXRlbXNXaXRoUGVuZGluZ1Bh
Z2VDYWNoZVRvUmVsZWFzZSgpLmVuZCgpOworICAgIGZvciAoOyBpICE9IGVuZDsgKytpKQorICAg
ICAgICAoKmkpLT5yZWxlYXNlUGFnZUNhY2hlKCk7CisKKyAgICBpdGVtc1dpdGhQZW5kaW5nUGFn
ZUNhY2hlVG9SZWxlYXNlKCkuY2xlYXIoKTsKIH0KIAogdm9pZCBIaXN0b3J5SXRlbTo6c2NoZWR1
bGVSZWxlYXNlKCkKQEAgLTQ3MywxMiArNDg4LDE3IEBAIHZvaWQgSGlzdG9yeUl0ZW06OnNjaGVk
dWxlUmVsZWFzZSgpCiAgICAgaWYgKCF0aW1lcigpLmlzQWN0aXZlKCkpCiAgICAgICAgIHRpbWVy
KCkuc2NoZWR1bGUoKTsKIAotICAgIGlmIChtX3BhZ2VDYWNoZSkgewotICAgICAgICBwZW5kaW5n
UGFnZUNhY2hlVG9SZWxlYXNlKCkuYXBwZW5kKG1fcGFnZUNhY2hlKTsKLSAgICAgICAgbV9wYWdl
Q2FjaGUgPSAwOworICAgIGlmIChtX3BhZ2VDYWNoZSAmJiAhbV9wYWdlQ2FjaGVJc1BlbmRpbmdS
ZWxlYXNlKSB7CisgICAgICAgIG1fcGFnZUNhY2hlSXNQZW5kaW5nUmVsZWFzZSA9IHRydWU7Cisg
ICAgICAgIGl0ZW1zV2l0aFBlbmRpbmdQYWdlQ2FjaGVUb1JlbGVhc2UoKS5hZGQodGhpcyk7CiAg
ICAgfQogfQogCit2b2lkIEhpc3RvcnlJdGVtOjpjYW5jZWxSZWxlYXNlKCkKK3sKKyAgICBpdGVt
c1dpdGhQZW5kaW5nUGFnZUNhY2hlVG9SZWxlYXNlKCkucmVtb3ZlKHRoaXMpOworICAgIG1fcGFn
ZUNhY2hlSXNQZW5kaW5nUmVsZWFzZSA9IGZhbHNlOworfQogI2lmbmRlZiBOREVCVUcKIHZvaWQg
SGlzdG9yeUl0ZW06OnByaW50KCkgY29uc3QKIHsKSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9IaXN0
b3J5SXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCShy
ZXZpc2lvbiAxODU3NCkKKysrIFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDMsMTUgKzE0MywxNiBAQCBwdWJsaWM6IAogI2VuZGlmCiAKICAgICB2b2lk
IHNjaGVkdWxlUmVsZWFzZSgpOwotICAgIAorICAgIHZvaWQgY2FuY2VsUmVsZWFzZSgpOworICAg
IHZvaWQgcmVsZWFzZVBhZ2VDYWNoZSgpOyAgICAKKwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lk
IHByaW50KCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBIaXN0b3J5SXRlbShjb25z
dCBIaXN0b3J5SXRlbSYpOwotICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlUmVsZWFzZVRpbWVyKCk7
Ci0gICAgc3RhdGljIHZvaWQgcmVsZWFzZVBhZ2VDYWNoZSgpOworICAgIHN0YXRpYyB2b2lkIHJl
bGVhc2VQYWdlQ2FjaGVzT3JSZXNjaGVkdWxlKCk7CiAgICAgCiAgICAgU3RyaW5nIG1fdXJsU3Ry
aW5nOwogICAgIFN0cmluZyBtX29yaWdpbmFsVVJMU3RyaW5nOwpAQCAtMTY2LDYgKzE2Nyw3IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9kb2N1bWVudFN0YXRlOwogICAgIAogICAg
IEhpc3RvcnlJdGVtVmVjdG9yIG1fc3ViSXRlbXM7CisgICAgYm9vbCBtX3BhZ2VDYWNoZUlzUGVu
ZGluZ1JlbGVhc2U7CiAgICAgUmVmUHRyPFBhZ2VDYWNoZT4gbV9wYWdlQ2FjaGU7CiAgICAgCiAg
ICAgYm9vbCBtX2lzVGFyZ2V0SXRlbTsKSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bVRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW1UaW1l
ci5jcHAJKHJldmlzaW9uIDE4NTc0KQorKysgV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtVGlt
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNvbnN0IGRvdWJsZSBEZWZhdWx0UGFnZUNhY2hlUmVsZWFzZUludGVydmFsID0gMzsKIAog
SGlzdG9yeUl0ZW1UaW1lcjo6SGlzdG9yeUl0ZW1UaW1lcigpCi0gICAgOiBtX3RpbWVyKHRoaXMs
ICZIaXN0b3J5SXRlbVRpbWVyOjpjYWxsUmVsZWFzZVBhZ2VDYWNoZSkKKyAgICA6IG1fdGltZXIo
dGhpcywgJkhpc3RvcnlJdGVtVGltZXI6OmNhbGxSZWxlYXNlUGFnZUNhY2hlc09yUmVzY2hlZHVs
ZSkKIHsKIH0KIApAQCAtNTIsOSArNTIsOSBAQCB2b2lkIEhpc3RvcnlJdGVtVGltZXI6OmludmFs
aWRhdGUoKQogICAgIG1fdGltZXIuc3RvcCgpOwogfQogCi12b2lkIEhpc3RvcnlJdGVtVGltZXI6
OmNhbGxSZWxlYXNlUGFnZUNhY2hlKFRpbWVyPEhpc3RvcnlJdGVtVGltZXI+KikKK3ZvaWQgSGlz
dG9yeUl0ZW1UaW1lcjo6Y2FsbFJlbGVhc2VQYWdlQ2FjaGVzT3JSZXNjaGVkdWxlKFRpbWVyPEhp
c3RvcnlJdGVtVGltZXI+KikKIHsKLSAgICBIaXN0b3J5SXRlbTo6cmVsZWFzZVBhZ2VDYWNoZSgp
OworICAgIEhpc3RvcnlJdGVtOjpyZWxlYXNlUGFnZUNhY2hlc09yUmVzY2hlZHVsZSgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0
ZW1UaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbVRpbWVy
LmgJKHJldmlzaW9uIDE4NTc0KQorKysgV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtVGltZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZh
bGlkYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjYWxsUmVsZWFzZVBhZ2VDYWNoZShUaW1l
cjxIaXN0b3J5SXRlbVRpbWVyPiopOworICAgIHZvaWQgY2FsbFJlbGVhc2VQYWdlQ2FjaGVzT3JS
ZXNjaGVkdWxlKFRpbWVyPEhpc3RvcnlJdGVtVGltZXI+Kik7CiAgICAgVGltZXI8SGlzdG9yeUl0
ZW1UaW1lcj4gbV90aW1lcjsKIH07IAogCg==
</data>
<flag name="review"
          id="4538"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>