<?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>26189</bug_id>
          
          <creation_ts>2009-06-04 10:12:12 -0700</creation_ts>
          <short_desc>DOM Storage: Changes for Android and macro guards</short_desc>
          <delta_ts>2009-06-13 20:48:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Other</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="Ben Murdoch">benm</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>andreip</cc>
    
    <cc>beidson</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>jorlow</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>124326</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-04 10:12:12 -0700</bug_when>
    <thetext>I&apos;ve been working on enabling support for the DOM storage APIs in the android browser. The way that the browser&apos;s java implementation communicates the path to the database for local storage means that we need to reconfigure the local storage object created by the page group *after* it&apos;s been created. To achieve this I&apos;ve added a new static method to PageGroup to iterate over the current set of PageGroups and call a new method on the LocalStorage object that updates the path to the database and restarts the local storage thread.

I have also taken this opportunity to add #if ENABLE(DOM_STORAGE) guards around the DOM storage source files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124327</commentid>
    <comment_count>1</comment_count>
      <attachid>30949</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-04 10:12:43 -0700</bug_when>
    <thetext>Created attachment 30949
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124329</commentid>
    <comment_count>2</comment_count>
      <attachid>30950</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-04 10:16:28 -0700</bug_when>
    <thetext>Created attachment 30950
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124520</commentid>
    <comment_count>3</comment_count>
      <attachid>30950</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-06-05 08:02:44 -0700</bug_when>
    <thetext>Comment on attachment 30950
Proposed patch

Someone more familiar with local storage should review the core changes, but I have a couple minor comments.

I think the ENABLE(DOM_STORAGE) guards should be added in a separate patch.  (No need for a separate bug, though.)

&gt;Index: WebCore/ChangeLog
&gt;[...]
&gt;+        * storage/LocalStorage.h: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/LocalStorageArea.cpp: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/LocalStorageArea.h: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/LocalStorageTask.cpp: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/LocalStorageTask.h: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/LocalStorageThread.cpp: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/LocalStorageThread.h: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/SessionStorage.cpp: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/SessionStorage.h: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/SessionStorageArea.cpp: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/SessionStorageArea.h: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/Storage.cpp: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/Storage.h: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/Storage.idl:  Adds Conditional=DOM_STORAGE
&gt;+        * storage/StorageArea.cpp: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/StorageArea.h: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/StorageEvent.cpp: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/StorageEvent.h: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/StorageEvent.idl: Adds Conditional=DOM_STORAGE
&gt;+        * storage/StorageMap.cpp: Adds #if ENABLE(DOM_STORAGE) guard.
&gt;+        * storage/StorageMap.h: Adds #if ENABLE(DOM_STORAGE) guard.

Normally we just use &quot;Ditto.&quot; instead of repeating the comment in these cases.

&gt;Index: WebCore/page/PageGroup.cpp
&gt;[...]
&gt;+// Right now, this function is only needed by the Android platform as we may recieve notification
&gt;+// from the Java side of the path to use for local storage databases *after* the page group is
&gt;+// created (but before websites can use local storage). If that is the case, the local storage
&gt;+// object will have an empty path and local storage data will not be persisted to disk. This
&gt;+// function allows us to re-establish the local storage object with the correct path so when
&gt;+// sites access local storage, the changes will be saved to disk.
&gt;+void PageGroup::updateLocalStoragePath(const String&amp; path)
&gt;+{
&gt;+#if ENABLE(DOM_STORAGE)
&gt;+    if (!pageGroups)
&gt;+        return;
&gt;+
&gt;+    PageGroupMap::iterator end = pageGroups-&gt;end();
&gt;+
&gt;+    for (PageGroupMap::iterator it = pageGroups-&gt;begin(); it != end; ++it) {
&gt;+        if (LocalStorage* localStorage = it-&gt;second-&gt;localStorage())
&gt;+            localStorage-&gt;updatePath(path);
&gt;+    }
&gt;+#endif
&gt;+}

Should this have a #if PLATFORM(ANDROID)/#endif around it instead of the long comment?  If anyone is curious as to why the method is there, the could look for an explanation in this bug.

I&apos;m split between adding more #if/#endif macros and compiling unused code on other platforms.  (I think replacing the long comment with the #if/#endif macros is a win, though.)

&gt;Index: WebCore/page/PageGroup.h
&gt;[...]
&gt;+        static void updateLocalStoragePath(const String&amp; path);

This would need PLATFORM(ANDROID) guards as well if the above change is made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124522</commentid>
    <comment_count>4</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-05 08:16:32 -0700</bug_when>
    <thetext>(In reply to comment #3)

Thanks for taking a look at this David!

&gt; I think the ENABLE(DOM_STORAGE) guards should be added in a separate patch. 
&gt; (No need for a separate bug, though.)

OK, that&apos;s fair enough. I&apos;ll do that.

&gt; Should this have a #if PLATFORM(ANDROID)/#endif around it instead of the long
&gt; comment?  If anyone is curious as to why the method is there, the could look
&gt; for an explanation in this bug.
&gt; 
&gt; I&apos;m split between adding more #if/#endif macros and compiling unused code on
&gt; other platforms.  (I think replacing the long comment with the #if/#endif
&gt; macros is a win, though.)

I was hesitant about this too. I&apos;m happy to add the platform guards if you&apos;d like me to, but on the other hand the code doesn&apos;t use any Android specific APIs and works on all platforms. It&apos;s just only used by Android right now, perhaps the functionality would be useful for others in the future? And the same for the new function in LocalStorage. It&apos;s only used on Android at the moment, but it&apos;s platform independent and could be useful for others now or later. I can replace the comment with a link to this bug either way.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124523</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-06-05 08:48:54 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Should this have a #if PLATFORM(ANDROID)/#endif around it instead of the long
&gt; &gt; comment?  If anyone is curious as to why the method is there, the could look
&gt; &gt; for an explanation in this bug.
&gt; &gt; 
&gt; &gt; I&apos;m split between adding more #if/#endif macros and compiling unused code on
&gt; &gt; other platforms.  (I think replacing the long comment with the #if/#endif
&gt; &gt; macros is a win, though.)
&gt; 
&gt; I was hesitant about this too. I&apos;m happy to add the platform guards if you&apos;d
&gt; like me to, but on the other hand the code doesn&apos;t use any Android specific
&gt; APIs and works on all platforms. It&apos;s just only used by Android right now,
&gt; perhaps the functionality would be useful for others in the future? And the
&gt; same for the new function in LocalStorage. It&apos;s only used on Android at the
&gt; moment, but it&apos;s platform independent and could be useful for others now or
&gt; later. I can replace the comment with a link to this bug either way.

Yes, a comment above PageGroup::updateLocalStoragePath() referring to the bug would probably be best.

The LocalStorage::updatePath() method was extracted from the constructor, though, so I&apos;m not sure it needs a comment since the call to close() would be required if anyone was to call updatePath() outside of the constructor.

--

You know, after looking at these methods, they seem like a bit of a hack.  Android is only going to update the path once, correct?  Or could it update the database path multiple times while the browser is running?

Would it be possible instead to provide a callback mechanism when opening the LocalStorage databases so that Android could give the correct path &quot;just in time&quot;?

A callback function pointer could be passed/set somewhere, and it would only be used if not-null.  This might also mean that LocalStorage databases should only be opened lazily, but that may not be such a bad thing.

Again, someone more familiar with this code should review the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124778</commentid>
    <comment_count>6</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-08 11:03:54 -0700</bug_when>
    <thetext>(In reply to comment #5)

Hi David, thanks again for the comments.

&gt; A callback function pointer could be passed/set somewhere, and it would only be
&gt; used if not-null.  This might also mean that LocalStorage databases should only
&gt; be opened lazily, but that may not be such a bad thing.

I&apos;ve tried a different approach with this today and loading the local storage object only when a page requests it seems to do the trick across all platforms, including android. This makes the changes to WebCore code minimal. I will upload two new patches: one with the ENABLE(DOM_STORAGE) guards, the other with the change for lazily creating the local storage object.

Thanks, Ben</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124779</commentid>
    <comment_count>7</comment_count>
      <attachid>31053</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-08 11:07:52 -0700</bug_when>
    <thetext>Created attachment 31053
ENABLE(DOM_STORAGE) guards.

Adds macro guards to dom storage source files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124781</commentid>
    <comment_count>8</comment_count>
      <attachid>31054</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-08 11:16:56 -0700</bug_when>
    <thetext>Created attachment 31054
Lazily create localstorage objects for PageGroups.

Lazily creates the local storage when it&apos;s requested rather than when a page is added to the page group.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124792</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-08 13:09:29 -0700</bug_when>
    <thetext>Unrelated patches should have their own bugs to keep down review confusion. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124816</commentid>
    <comment_count>10</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-08 14:41:20 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Unrelated patches should have their own bugs to keep down review confusion. :(
&gt; 

In comment #3, ddkilzer recommended splitting the patch into two without creating a new bug.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124862</commentid>
    <comment_count>11</comment_count>
      <attachid>31053</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-08 18:06:35 -0700</bug_when>
    <thetext>Comment on attachment 31053
ENABLE(DOM_STORAGE) guards.

Assuming you watch the bots to make sure this doesn&apos;t break anybody, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124863</commentid>
    <comment_count>12</comment_count>
      <attachid>31054</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-08 18:09:16 -0700</bug_when>
    <thetext>Comment on attachment 31054
Lazily create localstorage objects for PageGroups.

Is it possible to call PageGroup::localStorage() when there are no pages in the group?  Like during destruction when pages have been removed from the group?  Are pages ever removed from a group?

In general this looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124925</commentid>
    <comment_count>13</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-09 06:08:00 -0700</bug_when>
    <thetext>(In reply to comment #12)

Thanks for the reviews and comments Eric!

&gt; Is it possible to call PageGroup::localStorage() when there are no pages in the
&gt; group?  Like during destruction when pages have been removed from the group? 
&gt; Are pages ever removed from a group?

I looked into it today and as far as I can tell, the only point where there could be a problem is when WebKit is being shut down and the local storage objects are closed by the static PageGroup::closeLocalStorage() method. I&apos;ve altered this method to only attempt to close the storage object if one has been created already.

New patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124926</commentid>
    <comment_count>14</comment_count>
      <attachid>31089</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-09 06:11:44 -0700</bug_when>
    <thetext>Created attachment 31089
Lazily create LocalStorage object in PageGroup.

Create local storage objects lazily and be sure to only attempt to close a local storage object that has been created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124929</commentid>
    <comment_count>15</comment_count>
      <attachid>31089</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-06-09 06:44:23 -0700</bug_when>
    <thetext>Comment on attachment 31089
Lazily create LocalStorage object in PageGroup.

Good catch, Ben!

&gt;-    for (PageGroupMap::iterator it = pageGroups-&gt;begin(); it != end; ++it) {
&gt;-        if (LocalStorage* localStorage = it-&gt;second-&gt;localStorage())
&gt;-            localStorage-&gt;close();
&gt;-    }
&gt;+    for (PageGroupMap::iterator it = pageGroups-&gt;begin(); it != end; ++it)
&gt;+        it-&gt;second-&gt;closeLocalStorageInternal();
&gt; #endif
&gt; }
&gt; 
&gt;+#if ENABLE(DOM_STORAGE)
&gt;+void PageGroup::closeLocalStorageInternal()
&gt;+{
&gt;+    // Only close the local storage object if we have one.
&gt;+    if (m_localStorage)
&gt;+        m_localStorage-&gt;close();
&gt;+}
&gt;+#endif

Instead of creating a closeLocalStorageInternal() method, I think it would be better to create a hasLocalStorage() method like this in PageGroup.h:

#if ENABLE(DOM_STORAGE)
bool hasLocalStorage() { return m_localStorage; }
#endif

Then the for loop would look like this:

#if ENABLE(DOM_STORAGE)
    for (PageGroupMap::iterator it = pageGroups-&gt;begin(); it != end; ++it) {
        if (it-&gt;second-&gt;hasLocalStorage())
            it-&gt;second-&gt;localStorage()-&gt;close();
    }
#endif

r- for this patch, but r+ with the above changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124934</commentid>
    <comment_count>16</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-09 07:08:55 -0700</bug_when>
    <thetext>(In reply to comment #15)

&gt; r- for this patch, but r+ with the above changes.
&gt; 

Thanks David, I made the changes and a new patch is on the way.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124935</commentid>
    <comment_count>17</comment_count>
      <attachid>31092</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-09 07:10:06 -0700</bug_when>
    <thetext>Created attachment 31092
Lazily create LocalStorage object in PageGroup

Update patch based on ddkilzer&apos;s suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124936</commentid>
    <comment_count>18</comment_count>
      <attachid>31093</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-06-09 07:12:06 -0700</bug_when>
    <thetext>Created attachment 31093
Lazily create LocalStorage object in PageGroup.

Fixes small typo in changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124959</commentid>
    <comment_count>19</comment_count>
      <attachid>31093</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-06-09 09:14:45 -0700</bug_when>
    <thetext>Comment on attachment 31093
Lazily create LocalStorage object in PageGroup.

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125718</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-13 20:35:35 -0700</bug_when>
    <thetext>Will land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125721</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-13 20:45:21 -0700</bug_when>
    <thetext>Sending        WebCore/ChangeLog
Sending        WebCore/storage/LocalStorage.cpp
Sending        WebCore/storage/LocalStorage.h
Sending        WebCore/storage/LocalStorageArea.cpp
Sending        WebCore/storage/LocalStorageArea.h
Sending        WebCore/storage/LocalStorageTask.cpp
Sending        WebCore/storage/LocalStorageTask.h
Sending        WebCore/storage/LocalStorageThread.cpp
Sending        WebCore/storage/LocalStorageThread.h
Sending        WebCore/storage/SessionStorage.cpp
Sending        WebCore/storage/SessionStorage.h
Sending        WebCore/storage/SessionStorageArea.cpp
Sending        WebCore/storage/SessionStorageArea.h
Sending        WebCore/storage/Storage.cpp
Sending        WebCore/storage/Storage.h
Sending        WebCore/storage/Storage.idl
Sending        WebCore/storage/StorageArea.cpp
Sending        WebCore/storage/StorageArea.h
Sending        WebCore/storage/StorageEvent.cpp
Sending        WebCore/storage/StorageEvent.h
Sending        WebCore/storage/StorageEvent.idl
Sending        WebCore/storage/StorageMap.cpp
Sending        WebCore/storage/StorageMap.h
Transmitting file data .......................
Committed revision 44662.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125722</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-13 20:48:10 -0700</bug_when>
    <thetext>Sending        WebCore/ChangeLog
Sending        WebCore/page/PageGroup.cpp
Sending        WebCore/page/PageGroup.h
Transmitting file data ...
Committed revision 44663.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30949</attachid>
            <date>2009-06-04 10:12:43 -0700</date>
            <delta_ts>2009-06-04 10:16:28 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>ls-svn-040609-1714.txt</filename>
            <type>text/plain</type>
            <size>17608</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDQxNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMDYtMDQgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIEluIHRoZSBBbmRyb2lkIGJyb3dzZXIsIHRoZSB3YXkgdGhlIEphdmEgc2lk
ZSBjb21tdW5pY2F0ZXMgdGhlIHBhdGggZm9yIHRoZSBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlIG1l
YW5zIHRoYXQgd2UgbmVlZCB0byByZWNvbmZpZ3VyZSB0aGUKKyAgICAgICAgbG9jYWwgc3RvcmFn
ZSBvYmplY3QgY3JlYXRlZCBieSB0aGUgcGFnZSBncm91cCAqYWZ0ZXIqIGl0J3MgYmVlbiBjcmVh
dGVkLiBUbyBhY2hpZXZlIHRoaXMgSSd2ZSBhZGRlZCBhIG5ldyBzdGF0aWMgbWV0aG9kIHRvIFBh
Z2VHcm91cCB0bworICAgICAgICBpdGVyYXRlIG92ZXIgdGhlIGN1cnJlbnQgc2V0IG9mIFBhZ2VH
cm91cHMgYW5kIGNhbGwgYSBuZXcgbWV0aG9kIG9uIHRoZSBMb2NhbFN0b3JhZ2Ugb2JqZWN0IHRo
YXQgdXBkYXRlcyB0aGUgcGF0aCB0byB0aGUgZGF0YWJhc2UgYW5kCisgICAgICAgIHJlc3RhcnRz
IHRoZSBsb2NhbCBzdG9yYWdlIHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvCisKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5jcHA6IEFkZHMgYSBzdGF0aWMgbWVtYmVy
IGZ1bmN0aW9uIGZvciB1cGRhdGluZyB0aGUgbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSBwYXRoIGZv
ciBlYWNoIFBhZ2UgR3JvdXAuCisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnVwZGF0ZUxv
Y2FsU3RvcmFnZVBhdGgpOiBJdGVyYXRlcyBvdmVyIGVhY2ggUGFnZUdyb3VwIGFuZCB1cGRhdGVz
IGl0J3MgbG9jYWwgc3RvcmFnZSBvYmplY3Qgd2l0aCBhIG5ldyBkYXRhYmFzZSBwYXRoLgorICAg
ICAgICAqIHBhZ2UvUGFnZUdyb3VwLmg6CisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTdG9yYWdlOjpMb2NhbFN0b3JhZ2UpOiBjYWxs
IG5ldyBtZXRob2QgdXBkYXRlUGF0aAorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTdG9yYWdlOjpz
dG9yYWdlQXJlYSk6IGRlbGV0ZXMgd2hpdGVzcGFjZQorICAgICAgICAoV2ViQ29yZTo6TG9jYWxT
dG9yYWdlOjp1cGRhdGVQYXRoKTogVXBkYXRlcyB0aGUgcGF0aCB0byB0aGUgbG9jYWwgc3RvcmFn
ZSBkYXRhYmFzZSBhbmQgcmVzdGFydHMgdGhlIGxvY2FsIHN0b3JhZ2UgdGhyZWFkLgorICAgICAg
ICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlLmg6IEFkZHMgI2lmIEVOQUJMRShET01fU1RPUkFHRSkg
Z3VhcmQuCisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3JhZ2VBcmVhLmNwcDogQWRkcyAjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKSBndWFyZC4KKyAgICAgICAgKiBzdG9yYWdlL0xvY2FsU3RvcmFn
ZUFyZWEuaDogQWRkcyAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKSBndWFyZC4KKyAgICAgICAgKiBz
dG9yYWdlL0xvY2FsU3RvcmFnZVRhc2suY3BwOiBBZGRzICNpZiBFTkFCTEUoRE9NX1NUT1JBR0Up
IGd1YXJkLgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5oOiBBZGRzICNpZiBF
TkFCTEUoRE9NX1NUT1JBR0UpIGd1YXJkLgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdl
VGhyZWFkLmNwcDogQWRkcyAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKSBndWFyZC4KKyAgICAgICAg
KiBzdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oOiBBZGRzICNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpIGd1YXJkLgorICAgICAgICAqIHN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2UuY3BwOiBBZGRzICNp
ZiBFTkFCTEUoRE9NX1NUT1JBR0UpIGd1YXJkLgorICAgICAgICAqIHN0b3JhZ2UvU2Vzc2lvblN0
b3JhZ2UuaDogQWRkcyAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKSBndWFyZC4KKyAgICAgICAgKiBz
dG9yYWdlL1Nlc3Npb25TdG9yYWdlQXJlYS5jcHA6IEFkZHMgI2lmIEVOQUJMRShET01fU1RPUkFH
RSkgZ3VhcmQuCisgICAgICAgICogc3RvcmFnZS9TZXNzaW9uU3RvcmFnZUFyZWEuaDogQWRkcyAj
aWYgRU5BQkxFKERPTV9TVE9SQUdFKSBndWFyZC4KKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2Uu
Y3BwOiBBZGRzICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpIGd1YXJkLgorICAgICAgICAqIHN0b3Jh
Z2UvU3RvcmFnZS5oOiBBZGRzICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpIGd1YXJkLgorICAgICAg
ICAqIHN0b3JhZ2UvU3RvcmFnZS5pZGw6ICBBZGRzIENvbmRpdGlvbmFsPURPTV9TVE9SQUdFCisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5jcHA6IEFkZHMgI2lmIEVOQUJMRShET01fU1RP
UkFHRSkgZ3VhcmQuCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOiBBZGRzICNpZiBF
TkFCTEUoRE9NX1NUT1JBR0UpIGd1YXJkLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50
LmNwcDogQWRkcyAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKSBndWFyZC4KKyAgICAgICAgKiBzdG9y
YWdlL1N0b3JhZ2VFdmVudC5oOiBBZGRzICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpIGd1YXJkLgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50LmlkbDogQWRkcyBDb25kaXRpb25hbD1ET01f
U1RPUkFHRQorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHA6IEFkZHMgI2lmIEVOQUJM
RShET01fU1RPUkFHRSkgZ3VhcmQuCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTWFwLmg6IEFk
ZHMgI2lmIEVOQUJMRShET01fU1RPUkFHRSkgZ3VhcmQuCisKIDIwMDktMDYtMDQgIFBpZXJyZSBk
J0hlcmJlbW9udCAgPHBkaGVyYmVtb250QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCShyZXZpc2lvbiA0NDQxNCkKKysrIFdl
YkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDI3
IEBAIHZvaWQgUGFnZUdyb3VwOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhib29sIHNob3Vs
ZFRyYWNrKQogICAgICAgICByZW1vdmVBbGxWaXNpdGVkTGlua3MoKTsKIH0KIAorLy8gUmlnaHQg
bm93LCB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgbmVlZGVkIGJ5IHRoZSBBbmRyb2lkIHBsYXRmb3Jt
IGFzIHdlIG1heSByZWNpZXZlIG5vdGlmaWNhdGlvbgorLy8gZnJvbSB0aGUgSmF2YSBzaWRlIG9m
IHRoZSBwYXRoIHRvIHVzZSBmb3IgbG9jYWwgc3RvcmFnZSBkYXRhYmFzZXMgKmFmdGVyKiB0aGUg
cGFnZSBncm91cCBpcworLy8gY3JlYXRlZCAoYnV0IGJlZm9yZSB3ZWJzaXRlcyBjYW4gdXNlIGxv
Y2FsIHN0b3JhZ2UpLiBJZiB0aGF0IGlzIHRoZSBjYXNlLCB0aGUgbG9jYWwgc3RvcmFnZQorLy8g
b2JqZWN0IHdpbGwgaGF2ZSBhbiBlbXB0eSBwYXRoIGFuZCBsb2NhbCBzdG9yYWdlIGRhdGEgd2ls
bCBub3QgYmUgcGVyc2lzdGVkIHRvIGRpc2suIFRoaXMKKy8vIGZ1bmN0aW9uIGFsbG93cyB1cyB0
byByZS1lc3RhYmxpc2ggdGhlIGxvY2FsIHN0b3JhZ2Ugb2JqZWN0IHdpdGggdGhlIGNvcnJlY3Qg
cGF0aCBzbyB3aGVuCisvLyBzaXRlcyBhY2Nlc3MgbG9jYWwgc3RvcmFnZSwgdGhlIGNoYW5nZXMg
d2lsbCBiZSBzYXZlZCB0byBkaXNrLgordm9pZCBQYWdlR3JvdXA6OnVwZGF0ZUxvY2FsU3RvcmFn
ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQoreworI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKyAg
ICBpZiAoIXBhZ2VHcm91cHMpCisgICAgICAgIHJldHVybjsKKworICAgIFBhZ2VHcm91cE1hcDo6
aXRlcmF0b3IgZW5kID0gcGFnZUdyb3Vwcy0+ZW5kKCk7CisKKyAgICBmb3IgKFBhZ2VHcm91cE1h
cDo6aXRlcmF0b3IgaXQgPSBwYWdlR3JvdXBzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgaWYgKExvY2FsU3RvcmFnZSogbG9jYWxTdG9yYWdlID0gaXQtPnNlY29uZC0+bG9j
YWxTdG9yYWdlKCkpCisgICAgICAgICAgICBsb2NhbFN0b3JhZ2UtPnVwZGF0ZVBhdGgocGF0aCk7
CisgICAgfQorI2VuZGlmCit9CisKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiBMb2NhbFN0b3Jh
Z2UqIFBhZ2VHcm91cDo6bG9jYWxTdG9yYWdlKCkKIHsKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHJldmlzaW9u
IDQ0NDE0KQorKysgV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgUGFnZUdy
b3VwKiBwYWdlR3JvdXAoY29uc3QgU3RyaW5nJiBncm91cE5hbWUpOwogICAgICAgICBzdGF0aWMg
dm9pZCBjbG9zZUxvY2FsU3RvcmFnZSgpOworICAgICAgICBzdGF0aWMgdm9pZCB1cGRhdGVMb2Nh
bFN0b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgICAgIAogICAgICAgICBjb25z
dCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VzOyB9CiAKSW5k
ZXg6IFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuY3BwCShyZXZpc2lvbiA0NDQxNCkKKysrIFdlYkNvcmUv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlLmgiCiAKKyNpZiBF
TkFCTEUoRE9NX1NUT1JBR0UpCisKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKQEAgLTYxLDE2ICs2Myw4IEBAIFBh
c3NSZWZQdHI8TG9jYWxTdG9yYWdlPiBMb2NhbFN0b3JhZ2U6OmxvY2FsU3RvcmFnZShjb25zdCBT
dHJpbmcmIHBhdGgpCiB9CiAKIExvY2FsU3RvcmFnZTo6TG9jYWxTdG9yYWdlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKLSAgICA6IG1fcGF0aChwYXRoLmNvcHkoKSkKIHsKLSAgICAvLyBJZiB0aGUgcGF0
aCBpcyBlbXB0eSwgd2Uga25vdyB3ZSdyZSBuZXZlciBnb2luZyB0byBiZSB1c2luZyB0aGUgdGhy
ZWFkIGZvciBhbnl0aGluZywgc28gZG9uJ3Qgc3RhcnQgaXQuCi0gICAgLy8gSW4gdGhlIGZ1dHVy
ZSwgd2UgbWlnaHQgYWxzbyB3YW50IHRvIGNvbnNpZGVyIHJlbW92aW5nIGl0IGZyb20gdGhlIERP
TSBpbiB0aGF0IGNhc2UgLSA8cmRhcjovL3Byb2JsZW0vNTk2MDQ3MD4KLSAgICBpZiAocGF0aC5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdGhyZWFkID0gTG9jYWxTdG9yYWdl
VGhyZWFkOjpjcmVhdGUoKTsKLSAgICBtX3RocmVhZC0+c3RhcnQoKTsKLSAgICBtX3RocmVhZC0+
c2NoZWR1bGVJbXBvcnQodGhpcyk7CisgICAgdXBkYXRlUGF0aChwYXRoKTsKIH0KIAogTG9jYWxT
dG9yYWdlOjp+TG9jYWxTdG9yYWdlKCkKQEAgLTk3LDcgKzkxLDcgQEAgUGFzc1JlZlB0cjxTdG9y
YWdlQXJlYT4gTG9jYWxTdG9yYWdlOjpzdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KQogICAgIFJlZlB0cjxMb2NhbFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYTsKICAgICBpZiAoc3Rv
cmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW4pKQogICAgICAgICByZXR1cm4g
c3RvcmFnZUFyZWEucmVsZWFzZSgpOwotICAgICAgICAKKwogICAgIHN0b3JhZ2VBcmVhID0gTG9j
YWxTdG9yYWdlQXJlYTo6Y3JlYXRlKG9yaWdpbiwgdGhpcyk7CiAgICAgbV9zdG9yYWdlQXJlYU1h
cC5zZXQob3JpZ2luLCBzdG9yYWdlQXJlYSk7CiAgICAgcmV0dXJuIHN0b3JhZ2VBcmVhLnJlbGVh
c2UoKTsKQEAgLTE2OSw0ICsxNjMsMjUgQEAgdm9pZCBMb2NhbFN0b3JhZ2U6OnNjaGVkdWxlU3lu
YyhQYXNzUmVmUHRyPExvY2FsU3RvcmFnZUFyZWE+IGFyZWEpCiAgICAgICAgIG1fdGhyZWFkLT5z
Y2hlZHVsZVN5bmMoYXJlYSk7CiB9CiAKK3ZvaWQgTG9jYWxTdG9yYWdlOjp1cGRhdGVQYXRoKGNv
bnN0IFN0cmluZyYgbmV3UGF0aCkKK3sKKyAgICBpZiAobV9wYXRoID09IG5ld1BhdGgpCisgICAg
ICAgIHJldHVybjsKKworICAgIGNsb3NlKCk7CisgICAgbV9wYXRoID0gbmV3UGF0aC5jb3B5KCk7
CisKKyAgICAvLyBJZiB0aGUgcGF0aCBpcyBlbXB0eSwgd2Uga25vdyB3ZSdyZSBuZXZlciBnb2lu
ZyB0byBiZSB1c2luZyB0aGUgdGhyZWFkIGZvciBhbnl0aGluZywgc28gZG9uJ3Qgc3RhcnQgaXQu
CisgICAgLy8gSW4gdGhlIGZ1dHVyZSwgd2UgbWlnaHQgYWxzbyB3YW50IHRvIGNvbnNpZGVyIHJl
bW92aW5nIGl0IGZyb20gdGhlIERPTSBpbiB0aGF0IGNhc2UgLSA8cmRhcjovL3Byb2JsZW0vNTk2
MDQ3MD4KKyAgICBpZiAobmV3UGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fdGhyZWFkID0gTG9jYWxTdG9yYWdlVGhyZWFkOjpjcmVhdGUoKTsKKyAgICBtX3RocmVhZC0+
c3RhcnQoKTsKKyAgICBtX3RocmVhZC0+c2NoZWR1bGVJbXBvcnQodGhpcyk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkKKwpJbmRl
eDogV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2UuaAkocmV2aXNpb24gNDQ0MTQpCisrKyBXZWJDb3JlL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5k
ZWYgTG9jYWxTdG9yYWdlX2gKICNkZWZpbmUgTG9jYWxTdG9yYWdlX2gKIAorI2lmIEVOQUJMRShE
T01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJM
b2NhbFN0b3JhZ2VUYXNrLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlVGhyZWFkLmgiCkBAIC01
Myw2ICs1NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNsb3NlKCk7
CiAKKyAgICAgICAgdm9pZCB1cGRhdGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CisKICAgICBw
cml2YXRlOgogICAgICAgICBMb2NhbFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBwYXRoKTsKIApAQCAt
NzgsNCArODIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAorI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2VuZGlmIC8vIExvY2FsU3Rv
cmFnZV9oCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlQXJlYS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZUFyZWEuY3BwCShyZXZpc2lvbiA0
NDQxNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VBcmVhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxv
Y2FsU3RvcmFnZUFyZWEuaCIKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1ZGUg
IkNTdHJpbmcuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
QEAgLTQ0OSwzICs0NTEsNiBAQCB2b2lkIExvY2FsU3RvcmFnZUFyZWE6OnBlcmZvcm1TeW5jKCkK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9S
QUdFKQorCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlQXJlYS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VBcmVhLmgJKHJldmlzaW9uIDQ0NDE0
KQorKysgV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZUFyZWEuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBMb2NhbFN0b3JhZ2VBcmVhX2gKICNkZWZpbmUgTG9j
YWxTdG9yYWdlQXJlYV9oCiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNpbmNsdWRlICJT
UUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiU3Ry
aW5nSGFzaC5oIgpAQCAtOTcsNCArOTksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2Vu
ZGlmIC8vIExvY2FsU3RvcmFnZUFyZWFfaApJbmRleDogV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3Rv
cmFnZVRhc2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VU
YXNrLmNwcAkocmV2aXNpb24gNDQ0MTQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdl
VGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VUYXNrLmgiCiAKKyNpZiBFTkFCTEUoRE9NX1NU
T1JBR0UpCisKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2UuaCIKICNpbmNsdWRlICJMb2NhbFN0b3Jh
Z2VBcmVhLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlVGhyZWFkLmgiCkBAIC04MiwzICs4NCw2
IEBAIHZvaWQgTG9jYWxTdG9yYWdlVGFzazo6cGVyZm9ybVRhc2soKQogfQogCiB9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0
b3JhZ2VUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRh
c2suaAkocmV2aXNpb24gNDQ0MTQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFz
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIExvY2FsU3RvcmFn
ZVRhc2tfaAogI2RlZmluZSBMb2NhbFN0b3JhZ2VUYXNrX2gKIAorI2lmIEVOQUJMRShET01fU1RP
UkFHRSkKKwogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTYxLDQgKzYzLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFC
TEUoRE9NX1NUT1JBR0UpCisKICNlbmRpZiAvLyBMb2NhbFN0b3JhZ2VUYXNrX2gKSW5kZXg6IFdl
YkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuY3BwCShyZXZpc2lvbiA0NDQxNCkKKysrIFdl
YkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdl
VGhyZWFkLmgiCiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNpbmNsdWRlICJMb2NhbFN0
b3JhZ2UuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiTG9jYWxT
dG9yYWdlVGFzay5oIgpAQCAtMTM3LDMgKzEzOSw2IEBAIHZvaWQgTG9jYWxTdG9yYWdlVGhyZWFk
OjpwZXJmb3JtVGVybWluYXQKIH0KIAogfQorCisjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdF
KQorCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oCShyZXZpc2lvbiA0NDQx
NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBMb2NhbFN0b3JhZ2VUaHJlYWRfaAogI2RlZmlu
ZSBMb2NhbFN0b3JhZ2VUaHJlYWRfaAogCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTcxLDQgKzczLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NU
T1JBR0UpCisKICNlbmRpZiAvLyBMb2NhbFN0b3JhZ2VUaHJlYWRfaApJbmRleDogV2ViQ29yZS9z
dG9yYWdlL1Nlc3Npb25TdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2Uv
U2Vzc2lvblN0b3JhZ2UuY3BwCShyZXZpc2lvbiA0NDQxNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9T
ZXNzaW9uU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RvcmFnZS5oIgogCisjaWYgRU5BQkxF
KERPTV9TVE9SQUdFKQorCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCkBAIC03MywzICs3NSw2IEBAIFBhc3NSZWZQdHI8
U3RvcmFnZUFyZWE+IFNlc3Npb25TdG9yYWdlOjoKIH0KIAogfQorCisjZW5kaWYgLy8gRU5BQkxF
KERPTV9TVE9SQUdFKQorCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2UuaAkocmV2aXNpb24g
NDQ0MTQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBTZXNzaW9uU3RvcmFnZV9oCiAjZGVmaW5lIFNl
c3Npb25TdG9yYWdlX2gKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdG9yYWdlQXJlYS5oIgogCkBA
IC02MSw0ICs2Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCisjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjZW5kaWYgLy8gU2Vzc2lv
blN0b3JhZ2VfaApJbmRleDogV2ViQ29yZS9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlQXJlYS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlQXJlYS5jcHAJKHJl
dmlzaW9uIDQ0NDE0KQorKysgV2ViQ29yZS9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlQXJlYS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTZXNzaW9uU3RvcmFnZUFyZWEuaCIKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkK
KwogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lVHJlZS5oIgpAQCAtODYsMyArODgsNiBAQCB2b2lkIFNlc3Npb25TdG9yYWdlQXJlYTo6
ZGlzcGF0Y2hTdG9yYWdlCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShET01fU1RPUkFHRSkKKwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1Nlc3Npb25TdG9y
YWdlQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZUFy
ZWEuaAkocmV2aXNpb24gNDQ0MTQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VB
cmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgU2Vzc2lvblN0
b3JhZ2VBcmVhX2gKICNkZWZpbmUgU2Vzc2lvblN0b3JhZ2VBcmVhX2gKIAorI2lmIEVOQUJMRShE
T01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTU0LDQgKzU2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNlbmRpZiAv
LyBTZXNzaW9uU3RvcmFnZUFyZWFfaApJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAkocmV2aXNpb24gNDQ0
MTQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgiCiAK
KyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAg
LTEwNCwzICsxMDYsNiBAQCBib29sIFN0b3JhZ2U6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5
CiB9CiAKIH0KKworI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkKKwpJbmRleDogV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZS5oCShyZXZpc2lvbiA0NDQxNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgU3RvcmFnZV9oCiAjZGVmaW5lIFN0
b3JhZ2VfaAogCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWEuaCIKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC02Miw0ICs2NCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8gRU5B
QkxFKERPTV9TVE9SQUdFKQorCiAjZW5kaWYgLy8gU3RvcmFnZV9oCkluZGV4OiBXZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2Uu
aWRsCShyZXZpc2lvbiA0NDQxNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIEhh
c05hbWVHZXR0ZXIsCiAgICAgICAgIEN1c3RvbURlbGV0ZVByb3BlcnR5LAogICAgICAgICBDdXN0
b21HZXRQcm9wZXJ0eU5hbWVzLAotICAgICAgICBDdXN0b21QdXRGdW5jdGlvbgorICAgICAgICBD
dXN0b21QdXRGdW5jdGlvbiwKKyAgICAgICAgQ29uZGl0aW9uYWw9RE9NX1NUT1JBR0UKICAgICBd
IFN0b3JhZ2UgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0RvbnRFbnVtXSB1bnNpZ25l
ZCBsb25nIGxlbmd0aDsKICAgICAgICAgW0RvbnRFbnVtXSBET01TdHJpbmcga2V5KGluIHVuc2ln
bmVkIGxvbmcgaW5kZXgpIApJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCShyZXZpc2lvbiA0
NDQxNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdG9yYWdl
QXJlYS5oIgogCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjaW5jbHVkZSAiQ1N0cmluZy5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMTM3
LDMgKzEzOSw2IEBAIHZvaWQgU3RvcmFnZUFyZWE6OmltcG9ydEl0ZW0oY29uc3QgU3RyaW4KIH0K
IAogfQorCisjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQorCkluZGV4OiBXZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZUFyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZUFyZWEuaAkocmV2aXNpb24gNDQ0MTQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBTdG9yYWdlQXJlYV9o
CiAjZGVmaW5lIFN0b3JhZ2VBcmVhX2gKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
ODAsNCArODIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAorI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2VuZGlmIC8vIFN0b3JhZ2VB
cmVhX2gKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuY3BwCShyZXZpc2lvbiA0NDQxNCkKKysr
IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50Lmgi
CiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNpbmNsdWRlICJET01XaW5kb3cuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTUsMyArNTcsNiBAQCB2b2lkIFN0b3JhZ2VFdmVudDo6
aW5pdFN0b3JhZ2VFdmVudChjb25zCiB9CiAKIH0KKworI2VuZGlmIC8vIEVOQUJMRShET01fU1RP
UkFHRSkKKwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuaAkocmV2aXNpb24gNDQ0MTQpCisrKyBX
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDggQEAKICNpZm5kZWYgU3RvcmFnZUV2ZW50X2gKICNkZWZpbmUgU3RvcmFnZUV2ZW50X2gKIAor
I2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIkV2ZW50LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTY5LDQgKzcxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNl
bmRpZiAvLyBTdG9yYWdlRXZlbnRfaApJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5pZGwJKHJl
dmlzaW9uIDQ0NDE0KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDggQEAKIG1vZHVsZSBzdG9yYWdlIHsKIAogICAgIGludGVy
ZmFjZSBbCi0gICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICAgICAgR2VuZXJhdGVDb25z
dHJ1Y3RvciwKKyAgICAgICAgQ29uZGl0aW9uYWw9RE9NX1NUT1JBR0UKICAgICBdIFN0b3JhZ2VF
dmVudCA6IEV2ZW50IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXk7
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsXSBE
T01TdHJpbmcgb2xkVmFsdWU7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCShyZXZpc2lvbiA0
NDQxNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VN
YXAuaCIKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBQYXNzUmVmUHRyPFN0b3JhZ2VNYXA+IFN0b3JhZ2VNYXA6OmNyZWF0ZSgpCkBAIC0xNTYsMyAr
MTU4LDYgQEAgdm9pZCBTdG9yYWdlTWFwOjppbXBvcnRJdGVtKGNvbnN0IFN0cmluZwogfQogCiB9
CisKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisKSW5kZXg6IFdlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAu
aAkocmV2aXNpb24gNDQ0MTQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFN0b3JhZ2VNYXBfaAogI2RlZmlu
ZSBTdG9yYWdlTWFwX2gKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogCkBAIC02Miw0ICs2NCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5k
aWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjZW5kaWYgLy8gU3RvcmFnZU1hcF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30950</attachid>
            <date>2009-06-04 10:16:28 -0700</date>
            <delta_ts>2009-06-08 11:17:14 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>ls-svn-040609-1714.txt</filename>
            <type>text/plain</type>
            <size>17631</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDQxNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMDYtMDQgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIEluIHRoZSBBbmRyb2lkIGJyb3dzZXIsIHRoZSB3YXkgdGhlIEphdmEgc2lk
ZSBjb21tdW5pY2F0ZXMgdGhlIHBhdGggZm9yIHRoZSBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlIG1l
YW5zIHRoYXQgd2UgbmVlZCB0byByZWNvbmZpZ3VyZSB0aGUKKyAgICAgICAgbG9jYWwgc3RvcmFn
ZSBvYmplY3QgY3JlYXRlZCBieSB0aGUgcGFnZSBncm91cCAqYWZ0ZXIqIGl0J3MgYmVlbiBjcmVh
dGVkLiBUbyBhY2hpZXZlIHRoaXMgSSd2ZSBhZGRlZCBhIG5ldyBzdGF0aWMgbWV0aG9kIHRvIFBh
Z2VHcm91cCB0bworICAgICAgICBpdGVyYXRlIG92ZXIgdGhlIGN1cnJlbnQgc2V0IG9mIFBhZ2VH
cm91cHMgYW5kIGNhbGwgYSBuZXcgbWV0aG9kIG9uIHRoZSBMb2NhbFN0b3JhZ2Ugb2JqZWN0IHRo
YXQgdXBkYXRlcyB0aGUgcGF0aCB0byB0aGUgZGF0YWJhc2UgYW5kCisgICAgICAgIHJlc3RhcnRz
IHRoZSBsb2NhbCBzdG9yYWdlIHRocmVhZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYxODkKKworICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNw
cDogQWRkcyBhIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gZm9yIHVwZGF0aW5nIHRoZSBsb2NhbCBz
dG9yYWdlIGRhdGFiYXNlIHBhdGggZm9yIGVhY2ggUGFnZSBHcm91cC4KKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VHcm91cDo6dXBkYXRlTG9jYWxTdG9yYWdlUGF0aCk6IEl0ZXJhdGVzIG92ZXIgZWFj
aCBQYWdlR3JvdXAgYW5kIHVwZGF0ZXMgaXQncyBsb2NhbCBzdG9yYWdlIG9iamVjdCB3aXRoIGEg
bmV3IGRhdGFiYXNlIHBhdGguCisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuaDoKKyAgICAgICAg
KiBzdG9yYWdlL0xvY2FsU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3Jh
Z2U6OkxvY2FsU3RvcmFnZSk6IGNhbGwgbmV3IG1ldGhvZCB1cGRhdGVQYXRoCisgICAgICAgIChX
ZWJDb3JlOjpMb2NhbFN0b3JhZ2U6OnN0b3JhZ2VBcmVhKTogZGVsZXRlcyB3aGl0ZXNwYWNlCisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2U6OnVwZGF0ZVBhdGgpOiBVcGRhdGVzIHRoZSBw
YXRoIHRvIHRoZSBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlIGFuZCByZXN0YXJ0cyB0aGUgbG9jYWwg
c3RvcmFnZSB0aHJlYWQuCisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuaDogQWRkcyAj
aWYgRU5BQkxFKERPTV9TVE9SQUdFKSBndWFyZC4KKyAgICAgICAgKiBzdG9yYWdlL0xvY2FsU3Rv
cmFnZUFyZWEuY3BwOiBBZGRzICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpIGd1YXJkLgorICAgICAg
ICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlQXJlYS5oOiBBZGRzICNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpIGd1YXJkLgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5jcHA6IEFkZHMg
I2lmIEVOQUJMRShET01fU1RPUkFHRSkgZ3VhcmQuCisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0
b3JhZ2VUYXNrLmg6IEFkZHMgI2lmIEVOQUJMRShET01fU1RPUkFHRSkgZ3VhcmQuCisgICAgICAg
ICogc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuY3BwOiBBZGRzICNpZiBFTkFCTEUoRE9NX1NU
T1JBR0UpIGd1YXJkLgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmg6IEFk
ZHMgI2lmIEVOQUJMRShET01fU1RPUkFHRSkgZ3VhcmQuCisgICAgICAgICogc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZS5jcHA6IEFkZHMgI2lmIEVOQUJMRShET01fU1RPUkFHRSkgZ3VhcmQuCisgICAg
ICAgICogc3RvcmFnZS9TZXNzaW9uU3RvcmFnZS5oOiBBZGRzICNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpIGd1YXJkLgorICAgICAgICAqIHN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VBcmVhLmNwcDogQWRk
cyAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKSBndWFyZC4KKyAgICAgICAgKiBzdG9yYWdlL1Nlc3Np
b25TdG9yYWdlQXJlYS5oOiBBZGRzICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpIGd1YXJkLgorICAg
ICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6IEFkZHMgI2lmIEVOQUJMRShET01fU1RPUkFHRSkg
Z3VhcmQuCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmg6IEFkZHMgI2lmIEVOQUJMRShET01f
U1RPUkFHRSkgZ3VhcmQuCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmlkbDogIEFkZHMgQ29u
ZGl0aW9uYWw9RE9NX1NUT1JBR0UKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcDog
QWRkcyAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKSBndWFyZC4KKyAgICAgICAgKiBzdG9yYWdlL1N0
b3JhZ2VBcmVhLmg6IEFkZHMgI2lmIEVOQUJMRShET01fU1RPUkFHRSkgZ3VhcmQuCisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlRXZlbnQuY3BwOiBBZGRzICNpZiBFTkFCTEUoRE9NX1NUT1JBR0Up
IGd1YXJkLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50Lmg6IEFkZHMgI2lmIEVOQUJM
RShET01fU1RPUkFHRSkgZ3VhcmQuCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlRXZlbnQuaWRs
OiBBZGRzIENvbmRpdGlvbmFsPURPTV9TVE9SQUdFCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdl
TWFwLmNwcDogQWRkcyAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKSBndWFyZC4KKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VNYXAuaDogQWRkcyAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKSBndWFyZC4K
KwogMjAwOS0wNi0wNCAgUGllcnJlIGQnSGVyYmVtb250ICA8cGRoZXJiZW1vbnRAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9wYWdl
L1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJ
KHJldmlzaW9uIDQ0NDE0KQorKysgV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NCw2ICsxODQsMjcgQEAgdm9pZCBQYWdlR3JvdXA6OnNldFNob3VsZFRyYWNr
VmlzaXRlZExpbmtzKGJvb2wgc2hvdWxkVHJhY2spCiAgICAgICAgIHJlbW92ZUFsbFZpc2l0ZWRM
aW5rcygpOwogfQogCisvLyBSaWdodCBub3csIHRoaXMgZnVuY3Rpb24gaXMgb25seSBuZWVkZWQg
YnkgdGhlIEFuZHJvaWQgcGxhdGZvcm0gYXMgd2UgbWF5IHJlY2lldmUgbm90aWZpY2F0aW9uCisv
LyBmcm9tIHRoZSBKYXZhIHNpZGUgb2YgdGhlIHBhdGggdG8gdXNlIGZvciBsb2NhbCBzdG9yYWdl
IGRhdGFiYXNlcyAqYWZ0ZXIqIHRoZSBwYWdlIGdyb3VwIGlzCisvLyBjcmVhdGVkIChidXQgYmVm
b3JlIHdlYnNpdGVzIGNhbiB1c2UgbG9jYWwgc3RvcmFnZSkuIElmIHRoYXQgaXMgdGhlIGNhc2Us
IHRoZSBsb2NhbCBzdG9yYWdlCisvLyBvYmplY3Qgd2lsbCBoYXZlIGFuIGVtcHR5IHBhdGggYW5k
IGxvY2FsIHN0b3JhZ2UgZGF0YSB3aWxsIG5vdCBiZSBwZXJzaXN0ZWQgdG8gZGlzay4gVGhpcwor
Ly8gZnVuY3Rpb24gYWxsb3dzIHVzIHRvIHJlLWVzdGFibGlzaCB0aGUgbG9jYWwgc3RvcmFnZSBv
YmplY3Qgd2l0aCB0aGUgY29ycmVjdCBwYXRoIHNvIHdoZW4KKy8vIHNpdGVzIGFjY2VzcyBsb2Nh
bCBzdG9yYWdlLCB0aGUgY2hhbmdlcyB3aWxsIGJlIHNhdmVkIHRvIGRpc2suCit2b2lkIFBhZ2VH
cm91cDo6dXBkYXRlTG9jYWxTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKQorICAgIGlmICghcGFnZUdyb3VwcykKKyAgICAgICAgcmV0dXJu
OworCisgICAgUGFnZUdyb3VwTWFwOjppdGVyYXRvciBlbmQgPSBwYWdlR3JvdXBzLT5lbmQoKTsK
KworICAgIGZvciAoUGFnZUdyb3VwTWFwOjppdGVyYXRvciBpdCA9IHBhZ2VHcm91cHMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoTG9jYWxTdG9yYWdlKiBsb2NhbFN0
b3JhZ2UgPSBpdC0+c2Vjb25kLT5sb2NhbFN0b3JhZ2UoKSkKKyAgICAgICAgICAgIGxvY2FsU3Rv
cmFnZS0+dXBkYXRlUGF0aChwYXRoKTsKKyAgICB9CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShE
T01fU1RPUkFHRSkKIExvY2FsU3RvcmFnZSogUGFnZUdyb3VwOjpsb2NhbFN0b3JhZ2UoKQogewpJ
bmRleDogV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuaAkocmV2aXNpb24gNDQ0MTQpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHN0YXRpYyBQYWdlR3JvdXAqIHBhZ2VHcm91cChjb25zdCBTdHJpbmcmIGdyb3Vw
TmFtZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNsb3NlTG9jYWxTdG9yYWdlKCk7CisgICAgICAg
IHN0YXRpYyB2b2lkIHVwZGF0ZUxvY2FsU3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsK
ICAgICAgICAgCiAgICAgICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcygpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZXM7IH0KIApJbmRleDogV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZS5jcHAJKHJldmlz
aW9uIDQ0NDE0KQorKysgV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJM
b2NhbFN0b3JhZ2UuaCIKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIkNT
dHJpbmcuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgpAQCAtNjEsMTYgKzYzLDggQEAgUGFzc1JlZlB0cjxMb2NhbFN0b3JhZ2U+IExvY2FsU3RvcmFn
ZTo6bG9jYWxTdG9yYWdlKGNvbnN0IFN0cmluZyYgcGF0aCkKIH0KIAogTG9jYWxTdG9yYWdlOjpM
b2NhbFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBwYXRoKQotICAgIDogbV9wYXRoKHBhdGguY29weSgp
KQogewotICAgIC8vIElmIHRoZSBwYXRoIGlzIGVtcHR5LCB3ZSBrbm93IHdlJ3JlIG5ldmVyIGdv
aW5nIHRvIGJlIHVzaW5nIHRoZSB0aHJlYWQgZm9yIGFueXRoaW5nLCBzbyBkb24ndCBzdGFydCBp
dC4KLSAgICAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBhbHNvIHdhbnQgdG8gY29uc2lkZXIg
cmVtb3ZpbmcgaXQgZnJvbSB0aGUgRE9NIGluIHRoYXQgY2FzZSAtIDxyZGFyOi8vcHJvYmxlbS81
OTYwNDcwPgotICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV90aHJlYWQgPSBMb2NhbFN0b3JhZ2VUaHJlYWQ6OmNyZWF0ZSgpOwotICAgIG1fdGhyZWFkLT5z
dGFydCgpOwotICAgIG1fdGhyZWFkLT5zY2hlZHVsZUltcG9ydCh0aGlzKTsKKyAgICB1cGRhdGVQ
YXRoKHBhdGgpOwogfQogCiBMb2NhbFN0b3JhZ2U6On5Mb2NhbFN0b3JhZ2UoKQpAQCAtOTcsNyAr
OTEsNyBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBMb2NhbFN0b3JhZ2U6OnN0b3JhZ2VBcmVh
KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgUmVmUHRyPExvY2FsU3RvcmFnZUFyZWE+IHN0
b3JhZ2VBcmVhOwogICAgIGlmIChzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFNYXAuZ2V0KG9y
aWdpbikpCiAgICAgICAgIHJldHVybiBzdG9yYWdlQXJlYS5yZWxlYXNlKCk7Ci0gICAgICAgIAor
CiAgICAgc3RvcmFnZUFyZWEgPSBMb2NhbFN0b3JhZ2VBcmVhOjpjcmVhdGUob3JpZ2luLCB0aGlz
KTsKICAgICBtX3N0b3JhZ2VBcmVhTWFwLnNldChvcmlnaW4sIHN0b3JhZ2VBcmVhKTsKICAgICBy
ZXR1cm4gc3RvcmFnZUFyZWEucmVsZWFzZSgpOwpAQCAtMTY5LDQgKzE2MywyNSBAQCB2b2lkIExv
Y2FsU3RvcmFnZTo6c2NoZWR1bGVTeW5jKFBhc3NSZWZQdHI8TG9jYWxTdG9yYWdlQXJlYT4gYXJl
YSkKICAgICAgICAgbV90aHJlYWQtPnNjaGVkdWxlU3luYyhhcmVhKTsKIH0KIAordm9pZCBMb2Nh
bFN0b3JhZ2U6OnVwZGF0ZVBhdGgoY29uc3QgU3RyaW5nJiBuZXdQYXRoKQoreworICAgIGlmICht
X3BhdGggPT0gbmV3UGF0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2xvc2UoKTsKKyAgICBt
X3BhdGggPSBuZXdQYXRoLmNvcHkoKTsKKworICAgIC8vIElmIHRoZSBwYXRoIGlzIGVtcHR5LCB3
ZSBrbm93IHdlJ3JlIG5ldmVyIGdvaW5nIHRvIGJlIHVzaW5nIHRoZSB0aHJlYWQgZm9yIGFueXRo
aW5nLCBzbyBkb24ndCBzdGFydCBpdC4KKyAgICAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBh
bHNvIHdhbnQgdG8gY29uc2lkZXIgcmVtb3ZpbmcgaXQgZnJvbSB0aGUgRE9NIGluIHRoYXQgY2Fz
ZSAtIDxyZGFyOi8vcHJvYmxlbS81OTYwNDcwPgorICAgIGlmIChuZXdQYXRoLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV90aHJlYWQgPSBMb2NhbFN0b3JhZ2VUaHJlYWQ6OmNy
ZWF0ZSgpOworICAgIG1fdGhyZWFkLT5zdGFydCgpOworICAgIG1fdGhyZWFkLT5zY2hlZHVsZUlt
cG9ydCh0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKERPTV9TVE9SQUdFKQorCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZS5oCShyZXZpc2lvbiA0
NDQxNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBMb2NhbFN0b3JhZ2VfaAogI2RlZmluZSBMb2NhbFN0
b3JhZ2VfaAogCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjaW5jbHVkZSAiTG9jYWxTdG9y
YWdlQXJlYS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZVRhc2suaCIKICNpbmNsdWRlICJMb2Nh
bFN0b3JhZ2VUaHJlYWQuaCIKQEAgLTUzLDYgKzU1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHZvaWQgY2xvc2UoKTsKIAorICAgICAgICB2b2lkIHVwZGF0ZVBhdGgoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIExvY2FsU3RvcmFnZShjb25z
dCBTdHJpbmcmIHBhdGgpOwogCkBAIC03OCw0ICs4Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdF
KQorCiAjZW5kaWYgLy8gTG9jYWxTdG9yYWdlX2gKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VBcmVhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9y
YWdlQXJlYS5jcHAJKHJldmlzaW9uIDQ0NDE0KQorKysgV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3Rv
cmFnZUFyZWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlQXJlYS5oIgogCisjaWYgRU5BQkxFKERP
TV9TVE9SQUdFKQorCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNDQ5LDMgKzQ1MSw2IEBAIHZvaWQgTG9jYWxTdG9y
YWdlQXJlYTo6cGVyZm9ybVN5bmMoKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFn
ZUFyZWEuaAkocmV2aXNpb24gNDQ0MTQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdl
QXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIExvY2FsU3Rv
cmFnZUFyZWFfaAogI2RlZmluZSBMb2NhbFN0b3JhZ2VBcmVhX2gKIAorI2lmIEVOQUJMRShET01f
U1RPUkFHRSkKKwogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCiAjaW5jbHVkZSAiU3RvcmFn
ZUFyZWEuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCkBAIC05Nyw0ICs5OSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8gRU5B
QkxFKERPTV9TVE9SQUdFKQorCiAjZW5kaWYgLy8gTG9jYWxTdG9yYWdlQXJlYV9oCkluZGV4OiBX
ZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRhc2suY3BwCShyZXZpc2lvbiA0NDQxNCkKKysrIFdlYkNv
cmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZVRhc2su
aCIKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZS5o
IgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VU
aHJlYWQuaCIKQEAgLTgyLDMgKzg0LDYgQEAgdm9pZCBMb2NhbFN0b3JhZ2VUYXNrOjpwZXJmb3Jt
VGFzaygpCiB9CiAKIH0KKworI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkKKwpJbmRleDog
V2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5oCShyZXZpc2lvbiA0NDQxNCkKKysrIFdlYkNvcmUv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDgg
QEAKICNpZm5kZWYgTG9jYWxTdG9yYWdlVGFza19oCiAjZGVmaW5lIExvY2FsU3RvcmFnZVRhc2tf
aAogCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpA
QCAtNjEsNCArNjMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAorI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2VuZGlmIC8vIExvY2Fs
U3RvcmFnZVRhc2tfaApJbmRleDogV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAJ
KHJldmlzaW9uIDQ0NDE0KQorKysgV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VUaHJlYWQuaCIKIAorI2lmIEVOQUJMRShET01fU1RPUkFH
RSkKKwogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZUFy
ZWEuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VUYXNrLmgiCkBAIC0xMzcsMyArMTM5LDYgQEAg
dm9pZCBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnBlcmZvcm1UZXJtaW5hdAogfQogCiB9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0
b3JhZ2VUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdl
VGhyZWFkLmgJKHJldmlzaW9uIDQ0NDE0KQorKysgV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFn
ZVRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIExvY2Fs
U3RvcmFnZVRocmVhZF9oCiAjZGVmaW5lIExvY2FsU3RvcmFnZVRocmVhZF9oCiAKKyNpZiBFTkFC
TEUoRE9NX1NUT1JBR0UpCisKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzEsNCAr
NzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAor
I2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2VuZGlmIC8vIExvY2FsU3RvcmFnZVRo
cmVhZF9oCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZS5jcHAJKHJldmlzaW9uIDQ0NDE0
KQorKysgV2ViQ29yZS9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlc3Npb25T
dG9yYWdlLmgiCiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKQEAgLTcz
LDMgKzc1LDYgQEAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gU2Vzc2lvblN0b3JhZ2U6OgogfQog
CiB9CisKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisKSW5kZXg6IFdlYkNvcmUvc3Rv
cmFnZS9TZXNzaW9uU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZS5oCShyZXZpc2lvbiA0NDQxNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TZXNzaW9u
U3RvcmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFNlc3Np
b25TdG9yYWdlX2gKICNkZWZpbmUgU2Vzc2lvblN0b3JhZ2VfaAogCisjaWYgRU5BQkxFKERPTV9T
VE9SQUdFKQorCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5IYXNoLmgiCiAjaW5jbHVkZSAiU2Vz
c2lvblN0b3JhZ2VBcmVhLmgiCiAKQEAgLTYxLDQgKzYzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JB
R0UpCisKICNlbmRpZiAvLyBTZXNzaW9uU3RvcmFnZV9oCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2Uv
U2Vzc2lvblN0b3JhZ2VBcmVhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VBcmVhLmNwcAkocmV2aXNpb24gNDQ0MTQpCisrKyBXZWJDb3JlL3N0b3JhZ2Uv
U2Vzc2lvblN0b3JhZ2VBcmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlc3Npb25TdG9yYWdlQXJlYS5oIgogCisj
aWYgRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCkBAIC04NiwzICs4OCw2IEBAIHZv
aWQgU2Vzc2lvblN0b3JhZ2VBcmVhOjpkaXNwYXRjaFN0b3JhZ2UKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQorCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL1Nlc3Npb25TdG9yYWdlQXJlYS5oCShyZXZpc2lvbiA0NDQxNCkKKysrIFdlYkNvcmUv
c3RvcmFnZS9TZXNzaW9uU3RvcmFnZUFyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
OCBAQAogI2lmbmRlZiBTZXNzaW9uU3RvcmFnZUFyZWFfaAogI2RlZmluZSBTZXNzaW9uU3RvcmFn
ZUFyZWFfaAogCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsNCArNTYsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIEVOQUJMRShE
T01fU1RPUkFHRSkKKwogI2VuZGlmIC8vIFNlc3Npb25TdG9yYWdlQXJlYV9oCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2UuY3BwCShyZXZpc2lvbiA0NDQxNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlN0b3JhZ2UuaCIKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1
ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTA0LDMgKzEwNiw2IEBAIGJvb2wgU3RvcmFnZTo6Y29u
dGFpbnMoY29uc3QgU3RyaW5nJiBrZXkKIH0KIAogfQorCisjZW5kaWYgLy8gRU5BQkxFKERPTV9T
VE9SQUdFKQorCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgJKHJldmlzaW9uIDQ0NDE0KQorKysgV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRl
ZiBTdG9yYWdlX2gKICNkZWZpbmUgU3RvcmFnZV9oCiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0Up
CisKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5oIgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTYyLDQgKzY0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNlbmRpZiAvLyBTdG9y
YWdlX2gKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5pZGwJKHJldmlzaW9uIDQ0NDE0KQorKysgV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVs
ZSBzdG9yYWdlIHsKICAgICAgICAgSGFzTmFtZUdldHRlciwKICAgICAgICAgQ3VzdG9tRGVsZXRl
UHJvcGVydHksCiAgICAgICAgIEN1c3RvbUdldFByb3BlcnR5TmFtZXMsCi0gICAgICAgIEN1c3Rv
bVB1dEZ1bmN0aW9uCisgICAgICAgIEN1c3RvbVB1dEZ1bmN0aW9uLAorICAgICAgICBDb25kaXRp
b25hbD1ET01fU1RPUkFHRQogICAgIF0gU3RvcmFnZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBbRG9udEVudW1dIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgICAgICBbRG9udEVudW1d
IERPTVN0cmluZyBrZXkoaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgCkluZGV4OiBXZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlQXJlYS5jcHAJKHJldmlzaW9uIDQ0NDE0KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VB
cmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0Up
CisKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCkBAIC0xMzcsMyArMTM5LDYgQEAgdm9pZCBTdG9yYWdlQXJlYTo6aW1w
b3J0SXRlbShjb25zdCBTdHJpbgogfQogCiB9CisKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JB
R0UpCisKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCShyZXZpc2lvbiA0NDQxNCkKKysrIFdlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBA
CiAjaWZuZGVmIFN0b3JhZ2VBcmVhX2gKICNkZWZpbmUgU3RvcmFnZUFyZWFfaAogCisjaWYgRU5B
QkxFKERPTV9TVE9SQUdFKQorCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC04MCw0ICs4Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdF
KQorCiAjZW5kaWYgLy8gU3RvcmFnZUFyZWFfaApJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5j
cHAJKHJldmlzaW9uIDQ0NDE0KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTdG9yYWdlRXZlbnQuaCIKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NSwzICs1Nyw2
IEBAIHZvaWQgU3RvcmFnZUV2ZW50Ojppbml0U3RvcmFnZUV2ZW50KGNvbnMKIH0KIAogfQorCisj
ZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQorCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5o
CShyZXZpc2lvbiA0NDQxNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBTdG9yYWdlRXZlbnRfaAogI2Rl
ZmluZSBTdG9yYWdlRXZlbnRfaAogCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjaW5jbHVk
ZSAiRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjksNCArNzEsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIEVO
QUJMRShET01fU1RPUkFHRSkKKwogI2VuZGlmIC8vIFN0b3JhZ2VFdmVudF9oCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZUV2ZW50LmlkbAkocmV2aXNpb24gNDQ0MTQpCisrKyBXZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsOCBAQAogbW9kdWxl
IHN0b3JhZ2UgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3Rv
cgorICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yLAorICAgICAgICBDb25kaXRpb25hbD1ET01f
U1RPUkFHRQogICAgIF0gU3RvcmFnZUV2ZW50IDogRXZlbnQgewogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGtleTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252
ZXJ0TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyBvbGRWYWx1ZTsKSW5kZXg6IFdlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZU1hcC5jcHAJKHJldmlzaW9uIDQ0NDE0KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VN
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hcC5oIgogCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8U3RvcmFnZU1hcD4gU3RvcmFnZU1h
cDo6Y3JlYXRlKCkKQEAgLTE1NiwzICsxNTgsNiBAQCB2b2lkIFN0b3JhZ2VNYXA6OmltcG9ydEl0
ZW0oY29uc3QgU3RyaW5nCiB9CiAKIH0KKworI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkK
KwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5oCShyZXZpc2lvbiA0NDQxNCkKKysrIFdlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5k
ZWYgU3RvcmFnZU1hcF9oCiAjZGVmaW5lIFN0b3JhZ2VNYXBfaAogCisjaWYgRU5BQkxFKERPTV9T
VE9SQUdFKQorCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTdHJpbmdI
YXNoLmgiCiAKQEAgLTYyLDQgKzY0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNlbmRp
ZiAvLyBTdG9yYWdlTWFwX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31053</attachid>
            <date>2009-06-08 11:07:52 -0700</date>
            <delta_ts>2009-06-08 18:06:35 -0700</delta_ts>
            <desc>ENABLE(DOM_STORAGE) guards.</desc>
            <filename>26189-guards.txt</filename>
            <type>text/plain</type>
            <size>12554</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDQ5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDktMDYtMDggIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIEFkZCBFTkFCTEUoRE9NX1NUT1JBR0UpIGd1YXJkcyB0byB0aGUgZG9tIHN0
b3JhZ2Ugc291cmNlIGZpbGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjYxODkKKworICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlLmNwcDog
QWRkIEVOQUJMRShET01fU1RPUkFHRSkgZ3VhcmRzIHRvIHRoZSBmaWxlLgorICAgICAgICAqIHN0
b3JhZ2UvTG9jYWxTdG9yYWdlLmg6IERpdHRvCisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VBcmVhLmNwcDogRGl0dG8KKyAgICAgICAgKiBzdG9yYWdlL0xvY2FsU3RvcmFnZUFyZWEuaDog
RGl0dG8KKyAgICAgICAgKiBzdG9yYWdlL0xvY2FsU3RvcmFnZVRhc2suY3BwOiBEaXR0bworICAg
ICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5oOiBEaXR0bworICAgICAgICAqIHN0b3Jh
Z2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcDogRGl0dG8KKyAgICAgICAgKiBzdG9yYWdlL0xvY2Fs
U3RvcmFnZVRocmVhZC5oOiBEaXR0bworICAgICAgICAqIHN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2Uu
Y3BwOiBEaXR0bworICAgICAgICAqIHN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2UuaDogRGl0dG8KKyAg
ICAgICAgKiBzdG9yYWdlL1Nlc3Npb25TdG9yYWdlQXJlYS5jcHA6IERpdHRvCisgICAgICAgICog
c3RvcmFnZS9TZXNzaW9uU3RvcmFnZUFyZWEuaDogRGl0dG8KKyAgICAgICAgKiBzdG9yYWdlL1N0
b3JhZ2UuY3BwOiBEaXR0bworICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5oOiBEaXR0bworICAg
ICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOiBEaXR0bworICAgICAgICAqIHN0b3JhZ2Uv
U3RvcmFnZUFyZWEuaDogRGl0dG8KKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHA6
IERpdHRvCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlRXZlbnQuaDogRGl0dG8KKyAgICAgICAg
KiBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwOiBEaXR0bworICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZU1hcC5oOiBEaXR0bworICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50LmlkbDogQWRkIENv
bmRpdGlvbmFsPURPTV9TVE9SQUdFIGF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdG9yYWdlL1N0b3Jh
Z2UuaWRsOiBEaXR0bworCiAyMDA5LTA2LTA4ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29t
Ym9zQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgpJbmRl
eDogV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdG9yYWdlL0xvY2FsU3RvcmFnZS5jcHAJKHJldmlzaW9uIDQ0NDk0KQorKysgV2ViQ29yZS9z
dG9yYWdlL0xvY2FsU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2UuaCIKIAorI2lmIEVO
QUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgpAQCAtMTcwLDMgKzE3Miw2IEBAIHZv
aWQgTG9jYWxTdG9yYWdlOjpzY2hlZHVsZVN5bmMoUGFzc1JlZlAKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQorCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdl
L0xvY2FsU3RvcmFnZS5oCShyZXZpc2lvbiA0NDQ5NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9Mb2Nh
bFN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBMb2Nh
bFN0b3JhZ2VfaAogI2RlZmluZSBMb2NhbFN0b3JhZ2VfaAogCisjaWYgRU5BQkxFKERPTV9TVE9S
QUdFKQorCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIkxvY2FsU3Rv
cmFnZVRhc2suaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VUaHJlYWQuaCIKQEAgLTc4LDQgKzgw
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNl
bmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNlbmRpZiAvLyBMb2NhbFN0b3JhZ2VfaApJ
bmRleDogV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZUFyZWEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VBcmVhLmNwcAkocmV2aXNpb24gNDQ0OTQpCisr
KyBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlQXJlYS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2NhbFN0b3Jh
Z2VBcmVhLmgiCiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNpbmNsdWRlICJDU3RyaW5n
LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAt
NDUwLDMgKzQ1Miw2IEBAIHZvaWQgTG9jYWxTdG9yYWdlQXJlYTo6cGVyZm9ybVN5bmMoKQogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0Up
CisKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VBcmVhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZUFyZWEuaAkocmV2aXNpb24gNDQ0OTQpCisr
KyBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw4IEBACiAjaWZuZGVmIExvY2FsU3RvcmFnZUFyZWFfaAogI2RlZmluZSBMb2NhbFN0
b3JhZ2VBcmVhX2gKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIlNRTGl0
ZURhdGFiYXNlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJTdHJpbmdI
YXNoLmgiCkBAIC05Nyw0ICs5OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjZW5kaWYg
Ly8gTG9jYWxTdG9yYWdlQXJlYV9oCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdl
VGFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRhc2su
Y3BwCShyZXZpc2lvbiA0NDQ5NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZVRhc2suaCIKIAorI2lmIEVOQUJMRShET01fU1RPUkFH
RSkKKwogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZUFy
ZWEuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VUaHJlYWQuaCIKQEAgLTgyLDMgKzg0LDYgQEAg
dm9pZCBMb2NhbFN0b3JhZ2VUYXNrOjpwZXJmb3JtVGFzaygpCiB9CiAKIH0KKworI2VuZGlmIC8v
IEVOQUJMRShET01fU1RPUkFHRSkKKwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFn
ZVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5o
CShyZXZpc2lvbiA0NDQ5NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgTG9jYWxTdG9yYWdlVGFz
a19oCiAjZGVmaW5lIExvY2FsU3RvcmFnZVRhc2tfaAogCisjaWYgRU5BQkxFKERPTV9TVE9SQUdF
KQorCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtNjEsNCArNjMsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIEVOQUJMRShE
T01fU1RPUkFHRSkKKwogI2VuZGlmIC8vIExvY2FsU3RvcmFnZVRhc2tfaApJbmRleDogV2ViQ29y
ZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAJKHJldmlzaW9uIDQ0NDk0KQorKysgV2ViQ29y
ZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VUaHJl
YWQuaCIKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIkxvY2FsU3RvcmFn
ZS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJMb2NhbFN0b3Jh
Z2VUYXNrLmgiCkBAIC0xMzcsMyArMTM5LDYgQEAgdm9pZCBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnBl
cmZvcm1UZXJtaW5hdAogfQogCiB9CisKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisK
SW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmgJKHJldmlzaW9uIDQ0NDk0KQor
KysgV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIExvY2FsU3RvcmFnZVRocmVhZF9oCiAjZGVmaW5lIExv
Y2FsU3RvcmFnZVRocmVhZF9oCiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzEsNCArNzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFH
RSkKKwogI2VuZGlmIC8vIExvY2FsU3RvcmFnZVRocmVhZF9oCkluZGV4OiBXZWJDb3JlL3N0b3Jh
Z2UvU2Vzc2lvblN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZS5jcHAJKHJldmlzaW9uIDQ0NDk0KQorKysgV2ViQ29yZS9zdG9yYWdlL1Nlc3Np
b25TdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlc3Npb25TdG9yYWdlLmgiCiAKKyNpZiBFTkFCTEUoRE9N
X1NUT1JBR0UpCisKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKQEAgLTczLDMgKzc1LDYgQEAgUGFzc1JlZlB0cjxTdG9y
YWdlQXJlYT4gU2Vzc2lvblN0b3JhZ2U6OgogfQogCiB9CisKKyNlbmRpZiAvLyBFTkFCTEUoRE9N
X1NUT1JBR0UpCisKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZS5oCShyZXZpc2lvbiA0NDQ5
NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFNlc3Npb25TdG9yYWdlX2gKICNkZWZpbmUgU2Vzc2lv
blN0b3JhZ2VfaAogCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW5IYXNoLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0b3JhZ2VBcmVhLmgiCiAKQEAgLTYx
LDQgKzYzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNlbmRpZiAvLyBTZXNzaW9uU3Rv
cmFnZV9oCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VBcmVhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VBcmVhLmNwcAkocmV2aXNp
b24gNDQ0OTQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VBcmVhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlNlc3Npb25TdG9yYWdlQXJlYS5oIgogCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC04NywzICs4OSw2IEBAIHZvaWQgU2Vzc2lvblN0b3JhZ2VBcmVhOjpkaXNw
YXRjaFN0b3JhZ2UKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKERPTV9TVE9SQUdFKQorCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VB
cmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlQXJlYS5o
CShyZXZpc2lvbiA0NDQ5NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZUFyZWEu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBTZXNzaW9uU3RvcmFn
ZUFyZWFfaAogI2RlZmluZSBTZXNzaW9uU3RvcmFnZUFyZWFfaAogCisjaWYgRU5BQkxFKERPTV9T
VE9SQUdFKQorCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNTQsNCArNTYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAorI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2VuZGlmIC8vIFNl
c3Npb25TdG9yYWdlQXJlYV9oCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCShyZXZpc2lvbiA0NDQ5NCkK
KysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2UuaCIKIAorI2lm
IEVOQUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTA0
LDMgKzEwNiw2IEBAIGJvb2wgU3RvcmFnZTo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkKIH0K
IAogfQorCisjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQorCkluZGV4OiBXZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgJ
KHJldmlzaW9uIDQ0NDk0KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBTdG9yYWdlX2gKICNkZWZpbmUgU3RvcmFn
ZV9oCiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5o
IgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTYyLDQgKzY0LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUo
RE9NX1NUT1JBR0UpCisKICNlbmRpZiAvLyBTdG9yYWdlX2gKSW5kZXg6IFdlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5pZGwJ
KHJldmlzaW9uIDQ0NDk0KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgSGFzTmFt
ZUdldHRlciwKICAgICAgICAgQ3VzdG9tRGVsZXRlUHJvcGVydHksCiAgICAgICAgIEN1c3RvbUdl
dFByb3BlcnR5TmFtZXMsCi0gICAgICAgIEN1c3RvbVB1dEZ1bmN0aW9uCisgICAgICAgIEN1c3Rv
bVB1dEZ1bmN0aW9uLAorICAgICAgICBDb25kaXRpb25hbD1ET01fU1RPUkFHRQogICAgIF0gU3Rv
cmFnZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRG9udEVudW1dIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOwogICAgICAgICBbRG9udEVudW1dIERPTVN0cmluZyBrZXkoaW4gdW5zaWduZWQg
bG9uZyBpbmRleCkgCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAJKHJldmlzaW9uIDQ0NDk0
KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVh
LmgiCiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xMzcsMyAr
MTM5LDYgQEAgdm9pZCBTdG9yYWdlQXJlYTo6aW1wb3J0SXRlbShjb25zdCBTdHJpbgogfQogCiB9
CisKKyNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCisKSW5kZXg6IFdlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJl
YS5oCShyZXZpc2lvbiA0NDQ5NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFN0b3JhZ2VBcmVhX2gKICNk
ZWZpbmUgU3RvcmFnZUFyZWFfaAogCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC04MCw0
ICs4Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CisjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQorCiAjZW5kaWYgLy8gU3RvcmFnZUFyZWFf
aApJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAJKHJldmlzaW9uIDQ0NDk0KQorKysgV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdG9yYWdlRXZlbnQuaCIKIAor
I2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIlN0b3JhZ2UuaCIKIApAQCAtNTgsMyArNjAsNiBAQCB2b2lkIFN0b3JhZ2VFdmVudDo6aW5p
dFN0b3JhZ2VFdmVudChjb25zCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShET01fU1RPUkFHRSkKKwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VF
dmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnQuaAkocmV2
aXNpb24gNDQ0OTQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgU3RvcmFnZUV2ZW50X2gKICNkZWZpbmUg
U3RvcmFnZUV2ZW50X2gKIAorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2luY2x1ZGUgIkV2
ZW50LmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgogCkBAIC03Miw0ICs3NCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8gRU5BQkxF
KERPTV9TVE9SQUdFKQorCiAjZW5kaWYgLy8gU3RvcmFnZUV2ZW50X2gKSW5kZXg6IFdlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlRXZlbnQuaWRsCShyZXZpc2lvbiA0NDQ5NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw4IEBACiBtb2R1bGUgc3Rv
cmFnZSB7CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisg
ICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IsCisgICAgICAgIENvbmRpdGlvbmFsPURPTV9TVE9S
QUdFCiAgICAgXSBTdG9yYWdlRXZlbnQgOiBFdmVudCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcga2V5OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnRO
dWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nIG9sZFZhbHVlOwpJbmRleDogV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
TWFwLmNwcAkocmV2aXNpb24gNDQ0OTQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTdG9yYWdlTWFwLmgiCiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxTdG9yYWdlTWFwPiBTdG9yYWdlTWFwOjpj
cmVhdGUoKQpAQCAtMTU2LDMgKzE1OCw2IEBAIHZvaWQgU3RvcmFnZU1hcDo6aW1wb3J0SXRlbShj
b25zdCBTdHJpbmcKIH0KIAogfQorCisjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQorCklu
ZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlTWFwLmgJKHJldmlzaW9uIDQ0NDk0KQorKysgV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBT
dG9yYWdlTWFwX2gKICNkZWZpbmUgU3RvcmFnZU1hcF9oCiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpCisKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2gu
aCIKIApAQCAtNjIsNCArNjQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkKKwogI2VuZGlmIC8v
IFN0b3JhZ2VNYXBfaAo=
</data>
<flag name="review"
          id="15813"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31054</attachid>
            <date>2009-06-08 11:16:56 -0700</date>
            <delta_ts>2009-06-09 06:46:56 -0700</delta_ts>
            <desc>Lazily create localstorage objects for PageGroups.</desc>
            <filename>26189-pg.txt</filename>
            <type>text/plain</type>
            <size>1934</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDUwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDktMDYtMDggIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFRoaXMgZml4IGNoYW5nZXMgdGhlIHdheSBQYWdlR3JvdXBzIGNyZWF0ZSB0
aGVpciBsb2NhbFN0b3JhZ2Ugb2JqZWN0cy4gUmF0aGVyIHRoYW4gY3JlYXRpbmcgYSBsb2NhbAor
ICAgICAgICBzdG9yYWdlIG9iamVjdCBmb3IgdGhlIHBhZ2UgZ3JvdXAgd2hlbiBhIHBhZ2UgaXMg
YWRkZWQgdG8gdGhlIGdyb3VwLCB0aGUgbG9jYWwgc3RvcmFnZSBvYmplY3QgaXMgbm93CisgICAg
ICAgIGNyZWF0ZWQgbGF6aWx5IHdoZW4gdGhlIGxvY2FsIHN0b3JhZ2Ugb2JqZWN0IGlzIHJlcXVl
c3RlZCBieSB0aGUgRE9NV2luZG93LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjYxODkKKworICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRkUGFnZSk6IHJlbW92ZSBjb2RlIHRvIGNyZWF0
ZSBhIGxvY2FsIHN0b3JhZ2Ugb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjps
b2NhbFN0b3JhZ2UpOiBhZGQgY29kZSB0byBjcmVhdGUgYSBsb2NhbCBzdG9yYWdlIG9iamVjdCBp
ZiBvbmUgZG9lcyBub3QgZXhpc3QgYWxyZWFkeS4KKwogMjAwOS0wNi0wOCAgVmljdG9yIFdhbmcg
PHZpY3RvcndAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xh
emtvdi4KSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCShyZXZpc2lvbiA0NDQ5NCkKKysrIFdlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsMTAgKzEwOCw2IEBAIHZvaWQg
UGFnZUdyb3VwOjphZGRQYWdlKFBhZ2UqIHBhZ2UpCiAgICAgQVNTRVJUKHBhZ2UpOwogICAgIEFT
U0VSVCghbV9wYWdlcy5jb250YWlucyhwYWdlKSk7CiAgICAgbV9wYWdlcy5hZGQocGFnZSk7Ci0j
aWYgRU5BQkxFKERPTV9TVE9SQUdFKQotICAgIGlmICghbV9sb2NhbFN0b3JhZ2UpCi0gICAgICAg
IG1fbG9jYWxTdG9yYWdlID0gTG9jYWxTdG9yYWdlOjpsb2NhbFN0b3JhZ2UocGFnZS0+c2V0dGlu
Z3MoKS0+bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgUGFn
ZUdyb3VwOjpyZW1vdmVQYWdlKFBhZ2UqIHBhZ2UpCkBAIC0xODcsNiArMTgzLDEzIEBAIHZvaWQg
UGFnZUdyb3VwOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW4KICNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpCiBMb2NhbFN0b3JhZ2UqIFBhZ2VHcm91cDo6bG9jYWxTdG9yYWdlKCkKIHsKKyAgICBpZiAo
IW1fbG9jYWxTdG9yYWdlKSB7CisgICAgICAgIC8vIE5lZWQgYSBwYWdlIGluIHRoaXMgcGFnZSBn
cm91cCB0byBxdWVyeSB0aGUgc2V0dGluZ3MgZm9yIHRoZSBsb2NhbCBzdG9yYWdlIGRhdGFiYXNl
IHBhdGguCisgICAgICAgIFBhZ2UqIHBhZ2UgPSAqbV9wYWdlcy5iZWdpbigpOworICAgICAgICBB
U1NFUlQocGFnZSk7CisgICAgICAgIG1fbG9jYWxTdG9yYWdlID0gTG9jYWxTdG9yYWdlOjpsb2Nh
bFN0b3JhZ2UocGFnZS0+c2V0dGluZ3MoKS0+bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKCkpOwor
ICAgIH0KKwogICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZS5nZXQoKTsKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31089</attachid>
            <date>2009-06-09 06:11:44 -0700</date>
            <delta_ts>2009-06-09 07:12:06 -0700</delta_ts>
            <desc>Lazily create LocalStorage object in PageGroup.</desc>
            <filename>26189-pg.txt</filename>
            <type>text/plain</type>
            <size>3459</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDUzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDYtMDkgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgd2F5IFBhZ2VHcm91cHMgY3JlYXRl
IHRoZWlyIGxvY2FsU3RvcmFnZSBvYmplY3RzLiBSYXRoZXIgdGhhbiBjcmVhdGluZyBhIGxvY2Fs
CisgICAgICAgIHN0b3JhZ2Ugb2JqZWN0IGZvciB0aGUgcGFnZSBncm91cCB3aGVuIGEgcGFnZSBp
cyBhZGRlZCB0byB0aGUgZ3JvdXAsIHRoZSBsb2NhbCBzdG9yYWdlIG9iamVjdCBpcyBub3cKKyAg
ICAgICAgY3JlYXRlZCBsYXppbHkgd2hlbiB0aGUgbG9jYWwgc3RvcmFnZSBvYmplY3QgaXMgcmVx
dWVzdGVkIGJ5IHRoZSBET01XaW5kb3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNjE4OQorCisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjbG9zZUxvY2FsU3RvcmFnZSk6IENhbGwgY2xv
c2VMb2NhbFN0b3JhZ2VJbnRlcm5hbCBvbiBlYWNoIFBhZ2VHcm91cCByYXRoZXIgdGhhbiBjbG9z
ZSBkaXJlY3RseSBvbiBlYWNoIExvY2FsU3RvcmFnZSBvYmplY3QuCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlR3JvdXA6OmNsb3NlTG9jYWxTdG9yYWdlSW50ZXJuYWwpOiBPbmx5IGNsb3NlIHRoZSBQ
YWdlR3JvdXAncyBMb2NhbFN0b3JhZ2Ugb2JqZWN0IGlmIG9uZSBoYXMgYmVlbiBjcmVhdGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjphZGRQYWdlKTogRG8gbm90IGF1dG9tYXRpY2Fs
bHkgdHJ5IHRvIGNyZWF0ZSBhIGxvY2FsIHN0b3JhZ2Ugb2JqZWN0IHdoZW4gYSBwYWdlIGlzIGFk
ZGVkIHRvIHRoZSBncm91cC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6bG9jYWxTdG9y
YWdlKTogQ3JlYXRlIGEgbG9jYWwgc3RvcmFnZSBvYmplY3QgaWYgb25lIGRvZXMgbm90IGV4aXN0
IGFuZCByZXR1cm4gaXQuCisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuaDogQWRkIHByaXZhdGUg
Y2xvc2VMb2NhbFN0b3JhZ2VJbnRlcm5hbCBtZXRob2QgdG8gUGFnZUdyb3VwLgorCiAyMDA5LTA2
LTA5ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAg
ICBGaXggdGhlIFF0IGJ1aWxkLCB0aGUgdGltZSBmdW5jdGlvbnMgbW92ZWQgaW50byB0aGUgV1RG
IG5hbWVzcGFjZS4KSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCShyZXZpc2lvbiA0NDQ5NSkKKysrIFdlYkNv
cmUvcGFnZS9QYWdlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NiwyMiArOTYsMjUgQEAg
dm9pZCBQYWdlR3JvdXA6OmNsb3NlTG9jYWxTdG9yYWdlKCkKIAogICAgIFBhZ2VHcm91cE1hcDo6
aXRlcmF0b3IgZW5kID0gcGFnZUdyb3Vwcy0+ZW5kKCk7CiAKLSAgICBmb3IgKFBhZ2VHcm91cE1h
cDo6aXRlcmF0b3IgaXQgPSBwYWdlR3JvdXBzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
LSAgICAgICAgaWYgKExvY2FsU3RvcmFnZSogbG9jYWxTdG9yYWdlID0gaXQtPnNlY29uZC0+bG9j
YWxTdG9yYWdlKCkpCi0gICAgICAgICAgICBsb2NhbFN0b3JhZ2UtPmNsb3NlKCk7Ci0gICAgfQor
ICAgIGZvciAoUGFnZUdyb3VwTWFwOjppdGVyYXRvciBpdCA9IHBhZ2VHcm91cHMtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnNlY29uZC0+Y2xvc2VMb2NhbFN0b3JhZ2VJ
bnRlcm5hbCgpOwogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCit2b2lkIFBh
Z2VHcm91cDo6Y2xvc2VMb2NhbFN0b3JhZ2VJbnRlcm5hbCgpCit7CisgICAgLy8gT25seSBjbG9z
ZSB0aGUgbG9jYWwgc3RvcmFnZSBvYmplY3QgaWYgd2UgaGF2ZSBvbmUuCisgICAgaWYgKG1fbG9j
YWxTdG9yYWdlKQorICAgICAgICBtX2xvY2FsU3RvcmFnZS0+Y2xvc2UoKTsKK30KKyNlbmRpZgor
CiB2b2lkIFBhZ2VHcm91cDo6YWRkUGFnZShQYWdlKiBwYWdlKQogewogICAgIEFTU0VSVChwYWdl
KTsKICAgICBBU1NFUlQoIW1fcGFnZXMuY29udGFpbnMocGFnZSkpOwogICAgIG1fcGFnZXMuYWRk
KHBhZ2UpOwotI2lmIEVOQUJMRShET01fU1RPUkFHRSkKLSAgICBpZiAoIW1fbG9jYWxTdG9yYWdl
KQotICAgICAgICBtX2xvY2FsU3RvcmFnZSA9IExvY2FsU3RvcmFnZTo6bG9jYWxTdG9yYWdlKHBh
Z2UtPnNldHRpbmdzKCktPmxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCgpKTsKLSNlbmRpZgogfQog
CiB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlUGFnZShQYWdlKiBwYWdlKQpAQCAtMTg3LDYgKzE5MCwx
MyBAQCB2b2lkIFBhZ2VHcm91cDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGluCiAjaWYgRU5BQkxF
KERPTV9TVE9SQUdFKQogTG9jYWxTdG9yYWdlKiBQYWdlR3JvdXA6OmxvY2FsU3RvcmFnZSgpCiB7
CisgICAgaWYgKCFtX2xvY2FsU3RvcmFnZSkgeworICAgICAgICAvLyBOZWVkIGEgcGFnZSBpbiB0
aGlzIHBhZ2UgZ3JvdXAgdG8gcXVlcnkgdGhlIHNldHRpbmdzIGZvciB0aGUgbG9jYWwgc3RvcmFn
ZSBkYXRhYmFzZSBwYXRoLgorICAgICAgICBQYWdlKiBwYWdlID0gKm1fcGFnZXMuYmVnaW4oKTsK
KyAgICAgICAgQVNTRVJUKHBhZ2UpOworICAgICAgICBtX2xvY2FsU3RvcmFnZSA9IExvY2FsU3Rv
cmFnZTo6bG9jYWxTdG9yYWdlKHBhZ2UtPnNldHRpbmdzKCktPmxvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aCgpKTsKKyAgICB9CisKICAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2UuZ2V0KCk7CiB9CiAj
ZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHJldmlzaW9uIDQ0NDk1KQorKysgV2ViQ29yZS9wYWdlL1Bh
Z2VHcm91cC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoTGlua0hh
c2ggc3RyaW5nSGFzaCk7Ci0KKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisgICAgICAgIHZvaWQg
Y2xvc2VMb2NhbFN0b3JhZ2VJbnRlcm5hbCgpOworI2VuZGlmCiAgICAgICAgIFN0cmluZyBtX25h
bWU7CiAKICAgICAgICAgSGFzaFNldDxQYWdlKj4gbV9wYWdlczsK
</data>
<flag name="review"
          id="15837"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31092</attachid>
            <date>2009-06-09 07:10:06 -0700</date>
            <delta_ts>2009-06-09 07:12:06 -0700</delta_ts>
            <desc>Lazily create LocalStorage object in PageGroup</desc>
            <filename>26189-pg.txt</filename>
            <type>text/plain</type>
            <size>3111</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDUzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDYtMDkgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgd2F5IFBhZ2VHcm91cHMgY3JlYXRl
IHRoZWlyIGxvY2FsU3RvcmFnZSBvYmplY3RzLiBSYXRoZXIgdGhhbiBjcmVhdGluZyBhIGxvY2Fs
CisgICAgICAgIHN0b3JhZ2Ugb2JqZWN0IGZvciB0aGUgcGFnZSBncm91cCB3aGVuIGEgcGFnZSBp
cyBhZGRlZCB0byB0aGUgZ3JvdXAsIHRoZSBsb2NhbCBzdG9yYWdlIG9iamVjdCBpcyBub3cKKyAg
ICAgICAgY3JlYXRlZCBsYXppbHkgd2hlbiB0aGUgbG9jYWwgc3RvcmFnZSBvYmplY3QgaXMgcmVx
dWVzdGVkIGJ5IHRoZSBET01XaW5kb3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNjE4OQorCisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjbG9zZUxvY2FsU3RvcmFnZSk6IEJlZm9yZSBh
dHRlbXB0aW5nIHRvIGNsb3NlIGEgbG9jYWwgc3RvcmFnZSBvYmplY3QgZm9yIGEgcGFnZSBncm91
cCwgZW5zdXJlIG9uZSBoYXMgYmVlbiBjcmVhdGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdy
b3VwOjphZGRQYWdlKTogRG8gbm90IGF1dG9tYXRpY2FsbHkgdHJ5IHRvIGNyZWF0ZSBhIGxvY2Fs
IHN0b3JhZ2Ugb2JqZWN0IHdoZW4gYSBwYWdlIGlzIGFkZGVkIHRvIHRoZSBncm91cC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6bG9jYWxTdG9yYWdlKTogQ3JlYXRlIGEgbG9jYWwgc3Rv
cmFnZSBvYmplY3QgaWYgb25lIGRvZXMgbm90IGV4aXN0IGFuZCByZXR1cm4gaXQuCisgICAgICAg
ICogcGFnZS9QYWdlR3JvdXAuaDogQWRkIHByaXZhdGUgaGFzTG9jYWxTdG9yYWdlSW50ZXJuYWwg
bWV0aG9kIHRvIFBhZ2VHcm91cC4KKworCiAyMDA5LTA2LTA5ICBTaW1vbiBIYXVzbWFubiAgPHNp
bW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBGaXggdGhlIFF0IGJ1aWxkLCB0aGUg
dGltZSBmdW5jdGlvbnMgbW92ZWQgaW50byB0aGUgV1RGIG5hbWVzcGFjZS4KSW5kZXg6IFdlYkNv
cmUvcGFnZS9QYWdlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlR3Jv
dXAuY3BwCShyZXZpc2lvbiA0NDQ5NSkKKysrIFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Nyw4ICs5Nyw4IEBAIHZvaWQgUGFnZUdyb3VwOjpjbG9zZUxvY2Fs
U3RvcmFnZSgpCiAgICAgUGFnZUdyb3VwTWFwOjppdGVyYXRvciBlbmQgPSBwYWdlR3JvdXBzLT5l
bmQoKTsKIAogICAgIGZvciAoUGFnZUdyb3VwTWFwOjppdGVyYXRvciBpdCA9IHBhZ2VHcm91cHMt
PmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoTG9jYWxTdG9yYWdlKiBs
b2NhbFN0b3JhZ2UgPSBpdC0+c2Vjb25kLT5sb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgICAgIGxv
Y2FsU3RvcmFnZS0+Y2xvc2UoKTsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQtPmhhc0xvY2FsU3Rv
cmFnZSgpKQorICAgICAgICAgICAgaXQtPnNlY29uZC0+bG9jYWxTdG9yYWdlKCktPmNsb3NlKCk7
CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xMDgsMTAgKzEwOCw2IEBAIHZvaWQgUGFnZUdyb3VwOjph
ZGRQYWdlKFBhZ2UqIHBhZ2UpCiAgICAgQVNTRVJUKHBhZ2UpOwogICAgIEFTU0VSVCghbV9wYWdl
cy5jb250YWlucyhwYWdlKSk7CiAgICAgbV9wYWdlcy5hZGQocGFnZSk7Ci0jaWYgRU5BQkxFKERP
TV9TVE9SQUdFKQotICAgIGlmICghbV9sb2NhbFN0b3JhZ2UpCi0gICAgICAgIG1fbG9jYWxTdG9y
YWdlID0gTG9jYWxTdG9yYWdlOjpsb2NhbFN0b3JhZ2UocGFnZS0+c2V0dGluZ3MoKS0+bG9jYWxT
dG9yYWdlRGF0YWJhc2VQYXRoKCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgUGFnZUdyb3VwOjpyZW1v
dmVQYWdlKFBhZ2UqIHBhZ2UpCkBAIC0xODcsNiArMTgzLDEzIEBAIHZvaWQgUGFnZUdyb3VwOjpz
ZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW4KICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiBMb2NhbFN0
b3JhZ2UqIFBhZ2VHcm91cDo6bG9jYWxTdG9yYWdlKCkKIHsKKyAgICBpZiAoIW1fbG9jYWxTdG9y
YWdlKSB7CisgICAgICAgIC8vIE5lZWQgYSBwYWdlIGluIHRoaXMgcGFnZSBncm91cCB0byBxdWVy
eSB0aGUgc2V0dGluZ3MgZm9yIHRoZSBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlIHBhdGguCisgICAg
ICAgIFBhZ2UqIHBhZ2UgPSAqbV9wYWdlcy5iZWdpbigpOworICAgICAgICBBU1NFUlQocGFnZSk7
CisgICAgICAgIG1fbG9jYWxTdG9yYWdlID0gTG9jYWxTdG9yYWdlOjpsb2NhbFN0b3JhZ2UocGFn
ZS0+c2V0dGluZ3MoKS0+bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKCkpOworICAgIH0KKwogICAg
IHJldHVybiBtX2xvY2FsU3RvcmFnZS5nZXQoKTsKIH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9w
YWdlL1BhZ2VHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAko
cmV2aXNpb24gNDQ0OTUpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDcgKzY4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhMaW5rSGFzaCBzdHJpbmdIYXNoKTsKLQorI2lm
IEVOQUJMRShET01fU1RPUkFHRSkKKyAgICAgICAgYm9vbCBoYXNMb2NhbFN0b3JhZ2UoKSB7IHJl
dHVybiBtX2xvY2FsU3RvcmFnZTsgfQorI2VuZGlmCiAgICAgICAgIFN0cmluZyBtX25hbWU7CiAK
ICAgICAgICAgSGFzaFNldDxQYWdlKj4gbV9wYWdlczsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31093</attachid>
            <date>2009-06-09 07:12:06 -0700</date>
            <delta_ts>2009-06-09 09:14:45 -0700</delta_ts>
            <desc>Lazily create LocalStorage object in PageGroup.</desc>
            <filename>26189-pg.txt</filename>
            <type>text/plain</type>
            <size>3103</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDUzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDYtMDkgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgd2F5IFBhZ2VHcm91cHMgY3JlYXRl
IHRoZWlyIGxvY2FsU3RvcmFnZSBvYmplY3RzLiBSYXRoZXIgdGhhbiBjcmVhdGluZyBhIGxvY2Fs
CisgICAgICAgIHN0b3JhZ2Ugb2JqZWN0IGZvciB0aGUgcGFnZSBncm91cCB3aGVuIGEgcGFnZSBp
cyBhZGRlZCB0byB0aGUgZ3JvdXAsIHRoZSBsb2NhbCBzdG9yYWdlIG9iamVjdCBpcyBub3cKKyAg
ICAgICAgY3JlYXRlZCBsYXppbHkgd2hlbiB0aGUgbG9jYWwgc3RvcmFnZSBvYmplY3QgaXMgcmVx
dWVzdGVkIGJ5IHRoZSBET01XaW5kb3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNjE4OQorCisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjbG9zZUxvY2FsU3RvcmFnZSk6IEJlZm9yZSBh
dHRlbXB0aW5nIHRvIGNsb3NlIGEgbG9jYWwgc3RvcmFnZSBvYmplY3QgZm9yIGEgcGFnZSBncm91
cCwgZW5zdXJlIG9uZSBoYXMgYmVlbiBjcmVhdGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdy
b3VwOjphZGRQYWdlKTogRG8gbm90IGF1dG9tYXRpY2FsbHkgdHJ5IHRvIGNyZWF0ZSBhIGxvY2Fs
IHN0b3JhZ2Ugb2JqZWN0IHdoZW4gYSBwYWdlIGlzIGFkZGVkIHRvIHRoZSBncm91cC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6bG9jYWxTdG9yYWdlKTogQ3JlYXRlIGEgbG9jYWwgc3Rv
cmFnZSBvYmplY3QgaWYgb25lIGRvZXMgbm90IGV4aXN0IGFuZCByZXR1cm4gaXQuCisgICAgICAg
ICogcGFnZS9QYWdlR3JvdXAuaDogQWRkIHByaXZhdGUgaGFzTG9jYWxTdG9yYWdlIG1ldGhvZCB0
byBQYWdlR3JvdXAuCisKKwogMjAwOS0wNi0wOSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CiAKICAgICAgICAgRml4IHRoZSBRdCBidWlsZCwgdGhlIHRpbWUgZnVu
Y3Rpb25zIG1vdmVkIGludG8gdGhlIFdURiBuYW1lc3BhY2UuCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
UGFnZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAko
cmV2aXNpb24gNDQ0OTUpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTcsOCArOTcsOCBAQCB2b2lkIFBhZ2VHcm91cDo6Y2xvc2VMb2NhbFN0b3JhZ2Uo
KQogICAgIFBhZ2VHcm91cE1hcDo6aXRlcmF0b3IgZW5kID0gcGFnZUdyb3Vwcy0+ZW5kKCk7CiAK
ICAgICBmb3IgKFBhZ2VHcm91cE1hcDo6aXRlcmF0b3IgaXQgPSBwYWdlR3JvdXBzLT5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKExvY2FsU3RvcmFnZSogbG9jYWxTdG9y
YWdlID0gaXQtPnNlY29uZC0+bG9jYWxTdG9yYWdlKCkpCi0gICAgICAgICAgICBsb2NhbFN0b3Jh
Z2UtPmNsb3NlKCk7CisgICAgICAgIGlmIChpdC0+c2Vjb25kLT5oYXNMb2NhbFN0b3JhZ2UoKSkK
KyAgICAgICAgICAgIGl0LT5zZWNvbmQtPmxvY2FsU3RvcmFnZSgpLT5jbG9zZSgpOwogICAgIH0K
ICNlbmRpZgogfQpAQCAtMTA4LDEwICsxMDgsNiBAQCB2b2lkIFBhZ2VHcm91cDo6YWRkUGFnZShQ
YWdlKiBwYWdlKQogICAgIEFTU0VSVChwYWdlKTsKICAgICBBU1NFUlQoIW1fcGFnZXMuY29udGFp
bnMocGFnZSkpOwogICAgIG1fcGFnZXMuYWRkKHBhZ2UpOwotI2lmIEVOQUJMRShET01fU1RPUkFH
RSkKLSAgICBpZiAoIW1fbG9jYWxTdG9yYWdlKQotICAgICAgICBtX2xvY2FsU3RvcmFnZSA9IExv
Y2FsU3RvcmFnZTo6bG9jYWxTdG9yYWdlKHBhZ2UtPnNldHRpbmdzKCktPmxvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aCgpKTsKLSNlbmRpZgogfQogCiB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlUGFnZShQ
YWdlKiBwYWdlKQpAQCAtMTg3LDYgKzE4MywxMyBAQCB2b2lkIFBhZ2VHcm91cDo6c2V0U2hvdWxk
VHJhY2tWaXNpdGVkTGluCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogTG9jYWxTdG9yYWdlKiBQ
YWdlR3JvdXA6OmxvY2FsU3RvcmFnZSgpCiB7CisgICAgaWYgKCFtX2xvY2FsU3RvcmFnZSkgewor
ICAgICAgICAvLyBOZWVkIGEgcGFnZSBpbiB0aGlzIHBhZ2UgZ3JvdXAgdG8gcXVlcnkgdGhlIHNl
dHRpbmdzIGZvciB0aGUgbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSBwYXRoLgorICAgICAgICBQYWdl
KiBwYWdlID0gKm1fcGFnZXMuYmVnaW4oKTsKKyAgICAgICAgQVNTRVJUKHBhZ2UpOworICAgICAg
ICBtX2xvY2FsU3RvcmFnZSA9IExvY2FsU3RvcmFnZTo6bG9jYWxTdG9yYWdlKHBhZ2UtPnNldHRp
bmdzKCktPmxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCgpKTsKKyAgICB9CisKICAgICByZXR1cm4g
bV9sb2NhbFN0b3JhZ2UuZ2V0KCk7CiB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHJldmlzaW9u
IDQ0NDk1KQorKysgV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw3ICs2OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZvaWQgYWRkVmlzaXRlZExpbmsoTGlua0hhc2ggc3RyaW5nSGFzaCk7Ci0KKyNpZiBFTkFCTEUo
RE9NX1NUT1JBR0UpCisgICAgICAgIGJvb2wgaGFzTG9jYWxTdG9yYWdlKCkgeyByZXR1cm4gbV9s
b2NhbFN0b3JhZ2U7IH0KKyNlbmRpZgogICAgICAgICBTdHJpbmcgbV9uYW1lOwogCiAgICAgICAg
IEhhc2hTZXQ8UGFnZSo+IG1fcGFnZXM7Cg==
</data>
<flag name="review"
          id="15839"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>