<?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>79413</bug_id>
          
          <creation_ts>2012-02-23 15:54:32 -0800</creation_ts>
          <short_desc>IndexedDB: Handle LevelDB database corruption</short_desc>
          <delta_ts>2012-03-12 12:57:21 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80757</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>hans</cc>
    
    <cc>kinuko</cc>
    
    <cc>michaeln</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tony</cc>
    
    <cc>tzik</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>563588</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 15:54:32 -0800</bug_when>
    <thetext>We open leveldb databases with the paranoid_checks option, which can detect some forms of corruption. Currently, the IDB implementation doesn&apos;t do anything in this case. We should do &quot;something&quot; here.

Recommendation is that if corruption is detected (db fails to open), use the DestroyDB to attempt resetting to a stable state. If this fails, give up. If the destroy succeeds, retry the open (just once, though, not a loop).

We should NOT use the RepairDB option, as this could leave the database in an unexpected state for applications, which is equivalent to corruption in most cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563617</commentid>
    <comment_count>1</comment_count>
      <attachid>128585</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 16:04:48 -0800</bug_when>
    <thetext>Created attachment 128585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563624</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 16:06:41 -0800</bug_when>
    <thetext>Initial patch. Appears to work as intended when I hand corrupt the files (e.g. plaster some null bytes), although the &quot;paranoid checks&quot; didn&apos;t notice in one case when I truncated the main .log file.

I need to figure out where to wedge in tests for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563890</commentid>
    <comment_count>3</comment_count>
      <attachid>128585</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-23 20:54:35 -0800</bug_when>
    <thetext>Comment on attachment 128585
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

Would testing this require a browser restart after writing a database but before corrupting it and trying to reopen?

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:118
&gt; +    options.env = leveldb::Env::Default();

I&apos;d think you wouldn&apos;t need this line because of:
http://code.google.com/codesearch#OAMlx_jo-ck/src/third_party/leveldatabase/src/util/options.cc&amp;exact_package=chromium&amp;q=file:leveld%20case:yes%20Default&amp;type=cs&amp;l=17

&gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:166
&gt; +                return 0;

Is there any significance to returning 0 here but returning PassRefPtr&lt;LevelDBDatabase&gt;() below?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563897</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-23 21:13:10 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 128585 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128585&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests. (OOPS!)
&gt; 
&gt; Would testing this require a browser restart after writing a database but before corrupting it and trying to reopen?

I was thinking a unit test rather than a layout test, since we&apos;ll need access to the file path. That should let us do it within one process since handles are closed when the LevelDBDatabase object is released.

&gt; 
&gt; &gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:118
&gt; &gt; +    options.env = leveldb::Env::Default();
&gt; 
&gt; I&apos;d think you wouldn&apos;t need this line because of:
&gt; http://code.google.com/codesearch#OAMlx_jo-ck/src/third_party/leveldatabase/src/util/options.cc&amp;exact_package=chromium&amp;q=file:leveld%20case:yes%20Default&amp;type=cs&amp;l=17

Ah, good point.

&gt; &gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:166
&gt; &gt; +                return 0;
&gt; 
&gt; Is there any significance to returning 0 here but returning PassRefPtr&lt;LevelDBDatabase&gt;() below?

Thanks, I meant to tidy that up. I put in a 0 because I thought that was more succinct, and was going to simplify the other cases but forgot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571077</commentid>
    <comment_count>5</comment_count>
      <attachid>130211</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-05 15:08:20 -0800</bug_when>
    <thetext>Created attachment 130211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571096</commentid>
    <comment_count>6</comment_count>
      <attachid>130211</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-05 15:24:40 -0800</bug_when>
    <thetext>Comment on attachment 130211
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:166
&gt; +                LOG_ERROR(&quot;IndexedDB backing store cleanup failed&quot;);
&gt; +                return PassRefPtr&lt;IDBBackingStore&gt;();

Nit: The flow might be a bit more clear if you early returned on failure and didn&apos;t indent the success case.  *shrug*

&gt; Source/WebKit/chromium/tests/LevelDBTest.cpp:44
&gt; +    virtual int compare(const LevelDBSlice&amp; a, const LevelDBSlice&amp; b) const

Nit: OVERRIDE?

&gt; Source/WebKit/chromium/tests/LevelDBTest.cpp:49
&gt; +    virtual const char* name() const { return &quot;temp_comparator&quot;; }

Nit: OVERRIDE?

&gt; Source/WebKit/chromium/tests/LevelDBTest.cpp:89
&gt; +    PlatformFileHandle handle = openFile(filepath, OpenForWrite);
&gt; +    truncateFile(handle, 0);
&gt; +    closeFile(handle);

Do we want to add tests for more subtle corruption like 0 bytes somewhere in the file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571104</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-05 15:32:36 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 130211 [details])
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/LevelDBTest.cpp:89
&gt; &gt; +    PlatformFileHandle handle = openFile(filepath, OpenForWrite);
&gt; &gt; +    truncateFile(handle, 0);
&gt; &gt; +    closeFile(handle);
&gt; 
&gt; Do we want to add tests for more subtle corruption like 0 bytes somewhere in the file?

I tried that; the openFile appears to truncate immediately (the truncateFile line above is redundant, actually, but I kept it in for clarity) - the file is opened with O_WRONLY on Posix, for example. It did not appear that the FileSystem API supported writing into an existing file. I actually started off investigating ways to enumerate the files and plunk 0s throughout, but directory enumeration turned out to be non-trivial. 

That said, the main point of the test is to ensure that when LevelDB does detect corruption (1) it is reported and (2) recovery can be attempted. More extensive tests around the forms of corruption (random bit flips, file truncations, etc) should properly be added into the leveldb project itself.

(I&apos;ll take care of the nits, though!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571107</commentid>
    <comment_count>8</comment_count>
      <attachid>130214</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-05 15:38:00 -0800</bug_when>
    <thetext>Created attachment 130214
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571257</commentid>
    <comment_count>9</comment_count>
      <attachid>130214</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 17:33:52 -0800</bug_when>
    <thetext>Comment on attachment 130214
Patch for landing

Clearing flags on attachment: 130214

Committed r109825: &lt;http://trac.webkit.org/changeset/109825&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571258</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 17:33:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572051</commentid>
    <comment_count>11</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-06 12:13:53 -0800</bug_when>
    <thetext>Reverted r109825 for reason:

Broke webkit_unit_tests on Chromium Win

Committed r109946: &lt;http://trac.webkit.org/changeset/109946&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572057</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-06 12:17:48 -0800</bug_when>
    <thetext>&quot;Seems to be only Win&quot;

http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Win/builds/12119/steps/webkit_unit_tests/logs/stdio

Relevant bits:


[----------] 1 test from LevelDBDatabaseTest
[ RUN      ] LevelDBDatabaseTest.CorruptionTest
.\tests\LevelDBTest.cpp(72): error: Value of: leveldb
  Actual: false
Expected: true
Backtrace:
	(No symbol) [0x00863E6E]
	(No symbol) [0x0050FCE3]

Line 72 is testing the initial open, before the corruption test itself runs. So something is not happy with LevelDB on Win - I&apos;m guessing webkit_support::CreateScopedTempDirectory since that&apos;s not used elsewhere.

Will need to build/test on Windows to sort this out. I may re-land the patch with the test disabled on OS_WIN in the meantime if that proves problematic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574040</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-08 11:56:31 -0800</bug_when>
    <thetext>This turned out to be two problems. First, an encoding issue with the patch.

-    const char* path = tempDirectory-&gt;path().c_str();
+    const String path = String::fromUTF8(tempDirectory-&gt;path().c_str());

Second, what appears to be a LevelDB bug that would prevent leveldb::DestroyDB from succeeding on Windows:

http://code.google.com/p/leveldb/issues/detail?id=74

I&apos;ll re-upload the patch with the former issue fixed, but we can&apos;t land it until the LevelDB issue is resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574051</commentid>
    <comment_count>14</comment_count>
      <attachid>130869</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-08 12:04:40 -0800</bug_when>
    <thetext>Created attachment 130869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575198</commentid>
    <comment_count>15</comment_count>
      <attachid>131102</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-09 14:02:11 -0800</bug_when>
    <thetext>Created attachment 131102
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575414</commentid>
    <comment_count>16</comment_count>
      <attachid>131102</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 19:10:26 -0800</bug_when>
    <thetext>Comment on attachment 131102
Patch for landing

Clearing flags on attachment: 131102

Committed r110363: &lt;http://trac.webkit.org/changeset/110363&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575415</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 19:10:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575518</commentid>
    <comment_count>18</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-10 07:39:27 -0800</bug_when>
    <thetext>Broke the chromium build, see: https://bugs.webkit.org/show_bug.cgi?id=80757</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575520</commentid>
    <comment_count>19</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-10 07:54:26 -0800</bug_when>
    <thetext>The chromium component build can&apos;t link to webkit_support, so webkit_unit_test files that do use webkit_support are excluded from the component build, in Source/WebKit/chromium/WebKit.gyp: 

 &apos;sources!&apos;: [
                                # We should not include files depending on webkit_support.
                                # These tests depend on webkit_support and
                                # functions defined only in !WEBKIT_IMPLEMENTATION.
                                &apos;tests/AssociatedURLLoaderTest.cpp&apos;,
                                &apos;tests/FrameTestHelpers.cpp&apos;,
                                &apos;tests/PopupMenuTest.cpp&apos;,
                                &apos;tests/RenderTableCellTest.cpp&apos;,
                                &apos;tests/WebFrameTest.cpp&apos;,
                                &apos;tests/WebPageNewSerializerTest.cpp&apos;,
                                &apos;tests/WebPageSerializerTest.cpp&apos;,
                                &apos;tests/WebViewTest.cpp&apos;,
                            ],

Need to add a tests/LevelDBTest.cpp entry here. I&apos;ll wait until Monday when I&apos;m actually around to watch, though, and see about a try-bot run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576346</commentid>
    <comment_count>20</comment_count>
      <attachid>131369</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-12 11:51:20 -0700</bug_when>
    <thetext>Created attachment 131369
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576353</commentid>
    <comment_count>21</comment_count>
      <attachid>131371</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-12 11:56:10 -0700</bug_when>
    <thetext>Created attachment 131371
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576414</commentid>
    <comment_count>22</comment_count>
      <attachid>131371</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 12:57:15 -0700</bug_when>
    <thetext>Comment on attachment 131371
Patch for landing

Clearing flags on attachment: 131371

Committed r110463: &lt;http://trac.webkit.org/changeset/110463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576415</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 12:57:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128585</attachid>
            <date>2012-02-23 16:04:48 -0800</date>
            <delta_ts>2012-03-05 15:08:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79413-20120223160447.patch</filename>
            <type>text/plain</type>
            <size>3907</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdkNDY4ZDQyODkxMzc5
YjNlNjA3MTU2N2ViMzNhNmYwZTY4ZWM1ZS4uY2YxOWFkZTYwNTdmNTA4NzQ4MWY3OWM2M2FjMzlj
ZTc0YjRiMTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAyLTIzICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBIYW5k
bGUgTGV2ZWxEQiBkYXRhYmFzZSBjb3JydXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICog
cGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGV2ZWxEQkRhdGFiYXNlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmg6CisgICAgICAgIChMZXZlbERCRGF0
YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKToKKwogMjAxMi0w
Mi0yMiAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iub0BzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAg
IEV2ZXJ5IGNhbGwgdG8gUmVuZGVyT2JqZWN0OjpzZXRBbmltYXRhYmxlU3R5bGUoKSBpdGVyYXRl
cyB0aHJvdWdoIGFsbCBtX2NvbXBvc2l0ZUFuaW1hdGlvbnM6IHBvdGVudGlhbGx5IE8oTl4yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2Uu
Y3BwCmluZGV4IDQxYTFhZWZiM2E3OGQ1ZjgwYzhiODAxYjgxMTc2MzkzOGQ1ZTI0OWYuLmU4NWM5
ZjlkMTZlOTU3N2FjMzAyYjdhNzliODZiNDFiZGJhYTZiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKQEAgLTExMiw2ICsx
MTIsMTUgQEAgc3RhdGljIGxldmVsZGI6OlN0YXR1cyBvcGVuREIobGV2ZWxkYjo6Q29tcGFyYXRv
ciogY29tcGFyYXRvciwgbGV2ZWxkYjo6RW52KiBlbnYKICAgICByZXR1cm4gbGV2ZWxkYjo6REI6
Ok9wZW4ob3B0aW9ucywgcGF0aC51dGY4KCkuZGF0YSgpLCBkYik7CiB9CiAKK2Jvb2wgTGV2ZWxE
QkRhdGFiYXNlOjpkZXN0cm95KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCit7CisgICAgbGV2ZWxk
Yjo6T3B0aW9ucyBvcHRpb25zOworICAgIG9wdGlvbnMuZW52ID0gbGV2ZWxkYjo6RW52OjpEZWZh
dWx0KCk7CisKKyAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IGxldmVsZGI6OkRlc3Ryb3lE
QihmaWxlTmFtZS51dGY4KCkuZGF0YSgpLCBvcHRpb25zKTsKKyAgICByZXR1cm4gcy5vaygpOwor
fQorCiBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9yKiBjb21wYXJhdG9y
KQogewogICAgIE93blB0cjxDb21wYXJhdG9yQWRhcHRlcj4gY29tcGFyYXRvckFkYXB0ZXIgPSBh
ZG9wdFB0cihuZXcgQ29tcGFyYXRvckFkYXB0ZXIoY29tcGFyYXRvcikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKaW5kZXggYzZjZTIx
YzAzZDk3OWI5ZTNmOTU0MmFlNGU5MWMwNmVkZjE4Y2MzOC4uZTgwYjQ5YTI0YWM3N2QyZmMwM2Yx
MGFlM2IwZGI3MGYzNmEyNjc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9s
ZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIExldmVsREJE
YXRhYmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNl
PiBvcGVuKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9yKik7
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBvcGVuSW5NZW1vcnkoY29u
c3QgTGV2ZWxEQkNvbXBhcmF0b3IqKTsKKyAgICBzdGF0aWMgYm9vbCBkZXN0cm95KGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUpOwogICAgIH5MZXZlbERCRGF0YWJhc2UoKTsKIAogICAgIGJvb2wgcHV0
KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IGY0MjNiYjAwN2YyMmM2Y2Y2Nzk5OTlmZjYzNmIzZjJkMDZmNTc2MTcuLmFiMzMzMWE1OTQy
MDdkNDQ1YTAwMTRlNmQyZGMyNDQwZWZlYjYxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtMTUwLDYgKzE1MCwyMiBAQCBQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbihT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdAogICAgICAgICBTdHJpbmcgcGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXRoQmFzZSwgc2VjdXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmll
cigpICsgIi5pbmRleGVkZGIubGV2ZWxkYiIpOwogCiAgICAgICAgIGRiID0gTGV2ZWxEQkRhdGFi
YXNlOjpvcGVuKHBhdGgsIGNvbXBhcmF0b3IuZ2V0KCkpOworCisgICAgICAgIGlmICghZGIpIHsK
KyAgICAgICAgICAgIExPR19FUlJPUigiSW5kZXhlZERCIGJhY2tpbmcgc3RvcmUgb3BlbiBmYWls
ZWQsIGF0dGVtcHRpbmcgY2xlYW51cCIpOworICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gTGV2
ZWxEQkRhdGFiYXNlOjpkZXN0cm95KHBhdGgpOworICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsK
KyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkluZGV4ZWREQiBiYWNraW5nIHN0b3JlIGNsZWFu
dXAgc3VjY2VlZGVkLCByZW9wZW5pbmciKTsKKyAgICAgICAgICAgICAgICBkYiA9IExldmVsREJE
YXRhYmFzZTo6b3BlbihwYXRoLCBjb21wYXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWRiKSB7CisgICAgICAgICAgICAgICAgICAgIExPR19FUlJPUigiSW5kZXhlZERCIGJhY2tp
bmcgc3RvcmUgcmVvcGVuIGFmdGVyIHJlY292ZXJ5IGZhaWxlZCIpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIExPR19FUlJPUigiSW5kZXhlZERCIGJhY2tpbmcgc3RvcmUgY2xlYW51
cCBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQogICAgIH0KIAogICAgIGlmICghZGIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130211</attachid>
            <date>2012-03-05 15:08:20 -0800</date>
            <delta_ts>2012-03-05 15:37:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79413-20120305150819.patch</filename>
            <type>text/plain</type>
            <size>9513</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY3MzEzOGRjYTg4ZGY4
MzMzYjhlN2Y5ZmYwZDYyNmUyZTk3NmY3MC4uNmM4OTAyNDJkY2YzODU1OTZlYmIyZDkxOTI3ZmRl
NGVhMjFjNDI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAzLTA1ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBIYW5k
bGUgTGV2ZWxEQiBkYXRhYmFzZSBjb3JydXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQxMworCisgICAgICAgIEFkZCBMZXZlbERCRGF0YWJh
c2U6OmRlc3Ryb3koKSBtZXRob2Qgc28gdGhhdCBjbGllbnRzIGNhbiByZXRyeSBpZiBvcGVuKCkg
ZmFpbHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdDogd2Via2l0X3VuaXRfdGVzdHMgLS1ndGVzdF9maWx0ZXI9J0xldmVsREJEYXRhYmFzZVRl
c3QuQ29ycnVwdGlvblRlc3QnCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQmFja2luZ1N0b3JlLmNwcDogSW1wbGVtZW50IG9wZW4vZGVzdHJveS9vcGVuIHN0cmF0ZWd5
LgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbik6CisgICAg
ICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGV2ZWxEQkRhdGFiYXNlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmg6CisgICAgICAgIChMZXZl
bERCRGF0YWJhc2UpOgorCiAyMDEyLTAzLTAxICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBDaHJvbWUgMTggZmFpbHMgaHRtbDV0ZXN0LmNvbSBYSFIgQmxvYiByZXNw
b25zZSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNiOWUwYmQ1MDljOTQzZTE2
NTA5YzEwNDAzYjhjOGZlOTQwYWIzZmQuLjI2MjZlMTIwN2QxNThiZjIyYjBhYzM1MDI2MTQ2Mjhh
YjcxODQzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTItMDMtMDUgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJ
bmRleGVkREI6IEhhbmRsZSBMZXZlbERCIGRhdGFiYXNlIGNvcnJ1cHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NDEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAg
ICAgKiB0ZXN0cy9MZXZlbERCVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChTaW1wbGVDb21wYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbXBh
cmF0b3I6OmNvbXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29tcGFyYXRvcjo6bmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
VEVTVCk6CisKIDIwMTItMDMtMDIgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW0Nocm9taXVtXSBBbGxvdyBwbHVnaW5zIHRvIHNldCBvcGFxdWUoKSBvbiB0
aGVpciBwbGF0Zm9ybSBsYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCBmNDIzYmIwMDdm
MjJjNmNmNjc5OTk5ZmY2MzZiM2YyZDA2ZjU3NjE3Li4zMGM1ZDRmNWFkNjY3MGQ5OTk4M2Y4MzEz
ODBhZGE1N2U0MzNlMDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtMTUwLDYgKzE1MCwy
MiBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
b3BlbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdAogICAgICAgICBTdHJpbmcgcGF0aCA9IHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChwYXRoQmFzZSwgc2VjdXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRl
bnRpZmllcigpICsgIi5pbmRleGVkZGIubGV2ZWxkYiIpOwogCiAgICAgICAgIGRiID0gTGV2ZWxE
QkRhdGFiYXNlOjpvcGVuKHBhdGgsIGNvbXBhcmF0b3IuZ2V0KCkpOworCisgICAgICAgIGlmICgh
ZGIpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiSW5kZXhlZERCIGJhY2tpbmcgc3RvcmUgb3Bl
biBmYWlsZWQsIGF0dGVtcHRpbmcgY2xlYW51cCIpOworICAgICAgICAgICAgYm9vbCBzdWNjZXNz
ID0gTGV2ZWxEQkRhdGFiYXNlOjpkZXN0cm95KHBhdGgpOworICAgICAgICAgICAgaWYgKHN1Y2Nl
c3MpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkluZGV4ZWREQiBiYWNraW5nIHN0b3Jl
IGNsZWFudXAgc3VjY2VlZGVkLCByZW9wZW5pbmciKTsKKyAgICAgICAgICAgICAgICBkYiA9IExl
dmVsREJEYXRhYmFzZTo6b3BlbihwYXRoLCBjb21wYXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWRiKSB7CisgICAgICAgICAgICAgICAgICAgIExPR19FUlJPUigiSW5kZXhlZERC
IGJhY2tpbmcgc3RvcmUgcmVvcGVuIGFmdGVyIHJlY292ZXJ5IGZhaWxlZCIpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+KCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIkluZGV4ZWREQiBiYWNraW5nIHN0b3JlIGNsZWFudXAgZmFpbGVkIik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPigpOworICAgICAgICAgICAg
fQorICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFkYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcAppbmRleCA0MWExYWVmYjNh
NzhkNWY4MGM4YjgwMWI4MTE3NjM5MzhkNWUyNDlmLi4yNzNhZmQ0ZGVjMWFhZTcwYmQxYWE5MmIw
OGU2ODA0YmIyNjMwOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZl
bGRiL0xldmVsREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2
ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCkBAIC0xMTIsNiArMTEyLDEzIEBAIHN0YXRpYyBsZXZl
bGRiOjpTdGF0dXMgb3BlbkRCKGxldmVsZGI6OkNvbXBhcmF0b3IqIGNvbXBhcmF0b3IsIGxldmVs
ZGI6OkVudiogZW52CiAgICAgcmV0dXJuIGxldmVsZGI6OkRCOjpPcGVuKG9wdGlvbnMsIHBhdGgu
dXRmOCgpLmRhdGEoKSwgZGIpOwogfQogCitib29sIExldmVsREJEYXRhYmFzZTo6ZGVzdHJveShj
b25zdCBTdHJpbmcmIGZpbGVOYW1lKQoreworICAgIGxldmVsZGI6Ok9wdGlvbnMgb3B0aW9uczsK
KyAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IGxldmVsZGI6OkRlc3Ryb3lEQihmaWxlTmFt
ZS51dGY4KCkuZGF0YSgpLCBvcHRpb25zKTsKKyAgICByZXR1cm4gcy5vaygpOworfQorCiBQYXNz
T3duUHRyPExldmVsREJEYXRhYmFzZT4gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9yKiBjb21wYXJhdG9yKQogewogICAg
IE93blB0cjxDb21wYXJhdG9yQWRhcHRlcj4gY29tcGFyYXRvckFkYXB0ZXIgPSBhZG9wdFB0cihu
ZXcgQ29tcGFyYXRvckFkYXB0ZXIoY29tcGFyYXRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKaW5kZXggYzZjZTIxYzAzZDk3OWI5
ZTNmOTU0MmFlNGU5MWMwNmVkZjE4Y2MzOC4uZTgwYjQ5YTI0YWM3N2QyZmMwM2YxMGFlM2IwZGI3
MGYzNmEyNjc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9M
ZXZlbERCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xl
dmVsREJEYXRhYmFzZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIExldmVsREJEYXRhYmFzZSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBvcGVuKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9yKik7CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBvcGVuSW5NZW1vcnkoY29uc3QgTGV2ZWxE
QkNvbXBhcmF0b3IqKTsKKyAgICBzdGF0aWMgYm9vbCBkZXN0cm95KGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUpOwogICAgIH5MZXZlbERCRGF0YWJhc2UoKTsKIAogICAgIGJvb2wgcHV0KGNvbnN0IExl
dmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXBpCmluZGV4IGU5MWUzMzZkYmRiM2VjYmRjOTRhOTRhYTBiMDI0NTljNzQ5
OGQ0OWIuLjIzYWUzODU3ZWU0NWVjZGMzMTMyNWU1NDM5ZmUzYWFjYjdjZDI4YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTA1LDYgKzEwNSw3IEBACiAgICAgICAgICAgICAn
dGVzdHMvS1VSTFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9MYXllckNocm9taXVtVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcCcs
CisgICAgICAgICAgICAndGVzdHMvTGV2ZWxEQlRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0
cy9QYWludEFnZ3JlZ2F0b3JUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUE9EQXJlbmFU
ZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUE9ESW50ZXJ2YWxUcmVlVGVzdC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hM2Q5OWJiYjM0ODQzYjdhOTgyZjMxNDA0MmQ4MzQ2NmNmMWNjNmJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVzdC5jcHAKQEAgLTAs
MCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoTEVWRUxE
QikKKworI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJMZXZlbERCQ29tcGFyYXRv
ci5oIgorI2luY2x1ZGUgIkxldmVsREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkxldmVsREJTbGlj
ZS5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQv
d2Via2l0X3N1cHBvcnQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBTaW1wbGVDb21wYXJhdG9yIDog
cHVibGljIExldmVsREJDb21wYXJhdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGludCBjb21w
YXJlKGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKSBjb25zdAor
ICAgIHsKKyAgICAgICAgc2l6ZV90IGxlbiA9IHN0ZDo6bWluKGEuZW5kKCkgLSBhLmJlZ2luKCks
IGIuZW5kKCkgLSBiLmJlZ2luKCkpOworICAgICAgICByZXR1cm4gbWVtY21wKGEuYmVnaW4oKSwg
Yi5iZWdpbigpLCBsZW4pOworICAgIH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIG5hbWUoKSBj
b25zdCB7IHJldHVybiAidGVtcF9jb21wYXJhdG9yIjsgfQorfTsKKworVmVjdG9yPGNoYXI+IGVu
Y29kZVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcykKK3sKKyAgICBWZWN0b3I8Y2hhcj4gcmV0
KHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIHJldC5hcHBlbmQoc1tpXSk7CisgICAgcmV0dXJuIHJldDsKK30KKworVEVTVChMZXZl
bERCRGF0YWJhc2VUZXN0LCBDb3JydXB0aW9uVGVzdCkKK3sKKyAgICBPd25QdHI8d2Via2l0X3N1
cHBvcnQ6OlNjb3BlZFRlbXBEaXJlY3Rvcnk+IHRlbXBEaXJlY3RvcnkgPSBhZG9wdFB0cih3ZWJr
aXRfc3VwcG9ydDo6Q3JlYXRlU2NvcGVkVGVtcERpcmVjdG9yeSgpKTsKKyAgICB0ZW1wRGlyZWN0
b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7CisgICAgY29uc3QgY2hhciogcGF0aCA9IHRlbXBE
aXJlY3RvcnktPnBhdGgoKS5jX3N0cigpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleSA9
IGVuY29kZVN0cmluZygia2V5Iik7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IHB1dFZhbHVlID0g
ZW5jb2RlU3RyaW5nKCJ2YWx1ZSIpOworICAgIFZlY3RvcjxjaGFyPiBnb3RWYWx1ZTsKKyAgICBT
aW1wbGVDb21wYXJhdG9yIGNvbXBhcmF0b3I7CisKKyAgICBPd25QdHI8TGV2ZWxEQkRhdGFiYXNl
PiBsZXZlbGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKHBhdGgsICZjb21wYXJhdG9yKTsKKyAg
ICBFWFBFQ1RfVFJVRShsZXZlbGRiKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBsZXZlbGRiLT5wdXQo
a2V5LCBwdXRWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgbGV2ZWxkYi5y
ZWxlYXNlKCk7CisgICAgRVhQRUNUX0ZBTFNFKGxldmVsZGIpOworCisgICAgbGV2ZWxkYiA9IExl
dmVsREJEYXRhYmFzZTo6b3BlbihwYXRoLCAmY29tcGFyYXRvcik7CisgICAgRVhQRUNUX1RSVUUo
bGV2ZWxkYik7CisgICAgc3VjY2VzcyA9IGxldmVsZGItPmdldChrZXksIGdvdFZhbHVlKTsKKyAg
ICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEocHV0VmFsdWUsIGdvdFZhbHVl
KTsKKyAgICBsZXZlbGRiLnJlbGVhc2UoKTsKKyAgICBFWFBFQ1RfRkFMU0UobGV2ZWxkYik7CisK
KyAgICBTdHJpbmcgZmlsZXBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgIkNV
UlJFTlQiKTsKKyAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gb3BlbkZpbGUoZmlsZXBh
dGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgdHJ1bmNhdGVGaWxlKGhhbmRsZSwgMCk7CisgICAgY2xv
c2VGaWxlKGhhbmRsZSk7CisKKyAgICBsZXZlbGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKHBh
dGgsICZjb21wYXJhdG9yKTsKKyAgICBFWFBFQ1RfRkFMU0UobGV2ZWxkYik7CisKKyAgICBib29s
IGRlc3Ryb3llZCA9IExldmVsREJEYXRhYmFzZTo6ZGVzdHJveShwYXRoKTsKKyAgICBFWFBFQ1Rf
VFJVRShkZXN0cm95ZWQpOworCisgICAgbGV2ZWxkYiA9IExldmVsREJEYXRhYmFzZTo6b3Blbihw
YXRoLCAmY29tcGFyYXRvcik7CisgICAgRVhQRUNUX1RSVUUobGV2ZWxkYik7CisgICAgc3VjY2Vz
cyA9IGxldmVsZGItPmdldChrZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vz
cyk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBVU0UoTEVWRUxEQikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130214</attachid>
            <date>2012-03-05 15:38:00 -0800</date>
            <delta_ts>2012-03-08 12:04:36 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79413-20120305153759.patch</filename>
            <type>text/plain</type>
            <size>9480</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY3MzEzOGRjYTg4ZGY4
MzMzYjhlN2Y5ZmYwZDYyNmUyZTk3NmY3MC4uMTNhNmI3YTg2OWFmYjBlODg5NTQxNWI5N2U0OGM3
OTExNGFiOTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAzLTA1ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBIYW5k
bGUgTGV2ZWxEQiBkYXRhYmFzZSBjb3JydXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQxMworCisgICAgICAgIEFkZCBMZXZlbERCRGF0YWJh
c2U6OmRlc3Ryb3koKSBtZXRob2Qgc28gdGhhdCBjbGllbnRzIGNhbiByZXRyeSBpZiBvcGVuKCkg
ZmFpbHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBUZXN0
OiB3ZWJraXRfdW5pdF90ZXN0cyAtLWd0ZXN0X2ZpbHRlcj0nTGV2ZWxEQkRhdGFiYXNlVGVzdC5D
b3JydXB0aW9uVGVzdCcKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwOiBJbXBsZW1lbnQgb3Blbi9kZXN0cm95L29wZW4gc3RyYXRlZ3kuCisg
ICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMZXZlbERCRGF0YWJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaDoKKyAgICAgICAgKExldmVsREJE
YXRhYmFzZSk6CisKIDIwMTItMDMtMDEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgog
CiAgICAgICAgIENocm9tZSAxOCBmYWlscyBodG1sNXRlc3QuY29tIFhIUiBCbG9iIHJlc3BvbnNl
IHRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggM2I5ZTBiZDUwOWM5NDNlMTY1MDlj
MTA0MDNiOGM4ZmU5NDBhYjNmZC4uMjIyMzhmMGI0YjVkY2I0NzEwMjQ0MTgwYjcxMWM5MWQ2MTc4
NzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0w
My0wNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4
ZWREQjogSGFuZGxlIExldmVsREIgZGF0YWJhc2UgY29ycnVwdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0MTMKKworICAgICAgICBSZXZpZXdl
ZCBieSBUb255IENoYW5nLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVz
dHMvTGV2ZWxEQlRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
U2ltcGxlQ29tcGFyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb21wYXJhdG9yOjpj
b21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNvbXBhcmF0b3I6Om5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6ZW5jb2RlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgor
CiAyMDEyLTAzLTAyICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtDaHJvbWl1bV0gQWxsb3cgcGx1Z2lucyB0byBzZXQgb3BhcXVlKCkgb24gdGhlaXIgcGxh
dGZvcm0gbGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggZjQyM2JiMDA3ZjIyYzZjZjY3
OTk5OWZmNjM2YjNmMmQwNmY1NzYxNy4uNGNjY2JlMDMyNDEwMGNlNWY5YWQ3OGM3OGFkZjJkN2Mw
NzBhNGQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTE1MCw2ICsxNTAsMjIgQEAgUGFz
c1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW4oU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXQKICAgICAgICAgU3RyaW5nIHBhdGggPSBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocGF0aEJhc2UsIHNlY3VyaXR5T3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIo
KSArICIuaW5kZXhlZGRiLmxldmVsZGIiKTsKIAogICAgICAgICBkYiA9IExldmVsREJEYXRhYmFz
ZTo6b3BlbihwYXRoLCBjb21wYXJhdG9yLmdldCgpKTsKKworICAgICAgICBpZiAoIWRiKSB7Cisg
ICAgICAgICAgICBMT0dfRVJST1IoIkluZGV4ZWREQiBiYWNraW5nIHN0b3JlIG9wZW4gZmFpbGVk
LCBhdHRlbXB0aW5nIGNsZWFudXAiKTsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IExldmVs
REJEYXRhYmFzZTo6ZGVzdHJveShwYXRoKTsKKyAgICAgICAgICAgIGlmICghc3VjY2Vzcykgewor
ICAgICAgICAgICAgICAgIExPR19FUlJPUigiSW5kZXhlZERCIGJhY2tpbmcgc3RvcmUgY2xlYW51
cCBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmU+KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIExPR19FUlJPUigiSW5kZXhl
ZERCIGJhY2tpbmcgc3RvcmUgY2xlYW51cCBzdWNjZWVkZWQsIHJlb3BlbmluZyIpOworICAgICAg
ICAgICAgZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0aCwgY29tcGFyYXRvci5nZXQoKSk7
CisgICAgICAgICAgICBpZiAoIWRiKSB7CisgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJJbmRl
eGVkREIgYmFja2luZyBzdG9yZSByZW9wZW4gYWZ0ZXIgcmVjb3ZlcnkgZmFpbGVkIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPigpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFkYikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcAppbmRleCA0MWEx
YWVmYjNhNzhkNWY4MGM4YjgwMWI4MTE3NjM5MzhkNWUyNDlmLi4yNzNhZmQ0ZGVjMWFhZTcwYmQx
YWE5MmIwOGU2ODA0YmIyNjMwOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCkBAIC0xMTIsNiArMTEyLDEzIEBAIHN0YXRp
YyBsZXZlbGRiOjpTdGF0dXMgb3BlbkRCKGxldmVsZGI6OkNvbXBhcmF0b3IqIGNvbXBhcmF0b3Is
IGxldmVsZGI6OkVudiogZW52CiAgICAgcmV0dXJuIGxldmVsZGI6OkRCOjpPcGVuKG9wdGlvbnMs
IHBhdGgudXRmOCgpLmRhdGEoKSwgZGIpOwogfQogCitib29sIExldmVsREJEYXRhYmFzZTo6ZGVz
dHJveShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQoreworICAgIGxldmVsZGI6Ok9wdGlvbnMgb3B0
aW9uczsKKyAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IGxldmVsZGI6OkRlc3Ryb3lEQihm
aWxlTmFtZS51dGY4KCkuZGF0YSgpLCBvcHRpb25zKTsKKyAgICByZXR1cm4gcy5vaygpOworfQor
CiBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9yKiBjb21wYXJhdG9yKQog
ewogICAgIE93blB0cjxDb21wYXJhdG9yQWRhcHRlcj4gY29tcGFyYXRvckFkYXB0ZXIgPSBhZG9w
dFB0cihuZXcgQ29tcGFyYXRvckFkYXB0ZXIoY29tcGFyYXRvcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKaW5kZXggYzZjZTIxYzAz
ZDk3OWI5ZTNmOTU0MmFlNGU5MWMwNmVkZjE4Y2MzOC4uZTgwYjQ5YTI0YWM3N2QyZmMwM2YxMGFl
M2IwZGI3MGYzNmEyNjc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2
ZWxkYi9MZXZlbERCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZl
bGRiL0xldmVsREJEYXRhYmFzZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIExldmVsREJEYXRh
YmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBv
cGVuKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9yKik7CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBvcGVuSW5NZW1vcnkoY29uc3Qg
TGV2ZWxEQkNvbXBhcmF0b3IqKTsKKyAgICBzdGF0aWMgYm9vbCBkZXN0cm95KGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUpOwogICAgIH5MZXZlbERCRGF0YWJhc2UoKTsKIAogICAgIGJvb2wgcHV0KGNv
bnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IGU5MWUzMzZkYmRiM2VjYmRjOTRhOTRhYTBiMDI0
NTljNzQ5OGQ0OWIuLjIzYWUzODU3ZWU0NWVjZGMzMTMyNWU1NDM5ZmUzYWFjYjdjZDI4YzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTA1LDYgKzEwNSw3IEBACiAgICAgICAg
ICAgICAndGVzdHMvS1VSTFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9MYXllckNocm9t
aXVtVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0
LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvTGV2ZWxEQlRlc3QuY3BwJywKICAgICAgICAgICAg
ICd0ZXN0cy9QYWludEFnZ3JlZ2F0b3JUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUE9E
QXJlbmFUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUE9ESW50ZXJ2YWxUcmVlVGVzdC5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZWFkOTgyNDQ1NjAyNTQzNWViNzQyZDdjNTk5NGRlM2NmMjAyMjgyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVzdC5jcHAK
QEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0Uo
TEVWRUxEQikKKworI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJMZXZlbERCQ29t
cGFyYXRvci5oIgorI2luY2x1ZGUgIkxldmVsREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkxldmVs
REJTbGljZS5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3N1
cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBTaW1wbGVDb21wYXJh
dG9yIDogcHVibGljIExldmVsREJDb21wYXJhdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGlu
dCBjb21wYXJlKGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKSBj
b25zdCBPVkVSUklERQorICAgIHsKKyAgICAgICAgc2l6ZV90IGxlbiA9IHN0ZDo6bWluKGEuZW5k
KCkgLSBhLmJlZ2luKCksIGIuZW5kKCkgLSBiLmJlZ2luKCkpOworICAgICAgICByZXR1cm4gbWVt
Y21wKGEuYmVnaW4oKSwgYi5iZWdpbigpLCBsZW4pOworICAgIH0KKyAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIG5hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAidGVtcF9jb21wYXJhdG9yIjsg
fQorfTsKKworVmVjdG9yPGNoYXI+IGVuY29kZVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcykK
K3sKKyAgICBWZWN0b3I8Y2hhcj4gcmV0KHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJldC5hcHBlbmQoc1tpXSk7CisgICAgcmV0
dXJuIHJldDsKK30KKworVEVTVChMZXZlbERCRGF0YWJhc2VUZXN0LCBDb3JydXB0aW9uVGVzdCkK
K3sKKyAgICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3BlZFRlbXBEaXJlY3Rvcnk+IHRlbXBE
aXJlY3RvcnkgPSBhZG9wdFB0cih3ZWJraXRfc3VwcG9ydDo6Q3JlYXRlU2NvcGVkVGVtcERpcmVj
dG9yeSgpKTsKKyAgICB0ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7CisgICAg
Y29uc3QgY2hhciogcGF0aCA9IHRlbXBEaXJlY3RvcnktPnBhdGgoKS5jX3N0cigpOworCisgICAg
Y29uc3QgVmVjdG9yPGNoYXI+IGtleSA9IGVuY29kZVN0cmluZygia2V5Iik7CisgICAgY29uc3Qg
VmVjdG9yPGNoYXI+IHB1dFZhbHVlID0gZW5jb2RlU3RyaW5nKCJ2YWx1ZSIpOworICAgIFZlY3Rv
cjxjaGFyPiBnb3RWYWx1ZTsKKyAgICBTaW1wbGVDb21wYXJhdG9yIGNvbXBhcmF0b3I7CisKKyAg
ICBPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBsZXZlbGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVu
KHBhdGgsICZjb21wYXJhdG9yKTsKKyAgICBFWFBFQ1RfVFJVRShsZXZlbGRiKTsKKyAgICBib29s
IHN1Y2Nlc3MgPSBsZXZlbGRiLT5wdXQoa2V5LCBwdXRWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
c3VjY2Vzcyk7CisgICAgbGV2ZWxkYi5yZWxlYXNlKCk7CisgICAgRVhQRUNUX0ZBTFNFKGxldmVs
ZGIpOworCisgICAgbGV2ZWxkYiA9IExldmVsREJEYXRhYmFzZTo6b3BlbihwYXRoLCAmY29tcGFy
YXRvcik7CisgICAgRVhQRUNUX1RSVUUobGV2ZWxkYik7CisgICAgc3VjY2VzcyA9IGxldmVsZGIt
PmdldChrZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBF
Q1RfRVEocHV0VmFsdWUsIGdvdFZhbHVlKTsKKyAgICBsZXZlbGRiLnJlbGVhc2UoKTsKKyAgICBF
WFBFQ1RfRkFMU0UobGV2ZWxkYik7CisKKyAgICBTdHJpbmcgZmlsZXBhdGggPSBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocGF0aCwgIkNVUlJFTlQiKTsKKyAgICBQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlID0gb3BlbkZpbGUoZmlsZXBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgdHJ1bmNhdGVG
aWxlKGhhbmRsZSwgMCk7CisgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICBsZXZlbGRiID0g
TGV2ZWxEQkRhdGFiYXNlOjpvcGVuKHBhdGgsICZjb21wYXJhdG9yKTsKKyAgICBFWFBFQ1RfRkFM
U0UobGV2ZWxkYik7CisKKyAgICBib29sIGRlc3Ryb3llZCA9IExldmVsREJEYXRhYmFzZTo6ZGVz
dHJveShwYXRoKTsKKyAgICBFWFBFQ1RfVFJVRShkZXN0cm95ZWQpOworCisgICAgbGV2ZWxkYiA9
IExldmVsREJEYXRhYmFzZTo6b3BlbihwYXRoLCAmY29tcGFyYXRvcik7CisgICAgRVhQRUNUX1RS
VUUobGV2ZWxkYik7CisgICAgc3VjY2VzcyA9IGxldmVsZGItPmdldChrZXksIGdvdFZhbHVlKTsK
KyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRp
ZiAvLyBVU0UoTEVWRUxEQikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130869</attachid>
            <date>2012-03-08 12:04:40 -0800</date>
            <delta_ts>2012-03-09 14:02:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79413-20120308120439.patch</filename>
            <type>text/plain</type>
            <size>9509</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkN2U1NjU4ZTIyYWZj
NmUxMjc1ZjlkNzk2ZTUxNTk0NjcyNGMwNy4uZDdmMjBmMTA0MzdkZjg0NDVkMzE3YTgyY2E1ODdm
M2I0MGRmZDhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAzLTA4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBIYW5k
bGUgTGV2ZWxEQiBkYXRhYmFzZSBjb3JydXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQxMworCisgICAgICAgIEFkZCBMZXZlbERCRGF0YWJh
c2U6OmRlc3Ryb3koKSBtZXRob2Qgc28gdGhhdCBjbGllbnRzIGNhbiByZXRyeSBpZiBvcGVuKCkg
ZmFpbHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBUZXN0
OiB3ZWJraXRfdW5pdF90ZXN0cyAtLWd0ZXN0X2ZpbHRlcj0nTGV2ZWxEQkRhdGFiYXNlVGVzdC5D
b3JydXB0aW9uVGVzdCcKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwOiBJbXBsZW1lbnQgb3Blbi9kZXN0cm95L29wZW4gc3RyYXRlZ3kuCisg
ICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMZXZlbERCRGF0YWJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaDoKKyAgICAgICAgKExldmVsREJE
YXRhYmFzZSk6CisKIDIwMTItMDMtMDcgIEFydW4gUGF0b2xlICA8Ym1mODM0QG1vdG9yb2xhLmNv
bT4KIAogICAgICAgICBIVE1MVHJhY2tFbGVtZW50LmlkbCBkb2Vzbid0IGhhdmUgZGVmYXVsdCBh
dHRyaWJ1dGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDYzMmZkZjllYTJkNzFjYTk5
NjUwNWI4MDczMzBiNjVmMTFkMmMxZDYuLmM2OTY3MzVlZGI2Zjk2ZGI0MmNhNzBmYjkxMDUwOGU4
YWFlMTI1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTItMDMtMDggIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJ
bmRleGVkREI6IEhhbmRsZSBMZXZlbERCIGRhdGFiYXNlIGNvcnJ1cHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NDEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAq
IHRlc3RzL0xldmVsREJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFNpbXBsZUNvbXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlQ29tcGFyYXRv
cjo6Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVDb21wYXJhdG9yOjpuYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OmVuY29kZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpURVNU
KToKKwogMjAxMi0wMy0wNiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIEFkZCBjbGlwcGluZyB0byBzY2lzc29yIHJlY3QgdG8gQ0NPY2Ns
dXNpb25UcmFja2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGY0MjNiYjAwN2YyMmM2Y2Y2
Nzk5OTlmZjYzNmIzZjJkMDZmNTc2MTcuLjRjY2NiZTAzMjQxMDBjZTVmOWFkNzhjNzhhZGYyZDdj
MDcwYTRkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xNTAsNiArMTUwLDIyIEBAIFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKFNl
Y3VyaXR5T3JpZ2luKiBzZWN1cml0CiAgICAgICAgIFN0cmluZyBwYXRoID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBhdGhCYXNlLCBzZWN1cml0eU9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVy
KCkgKyAiLmluZGV4ZWRkYi5sZXZlbGRiIik7CiAKICAgICAgICAgZGIgPSBMZXZlbERCRGF0YWJh
c2U6Om9wZW4ocGF0aCwgY29tcGFyYXRvci5nZXQoKSk7CisKKyAgICAgICAgaWYgKCFkYikgewor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJJbmRleGVkREIgYmFja2luZyBzdG9yZSBvcGVuIGZhaWxl
ZCwgYXR0ZW1wdGluZyBjbGVhbnVwIik7CisgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBMZXZl
bERCRGF0YWJhc2U6OmRlc3Ryb3kocGF0aCk7CisgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsK
KyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkluZGV4ZWREQiBiYWNraW5nIHN0b3JlIGNsZWFu
dXAgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlPigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBMT0dfRVJST1IoIkluZGV4
ZWREQiBiYWNraW5nIHN0b3JlIGNsZWFudXAgc3VjY2VlZGVkLCByZW9wZW5pbmciKTsKKyAgICAg
ICAgICAgIGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKHBhdGgsIGNvbXBhcmF0b3IuZ2V0KCkp
OworICAgICAgICAgICAgaWYgKCFkYikgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiSW5k
ZXhlZERCIGJhY2tpbmcgc3RvcmUgcmVvcGVuIGFmdGVyIHJlY292ZXJ5IGZhaWxlZCIpOworICAg
ICAgICAgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4oKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghZGIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKaW5kZXggNDFh
MWFlZmIzYTc4ZDVmODBjOGI4MDFiODExNzYzOTM4ZDVlMjQ5Zi4uMjczYWZkNGRlYzFhYWU3MGJk
MWFhOTJiMDhlNjgwNGJiMjYzMDhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcApAQCAtMTEyLDYgKzExMiwxMyBAQCBzdGF0
aWMgbGV2ZWxkYjo6U3RhdHVzIG9wZW5EQihsZXZlbGRiOjpDb21wYXJhdG9yKiBjb21wYXJhdG9y
LCBsZXZlbGRiOjpFbnYqIGVudgogICAgIHJldHVybiBsZXZlbGRiOjpEQjo6T3BlbihvcHRpb25z
LCBwYXRoLnV0ZjgoKS5kYXRhKCksIGRiKTsKIH0KIAorYm9vbCBMZXZlbERCRGF0YWJhc2U6OmRl
c3Ryb3koY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKK3sKKyAgICBsZXZlbGRiOjpPcHRpb25zIG9w
dGlvbnM7CisgICAgY29uc3QgbGV2ZWxkYjo6U3RhdHVzIHMgPSBsZXZlbGRiOjpEZXN0cm95REIo
ZmlsZU5hbWUudXRmOCgpLmRhdGEoKSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIHMub2soKTsKK30K
KwogUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+IExldmVsREJEYXRhYmFzZTo6b3Blbihjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogY29tcGFyYXRvcikK
IHsKICAgICBPd25QdHI8Q29tcGFyYXRvckFkYXB0ZXI+IGNvbXBhcmF0b3JBZGFwdGVyID0gYWRv
cHRQdHIobmV3IENvbXBhcmF0b3JBZGFwdGVyKGNvbXBhcmF0b3IpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oCmluZGV4IGM2Y2UyMWMw
M2Q5NzliOWUzZjk1NDJhZTRlOTFjMDZlZGYxOGNjMzguLmU4MGI0OWEyNGFjNzdkMmZjMDNmMTBh
ZTNiMGRiNzBmMzZhMjY3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xl
dmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2
ZWxkYi9MZXZlbERCRGF0YWJhc2UuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBMZXZlbERCRGF0
YWJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4g
b3Blbihjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBMZXZlbERCQ29tcGFyYXRvciopOwog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gb3BlbkluTWVtb3J5KGNvbnN0
IExldmVsREJDb21wYXJhdG9yKik7CisgICAgc3RhdGljIGJvb2wgZGVzdHJveShjb25zdCBTdHJp
bmcmIGZpbGVOYW1lKTsKICAgICB+TGV2ZWxEQkRhdGFiYXNlKCk7CiAKICAgICBib29sIHB1dChj
b25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBiNTI3NDE2ODYzNjliNDkwY2M5MGJkM2EyYzU0
OGM0MDdhMjEzYmQxLi43NGE3YTJiYzY2MDIzMjhiNTg5Yjc5ODFlY2MzN2E4NDA3OWJhMjg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTEwNSw2ICsxMDUsNyBAQAogICAgICAg
ICAgICAgJ3Rlc3RzL0tVUkxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVz
dC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0xldmVsREJUZXN0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdHMvTG9jYWxpemVkTnVtYmVySUNVVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rz
L1BhaW50QWdncmVnYXRvclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9QT0RBcmVuYVRl
c3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGV2ZWxE
QlRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVzdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmEwMGFlNjg2MWMwMGU5MDVlNDNmODUwNGE1MDUxMmM1MzFhZWJhZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGV2ZWxEQlRlc3Qu
Y3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
VVNFKExFVkVMREIpCisKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiTGV2ZWxE
QkNvbXBhcmF0b3IuaCIKKyNpbmNsdWRlICJMZXZlbERCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJM
ZXZlbERCU2xpY2UuaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHdlYmtp
dC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgU2ltcGxlQ29t
cGFyYXRvciA6IHB1YmxpYyBMZXZlbERCQ29tcGFyYXRvciB7CitwdWJsaWM6CisgICAgdmlydHVh
bCBpbnQgY29tcGFyZShjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYg
YikgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHNpemVfdCBsZW4gPSBzdGQ6Om1pbihh
LmVuZCgpIC0gYS5iZWdpbigpLCBiLmVuZCgpIC0gYi5iZWdpbigpKTsKKyAgICAgICAgcmV0dXJu
IG1lbWNtcChhLmJlZ2luKCksIGIuYmVnaW4oKSwgbGVuKTsKKyAgICB9CisgICAgdmlydHVhbCBj
b25zdCBjaGFyKiBuYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gInRlbXBfY29tcGFyYXRv
ciI7IH0KK307CisKK1ZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcm
IHMpCit7CisgICAgVmVjdG9yPGNoYXI+IHJldChzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzLnNpemUoKTsgKytpKQorICAgICAgICByZXQuYXBwZW5kKHNbaV0pOworICAg
IHJldHVybiByZXQ7Cit9CisKK1RFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgQ29ycnVwdGlvblRl
c3QpCit7CisgICAgT3duUHRyPHdlYmtpdF9zdXBwb3J0OjpTY29wZWRUZW1wRGlyZWN0b3J5PiB0
ZW1wRGlyZWN0b3J5ID0gYWRvcHRQdHIod2Via2l0X3N1cHBvcnQ6OkNyZWF0ZVNjb3BlZFRlbXBE
aXJlY3RvcnkoKSk7CisgICAgdGVtcERpcmVjdG9yeS0+Q3JlYXRlVW5pcXVlVGVtcERpcigpOwor
ICAgIGNvbnN0IFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wRGlyZWN0b3J5LT5w
YXRoKCkuY19zdHIoKSk7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gZW5jb2RlU3Ry
aW5nKCJrZXkiKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gcHV0VmFsdWUgPSBlbmNvZGVTdHJp
bmcoInZhbHVlIik7CisgICAgVmVjdG9yPGNoYXI+IGdvdFZhbHVlOworICAgIFNpbXBsZUNvbXBh
cmF0b3IgY29tcGFyYXRvcjsKKworICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IGxldmVsZGIg
PSBMZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0aCwgJmNvbXBhcmF0b3IpOworICAgIEVYUEVDVF9U
UlVFKGxldmVsZGIpOworICAgIGJvb2wgc3VjY2VzcyA9IGxldmVsZGItPnB1dChrZXksIHB1dFZh
bHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBsZXZlbGRiLnJlbGVhc2UoKTsK
KyAgICBFWFBFQ1RfRkFMU0UobGV2ZWxkYik7CisKKyAgICBsZXZlbGRiID0gTGV2ZWxEQkRhdGFi
YXNlOjpvcGVuKHBhdGgsICZjb21wYXJhdG9yKTsKKyAgICBFWFBFQ1RfVFJVRShsZXZlbGRiKTsK
KyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+Z2V0KGtleSwgZ290VmFsdWUpOworICAgIEVYUEVDVF9U
UlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShwdXRWYWx1ZSwgZ290VmFsdWUpOworICAgIGxl
dmVsZGIucmVsZWFzZSgpOworICAgIEVYUEVDVF9GQUxTRShsZXZlbGRiKTsKKworICAgIGNvbnN0
IFN0cmluZyBmaWxlcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCAiQ1VSUkVO
VCIpOworICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBvcGVuRmlsZShmaWxlcGF0aCwg
T3BlbkZvcldyaXRlKTsKKyAgICB0cnVuY2F0ZUZpbGUoaGFuZGxlLCAwKTsKKyAgICBjbG9zZUZp
bGUoaGFuZGxlKTsKKworICAgIGxldmVsZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0aCwg
JmNvbXBhcmF0b3IpOworICAgIEVYUEVDVF9GQUxTRShsZXZlbGRiKTsKKworICAgIGJvb2wgZGVz
dHJveWVkID0gTGV2ZWxEQkRhdGFiYXNlOjpkZXN0cm95KHBhdGgpOworICAgIEVYUEVDVF9UUlVF
KGRlc3Ryb3llZCk7CisKKyAgICBsZXZlbGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKHBhdGgs
ICZjb21wYXJhdG9yKTsKKyAgICBFWFBFQ1RfVFJVRShsZXZlbGRiKTsKKyAgICBzdWNjZXNzID0g
bGV2ZWxkYi0+Z2V0KGtleSwgZ290VmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsK
K30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIFVTRShMRVZFTERCKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131102</attachid>
            <date>2012-03-09 14:02:11 -0800</date>
            <delta_ts>2012-03-12 11:51:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79413-20120309140210.patch</filename>
            <type>text/plain</type>
            <size>9556</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGY5MWIyYjA4NmU1MDcz
NjgxMTRiYmFjMTkwMjRjMzg4NTg1NWFkYy4uMmE5MzM4YmJjZTU1MDJkY2I5NjU5MDE1ZjQ0MGY1
NjcwMTZhMzgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAzLTA4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBIYW5k
bGUgTGV2ZWxEQiBkYXRhYmFzZSBjb3JydXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQxMworCisgICAgICAgIEFkZCBMZXZlbERCRGF0YWJh
c2U6OmRlc3Ryb3koKSBtZXRob2Qgc28gdGhhdCBjbGllbnRzIGNhbiByZXRyeSBpZiBvcGVuKCkg
ZmFpbHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBUZXN0
OiB3ZWJraXRfdW5pdF90ZXN0cyAtLWd0ZXN0X2ZpbHRlcj0nTGV2ZWxEQkRhdGFiYXNlVGVzdC5D
b3JydXB0aW9uVGVzdCcKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwOiBJbXBsZW1lbnQgb3Blbi9kZXN0cm95L29wZW4gc3RyYXRlZ3kuCisg
ICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMZXZlbERCRGF0YWJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaDoKKyAgICAgICAgKExldmVsREJE
YXRhYmFzZSk6CisKIDIwMTItMDMtMDkgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBFbnN1cmUgd2UgdXNlIHRoZSBjb3JyZWN0IHRpbWUg
d2hlbiBub3RpZnlpbmcgYW5pbWF0aW9uIHN0YXJ0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggYWI3YTU5ZDRjNTUzMTg2MWRmODUyOWNmY2I5YjczMWRjMGQ0YTEzMy4uMmIyZDdlODU0
NWFjMGQzOWM4NDRkYWZjOGI5NWI4OWI0ZjgwYmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMy0wOCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogSGFuZGxlIExldmVsREIgZGF0YWJhc2Ug
Y29ycnVwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Nzk0MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgICog
V2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMvTGV2ZWxEQlRlc3QuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2ltcGxlQ29tcGFyYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVDb21wYXJhdG9yOjpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUNvbXBhcmF0b3I6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTAzLTA5ICBJYW4gVm9sbGljayAgPHZv
bGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRW5zdXJlIHdlIHVzZSB0
aGUgY29ycmVjdCB0aW1lIHdoZW4gbm90aWZ5aW5nIGFuaW1hdGlvbiBzdGFydGVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwCmluZGV4IGY0MjNiYjAwN2YyMmM2Y2Y2Nzk5OTlmZjYzNmIzZjJkMDZmNTc2
MTcuLjRjY2NiZTAzMjQxMDBjZTVmOWFkNzhjNzhhZGYyZDdjMDcwYTRkNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwCkBAIC0xNTAsNiArMTUwLDIyIEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0
b3JlPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0
CiAgICAgICAgIFN0cmluZyBwYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhCYXNl
LCBzZWN1cml0eU9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkgKyAiLmluZGV4ZWRkYi5sZXZl
bGRiIik7CiAKICAgICAgICAgZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0aCwgY29tcGFy
YXRvci5nZXQoKSk7CisKKyAgICAgICAgaWYgKCFkYikgeworICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbmRleGVkREIgYmFja2luZyBzdG9yZSBvcGVuIGZhaWxlZCwgYXR0ZW1wdGluZyBjbGVhbnVw
Iik7CisgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBMZXZlbERCRGF0YWJhc2U6OmRlc3Ryb3ko
cGF0aCk7CisgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBMT0df
RVJST1IoIkluZGV4ZWREQiBiYWNraW5nIHN0b3JlIGNsZWFudXAgZmFpbGVkIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPigpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBMT0dfRVJST1IoIkluZGV4ZWREQiBiYWNraW5nIHN0b3JlIGNs
ZWFudXAgc3VjY2VlZGVkLCByZW9wZW5pbmciKTsKKyAgICAgICAgICAgIGRiID0gTGV2ZWxEQkRh
dGFiYXNlOjpvcGVuKHBhdGgsIGNvbXBhcmF0b3IuZ2V0KCkpOworICAgICAgICAgICAgaWYgKCFk
YikgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiSW5kZXhlZERCIGJhY2tpbmcgc3RvcmUg
cmVvcGVuIGFmdGVyIHJlY292ZXJ5IGZhaWxlZCIpOworICAgICAgICAgICAgICAgIHJldHVybiBQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmICghZGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9s
ZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKaW5kZXggNDFhMWFlZmIzYTc4ZDVmODBjOGI4MDFi
ODExNzYzOTM4ZDVlMjQ5Zi4uMjczYWZkNGRlYzFhYWU3MGJkMWFhOTJiMDhlNjgwNGJiMjYzMDhj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRh
dGFiYXNlLmNwcApAQCAtMTEyLDYgKzExMiwxMyBAQCBzdGF0aWMgbGV2ZWxkYjo6U3RhdHVzIG9w
ZW5EQihsZXZlbGRiOjpDb21wYXJhdG9yKiBjb21wYXJhdG9yLCBsZXZlbGRiOjpFbnYqIGVudgog
ICAgIHJldHVybiBsZXZlbGRiOjpEQjo6T3BlbihvcHRpb25zLCBwYXRoLnV0ZjgoKS5kYXRhKCks
IGRiKTsKIH0KIAorYm9vbCBMZXZlbERCRGF0YWJhc2U6OmRlc3Ryb3koY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSkKK3sKKyAgICBsZXZlbGRiOjpPcHRpb25zIG9wdGlvbnM7CisgICAgY29uc3QgbGV2
ZWxkYjo6U3RhdHVzIHMgPSBsZXZlbGRiOjpEZXN0cm95REIoZmlsZU5hbWUudXRmOCgpLmRhdGEo
KSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIHMub2soKTsKK30KKwogUGFzc093blB0cjxMZXZlbERC
RGF0YWJhc2U+IExldmVsREJEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBMZXZlbERCQ29tcGFyYXRvciogY29tcGFyYXRvcikKIHsKICAgICBPd25QdHI8Q29tcGFy
YXRvckFkYXB0ZXI+IGNvbXBhcmF0b3JBZGFwdGVyID0gYWRvcHRQdHIobmV3IENvbXBhcmF0b3JB
ZGFwdGVyKGNvbXBhcmF0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZl
bGRiL0xldmVsREJEYXRhYmFzZS5oCmluZGV4IGM2Y2UyMWMwM2Q5NzliOWUzZjk1NDJhZTRlOTFj
MDZlZGYxOGNjMzguLmU4MGI0OWEyNGFjNzdkMmZjMDNmMTBhZTNiMGRiNzBmMzZhMjY3NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2Uu
aApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBMZXZlbERCRGF0YWJhc2UgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gb3Blbihjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBMZXZlbERCQ29tcGFyYXRvciopOwogICAgIHN0YXRpYyBQYXNzT3duUHRy
PExldmVsREJEYXRhYmFzZT4gb3BlbkluTWVtb3J5KGNvbnN0IExldmVsREJDb21wYXJhdG9yKik7
CisgICAgc3RhdGljIGJvb2wgZGVzdHJveShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKICAgICB+
TGV2ZWxEQkRhdGFiYXNlKCk7CiAKICAgICBib29sIHB1dChjb25zdCBMZXZlbERCU2xpY2UmIGtl
eSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aQppbmRleCBmNjVjZDVkNjVlZGFmOTU2OGEzYTBkYTYzODdjM2I4MTQzZWY3OTJjLi4xZWI1OGJm
MTNhZTAyODQ4OWRjNTNjZjJjMDhkZGRkNjk0Y2U1N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cGkKQEAgLTEwNyw2ICsxMDcsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0tVUkxUZXN0
LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKICAgICAg
ICAgICAgICd0ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAnLAorICAgICAgICAgICAg
J3Rlc3RzL0xldmVsREJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvTG9jYWxpemVkTnVt
YmVySUNVVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1BhaW50QWdncmVnYXRvclRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYTAwYWU2ODYxYzAwZTkwNWU0M2Y4NTA0YTUwNTEyYzUzMWFlYmFkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVzdC5jcHAKQEAgLTAs
MCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoTEVWRUxE
QikKKworI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJMZXZlbERCQ29tcGFyYXRv
ci5oIgorI2luY2x1ZGUgIkxldmVsREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkxldmVsREJTbGlj
ZS5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQv
d2Via2l0X3N1cHBvcnQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBTaW1wbGVDb21wYXJhdG9yIDog
cHVibGljIExldmVsREJDb21wYXJhdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGludCBjb21w
YXJlKGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKSBjb25zdCBP
VkVSUklERQorICAgIHsKKyAgICAgICAgc2l6ZV90IGxlbiA9IHN0ZDo6bWluKGEuZW5kKCkgLSBh
LmJlZ2luKCksIGIuZW5kKCkgLSBiLmJlZ2luKCkpOworICAgICAgICByZXR1cm4gbWVtY21wKGEu
YmVnaW4oKSwgYi5iZWdpbigpLCBsZW4pOworICAgIH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IG5hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAidGVtcF9jb21wYXJhdG9yIjsgfQorfTsK
KworVmVjdG9yPGNoYXI+IGVuY29kZVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcykKK3sKKyAg
ICBWZWN0b3I8Y2hhcj4gcmV0KHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJldC5hcHBlbmQoc1tpXSk7CisgICAgcmV0dXJuIHJl
dDsKK30KKworVEVTVChMZXZlbERCRGF0YWJhc2VUZXN0LCBDb3JydXB0aW9uVGVzdCkKK3sKKyAg
ICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3BlZFRlbXBEaXJlY3Rvcnk+IHRlbXBEaXJlY3Rv
cnkgPSBhZG9wdFB0cih3ZWJraXRfc3VwcG9ydDo6Q3JlYXRlU2NvcGVkVGVtcERpcmVjdG9yeSgp
KTsKKyAgICB0ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7CisgICAgY29uc3Qg
U3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHRlbXBEaXJlY3RvcnktPnBhdGgoKS5jX3N0
cigpKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkgPSBlbmNvZGVTdHJpbmcoImtleSIp
OworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBwdXRWYWx1ZSA9IGVuY29kZVN0cmluZygidmFsdWUi
KTsKKyAgICBWZWN0b3I8Y2hhcj4gZ290VmFsdWU7CisgICAgU2ltcGxlQ29tcGFyYXRvciBjb21w
YXJhdG9yOworCisgICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4gbGV2ZWxkYiA9IExldmVsREJE
YXRhYmFzZTo6b3BlbihwYXRoLCAmY29tcGFyYXRvcik7CisgICAgRVhQRUNUX1RSVUUobGV2ZWxk
Yik7CisgICAgYm9vbCBzdWNjZXNzID0gbGV2ZWxkYi0+cHV0KGtleSwgcHV0VmFsdWUpOworICAg
IEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIGxldmVsZGIucmVsZWFzZSgpOworICAgIEVYUEVD
VF9GQUxTRShsZXZlbGRiKTsKKworICAgIGxldmVsZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9wZW4o
cGF0aCwgJmNvbXBhcmF0b3IpOworICAgIEVYUEVDVF9UUlVFKGxldmVsZGIpOworICAgIHN1Y2Nl
c3MgPSBsZXZlbGRiLT5nZXQoa2V5LCBnb3RWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vz
cyk7CisgICAgRVhQRUNUX0VRKHB1dFZhbHVlLCBnb3RWYWx1ZSk7CisgICAgbGV2ZWxkYi5yZWxl
YXNlKCk7CisgICAgRVhQRUNUX0ZBTFNFKGxldmVsZGIpOworCisgICAgY29uc3QgU3RyaW5nIGZp
bGVwYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsICJDVVJSRU5UIik7CisgICAg
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSA9IG9wZW5GaWxlKGZpbGVwYXRoLCBPcGVuRm9yV3Jp
dGUpOworICAgIHRydW5jYXRlRmlsZShoYW5kbGUsIDApOworICAgIGNsb3NlRmlsZShoYW5kbGUp
OworCisgICAgbGV2ZWxkYiA9IExldmVsREJEYXRhYmFzZTo6b3BlbihwYXRoLCAmY29tcGFyYXRv
cik7CisgICAgRVhQRUNUX0ZBTFNFKGxldmVsZGIpOworCisgICAgYm9vbCBkZXN0cm95ZWQgPSBM
ZXZlbERCRGF0YWJhc2U6OmRlc3Ryb3kocGF0aCk7CisgICAgRVhQRUNUX1RSVUUoZGVzdHJveWVk
KTsKKworICAgIGxldmVsZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0aCwgJmNvbXBhcmF0
b3IpOworICAgIEVYUEVDVF9UUlVFKGxldmVsZGIpOworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5n
ZXQoa2V5LCBnb3RWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworfQorCit9IC8v
IG5hbWVzcGFjZQorCisjZW5kaWYgLy8gVVNFKExFVkVMREIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131369</attachid>
            <date>2012-03-12 11:51:20 -0700</date>
            <delta_ts>2012-03-12 11:56:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79413-20120312115119.patch</filename>
            <type>text/plain</type>
            <size>10256</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ3ZGVhNDA5OGEwYzQ2
ODVhNGQwMDBlMmNhNTVhZWM5NTAwYTNmOC4uOTQyZjFiMTAzZTQ2MWU2NDM0NjYzZDhkZWVhNjQz
ODI1N2UzOTdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAzLTA4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBIYW5k
bGUgTGV2ZWxEQiBkYXRhYmFzZSBjb3JydXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQxMworCisgICAgICAgIEFkZCBMZXZlbERCRGF0YWJh
c2U6OmRlc3Ryb3koKSBtZXRob2Qgc28gdGhhdCBjbGllbnRzIGNhbiByZXRyeSBpZiBvcGVuKCkg
ZmFpbHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBUZXN0
OiB3ZWJraXRfdW5pdF90ZXN0cyAtLWd0ZXN0X2ZpbHRlcj0nTGV2ZWxEQkRhdGFiYXNlVGVzdC5D
b3JydXB0aW9uVGVzdCcKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwOiBJbXBsZW1lbnQgb3Blbi9kZXN0cm95L29wZW4gc3RyYXRlZ3kuCisg
ICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMZXZlbERCRGF0YWJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaDoKKyAgICAgICAgKExldmVsREJE
YXRhYmFzZSk6CisKIDIwMTItMDMtMTEgIFZpY3RvciBDYXJidW5lICA8dmNhcmJ1bmVAYWRvYmUu
Y29tPgogCiAgICAgICAgIFRoZSBtYWluIGNvZGUgc3RydWN0dXJlIGZvciBwbGFjaW5nIGZ1dHVy
ZSB0ZXh0IHRyYWNrIGN1ZSByZW5kZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
OGZlNTcyNDgxNTA2MjA3ODg3NzZhZThmYjMzNjU1YmVmMzBkYzQ1ZC4uYTgyMzU0ZDVkNzY0YzJj
ZDYwYWExZDdiOGE3YWZlNjkxMmQ3MGQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxMi0wMy0wOCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEluZGV4ZWREQjogSGFuZGxlIExldmVsREIgZGF0YWJhc2UgY29ycnVw
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgICogV2ViS2l0
Lmd5cGk6CisgICAgICAgICogdGVzdHMvTGV2ZWxEQlRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoU2ltcGxlQ29tcGFyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpTaW1wbGVDb21wYXJhdG9yOjpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUNv
bXBhcmF0b3I6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTAzLTExICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTEwMzU5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCBmNDIzYmIwMDdmMjJjNmNmNjc5OTk5
ZmY2MzZiM2YyZDA2ZjU3NjE3Li40Y2NjYmUwMzI0MTAwY2U1ZjlhZDc4Yzc4YWRmMmQ3YzA3MGE0
ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtMTUwLDYgKzE1MCwyMiBAQCBQYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZT4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0
eU9yaWdpbiogc2VjdXJpdAogICAgICAgICBTdHJpbmcgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChwYXRoQmFzZSwgc2VjdXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpICsg
Ii5pbmRleGVkZGIubGV2ZWxkYiIpOwogCiAgICAgICAgIGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpv
cGVuKHBhdGgsIGNvbXBhcmF0b3IuZ2V0KCkpOworCisgICAgICAgIGlmICghZGIpIHsKKyAgICAg
ICAgICAgIExPR19FUlJPUigiSW5kZXhlZERCIGJhY2tpbmcgc3RvcmUgb3BlbiBmYWlsZWQsIGF0
dGVtcHRpbmcgY2xlYW51cCIpOworICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gTGV2ZWxEQkRh
dGFiYXNlOjpkZXN0cm95KHBhdGgpOworICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAg
ICAgICAgICAgICAgTE9HX0VSUk9SKCJJbmRleGVkREIgYmFja2luZyBzdG9yZSBjbGVhbnVwIGZh
aWxlZCIpOworICAgICAgICAgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4oKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTE9HX0VSUk9SKCJJbmRleGVkREIg
YmFja2luZyBzdG9yZSBjbGVhbnVwIHN1Y2NlZWRlZCwgcmVvcGVuaW5nIik7CisgICAgICAgICAg
ICBkYiA9IExldmVsREJEYXRhYmFzZTo6b3BlbihwYXRoLCBjb21wYXJhdG9yLmdldCgpKTsKKyAg
ICAgICAgICAgIGlmICghZGIpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkluZGV4ZWRE
QiBiYWNraW5nIHN0b3JlIHJlb3BlbiBhZnRlciByZWNvdmVyeSBmYWlsZWQiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIWRiKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCmluZGV4IDQxYTFhZWZi
M2E3OGQ1ZjgwYzhiODAxYjgxMTc2MzkzOGQ1ZTI0OWYuLjI3M2FmZDRkZWMxYWFlNzBiZDFhYTky
YjA4ZTY4MDRiYjI2MzA4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xl
dmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9s
ZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKQEAgLTExMiw2ICsxMTIsMTMgQEAgc3RhdGljIGxl
dmVsZGI6OlN0YXR1cyBvcGVuREIobGV2ZWxkYjo6Q29tcGFyYXRvciogY29tcGFyYXRvciwgbGV2
ZWxkYjo6RW52KiBlbnYKICAgICByZXR1cm4gbGV2ZWxkYjo6REI6Ok9wZW4ob3B0aW9ucywgcGF0
aC51dGY4KCkuZGF0YSgpLCBkYik7CiB9CiAKK2Jvb2wgTGV2ZWxEQkRhdGFiYXNlOjpkZXN0cm95
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCit7CisgICAgbGV2ZWxkYjo6T3B0aW9ucyBvcHRpb25z
OworICAgIGNvbnN0IGxldmVsZGI6OlN0YXR1cyBzID0gbGV2ZWxkYjo6RGVzdHJveURCKGZpbGVO
YW1lLnV0ZjgoKS5kYXRhKCksIG9wdGlvbnMpOworICAgIHJldHVybiBzLm9rKCk7Cit9CisKIFBh
c3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBMZXZlbERCRGF0YWJhc2U6Om9wZW4oY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIGNvbXBhcmF0b3IpCiB7CiAg
ICAgT3duUHRyPENvbXBhcmF0b3JBZGFwdGVyPiBjb21wYXJhdG9yQWRhcHRlciA9IGFkb3B0UHRy
KG5ldyBDb21wYXJhdG9yQWRhcHRlcihjb21wYXJhdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaAppbmRleCBjNmNlMjFjMDNkOTc5
YjllM2Y5NTQyYWU0ZTkxYzA2ZWRmMThjYzM4Li5lODBiNDlhMjRhYzc3ZDJmYzAzZjEwYWUzYjBk
YjcwZjM2YTI2NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRi
L0xldmVsREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIv
TGV2ZWxEQkRhdGFiYXNlLmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgTGV2ZWxEQkRhdGFiYXNl
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+IG9wZW4o
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqKTsKICAgICBz
dGF0aWMgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+IG9wZW5Jbk1lbW9yeShjb25zdCBMZXZl
bERCQ29tcGFyYXRvciopOworICAgIHN0YXRpYyBib29sIGRlc3Ryb3koY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSk7CiAgICAgfkxldmVsREJEYXRhYmFzZSgpOwogCiAgICAgYm9vbCBwdXQoY29uc3Qg
TGV2ZWxEQlNsaWNlJiBrZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgdmFsdWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCmluZGV4IDFlMWE0MTY2NWU3OWRkMmNhNWQzOGFkZWQ2OTU4NTE5ZTE1
NzQxNDMuLmVjYjg3YTczOWZkMmFjY2UyZGEyZGY1MjY5NzUxNDA5OWI1ZmJhOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTc0OCw2ICs3NDgsNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjIGZ1bmN0aW9ucyBkZWZpbmVkIG9ubHkgaW4gIVdFQktJVF9JTVBM
RU1FTlRBVElPTi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0Fzc29j
aWF0ZWRVUkxMb2FkZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd0ZXN0cy9MZXZlbERCVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndGVzdHMvUG9wdXBNZW51VGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVDZWxsVGVzdC5jcHAnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViRnJhbWVUZXN0LmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaQppbmRleCA4N2Q0MWJmYjlmODNhNTFhNGEyMzBjMDNmMzQyNWNjYWIx
YmNmNmZkLi4xNDc2MGE0NzgyZTljM2EzY2NjYTc1OWU0ZWY1NzY1YzY4MzdkM2RkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTEwNyw2ICsxMDcsNyBAQAogICAgICAgICAgICAg
J3Rlc3RzL0tVUkxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAn
LAorICAgICAgICAgICAgJ3Rlc3RzL0xldmVsREJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvTG9jYWxpemVkTnVtYmVySUNVVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1BhaW50
QWdncmVnYXRvclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9QbGF0Zm9ybUdlc3R1cmVD
dXJ2ZVRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TGV2ZWxEQlRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVz
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmEwMGFlNjg2MWMwMGU5MDVlNDNmODUwNGE1MDUxMmM1MzFhZWJh
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGV2ZWxE
QlRlc3QuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgVVNFKExFVkVMREIpCisKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAi
TGV2ZWxEQkNvbXBhcmF0b3IuaCIKKyNpbmNsdWRlICJMZXZlbERCRGF0YWJhc2UuaCIKKyNpbmNs
dWRlICJMZXZlbERCU2xpY2UuaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUg
PHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgU2lt
cGxlQ29tcGFyYXRvciA6IHB1YmxpYyBMZXZlbERCQ29tcGFyYXRvciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCBpbnQgY29tcGFyZShjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJT
bGljZSYgYikgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHNpemVfdCBsZW4gPSBzdGQ6
Om1pbihhLmVuZCgpIC0gYS5iZWdpbigpLCBiLmVuZCgpIC0gYi5iZWdpbigpKTsKKyAgICAgICAg
cmV0dXJuIG1lbWNtcChhLmJlZ2luKCksIGIuYmVnaW4oKSwgbGVuKTsKKyAgICB9CisgICAgdmly
dHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gInRlbXBfY29t
cGFyYXRvciI7IH0KK307CisKK1ZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmcoY29uc3Qgc3RkOjpz
dHJpbmcmIHMpCit7CisgICAgVmVjdG9yPGNoYXI+IHJldChzLnNpemUoKSk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzLnNpemUoKTsgKytpKQorICAgICAgICByZXQuYXBwZW5kKHNbaV0p
OworICAgIHJldHVybiByZXQ7Cit9CisKK1RFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgQ29ycnVw
dGlvblRlc3QpCit7CisgICAgT3duUHRyPHdlYmtpdF9zdXBwb3J0OjpTY29wZWRUZW1wRGlyZWN0
b3J5PiB0ZW1wRGlyZWN0b3J5ID0gYWRvcHRQdHIod2Via2l0X3N1cHBvcnQ6OkNyZWF0ZVNjb3Bl
ZFRlbXBEaXJlY3RvcnkoKSk7CisgICAgdGVtcERpcmVjdG9yeS0+Q3JlYXRlVW5pcXVlVGVtcERp
cigpOworICAgIGNvbnN0IFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wRGlyZWN0
b3J5LT5wYXRoKCkuY19zdHIoKSk7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gZW5j
b2RlU3RyaW5nKCJrZXkiKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gcHV0VmFsdWUgPSBlbmNv
ZGVTdHJpbmcoInZhbHVlIik7CisgICAgVmVjdG9yPGNoYXI+IGdvdFZhbHVlOworICAgIFNpbXBs
ZUNvbXBhcmF0b3IgY29tcGFyYXRvcjsKKworICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IGxl
dmVsZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0aCwgJmNvbXBhcmF0b3IpOworICAgIEVY
UEVDVF9UUlVFKGxldmVsZGIpOworICAgIGJvb2wgc3VjY2VzcyA9IGxldmVsZGItPnB1dChrZXks
IHB1dFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBsZXZlbGRiLnJlbGVh
c2UoKTsKKyAgICBFWFBFQ1RfRkFMU0UobGV2ZWxkYik7CisKKyAgICBsZXZlbGRiID0gTGV2ZWxE
QkRhdGFiYXNlOjpvcGVuKHBhdGgsICZjb21wYXJhdG9yKTsKKyAgICBFWFBFQ1RfVFJVRShsZXZl
bGRiKTsKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+Z2V0KGtleSwgZ290VmFsdWUpOworICAgIEVY
UEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShwdXRWYWx1ZSwgZ290VmFsdWUpOwor
ICAgIGxldmVsZGIucmVsZWFzZSgpOworICAgIEVYUEVDVF9GQUxTRShsZXZlbGRiKTsKKworICAg
IGNvbnN0IFN0cmluZyBmaWxlcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCAi
Q1VSUkVOVCIpOworICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBvcGVuRmlsZShmaWxl
cGF0aCwgT3BlbkZvcldyaXRlKTsKKyAgICB0cnVuY2F0ZUZpbGUoaGFuZGxlLCAwKTsKKyAgICBj
bG9zZUZpbGUoaGFuZGxlKTsKKworICAgIGxldmVsZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9wZW4o
cGF0aCwgJmNvbXBhcmF0b3IpOworICAgIEVYUEVDVF9GQUxTRShsZXZlbGRiKTsKKworICAgIGJv
b2wgZGVzdHJveWVkID0gTGV2ZWxEQkRhdGFiYXNlOjpkZXN0cm95KHBhdGgpOworICAgIEVYUEVD
VF9UUlVFKGRlc3Ryb3llZCk7CisKKyAgICBsZXZlbGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVu
KHBhdGgsICZjb21wYXJhdG9yKTsKKyAgICBFWFBFQ1RfVFJVRShsZXZlbGRiKTsKKyAgICBzdWNj
ZXNzID0gbGV2ZWxkYi0+Z2V0KGtleSwgZ290VmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNj
ZXNzKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIFVTRShMRVZFTERCKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131371</attachid>
            <date>2012-03-12 11:56:10 -0700</date>
            <delta_ts>2012-03-12 12:57:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79413-20120312115609.patch</filename>
            <type>text/plain</type>
            <size>10380</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ3ZGVhNDA5OGEwYzQ2
ODVhNGQwMDBlMmNhNTVhZWM5NTAwYTNmOC4uNTkxNmU2YmZjNjkxMzZjNDgwZjVlNTUyOTdmMjVj
ZjQ4Zjk1NjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAzLTEyICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBIYW5k
bGUgTGV2ZWxEQiBkYXRhYmFzZSBjb3JydXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQxMworCisgICAgICAgIEFkZCBMZXZlbERCRGF0YWJh
c2U6OmRlc3Ryb3koKSBtZXRob2Qgc28gdGhhdCBjbGllbnRzIGNhbiByZXRyeSBpZiBvcGVuKCkg
ZmFpbHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBUZXN0
OiB3ZWJraXRfdW5pdF90ZXN0cyAtLWd0ZXN0X2ZpbHRlcj0nTGV2ZWxEQkRhdGFiYXNlVGVzdC5D
b3JydXB0aW9uVGVzdCcKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwOiBJbXBsZW1lbnQgb3Blbi9kZXN0cm95L29wZW4gc3RyYXRlZ3kuCisg
ICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMZXZlbERCRGF0YWJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaDoKKyAgICAgICAgKExldmVsREJE
YXRhYmFzZSk6CisKIDIwMTItMDMtMTEgIFZpY3RvciBDYXJidW5lICA8dmNhcmJ1bmVAYWRvYmUu
Y29tPgogCiAgICAgICAgIFRoZSBtYWluIGNvZGUgc3RydWN0dXJlIGZvciBwbGFjaW5nIGZ1dHVy
ZSB0ZXh0IHRyYWNrIGN1ZSByZW5kZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
OGZlNTcyNDgxNTA2MjA3ODg3NzZhZThmYjMzNjU1YmVmMzBkYzQ1ZC4uNTgxNmQ1NTM4YzU1ZDQ1
NmJkMGVjYmE5M2IzMzBmNjY4YTFjZjMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAxMi0wMy0xMiAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEluZGV4ZWREQjogSGFuZGxlIExldmVsREIgZGF0YWJhc2UgY29ycnVw
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgICogV2ViS2l0
Lmd5cDogU2tpcCBMZXZlbERCVGVzdC5jcHAgaW4gc2hhcmVkIGNvbXBvbmVudCBidWlsZHMgZHVl
IHRvIHdlYmtpdF9zdXBwb3J0IGRlcGVuZGVuY3kKKyAgICAgICAgKiBXZWJLaXQuZ3lwaTogQWRk
IExldmVsREJUZXN0LmNwcAorICAgICAgICAqIHRlc3RzL0xldmVsREJUZXN0LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNpbXBsZUNvbXBhcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlQ29tcGFyYXRvcjo6Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaW1wbGVDb21wYXJhdG9yOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZVN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wMy0xMSAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjExMDM1OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggZjQyM2JiMDA3ZjIy
YzZjZjY3OTk5OWZmNjM2YjNmMmQwNmY1NzYxNy4uNGNjY2JlMDMyNDEwMGNlNWY5YWQ3OGM3OGFk
ZjJkN2MwNzBhNGQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTE1MCw2ICsxNTAsMjIg
QEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkxldmVsREJCYWNraW5nU3RvcmU6Om9w
ZW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXQKICAgICAgICAgU3RyaW5nIHBhdGggPSBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGF0aEJhc2UsIHNlY3VyaXR5T3JpZ2luLT5kYXRhYmFzZUlkZW50
aWZpZXIoKSArICIuaW5kZXhlZGRiLmxldmVsZGIiKTsKIAogICAgICAgICBkYiA9IExldmVsREJE
YXRhYmFzZTo6b3BlbihwYXRoLCBjb21wYXJhdG9yLmdldCgpKTsKKworICAgICAgICBpZiAoIWRi
KSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIkluZGV4ZWREQiBiYWNraW5nIHN0b3JlIG9wZW4g
ZmFpbGVkLCBhdHRlbXB0aW5nIGNsZWFudXAiKTsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9
IExldmVsREJEYXRhYmFzZTo6ZGVzdHJveShwYXRoKTsKKyAgICAgICAgICAgIGlmICghc3VjY2Vz
cykgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiSW5kZXhlZERCIGJhY2tpbmcgc3RvcmUg
Y2xlYW51cCBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJREJC
YWNraW5nU3RvcmU+KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIExPR19FUlJPUigi
SW5kZXhlZERCIGJhY2tpbmcgc3RvcmUgY2xlYW51cCBzdWNjZWVkZWQsIHJlb3BlbmluZyIpOwor
ICAgICAgICAgICAgZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0aCwgY29tcGFyYXRvci5n
ZXQoKSk7CisgICAgICAgICAgICBpZiAoIWRiKSB7CisgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbmRleGVkREIgYmFja2luZyBzdG9yZSByZW9wZW4gYWZ0ZXIgcmVjb3ZlcnkgZmFpbGVkIik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPigpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFkYikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcAppbmRl
eCA0MWExYWVmYjNhNzhkNWY4MGM4YjgwMWI4MTE3NjM5MzhkNWUyNDlmLi4yNzNhZmQ0ZGVjMWFh
ZTcwYmQxYWE5MmIwOGU2ODA0YmIyNjMwOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCkBAIC0xMTIsNiArMTEyLDEzIEBA
IHN0YXRpYyBsZXZlbGRiOjpTdGF0dXMgb3BlbkRCKGxldmVsZGI6OkNvbXBhcmF0b3IqIGNvbXBh
cmF0b3IsIGxldmVsZGI6OkVudiogZW52CiAgICAgcmV0dXJuIGxldmVsZGI6OkRCOjpPcGVuKG9w
dGlvbnMsIHBhdGgudXRmOCgpLmRhdGEoKSwgZGIpOwogfQogCitib29sIExldmVsREJEYXRhYmFz
ZTo6ZGVzdHJveShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQoreworICAgIGxldmVsZGI6Ok9wdGlv
bnMgb3B0aW9uczsKKyAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IGxldmVsZGI6OkRlc3Ry
b3lEQihmaWxlTmFtZS51dGY4KCkuZGF0YSgpLCBvcHRpb25zKTsKKyAgICByZXR1cm4gcy5vaygp
OworfQorCiBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gTGV2ZWxEQkRhdGFiYXNlOjpvcGVu
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9yKiBjb21wYXJh
dG9yKQogewogICAgIE93blB0cjxDb21wYXJhdG9yQWRhcHRlcj4gY29tcGFyYXRvckFkYXB0ZXIg
PSBhZG9wdFB0cihuZXcgQ29tcGFyYXRvckFkYXB0ZXIoY29tcGFyYXRvcikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKaW5kZXggYzZj
ZTIxYzAzZDk3OWI5ZTNmOTU0MmFlNGU5MWMwNmVkZjE4Y2MzOC4uZTgwYjQ5YTI0YWM3N2QyZmMw
M2YxMGFlM2IwZGI3MGYzNmEyNjc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIExldmVs
REJEYXRhYmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFi
YXNlPiBvcGVuKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9y
Kik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBvcGVuSW5NZW1vcnko
Y29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqKTsKKyAgICBzdGF0aWMgYm9vbCBkZXN0cm95KGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUpOwogICAgIH5MZXZlbERCRGF0YWJhc2UoKTsKIAogICAgIGJvb2wg
cHV0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAxZTFhNDE2NjVlNzlkZDJjYTVkMzhhZGVk
Njk1ODUxOWUxNTc0MTQzLi5lY2I4N2E3MzlmZDJhY2NlMmRhMmRmNTI2OTc1MTQwOTliNWZiYTkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC03NDgsNiArNzQ4LDcgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmdW5jdGlvbnMgZGVmaW5lZCBvbmx5IGluICFX
RUJLSVRfSU1QTEVNRU5UQVRJT04uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0
ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAndGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHAnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAndGVzdHMvTGV2ZWxEQlRlc3QuY3BwJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1JlbmRlclRhYmxlQ2VsbFRlc3QuY3BwJywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggODdkNDFiZmI5ZjgzYTUxYTRhMjMwYzAz
ZjM0MjVjY2FiMWJjZjZmZC4uMTQ3NjBhNDc4MmU5YzNhM2NjY2E3NTllNGVmNTc2NWM2ODM3ZDNk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xMDcsNiArMTA3LDcgQEAKICAg
ICAgICAgICAgICd0ZXN0cy9LVVJMVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0xheWVy
Q2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRl
clRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9MZXZlbERCVGVzdC5jcHAnLAogICAgICAg
ICAgICAgJ3Rlc3RzL0xvY2FsaXplZE51bWJlcklDVVRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9QYWludEFnZ3JlZ2F0b3JUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUGxhdGZv
cm1HZXN0dXJlQ3VydmVUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TGV2ZWxEQlRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhMDBhZTY4NjFjMDBlOTA1ZTQzZjg1MDRhNTA1
MTJjNTMxYWViYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0xldmVsREJUZXN0LmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIFVTRShMRVZFTERCKQorCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgor
I2luY2x1ZGUgIkxldmVsREJDb21wYXJhdG9yLmgiCisjaW5jbHVkZSAiTGV2ZWxEQkRhdGFiYXNl
LmgiCisjaW5jbHVkZSAiTGV2ZWxEQlNsaWNlLmgiCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
KyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisK
K2NsYXNzIFNpbXBsZUNvbXBhcmF0b3IgOiBwdWJsaWMgTGV2ZWxEQkNvbXBhcmF0b3IgeworcHVi
bGljOgorICAgIHZpcnR1YWwgaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25z
dCBMZXZlbERCU2xpY2UmIGIpIGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICBzaXplX3Qg
bGVuID0gc3RkOjptaW4oYS5lbmQoKSAtIGEuYmVnaW4oKSwgYi5lbmQoKSAtIGIuYmVnaW4oKSk7
CisgICAgICAgIHJldHVybiBtZW1jbXAoYS5iZWdpbigpLCBiLmJlZ2luKCksIGxlbik7CisgICAg
fQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
ICJ0ZW1wX2NvbXBhcmF0b3IiOyB9Cit9OworCitWZWN0b3I8Y2hhcj4gZW5jb2RlU3RyaW5nKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzKQoreworICAgIFZlY3RvcjxjaGFyPiByZXQocy5zaXplKCkpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcy5zaXplKCk7ICsraSkKKyAgICAgICAgcmV0LmFw
cGVuZChzW2ldKTsKKyAgICByZXR1cm4gcmV0OworfQorCitURVNUKExldmVsREJEYXRhYmFzZVRl
c3QsIENvcnJ1cHRpb25UZXN0KQoreworICAgIE93blB0cjx3ZWJraXRfc3VwcG9ydDo6U2NvcGVk
VGVtcERpcmVjdG9yeT4gdGVtcERpcmVjdG9yeSA9IGFkb3B0UHRyKHdlYmtpdF9zdXBwb3J0OjpD
cmVhdGVTY29wZWRUZW1wRGlyZWN0b3J5KCkpOworICAgIHRlbXBEaXJlY3RvcnktPkNyZWF0ZVVu
aXF1ZVRlbXBEaXIoKTsKKyAgICBjb25zdCBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgo
dGVtcERpcmVjdG9yeS0+cGF0aCgpLmNfc3RyKCkpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+
IGtleSA9IGVuY29kZVN0cmluZygia2V5Iik7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IHB1dFZh
bHVlID0gZW5jb2RlU3RyaW5nKCJ2YWx1ZSIpOworICAgIFZlY3RvcjxjaGFyPiBnb3RWYWx1ZTsK
KyAgICBTaW1wbGVDb21wYXJhdG9yIGNvbXBhcmF0b3I7CisKKyAgICBPd25QdHI8TGV2ZWxEQkRh
dGFiYXNlPiBsZXZlbGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKHBhdGgsICZjb21wYXJhdG9y
KTsKKyAgICBFWFBFQ1RfVFJVRShsZXZlbGRiKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBsZXZlbGRi
LT5wdXQoa2V5LCBwdXRWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgbGV2
ZWxkYi5yZWxlYXNlKCk7CisgICAgRVhQRUNUX0ZBTFNFKGxldmVsZGIpOworCisgICAgbGV2ZWxk
YiA9IExldmVsREJEYXRhYmFzZTo6b3BlbihwYXRoLCAmY29tcGFyYXRvcik7CisgICAgRVhQRUNU
X1RSVUUobGV2ZWxkYik7CisgICAgc3VjY2VzcyA9IGxldmVsZGItPmdldChrZXksIGdvdFZhbHVl
KTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEocHV0VmFsdWUsIGdv
dFZhbHVlKTsKKyAgICBsZXZlbGRiLnJlbGVhc2UoKTsKKyAgICBFWFBFQ1RfRkFMU0UobGV2ZWxk
Yik7CisKKyAgICBjb25zdCBTdHJpbmcgZmlsZXBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocGF0aCwgIkNVUlJFTlQiKTsKKyAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gb3Bl
bkZpbGUoZmlsZXBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgdHJ1bmNhdGVGaWxlKGhhbmRsZSwg
MCk7CisgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICBsZXZlbGRiID0gTGV2ZWxEQkRhdGFi
YXNlOjpvcGVuKHBhdGgsICZjb21wYXJhdG9yKTsKKyAgICBFWFBFQ1RfRkFMU0UobGV2ZWxkYik7
CisKKyAgICBib29sIGRlc3Ryb3llZCA9IExldmVsREJEYXRhYmFzZTo6ZGVzdHJveShwYXRoKTsK
KyAgICBFWFBFQ1RfVFJVRShkZXN0cm95ZWQpOworCisgICAgbGV2ZWxkYiA9IExldmVsREJEYXRh
YmFzZTo6b3BlbihwYXRoLCAmY29tcGFyYXRvcik7CisgICAgRVhQRUNUX1RSVUUobGV2ZWxkYik7
CisgICAgc3VjY2VzcyA9IGxldmVsZGItPmdldChrZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uoc3VjY2Vzcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBVU0UoTEVW
RUxEQikK
</data>

          </attachment>
      

    </bug>

</bugzilla>