<?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>34280</bug_id>
          
          <creation_ts>2010-01-28 12:14:22 -0800</creation_ts>
          <short_desc>sqlite can silently roll back a transaction if executing a statement results in an error</short_desc>
          <delta_ts>2010-02-12 15:54:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dumitru Daniliuc">dumi</reporter>
          <assigned_to name="Dumitru Daniliuc">dumi</assigned_to>
          <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ericu</cc>
    
    <cc>jorlow</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>185567</commentid>
    <comment_count>0</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-01-28 12:14:22 -0800</bug_when>
    <thetext>According to http://www.sqlite.org/c3ref/get_autocommit.html, sqlite can roll back the entire transaction if executing a statement in that transaction results in a certain error. For example, this happens when the max size of the database is reached while running a statement (LayoutTests/storage/quota-tracking.html). We haven&apos;t discovered this problem before, because a bug in WebCore/platform/sql/SQLiteTransaction.cpp was masking it (commit() assumes that m_db.executeCommand(&quot;COMMIT&quot;) always succeeds).

I don&apos;t have any ideas for how to fix this problem at the moment, but if we don&apos;t do anything about it, then we can&apos;t implement some parts of the WebSQLDatabases spec as they&apos;re currently specified. Namely, the spec says that if a statement failed, but has an error callback associated with it that returns false, then we should just move on to the next statement. We cannot do that if sqlite decided to rollback the transaction because of the failed statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186026</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-29 17:46:51 -0800</bug_when>
    <thetext>Ouch... surprising behavior all right, &quot;the transaction might be rolled back automatically&quot;.

Not sure i agree that the spec is unimplementable with this behavior. We can detect when this auto-rollback of a transaction has happened with sqlite3_get_autocommit(). So...

Prior to executing any statement in a transaction, test sqlite3_get_autocommit() and if it returns true don&apos;t execute the statement, treat this condition as a statement failure. Do the same when it comes time to finally COMMIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187194</commentid>
    <comment_count>2</comment_count>
      <attachid>47981</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-02 16:07:09 -0800</bug_when>
    <thetext>Created attachment 47981
patch

Hixie stated on public-webapps that it&apos;s fine to jump straight to the transaction&apos;s error callback (and thus, ignore any other pending statements in a transaction), if a statement failed in a way that made sqlite rollback the entire transaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187197</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-02 16:11:52 -0800</bug_when>
    <thetext>Attachment 47981 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/storage/SQLTransaction.cpp:387:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187211</commentid>
    <comment_count>4</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-02 17:17:40 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 47981 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
&gt; WebCore/storage/SQLTransaction.cpp:387:  Boolean expressions that span multiple
&gt; lines should have their operators on the left side of the line instead of the
&gt; right side.  [whitespace/operators] [4]
&gt; Total errors found: 1
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

I am going to ignore this suggestion, because most of the existing code does not follow it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187223</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-02-02 18:18:26 -0800</bug_when>
    <thetext>368     // If the last statement failed because of quota restrictions, then it means sqlite
369     // has already rolled back this transaction; still, ask the user to increase the
370     // quota for this origin for the next run of this application

Missing a &apos;.&apos; at the end here. But more significantly...

From the sqlite docs, SQLITE_FULL doesn&apos;t always mean that the xaction was auto rolled back. It looks like there are some cases where the strategy of re-running the current statement with a larger pageSize would work as intended. Is that right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187232</commentid>
    <comment_count>6</comment_count>
      <attachid>47987</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-02 18:42:53 -0800</bug_when>
    <thetext>Created attachment 47987
patch

Please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187233</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-02 18:45:32 -0800</bug_when>
    <thetext>Attachment 47987 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/storage/SQLTransaction.cpp:397:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187235</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-02-02 19:13:53 -0800</bug_when>
    <thetext>397     if (m_currentStatement-&gt;hasStatementErrorCallback() &amp;&amp;
398         !m_sqliteTransaction-&gt;transactionWasRolledBackBySqlite()) {

Can this be on one line in the &quot;no line is too long&quot; webcore style?

403         // http://www.sqlite.org/lang_transaction.html recommends issuing a manual ROLLBACK command,
404         // even if the transaction was already rolled back by sqlite. That&apos;s why we don&apos;t call
405         // m_sqliteTransaction-&gt;stop() here and allow cleanupAfterTransactionErrorCallback()
406         // to eventually call m_sqliteTransaction-&gt;rollback().

Not sure you really need this comment here.

47     bool transactionWasRolledBackBySqlite() const;

I wonder if this method name could be improved? Certainly &apos;transaction&apos; in the name seems redundant, wasRolledBackBySqlite() is a littler shorter.

98     return m_inProgress &amp;&amp; m_db.isAutoCommitOn();

A comment a ptr to http://www.sqlite.org/lang_transaction.html may be better in here.

9      Test failed - there was not enough remaining storage space, or the storage quota was reached and the user declined to allow more space.

Can the test be arranged to differently to verify that the quota was bumped up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187249</commentid>
    <comment_count>9</comment_count>
      <attachid>47990</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-02 20:24:57 -0800</bug_when>
    <thetext>Created attachment 47990
patch

(In reply to comment #8)
&gt; 397     if (m_currentStatement-&gt;hasStatementErrorCallback() &amp;&amp;
&gt; 398         !m_sqliteTransaction-&gt;transactionWasRolledBackBySqlite()) {
&gt; 
&gt; Can this be on one line in the &quot;no line is too long&quot; webcore style?

done.

&gt; 403         // http://www.sqlite.org/lang_transaction.html recommends issuing a
&gt; manual ROLLBACK command,
&gt; 404         // even if the transaction was already rolled back by sqlite.
&gt; That&apos;s why we don&apos;t call
&gt; 405         // m_sqliteTransaction-&gt;stop() here and allow
&gt; cleanupAfterTransactionErrorCallback()
&gt; 406         // to eventually call m_sqliteTransaction-&gt;rollback().
&gt; 
&gt; Not sure you really need this comment here.

removed.

&gt; 47     bool transactionWasRolledBackBySqlite() const;
&gt; 
&gt; I wonder if this method name could be improved? Certainly &apos;transaction&apos; in the
&gt; name seems redundant, wasRolledBackBySqlite() is a littler shorter.

done.

&gt; 98     return m_inProgress &amp;&amp; m_db.isAutoCommitOn();
&gt; 
&gt; A comment a ptr to http://www.sqlite.org/lang_transaction.html may be better in
&gt; here.

added a reference to http://www.sqlite.org/c3ref/get_autocommit.html. i think it states more clearly that this flag is off during a transaction, so if it&apos;s on, then it means the transaction was rolled back.

&gt; 9      Test failed - there was not enough remaining storage space, or the
&gt; storage quota was reached and the user declined to allow more space.
&gt; 
&gt; Can the test be arranged to differently to verify that the quota was bumped up?

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187483</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-02-03 13:03:23 -0800</bug_when>
    <thetext>lgtm (fwiw)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187519</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-02-03 15:18:13 -0800</bug_when>
    <thetext>Maybe we should open a new bug to track the issue with sometimes not being able to bump the quota up and continuing with the same transaction due to it having been automatically rolled back?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187949</commentid>
    <comment_count>12</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-04 14:54:32 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Maybe we should open a new bug to track the issue with sometimes not being able
&gt; to bump the quota up and continuing with the same transaction due to it having
&gt; been automatically rolled back?

this patch fixes that behavior. that is, we still allow the user to bump up the quota, and if the transaction was not rolled back, we continue; otherwise, we do not run the remaining statements. the changes i&apos;ve made to quota-tracking.html test this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187961</commentid>
    <comment_count>13</comment_count>
      <attachid>47990</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-04 15:22:45 -0800</bug_when>
    <thetext>Comment on attachment 47990
patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188067</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-02-04 21:50:18 -0800</bug_when>
    <thetext>This appears to have been committed in changeset 54393 &lt;http://trac.webkit.org/changeset/54393&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188068</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-02-04 21:53:37 -0800</bug_when>
    <thetext>The test storage/quota-tracking.html (included in the patch &lt;https://bugs.webkit.org/attachment.cgi?id=47990&gt;) is failing on the Snow Leopard Intel Release bot.

The results are at: &lt;http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r54393%20(5258)/storage/&gt;

Stdio output is at: &lt;http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28Tests%29/builds/5258/steps/layout-test/logs/stdio&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190194</commentid>
    <comment_count>16</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-12 15:54:30 -0800</bug_when>
    <thetext>Re-closing this bug. This test will be fixed in bug 34911.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47981</attachid>
            <date>2010-02-02 16:07:09 -0800</date>
            <delta_ts>2010-02-02 18:42:53 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13350</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDI2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMDItMDIgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAxLiBGaXggYSBidWcgaW4gU1FMaXRlVHJhbnNhY3Rpb246IGRvIG5vdCBhc3N1bWUgdGhhdCBD
T01NSVQgYWx3YXlzCisgICAgICAgIHN1Y2NlZWRzLgorICAgICAgICAyLiBKdW1wIHN0cmFpZ2h0
IHRvIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjayB3aGVuIGEKKyAgICAgICAgc3RhdGVt
ZW50IGZhaWxzIGluIGEgd2F5IHRoYXQgbWFrZXMgc3FsaXRlIGF1dG9tYXRpY2FsbHkgcm9sbGJh
Y2sKKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLgorICAgICAgICAzLiBGaXggdGhlIGNvZGUgdGhh
dCBoYW5kbGVzIHRoZSAicXVvdGEgcmVhY2hlZCIgZmFpbHVyZSwgYXMgaXQgaXMKKyAgICAgICAg
b25lIG9mIHRoZSBmYWlsdXJlcyB0aGF0IGxlYWQgdG8gYW4gYXV0b21hdGljIHRyYW5zYWN0aW9u
CisgICAgICAgIHJvbGxiYWNrLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDI4MAorCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppc0F1dG9Db21taXRP
bik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZVRyYW5zYWN0aW9uOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2Fj
dGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6dHJhbnNhY3Rpb25X
YXNSb2xsZWRCYWNrQnlTcWxpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5oOgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5TdGF0ZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXNlQ2FsbGJhY2spOgor
ICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaDoKKwogMjAxMC0wMi0wMiAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0
cmkgR2xhemtvdi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAJ
KHJldmlzaW9uIDU0MjYwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEsNCArMzYxLDkgQEAgdm9pZCBTUUxpdGVEYXRhYmFz
ZTo6dW5sb2NrKCkKICAgICBtX2xvY2tpbmdNdXRleC51bmxvY2soKTsKIH0KIAorYm9vbCBTUUxp
dGVEYXRhYmFzZTo6aXNBdXRvQ29tbWl0T24oKSBjb25zdAoreworICAgIHJldHVybiBzcWxpdGUz
X2dldF9hdXRvY29tbWl0KG1fZGIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgJKHJldmlzaW9uIDU0MjYwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA2LDYgKzEwNiw3IEBAIHB1YmxpYzoKICAgICAvLyAodW4pbG9ja3MgdGhlIGRhdGFiYXNlIGxp
a2UgYSBtdXRleAogICAgIHZvaWQgbG9jaygpOwogICAgIHZvaWQgdW5sb2NrKCk7CisgICAgYm9v
bCBpc0F1dG9Db21taXRPbigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBpbnQgYXV0
aG9yaXplckZ1bmN0aW9uKHZvaWQqLCBpbnQsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZVRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDU0MjYwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwzMyArNTUsMzEg
QEAgdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6YmVnaW4oKQogICAgICAgICAvLyBodHRwOi8vd3d3
LnNxbGl0ZS5vcmcvbGFuZ190cmFuc2FjdGlvbi5odG1sCiAgICAgICAgIC8vIGh0dHA6Ly93d3cu
c3FsaXRlLm9yZy9sb2NraW5ndjMuaHRtbCNsb2NraW5nCiAgICAgICAgIGlmIChtX3JlYWRPbmx5
KQotICAgICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU47
Iik7CisgICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJ
TiIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1
dGVDb21tYW5kKCJCRUdJTiBJTU1FRElBVEU7Iik7CisgICAgICAgICAgICBtX2luUHJvZ3Jlc3Mg
PSBtX2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiBJTU1FRElBVEUiKTsKICAgICAgICAgbV9kYi5t
X3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IG1faW5Qcm9ncmVzczsKICAgICB9CiB9CiAKIHZvaWQg
U1FMaXRlVHJhbnNhY3Rpb246OmNvbW1pdCgpCiB7Ci0gICAgLy8gRklYTUU6IHRoaXMgY29kZSBp
cyBidWdneTsgaXQgYXNzdW1lcyB0aGF0IENPTU1JVCBhbHdheXMgc3VjY2VlZHMgd2hpY2ggaXMg
bm90IHRoZSBjYXNlOgotICAgIC8vIHRoZSB0cmFuc2FjdGlvbiBjb3VsZCd2ZSBiZWVuIHNpbGVu
dGx5IHJvbGxlZCBiYWNrIGJlZm9yZSBnZXR0aW5nIHRvIHRoZSBDT01NSVQgc3RhdGVtZW50Ci0g
ICAgLy8gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDI4MCkuIEhv
d2V2ZXIsIHRoZSByZXN0IG9mIHRoZSBjb2RlIGRvZXMgbm90Ci0gICAgLy8ga25vdyBob3cgdG8g
ZGVhbCB3aXRoIGEgcHJlbWF0dXJlIHJvbGxiYWNrIGFuZCBhIGZhaWxlZCBDT01NSVQgYXQgdGhp
cyBtb21lbnQsIHNvIHVudGlsCi0gICAgLy8gd2UgZmlndXJlIG91dCB3aGF0IHRvIGRvIHdpdGgg
YnVnIDM0MjgwLCBpdCdzIGJldHRlciB0byBsZWF2ZSB0aGlzIGNvZGUgYXMgaXQgaXMuCiAgICAg
aWYgKG1faW5Qcm9ncmVzcykgewogICAgICAgICBBU1NFUlQobV9kYi5tX3RyYW5zYWN0aW9uSW5Q
cm9ncmVzcyk7Ci0gICAgICAgIG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNPTU1JVDsiKTsKLSAgICAg
ICAgbV9pblByb2dyZXNzID0gZmFsc2U7Ci0gICAgICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3MgPSBmYWxzZTsKKyAgICAgICAgbV9pblByb2dyZXNzID0gIW1fZGIuZXhlY3V0ZUNvbW1h
bmQoIkNPTU1JVCIpOworICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gbV9p
blByb2dyZXNzOwogICAgIH0KIH0KIAogdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9sbGJhY2so
KQogeworICAgIC8vIFdlIGRvIG5vdCB1c2UgdGhlICdtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1
dGVDb21tYW5kKCJST0xMQkFDSyIpJyBjb25zdHJ1Y3QgaGVyZSwKKyAgICAvLyBiZWNhdXNlIG1f
aW5Qcm9ncmVzcyBzaG91bGQgYWx3YXlzIGJlIHNldCB0byBmYWxzZSBhZnRlciBhIFJPTExCQUNL
LCBhbmQKKyAgICAvLyBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyIpIGNhbiBzb21ldGlt
ZXMgaGFybWxlc3NseSBmYWlsLCB0aHVzIHJldHVybmluZworICAgIC8vIGEgbm9uLXplcm8vdHJ1
ZSByZXN1bHQgKGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwpLgog
ICAgIGlmIChtX2luUHJvZ3Jlc3MpIHsKICAgICAgICAgQVNTRVJUKG1fZGIubV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3MpOwotICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSzsiKTsK
KyAgICAgICAgbV9kYi5leGVjdXRlQ29tbWFuZCgiUk9MTEJBQ0siKTsKICAgICAgICAgbV9pblBy
b2dyZXNzID0gZmFsc2U7CiAgICAgICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBm
YWxzZTsKICAgICB9CkBAIC05NSw0ICs5Myw5IEBAIHZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OnN0
b3AoKQogICAgIH0KIH0KIAorYm9vbCBTUUxpdGVUcmFuc2FjdGlvbjo6dHJhbnNhY3Rpb25XYXNS
b2xsZWRCYWNrQnlTcWxpdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2luUHJvZ3Jlc3MgJiYg
bV9kYi5pc0F1dG9Db21taXRPbigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDU0MjYw
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wKCk7CiAgICAgCiAg
ICAgYm9vbCBpblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9pblByb2dyZXNzOyB9CisgICAg
Ym9vbCB0cmFuc2FjdGlvbldhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpIGNvbnN0OwogcHJpdmF0ZToK
ICAgICBTUUxpdGVEYXRhYmFzZSYgbV9kYjsKICAgICBib29sIG1faW5Qcm9ncmVzczsKSW5kZXg6
IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gNTQyNjApCisrKyBXZWJDb3Jl
L3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2
IEBAIFNRTFRyYW5zYWN0aW9uOjpTUUxUcmFuc2FjdGlvbihEYXRhYmFzZSoKICAgICAsIG1fY2Fs
bGJhY2soY2FsbGJhY2spCiAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2sp
CiAgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKLSAgICAsIG1fc2hvdWxkUmV0
cnlDdXJyZW50U3RhdGVtZW50KGZhbHNlKQogICAgICwgbV9tb2RpZmllZERhdGFiYXNlKGZhbHNl
KQogICAgICwgbV9sb2NrQWNxdWlyZWQoZmFsc2UpCiAgICAgLCBtX3JlYWRPbmx5KHJlYWRPbmx5
KQpAQCAtMzEzLDI3ICszMTIsMTUgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6cnVuU3RhdGVtZW50
cygpCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBzZXJpZXMgb2Ygc3RhdGVtZW50cyBxdWV1ZWQgdXAg
dGhhdCBhcmUgYWxsIHN1Y2Nlc3NmdWwgYW5kIGhhdmUgbm8gYXNzb2NpYXRlZAogICAgIC8vIFNR
TFN0YXRlbWVudENhbGxiYWNrIG9iamVjdHMsIHRoZW4gd2UgY2FuIGJ1cm4gdGhyb3VnaCB0aGUg
cXVldWUKICAgICBkbyB7Ci0gICAgICAgIGlmIChtX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVu
dCkgewotICAgICAgICAgICAgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgPSBmYWxzZTsK
LSAgICAgICAgICAgIC8vIEZJWE1FIC0gQW5vdGhlciBwbGFjZSB0aGF0IG5lZWRzIGZpeGluZyB1
cCBhZnRlciA8cmRhcjovL3Byb2JsZW0vNTYyODQ2OD4gaXMgYWRkcmVzc2VkLgotICAgICAgICAg
ICAgLy8gU2VlIDo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KCkgZm9yIGRpc2N1c3Npb24K
LQotICAgICAgICAgICAgLy8gUmVzZXQgdGhlIG1heGltdW0gc2l6ZSBoZXJlLCBhcyBpdCB3YXMg
aW5jcmVhc2VkIHRvIGFsbG93IHVzIHRvIHJldHJ5IHRoaXMgc3RhdGVtZW50LgotICAgICAgICAg
ICAgLy8gbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgaXMgc2V0IHRvIHRydWUgb25seSB3
aGVuIGEgc3RhdGVtZW50IGV4Y2VlZHMKLSAgICAgICAgICAgIC8vIHRoZSBxdW90YSwgd2hpY2gg
Y2FuIGhhcHBlbiBvbmx5IGluIGEgcmVhZC13cml0ZSB0cmFuc2FjdGlvbi4gVGhlcmVmb3JlLCB0
aGVyZQotICAgICAgICAgICAgLy8gaXMgbm8gbmVlZCB0byBjaGVjayBoZXJlIGlmIHRoZSB0cmFu
c2FjdGlvbiBpcyByZWFkLXdyaXRlLgotICAgICAgICAgICAgbV9kYXRhYmFzZS0+bV9zcWxpdGVE
YXRhYmFzZS5zZXRNYXhpbXVtU2l6ZShtX2RhdGFiYXNlLT5tYXhpbXVtU2l6ZSgpKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlbWVudCBoYXMg
YWxyZWFkeSBiZWVuIHJ1biwgZmFpbGVkIGR1ZSB0byBxdW90YSBjb25zdHJhaW50cywgYW5kIHdl
J3JlIG5vdCByZXRyeWluZyBpdCwKLSAgICAgICAgICAgIC8vIHRoYXQgbWVhbnMgaXQgZW5kZWQg
aW4gYW4gZXJyb3IuICBIYW5kbGUgaXQgbm93Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50U3Rh
dGVtZW50ICYmIG1fY3VycmVudFN0YXRlbWVudC0+bGFzdEV4ZWN1dGlvbkZhaWxlZER1ZVRvUXVv
dGEoKSkgewotICAgICAgICAgICAgICAgIGhhbmRsZUN1cnJlbnRTdGF0ZW1lbnRFcnJvcigpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBP
dGhlcndpc2UsIGFkdmFuY2UgdG8gdGhlIG5leHQgc3RhdGVtZW50Ci0gICAgICAgICAgICBnZXRO
ZXh0U3RhdGVtZW50KCk7CisgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlbWVudCBoYXMg
YWxyZWFkeSBiZWVuIHJ1biBhbmQgZmFpbGVkCisgICAgICAgIC8vIGR1ZSB0byBxdW90YSBjb25z
dHJhaW50cywgaW52b2tlIHRoZSBlcnJvciBjYWxsYmFjaworICAgICAgICBpZiAobV9jdXJyZW50
U3RhdGVtZW50ICYmIG1fY3VycmVudFN0YXRlbWVudC0+bGFzdEV4ZWN1dGlvbkZhaWxlZER1ZVRv
UXVvdGEoKSkgeworICAgICAgICAgICAgaGFuZGxlQ3VycmVudFN0YXRlbWVudEVycm9yKCk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIC8vIE90aGVyd2lzZSwgYWR2
YW5jZSB0byB0aGUgbmV4dCBzdGF0ZW1lbnQKKyAgICAgICAgZ2V0TmV4dFN0YXRlbWVudCgpOwog
ICAgIH0gd2hpbGUgKHJ1bkN1cnJlbnRTdGF0ZW1lbnQoKSk7CiAKICAgICAvLyBJZiBydW5DdXJy
ZW50U3RhdGVtZW50KCkgcmV0dXJuZWQgZmFsc2UsIHRoYXQgbWVhbnMgZWl0aGVyIHRoZXJlIHdh
cyBubyBjdXJyZW50IHN0YXRlbWVudCB0byBydW4sCkBAIC0zNzgsNiArMzY1LDkgQEAgYm9vbCBT
UUxUcmFuc2FjdGlvbjo6cnVuQ3VycmVudFN0YXRlbWVudAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKKyAgICAvLyBJZiB0aGUgbGFzdCBzdGF0ZW1lbnQgZmFpbGVkIGJlY2F1c2Ugb2Yg
cXVvdGEgcmVzdHJpY3Rpb25zLCB0aGVuIGl0IG1lYW5zIHNxbGl0ZQorICAgIC8vIGhhcyBhbHJl
YWR5IHJvbGxlZCBiYWNrIHRoaXMgdHJhbnNhY3Rpb247IHN0aWxsLCBhc2sgdGhlIHVzZXIgdG8g
aW5jcmVhc2UgdGhlCisgICAgLy8gcXVvdGEgZm9yIHRoaXMgb3JpZ2luIGZvciB0aGUgbmV4dCBy
dW4gb2YgdGhpcyBhcHBsaWNhdGlvbgogICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQtPmxhc3RF
eGVjdXRpb25GYWlsZWREdWVUb1F1b3RhKCkpIHsKICAgICAgICAgbV9uZXh0U3RlcCA9ICZTUUxU
cmFuc2FjdGlvbjo6ZGVsaXZlclF1b3RhSW5jcmVhc2VDYWxsYmFjazsKICAgICAgICAgTE9HKFN0
b3JhZ2VBUEksICJTY2hlZHVsaW5nIGRlbGl2ZXJRdW90YUluY3JlYXNlQ2FsbGJhY2sgZm9yIHRy
YW5zYWN0aW9uICVwXG4iLCB0aGlzKTsKQEAgLTM5MywxMiArMzgzLDE3IEBAIGJvb2wgU1FMVHJh
bnNhY3Rpb246OnJ1bkN1cnJlbnRTdGF0ZW1lbnQKIHZvaWQgU1FMVHJhbnNhY3Rpb246OmhhbmRs
ZUN1cnJlbnRTdGF0ZW1lbnRFcnJvcigpCiB7CiAgICAgLy8gVHJhbnNhY3Rpb24gU3RlcHMgNi5l
cnJvciAtIENhbGwgdGhlIHN0YXRlbWVudCdzIGVycm9yIGNhbGxiYWNrLCBidXQgaWYgdGhlcmUg
d2FzIG5vIGVycm9yIGNhbGxiYWNrLAotICAgIC8vIGp1bXAgdG8gdGhlIHRyYW5zYWN0aW9uIGVy
cm9yIGNhbGxiYWNrCi0gICAgaWYgKG1fY3VycmVudFN0YXRlbWVudC0+aGFzU3RhdGVtZW50RXJy
b3JDYWxsYmFjaygpKSB7CisgICAgLy8gb3IgdGhlIHRyYW5zYWN0aW9uIHdhcyByb2xsZWQgYmFj
aywganVtcCB0byB0aGUgdHJhbnNhY3Rpb24gZXJyb3IgY2FsbGJhY2sKKyAgICBpZiAobV9jdXJy
ZW50U3RhdGVtZW50LT5oYXNTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKCkgJiYKKyAgICAgICAgIW1f
c3FsaXRlVHJhbnNhY3Rpb24tPnRyYW5zYWN0aW9uV2FzUm9sbGVkQmFja0J5U3FsaXRlKCkpIHsK
ICAgICAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclN0YXRlbWVudENh
bGxiYWNrOwogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgZGVsaXZlclN0YXRl
bWVudENhbGxiYWNrIGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGhpcyk7CiAgICAgICAgIG1fZGF0
YWJhc2UtPnNjaGVkdWxlVHJhbnNhY3Rpb25DYWxsYmFjayh0aGlzKTsKICAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvbGFuZ190cmFuc2FjdGlvbi5odG1sIHJl
Y29tbWVuZHMgaXNzdWluZyBhIG1hbnVhbCBST0xMQkFDSyBjb21tYW5kLAorICAgICAgICAvLyBl
dmVuIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgYWxyZWFkeSByb2xsZWQgYmFjayBieSBzcWxpdGUu
IFRoYXQncyB3aHkgd2UgZG9uJ3QgY2FsbAorICAgICAgICAvLyBtX3NxbGl0ZVRyYW5zYWN0aW9u
LT5zdG9wKCkgaGVyZSBhbmQgYWxsb3cgY2xlYW51cEFmdGVyVHJhbnNhY3Rpb25FcnJvckNhbGxi
YWNrKCkKKyAgICAgICAgLy8gdG8gZXZlbnR1YWxseSBjYWxsIG1fc3FsaXRlVHJhbnNhY3Rpb24t
PnJvbGxiYWNrKCkuCiAgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IG1fY3VycmVudFN0YXRl
bWVudC0+c3FsRXJyb3IoKTsKICAgICAgICAgaWYgKCFtX3RyYW5zYWN0aW9uRXJyb3IpCiAgICAg
ICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKDEsICJ0aGUgc3Rh
dGVtZW50IGZhaWxlZCB0byBleGVjdXRlIik7CkBAIC00MjYsOSArNDIxLDcgQEAgdm9pZCBTUUxU
cmFuc2FjdGlvbjo6ZGVsaXZlclN0YXRlbWVudENhbAogdm9pZCBTUUxUcmFuc2FjdGlvbjo6ZGVs
aXZlclF1b3RhSW5jcmVhc2VDYWxsYmFjaygpCiB7CiAgICAgQVNTRVJUKG1fY3VycmVudFN0YXRl
bWVudCk7Ci0gICAgQVNTRVJUKCFtX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudCk7Ci0KLSAg
ICBtX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9u
Q2xpZW50KCktPmRpZEV4Y2VlZFF1b3RhKHRoaXMpOworICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0
aW9uQ2xpZW50KCktPmRpZEV4Y2VlZFF1b3RhKHRoaXMpOwogCiAgICAgbV9uZXh0U3RlcCA9ICZT
UUxUcmFuc2FjdGlvbjo6cnVuU3RhdGVtZW50czsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVk
dWxpbmcgcnVuU3RhdGVtZW50cyBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOwpJbmRleDog
V2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL1NRTFRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDU0MjYwKQorKysgV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNiBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwogICAg
IFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKICAg
ICBSZWZQdHI8U1FMRXJyb3I+IG1fdHJhbnNhY3Rpb25FcnJvcjsKLSAgICBib29sIG1fc2hvdWxk
UmV0cnlDdXJyZW50U3RhdGVtZW50OwogICAgIGJvb2wgbV9tb2RpZmllZERhdGFiYXNlOwogICAg
IGJvb2wgbV9sb2NrQWNxdWlyZWQ7CiAgICAgYm9vbCBtX3JlYWRPbmx5OwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNTQyNjApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxMC0wMi0wMiAgRHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IDEuIEVuaGFuY2UgcXVvdGEtdHJhY2tpbmcuaHRtbDogaWYgc3FsaXRlIGF1dG9tYXRpY2FsbHkg
cm9sbHMgYmFjaworICAgICAgICBhIHRyYW5zYWN0aW9uIGJlY2F1c2Ugb2YgYSBzdGF0ZW1lbnQg
ZmFpbHVyZSwgbWFrZSBzdXJlIHRoZSByZXN0CisgICAgICAgIG9mIHRoZSBzdGF0ZW1lbnRzIGlu
IHRoZSB0cmFuc2FjdGlvbiBhcmUgbm90IGV4ZWN1dGVkLgorICAgICAgICAyLiBGaXggdGhlIGV4
cGVjdGF0aW9ucyBmb3IgcXVvdGEtdHJhY2tpbmcuaHRtbC4gU3FsaXRlIGNhbm5vdAorICAgICAg
ICByZWNvdmVyIGZyb20gcmVhY2hpbmcgYSBEQidzIG1heCBzaXplLgorCisgICAgICAgICogc3Rv
cmFnZS9xdW90YS10cmFja2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9xdW90
YS10cmFja2luZy5odG1sOgorCiAyMDEwLTAyLTAyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4
OiBMYXlvdXRUZXN0cy9zdG9yYWdlL3F1b3RhLXRyYWNraW5nLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL3F1b3RhLXRyYWNraW5nLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gNTQyNjApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL3F1b3RhLXRyYWNraW5nLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw2ICs2LDYgQEAgSW5zZXJ0aW5nIHNvbWUg
ZGF0YQogRG9uZSBhZGRpbmcgZGF0YQogQWRkaW5nIGEgdGFibGUKIEluc2VydGluZyBzb21lIGRh
dGEKLURvbmUgYWRkaW5nIGRhdGEKK1Rlc3QgZmFpbGVkIC0gdGhlcmUgd2FzIG5vdCBlbm91Z2gg
cmVtYWluaW5nIHN0b3JhZ2Ugc3BhY2UsIG9yIHRoZSBzdG9yYWdlIHF1b3RhIHdhcyByZWFjaGVk
IGFuZCB0aGUgdXNlciBkZWNsaW5lZCB0byBhbGxvdyBtb3JlIHNwYWNlCiBUZXN0IENvbXBsZXRl
CiAKSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvcXVvdGEtdHJhY2tpbmcuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL3F1b3RhLXRyYWNraW5nLmh0bWwJKHJldmlzaW9u
IDU0MjYwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9xdW90YS10cmFja2luZy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCwxNyBAQCBmdW5jdGlvbiBhZGREYXRhKGRiKQogICAgICAg
ICB0eC5leGVjdXRlU3FsKCJJTlNFUlQgSU5UTyBEYXRhVGVzdCAocmFuZG9tRGF0YSkgVkFMVUVT
IChaRVJPQkxPQigxNzQwOCkpIiwgW10sCiAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24o
dHgsIHJlc3VsdCkgeyB9LAogICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHR4LCBlcnJv
cikgeyBlcnJvckZ1bmN0aW9uKGVycm9yKTsgfSk7CisgICAgICAgIGlmIChkYXRhYmFzZTEuY29t
cGxldGUpIHsKKyAgICAgICAgICAgIC8vIFRyeSB0byBydW4gdGhpcyBzdGF0ZW1lbnQgb24gJ2Rh
dGFiYXNlMicgb25seS4KKyAgICAgICAgICAgIC8vIEl0IHNob3VsZCBub3QgYmUgcnVuLCBiZWNh
dXNlIHRoZSBwcmV2aW91cyBzdGF0ZW1lbnQgc2hvdWxkJ3ZlCisgICAgICAgICAgICAvLyByZXN1
bHRlZCBpbiBhIGZhaWx1cmUgdGhhdCBtYWRlIHNxbGl0ZSByb2xsIGJhY2sgdGhlIGVudGlyZSB0
cmFuc2FjdGlvbi4KKyAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIklOU0VSVCBJTlRPIERhdGFU
ZXN0IChyYW5kb21EYXRhKSBWQUxVRVMgKFpFUk9CTE9CKDEwKSkiLCBbXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24odHgsIHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nKCJUaGlzIHN0YXRlbWVudCBzaG91bGQgbm90IGhhdmUgYmVlbiBydW4u
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
KHR4LCBlcnJvcikgeyBlcnJvckZ1bmN0aW9uKGVycm9yKTsgfSk7CisgICAgICAgIH0KICAgICB9
LCBlcnJvckZ1bmN0aW9uLCBmdW5jdGlvbigpIHsKICAgICAgICAgY2hlY2tDb21wbGV0aW9uKGRi
KTsKICAgICB9KTsK
</data>
<flag name="commit-queue"
          id="30572"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47987</attachid>
            <date>2010-02-02 18:42:53 -0800</date>
            <delta_ts>2010-02-02 20:24:57 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10112</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDI2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMDItMDIgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAxLiBGaXggYSBidWcgaW4gU1FMaXRlVHJhbnNhY3Rpb246IGRvIG5vdCBhc3N1bWUgdGhhdCBD
T01NSVQgYWx3YXlzCisgICAgICAgIHN1Y2NlZWRzLgorICAgICAgICAyLiBKdW1wIHN0cmFpZ2h0
IHRvIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjayB3aGVuIGEKKyAgICAgICAgc3RhdGVt
ZW50IGZhaWxzIGluIGEgd2F5IHRoYXQgbWFrZXMgc3FsaXRlIGF1dG9tYXRpY2FsbHkgcm9sbGJh
Y2sKKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLgorICAgICAgICAzLiBGaXggdGhlIGNvZGUgdGhh
dCBoYW5kbGVzIHRoZSAicXVvdGEgcmVhY2hlZCIgZmFpbHVyZSwgYXMgaXQgaXMKKyAgICAgICAg
b25lIG9mIHRoZSBmYWlsdXJlcyB0aGF0IGxlYWQgdG8gYW4gYXV0b21hdGljIHRyYW5zYWN0aW9u
CisgICAgICAgIHJvbGxiYWNrLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDI4MAorCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppc0F1dG9Db21taXRP
bik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZVRyYW5zYWN0aW9uOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2Fj
dGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6dHJhbnNhY3Rpb25X
YXNSb2xsZWRCYWNrQnlTcWxpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5oOgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5TdGF0ZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXNlQ2FsbGJhY2spOgor
CiAyMDEwLTAyLTAyICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmNwcAkocmV2aXNpb24gNTQyNjApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MSw0ICszNjEsOSBA
QCB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1bmxvY2soKQogICAgIG1fbG9ja2luZ011dGV4LnVubG9j
aygpOwogfQogCitib29sIFNRTGl0ZURhdGFiYXNlOjppc0F1dG9Db21taXRPbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHNxbGl0ZTNfZ2V0X2F1dG9jb21taXQobV9kYik7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAko
cmV2aXNpb24gNTQyNjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgcHVibGljOgogICAgIC8vICh1bils
b2NrcyB0aGUgZGF0YWJhc2UgbGlrZSBhIG11dGV4CiAgICAgdm9pZCBsb2NrKCk7CiAgICAgdm9p
ZCB1bmxvY2soKTsKKyAgICBib29sIGlzQXV0b0NvbW1pdE9uKCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgc3RhdGljIGludCBhdXRob3JpemVyRnVuY3Rpb24odm9pZCosIGludCwgY29uc3QgY2hh
ciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gNTQyNjApCisr
KyBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDMzICs1NSwzMSBAQCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbigpCiAg
ICAgICAgIC8vIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwKICAg
ICAgICAgLy8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2xvY2tpbmd2My5odG1sI2xvY2tpbmcKICAg
ICAgICAgaWYgKG1fcmVhZE9ubHkpCi0gICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4
ZWN1dGVDb21tYW5kKCJCRUdJTjsiKTsKKyAgICAgICAgICAgIG1faW5Qcm9ncmVzcyA9IG1fZGIu
ZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1faW5Q
cm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFURTsiKTsKKyAgICAg
ICAgICAgIG1faW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFU
RSIpOwogICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gbV9pblByb2dyZXNz
OwogICAgIH0KIH0KIAogdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KCkKIHsKLSAgICAv
LyBGSVhNRTogdGhpcyBjb2RlIGlzIGJ1Z2d5OyBpdCBhc3N1bWVzIHRoYXQgQ09NTUlUIGFsd2F5
cyBzdWNjZWVkcyB3aGljaCBpcyBub3QgdGhlIGNhc2U6Ci0gICAgLy8gdGhlIHRyYW5zYWN0aW9u
IGNvdWxkJ3ZlIGJlZW4gc2lsZW50bHkgcm9sbGVkIGJhY2sgYmVmb3JlIGdldHRpbmcgdG8gdGhl
IENPTU1JVCBzdGF0ZW1lbnQKLSAgICAvLyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM0MjgwKS4gSG93ZXZlciwgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgZG9lcyBub3QK
LSAgICAvLyBrbm93IGhvdyB0byBkZWFsIHdpdGggYSBwcmVtYXR1cmUgcm9sbGJhY2sgYW5kIGEg
ZmFpbGVkIENPTU1JVCBhdCB0aGlzIG1vbWVudCwgc28gdW50aWwKLSAgICAvLyB3ZSBmaWd1cmUg
b3V0IHdoYXQgdG8gZG8gd2l0aCBidWcgMzQyODAsIGl0J3MgYmV0dGVyIHRvIGxlYXZlIHRoaXMg
Y29kZSBhcyBpdCBpcy4KICAgICBpZiAobV9pblByb2dyZXNzKSB7CiAgICAgICAgIEFTU0VSVCht
X2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzKTsKLSAgICAgICAgbV9kYi5leGVjdXRlQ29tbWFu
ZCgiQ09NTUlUOyIpOwotICAgICAgICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsKLSAgICAgICAgbV9k
Yi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgICAgICBtX2luUHJvZ3Jlc3Mg
PSAhbV9kYi5leGVjdXRlQ29tbWFuZCgiQ09NTUlUIik7CisgICAgICAgIG1fZGIubV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3MgPSBtX2luUHJvZ3Jlc3M7CiAgICAgfQogfQogCiB2b2lkIFNRTGl0ZVRy
YW5zYWN0aW9uOjpyb2xsYmFjaygpCiB7CisgICAgLy8gV2UgZG8gbm90IHVzZSB0aGUgJ21faW5Q
cm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIlJPTExCQUNLIiknIGNvbnN0cnVjdCBoZXJl
LAorICAgIC8vIGJlY2F1c2UgbV9pblByb2dyZXNzIHNob3VsZCBhbHdheXMgYmUgc2V0IHRvIGZh
bHNlIGFmdGVyIGEgUk9MTEJBQ0ssIGFuZAorICAgIC8vIG1fZGIuZXhlY3V0ZUNvbW1hbmQoIlJP
TExCQUNLIikgY2FuIHNvbWV0aW1lcyBoYXJtbGVzc2x5IGZhaWwsIHRodXMgcmV0dXJuaW5nCisg
ICAgLy8gYSBub24temVyby90cnVlIHJlc3VsdCAoaHR0cDovL3d3dy5zcWxpdGUub3JnL2xhbmdf
dHJhbnNhY3Rpb24uaHRtbCkuCiAgICAgaWYgKG1faW5Qcm9ncmVzcykgewogICAgICAgICBBU1NF
UlQobV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7Ci0gICAgICAgIG1fZGIuZXhlY3V0ZUNv
bW1hbmQoIlJPTExCQUNLOyIpOworICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFD
SyIpOwogICAgICAgICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICAgICAgbV9kYi5tX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgIH0KQEAgLTk1LDQgKzkzLDkgQEAgdm9pZCBT
UUxpdGVUcmFuc2FjdGlvbjo6c3RvcCgpCiAgICAgfQogfQogCitib29sIFNRTGl0ZVRyYW5zYWN0
aW9uOjp0cmFuc2FjdGlvbldhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW5Qcm9ncmVzcyAmJiBtX2RiLmlzQXV0b0NvbW1pdE9uKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rp
b24uaAkocmV2aXNpb24gNTQyNjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN0b3AoKTsKICAgICAKICAgICBib29sIGluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBt
X2luUHJvZ3Jlc3M7IH0KKyAgICBib29sIHRyYW5zYWN0aW9uV2FzUm9sbGVkQmFja0J5U3FsaXRl
KCkgY29uc3Q7CiBwcml2YXRlOgogICAgIFNRTGl0ZURhdGFiYXNlJiBtX2RiOwogICAgIGJvb2wg
bV9pblByb2dyZXNzOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lv
biA1NDI2MCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpydW5TdGF0ZW1l
bnRzKCkKICAgICAvLyBJZiB0aGVyZSBpcyBhIHNlcmllcyBvZiBzdGF0ZW1lbnRzIHF1ZXVlZCB1
cCB0aGF0IGFyZSBhbGwgc3VjY2Vzc2Z1bCBhbmQgaGF2ZSBubyBhc3NvY2lhdGVkCiAgICAgLy8g
U1FMU3RhdGVtZW50Q2FsbGJhY2sgb2JqZWN0cywgdGhlbiB3ZSBjYW4gYnVybiB0aHJvdWdoIHRo
ZSBxdWV1ZQogICAgIGRvIHsKLSAgICAgICAgaWYgKG1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVt
ZW50KSB7CisgICAgICAgIGlmIChtX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudCAmJiAhbV9z
cWxpdGVUcmFuc2FjdGlvbi0+dHJhbnNhY3Rpb25XYXNSb2xsZWRCYWNrQnlTcWxpdGUoKSkgewog
ICAgICAgICAgICAgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgPSBmYWxzZTsKICAgICAg
ICAgICAgIC8vIEZJWE1FIC0gQW5vdGhlciBwbGFjZSB0aGF0IG5lZWRzIGZpeGluZyB1cCBhZnRl
ciA8cmRhcjovL3Byb2JsZW0vNTYyODQ2OD4gaXMgYWRkcmVzc2VkLgogICAgICAgICAgICAgLy8g
U2VlIDo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KCkgZm9yIGRpc2N1c3Npb24KQEAgLTM5
MywxMiArMzkzLDE3IEBAIGJvb2wgU1FMVHJhbnNhY3Rpb246OnJ1bkN1cnJlbnRTdGF0ZW1lbnQK
IHZvaWQgU1FMVHJhbnNhY3Rpb246OmhhbmRsZUN1cnJlbnRTdGF0ZW1lbnRFcnJvcigpCiB7CiAg
ICAgLy8gVHJhbnNhY3Rpb24gU3RlcHMgNi5lcnJvciAtIENhbGwgdGhlIHN0YXRlbWVudCdzIGVy
cm9yIGNhbGxiYWNrLCBidXQgaWYgdGhlcmUgd2FzIG5vIGVycm9yIGNhbGxiYWNrLAotICAgIC8v
IGp1bXAgdG8gdGhlIHRyYW5zYWN0aW9uIGVycm9yIGNhbGxiYWNrCi0gICAgaWYgKG1fY3VycmVu
dFN0YXRlbWVudC0+aGFzU3RhdGVtZW50RXJyb3JDYWxsYmFjaygpKSB7CisgICAgLy8gb3IgdGhl
IHRyYW5zYWN0aW9uIHdhcyByb2xsZWQgYmFjaywganVtcCB0byB0aGUgdHJhbnNhY3Rpb24gZXJy
b3IgY2FsbGJhY2sKKyAgICBpZiAobV9jdXJyZW50U3RhdGVtZW50LT5oYXNTdGF0ZW1lbnRFcnJv
ckNhbGxiYWNrKCkgJiYKKyAgICAgICAgIW1fc3FsaXRlVHJhbnNhY3Rpb24tPnRyYW5zYWN0aW9u
V2FzUm9sbGVkQmFja0J5U3FsaXRlKCkpIHsKICAgICAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFu
c2FjdGlvbjo6ZGVsaXZlclN0YXRlbWVudENhbGxiYWNrOwogICAgICAgICBMT0coU3RvcmFnZUFQ
SSwgIlNjaGVkdWxpbmcgZGVsaXZlclN0YXRlbWVudENhbGxiYWNrIGZvciB0cmFuc2FjdGlvbiAl
cFxuIiwgdGhpcyk7CiAgICAgICAgIG1fZGF0YWJhc2UtPnNjaGVkdWxlVHJhbnNhY3Rpb25DYWxs
YmFjayh0aGlzKTsKICAgICB9IGVsc2UgeworICAgICAgICAvLyBodHRwOi8vd3d3LnNxbGl0ZS5v
cmcvbGFuZ190cmFuc2FjdGlvbi5odG1sIHJlY29tbWVuZHMgaXNzdWluZyBhIG1hbnVhbCBST0xM
QkFDSyBjb21tYW5kLAorICAgICAgICAvLyBldmVuIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgYWxy
ZWFkeSByb2xsZWQgYmFjayBieSBzcWxpdGUuIFRoYXQncyB3aHkgd2UgZG9uJ3QgY2FsbAorICAg
ICAgICAvLyBtX3NxbGl0ZVRyYW5zYWN0aW9uLT5zdG9wKCkgaGVyZSBhbmQgYWxsb3cgY2xlYW51
cEFmdGVyVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKCkKKyAgICAgICAgLy8gdG8gZXZlbnR1YWxs
eSBjYWxsIG1fc3FsaXRlVHJhbnNhY3Rpb24tPnJvbGxiYWNrKCkuCiAgICAgICAgIG1fdHJhbnNh
Y3Rpb25FcnJvciA9IG1fY3VycmVudFN0YXRlbWVudC0+c3FsRXJyb3IoKTsKICAgICAgICAgaWYg
KCFtX3RyYW5zYWN0aW9uRXJyb3IpCiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBT
UUxFcnJvcjo6Y3JlYXRlKDEsICJ0aGUgc3RhdGVtZW50IGZhaWxlZCB0byBleGVjdXRlIik7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA1NDI2MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTAyLTAyICBEdW1pdHJ1IERhbmlsaXVjICA8
ZHVtaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgMS4gRW5oYW5jZSBxdW90YS10cmFja2luZy5odG1sOiBpZiBzcWxpdGUgYXV0
b21hdGljYWxseSByb2xscyBiYWNrCisgICAgICAgIGEgdHJhbnNhY3Rpb24gYmVjYXVzZSBvZiBh
IHN0YXRlbWVudCBmYWlsdXJlLCBtYWtlIHN1cmUgdGhlIHJlc3QKKyAgICAgICAgb2YgdGhlIHN0
YXRlbWVudHMgaW4gdGhlIHRyYW5zYWN0aW9uIGFyZSBub3QgZXhlY3V0ZWQuCisgICAgICAgIDIu
IEZpeCB0aGUgZXhwZWN0YXRpb25zIGZvciBxdW90YS10cmFja2luZy5odG1sLiBTcWxpdGUgY2Fu
bm90CisgICAgICAgIHJlY292ZXIgZnJvbSByZWFjaGluZyBhIERCJ3MgbWF4IHNpemUuCisKKyAg
ICAgICAgKiBzdG9yYWdlL3F1b3RhLXRyYWNraW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBz
dG9yYWdlL3F1b3RhLXRyYWNraW5nLmh0bWw6CisKIDIwMTAtMDItMDIgIEVyaWMgU2VpZGVsICA8
ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBT
aWx2YS4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvcXVvdGEtdHJhY2tpbmctZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvcXVvdGEtdHJhY2tpbmctZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA1NDI2MCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvcXVvdGEt
dHJhY2tpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsNiBAQCBJbnNl
cnRpbmcgc29tZSBkYXRhCiBEb25lIGFkZGluZyBkYXRhCiBBZGRpbmcgYSB0YWJsZQogSW5zZXJ0
aW5nIHNvbWUgZGF0YQotRG9uZSBhZGRpbmcgZGF0YQorVGVzdCBmYWlsZWQgLSB0aGVyZSB3YXMg
bm90IGVub3VnaCByZW1haW5pbmcgc3RvcmFnZSBzcGFjZSwgb3IgdGhlIHN0b3JhZ2UgcXVvdGEg
d2FzIHJlYWNoZWQgYW5kIHRoZSB1c2VyIGRlY2xpbmVkIHRvIGFsbG93IG1vcmUgc3BhY2UKIFRl
c3QgQ29tcGxldGUKIApJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9xdW90YS10cmFja2luZy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvcXVvdGEtdHJhY2tpbmcuaHRt
bAkocmV2aXNpb24gNTQyNjApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL3F1b3RhLXRyYWNraW5n
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDE3IEBAIGZ1bmN0aW9uIGFkZERhdGEo
ZGIpCiAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIklOU0VSVCBJTlRPIERhdGFUZXN0IChyYW5kb21E
YXRhKSBWQUxVRVMgKFpFUk9CTE9CKDE3NDA4KSkiLCBbXSwKICAgICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbih0eCwgcmVzdWx0KSB7IH0sCiAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24odHgsIGVycm9yKSB7IGVycm9yRnVuY3Rpb24oZXJyb3IpOyB9KTsKKyAgICAgICAgaWYgKGRh
dGFiYXNlMS5jb21wbGV0ZSkgeworICAgICAgICAgICAgLy8gVHJ5IHRvIHJ1biB0aGlzIHN0YXRl
bWVudCBvbiAnZGF0YWJhc2UyJyBvbmx5LgorICAgICAgICAgICAgLy8gSXQgc2hvdWxkIG5vdCBi
ZSBydW4sIGJlY2F1c2UgdGhlIHByZXZpb3VzIHN0YXRlbWVudCBzaG91bGQndmUKKyAgICAgICAg
ICAgIC8vIHJlc3VsdGVkIGluIGEgZmFpbHVyZSB0aGF0IG1hZGUgc3FsaXRlIHJvbGwgYmFjayB0
aGUgZW50aXJlIHRyYW5zYWN0aW9uLgorICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiSU5TRVJU
IElOVE8gRGF0YVRlc3QgKHJhbmRvbURhdGEpIFZBTFVFUyAoWkVST0JMT0IoMTApKSIsIFtdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0eCwgcmVzdWx0KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2coIlRoaXMgc3RhdGVtZW50IHNob3VsZCBub3QgaGF2
ZSBiZWVuIHJ1bi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24odHgsIGVycm9yKSB7IGVycm9yRnVuY3Rpb24oZXJyb3IpOyB9KTsKKyAgICAg
ICAgfQogICAgIH0sIGVycm9yRnVuY3Rpb24sIGZ1bmN0aW9uKCkgewogICAgICAgICBjaGVja0Nv
bXBsZXRpb24oZGIpOwogICAgIH0pOwo=
</data>
<flag name="commit-queue"
          id="30583"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47990</attachid>
            <date>2010-02-02 20:24:57 -0800</date>
            <delta_ts>2010-02-04 15:22:44 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13639</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDI2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMDItMDIgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAxLiBGaXggYSBidWcgaW4gU1FMaXRlVHJhbnNhY3Rpb246IGRvIG5vdCBhc3N1bWUgdGhhdCBD
T01NSVQgYWx3YXlzCisgICAgICAgIHN1Y2NlZWRzLgorICAgICAgICAyLiBKdW1wIHN0cmFpZ2h0
IHRvIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjayB3aGVuIGEKKyAgICAgICAgc3RhdGVt
ZW50IGZhaWxzIGluIGEgd2F5IHRoYXQgbWFrZXMgc3FsaXRlIGF1dG9tYXRpY2FsbHkgcm9sbGJh
Y2sKKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLgorICAgICAgICAzLiBGaXggdGhlIGNvZGUgdGhh
dCBoYW5kbGVzIHRoZSAicXVvdGEgcmVhY2hlZCIgZmFpbHVyZSwgYXMgaXQgaXMKKyAgICAgICAg
b25lIG9mIHRoZSBmYWlsdXJlcyB0aGF0IGxlYWQgdG8gYW4gYXV0b21hdGljIHRyYW5zYWN0aW9u
CisgICAgICAgIHJvbGxiYWNrLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDI4MAorCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjppc0F1dG9Db21taXRP
bik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZVRyYW5zYWN0aW9uOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2Fj
dGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6dHJhbnNhY3Rpb25X
YXNSb2xsZWRCYWNrQnlTcWxpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5oOgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5TdGF0ZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50RXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXNlQ2FsbGJhY2spOgor
CiAyMDEwLTAyLTAyICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmNwcAkocmV2aXNpb24gNTQyNjApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MSw0ICszNjEsOSBA
QCB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1bmxvY2soKQogICAgIG1fbG9ja2luZ011dGV4LnVubG9j
aygpOwogfQogCitib29sIFNRTGl0ZURhdGFiYXNlOjppc0F1dG9Db21taXRPbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHNxbGl0ZTNfZ2V0X2F1dG9jb21taXQobV9kYik7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAko
cmV2aXNpb24gNTQyNjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgcHVibGljOgogICAgIC8vICh1bils
b2NrcyB0aGUgZGF0YWJhc2UgbGlrZSBhIG11dGV4CiAgICAgdm9pZCBsb2NrKCk7CiAgICAgdm9p
ZCB1bmxvY2soKTsKKyAgICBib29sIGlzQXV0b0NvbW1pdE9uKCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgc3RhdGljIGludCBhdXRob3JpemVyRnVuY3Rpb24odm9pZCosIGludCwgY29uc3QgY2hh
ciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gNTQyNjApCisr
KyBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDMzICs1NSwzMSBAQCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbigpCiAg
ICAgICAgIC8vIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwKICAg
ICAgICAgLy8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2xvY2tpbmd2My5odG1sI2xvY2tpbmcKICAg
ICAgICAgaWYgKG1fcmVhZE9ubHkpCi0gICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4
ZWN1dGVDb21tYW5kKCJCRUdJTjsiKTsKKyAgICAgICAgICAgIG1faW5Qcm9ncmVzcyA9IG1fZGIu
ZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1faW5Q
cm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFURTsiKTsKKyAgICAg
ICAgICAgIG1faW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFU
RSIpOwogICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gbV9pblByb2dyZXNz
OwogICAgIH0KIH0KIAogdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KCkKIHsKLSAgICAv
LyBGSVhNRTogdGhpcyBjb2RlIGlzIGJ1Z2d5OyBpdCBhc3N1bWVzIHRoYXQgQ09NTUlUIGFsd2F5
cyBzdWNjZWVkcyB3aGljaCBpcyBub3QgdGhlIGNhc2U6Ci0gICAgLy8gdGhlIHRyYW5zYWN0aW9u
IGNvdWxkJ3ZlIGJlZW4gc2lsZW50bHkgcm9sbGVkIGJhY2sgYmVmb3JlIGdldHRpbmcgdG8gdGhl
IENPTU1JVCBzdGF0ZW1lbnQKLSAgICAvLyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM0MjgwKS4gSG93ZXZlciwgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgZG9lcyBub3QK
LSAgICAvLyBrbm93IGhvdyB0byBkZWFsIHdpdGggYSBwcmVtYXR1cmUgcm9sbGJhY2sgYW5kIGEg
ZmFpbGVkIENPTU1JVCBhdCB0aGlzIG1vbWVudCwgc28gdW50aWwKLSAgICAvLyB3ZSBmaWd1cmUg
b3V0IHdoYXQgdG8gZG8gd2l0aCBidWcgMzQyODAsIGl0J3MgYmV0dGVyIHRvIGxlYXZlIHRoaXMg
Y29kZSBhcyBpdCBpcy4KICAgICBpZiAobV9pblByb2dyZXNzKSB7CiAgICAgICAgIEFTU0VSVCht
X2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzKTsKLSAgICAgICAgbV9kYi5leGVjdXRlQ29tbWFu
ZCgiQ09NTUlUOyIpOwotICAgICAgICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsKLSAgICAgICAgbV9k
Yi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgICAgICBtX2luUHJvZ3Jlc3Mg
PSAhbV9kYi5leGVjdXRlQ29tbWFuZCgiQ09NTUlUIik7CisgICAgICAgIG1fZGIubV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3MgPSBtX2luUHJvZ3Jlc3M7CiAgICAgfQogfQogCiB2b2lkIFNRTGl0ZVRy
YW5zYWN0aW9uOjpyb2xsYmFjaygpCiB7CisgICAgLy8gV2UgZG8gbm90IHVzZSB0aGUgJ21faW5Q
cm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIlJPTExCQUNLIiknIGNvbnN0cnVjdCBoZXJl
LAorICAgIC8vIGJlY2F1c2UgbV9pblByb2dyZXNzIHNob3VsZCBhbHdheXMgYmUgc2V0IHRvIGZh
bHNlIGFmdGVyIGEgUk9MTEJBQ0ssIGFuZAorICAgIC8vIG1fZGIuZXhlY3V0ZUNvbW1hbmQoIlJP
TExCQUNLIikgY2FuIHNvbWV0aW1lcyBoYXJtbGVzc2x5IGZhaWwsIHRodXMgcmV0dXJuaW5nCisg
ICAgLy8gYSBub24temVyby90cnVlIHJlc3VsdCAoaHR0cDovL3d3dy5zcWxpdGUub3JnL2xhbmdf
dHJhbnNhY3Rpb24uaHRtbCkuCiAgICAgaWYgKG1faW5Qcm9ncmVzcykgewogICAgICAgICBBU1NF
UlQobV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7Ci0gICAgICAgIG1fZGIuZXhlY3V0ZUNv
bW1hbmQoIlJPTExCQUNLOyIpOworICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFD
SyIpOwogICAgICAgICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICAgICAgbV9kYi5tX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgIH0KQEAgLTk1LDQgKzkzLDExIEBAIHZvaWQg
U1FMaXRlVHJhbnNhY3Rpb246OnN0b3AoKQogICAgIH0KIH0KIAorYm9vbCBTUUxpdGVUcmFuc2Fj
dGlvbjo6d2FzUm9sbGVkQmFja0J5U3FsaXRlKCkgY29uc3QKK3sKKyAgICAvLyBBY2NvcmRpbmcg
dG8gaHR0cDovL3d3dy5zcWxpdGUub3JnL2MzcmVmL2dldF9hdXRvY29tbWl0Lmh0bWwsCisgICAg
Ly8gdGhlIGF1dG8tY29tbWl0IGZsYWcgc2hvdWxkIGJlIG9mZiBpbiB0aGUgbWlkZGxlIG9mIGEg
dHJhbnNhY3Rpb24KKyAgICByZXR1cm4gbV9pblByb2dyZXNzICYmIG1fZGIuaXNBdXRvQ29tbWl0
T24oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5oCShyZXZpc2lvbiA1NDI2MCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcCgpOwogICAgIAogICAgIGJvb2wgaW5Qcm9ncmVz
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5Qcm9ncmVzczsgfQorICAgIGJvb2wgd2FzUm9sbGVkQmFj
a0J5U3FsaXRlKCkgY29uc3Q7CiBwcml2YXRlOgogICAgIFNRTGl0ZURhdGFiYXNlJiBtX2RiOwog
ICAgIGJvb2wgbV9pblByb2dyZXNzOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3Bw
CShyZXZpc2lvbiA1NDI2MCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpy
dW5TdGF0ZW1lbnRzKCkKICAgICAvLyBJZiB0aGVyZSBpcyBhIHNlcmllcyBvZiBzdGF0ZW1lbnRz
IHF1ZXVlZCB1cCB0aGF0IGFyZSBhbGwgc3VjY2Vzc2Z1bCBhbmQgaGF2ZSBubyBhc3NvY2lhdGVk
CiAgICAgLy8gU1FMU3RhdGVtZW50Q2FsbGJhY2sgb2JqZWN0cywgdGhlbiB3ZSBjYW4gYnVybiB0
aHJvdWdoIHRoZSBxdWV1ZQogICAgIGRvIHsKLSAgICAgICAgaWYgKG1fc2hvdWxkUmV0cnlDdXJy
ZW50U3RhdGVtZW50KSB7CisgICAgICAgIGlmIChtX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVu
dCAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+d2FzUm9sbGVkQmFja0J5U3FsaXRlKCkpIHsKICAg
ICAgICAgICAgIG1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50ID0gZmFsc2U7CiAgICAgICAg
ICAgICAvLyBGSVhNRSAtIEFub3RoZXIgcGxhY2UgdGhhdCBuZWVkcyBmaXhpbmcgdXAgYWZ0ZXIg
PHJkYXI6Ly9wcm9ibGVtLzU2Mjg0Njg+IGlzIGFkZHJlc3NlZC4KICAgICAgICAgICAgIC8vIFNl
ZSA6Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpIGZvciBkaXNjdXNzaW9uCkBAIC0zOTMs
OCArMzkzLDggQEAgYm9vbCBTUUxUcmFuc2FjdGlvbjo6cnVuQ3VycmVudFN0YXRlbWVudAogdm9p
ZCBTUUxUcmFuc2FjdGlvbjo6aGFuZGxlQ3VycmVudFN0YXRlbWVudEVycm9yKCkKIHsKICAgICAv
LyBUcmFuc2FjdGlvbiBTdGVwcyA2LmVycm9yIC0gQ2FsbCB0aGUgc3RhdGVtZW50J3MgZXJyb3Ig
Y2FsbGJhY2ssIGJ1dCBpZiB0aGVyZSB3YXMgbm8gZXJyb3IgY2FsbGJhY2ssCi0gICAgLy8ganVt
cCB0byB0aGUgdHJhbnNhY3Rpb24gZXJyb3IgY2FsbGJhY2sKLSAgICBpZiAobV9jdXJyZW50U3Rh
dGVtZW50LT5oYXNTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKCkpIHsKKyAgICAvLyBvciB0aGUgdHJh
bnNhY3Rpb24gd2FzIHJvbGxlZCBiYWNrLCBqdW1wIHRvIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBj
YWxsYmFjaworICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQtPmhhc1N0YXRlbWVudEVycm9yQ2Fs
bGJhY2soKSAmJiAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+d2FzUm9sbGVkQmFja0J5U3FsaXRlKCkp
IHsKICAgICAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclN0YXRlbWVu
dENhbGxiYWNrOwogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgZGVsaXZlclN0
YXRlbWVudENhbGxiYWNrIGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGhpcyk7CiAgICAgICAgIG1f
ZGF0YWJhc2UtPnNjaGVkdWxlVHJhbnNhY3Rpb25DYWxsYmFjayh0aGlzKTsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDU0MjYwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDItMDIgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAxLiBFbmhhbmNlIHF1b3RhLXRyYWNraW5nLmh0bWw6IGlmIHNxbGl0ZSBhdXRvbWF0aWNhbGx5
IHJvbGxzIGJhY2sKKyAgICAgICAgYSB0cmFuc2FjdGlvbiBiZWNhdXNlIG9mIGEgc3RhdGVtZW50
IGZhaWx1cmUsIG1ha2Ugc3VyZSB0aGUgcmVzdAorICAgICAgICBvZiB0aGUgc3RhdGVtZW50cyBp
biB0aGUgdHJhbnNhY3Rpb24gYXJlIG5vdCBleGVjdXRlZC4KKyAgICAgICAgMi4gRml4IHRoZSBl
eHBlY3RhdGlvbnMgZm9yIHF1b3RhLXRyYWNraW5nLmh0bWwuIFNxbGl0ZSBjYW5ub3QKKyAgICAg
ICAgcmVjb3ZlciBmcm9tIHJlYWNoaW5nIGEgREIncyBtYXggc2l6ZS4KKworICAgICAgICAqIHN0
b3JhZ2UvcXVvdGEtdHJhY2tpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvcXVv
dGEtdHJhY2tpbmcuaHRtbDoKKwogMjAxMC0wMi0wMiAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgpJbmRl
eDogTGF5b3V0VGVzdHMvc3RvcmFnZS9xdW90YS10cmFja2luZy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9xdW90YS10cmFja2luZy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDU0MjYwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9xdW90YS10cmFja2luZy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTUgQEAKIFVJIERFTEVHQVRF
IERBVEFCQVNFIENBTExCQUNLOiBleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdp
bjp7ZmlsZSwgLCAwfSBkYXRhYmFzZTpRdW90YU1hbmFnZW1lbnREYXRhYmFzZTIKIFRoaXMgdGVz
dCBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgcXVvdGFzIGFyZSBlbmZvcmNlZCBwZXItb3JpZ2lu
IGluc3RlYWQgb2YgcGVyLWRhdGFiYXNlLCBhcyB0aGV5IHdlcmUgcHJpb3IgdG8gaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9wcm9qZWN0cy93ZWJraXQvY2hhbmdlc2V0LzI5OTgzLgotVGhlIHRlc3Qg
Y2xlYXJzIGFsbCBkYXRhYmFzZXMsIHNldHMgdGhlIHF1b3RhIGZvciB0aGUgb3JpZ2luIHRvIDMy
aywgdGhlbiB0cmllcyB0byBpbnNlcnQgMTdrIG9mIGRhdGEgaW50byB0d28gZGF0YWJhc2VzLiBJ
ZiB0aGluZ3MgZ28gYXMgcGxhbm5lZCwgdGhlIFVJIERlbGVnYXRlIHdpbGwgYmUgaW5mb3JtZWQg
b2YgdGhlIGV4Y2VlZGVkIHF1b3RhLgorVGhlIHRlc3QgY2xlYXJzIGFsbCBkYXRhYmFzZXMsIHNl
dHMgdGhlIHF1b3RhIGZvciB0aGUgb3JpZ2luIHRvIDMyaywgdGhlbiB0cmllcyB0byBpbnNlcnQg
MTdrIG9mIGRhdGEgaW50byB0d28gZGF0YWJhc2VzLiBJZiB0aGluZ3MgZ28gYXMgcGxhbm5lZCwg
dGhlIFVJIERlbGVnYXRlIHdpbGwgYmUgaW5mb3JtZWQgb2YgdGhlIGV4Y2VlZGVkIHF1b3RhIGFu
ZCBzaG91bGQgaW5jcmVhc2UgdGhlIHF1b3RhIGZvciB0aGlzIG9yaWdpbi4gSW5zZXJ0aW5nIDE3
ayBvZiBkYXRhIHRoZSB0aGlyZCB0aW1lIHNob3VsZCBzdWNjZWVkIGFnYWluLgogQWRkaW5nIGEg
dGFibGUKIEluc2VydGluZyBzb21lIGRhdGEKIERvbmUgYWRkaW5nIGRhdGEKIEFkZGluZyBhIHRh
YmxlCiBJbnNlcnRpbmcgc29tZSBkYXRhCitFeHBlY3RlZCBxdW90YSBleGNlcHRpb24gLSB0aGVy
ZSB3YXMgbm90IGVub3VnaCByZW1haW5pbmcgc3RvcmFnZSBzcGFjZSwgb3IgdGhlIHN0b3JhZ2Ug
cXVvdGEgd2FzIHJlYWNoZWQgYW5kIHRoZSB1c2VyIGRlY2xpbmVkIHRvIGFsbG93IG1vcmUgc3Bh
Y2UKK0RvbmUgYWRkaW5nIGRhdGEKK0FkZGluZyBhIHRhYmxlCitJbnNlcnRpbmcgc29tZSBkYXRh
CiBEb25lIGFkZGluZyBkYXRhCiBUZXN0IENvbXBsZXRlCiAKSW5kZXg6IExheW91dFRlc3RzL3N0
b3JhZ2UvcXVvdGEtdHJhY2tpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9y
YWdlL3F1b3RhLXRyYWNraW5nLmh0bWwJKHJldmlzaW9uIDU0MjYwKQorKysgTGF5b3V0VGVzdHMv
c3RvcmFnZS9xdW90YS10cmFja2luZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBA
QAogPHNjcmlwdD4KIHZhciBkYXRhYmFzZTE7CiB2YXIgZGF0YWJhc2UyOwordmFyIGRhdGFiYXNl
MzsKIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiB7CkBAIC0xNiwxOSArMTcsMzMgQEAgZnVuY3Rp
b24gZmluaXNoVGVzdCgpCiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKIH0KIAotZnVuY3Rpb24gZXJyb3JGdW5jdGlvbihlcnJvcikKK2Z1bmN0aW9uIHN0YXRlbWVu
dEVycm9yRnVuY3Rpb24odHgsIGVycm9yKQogewotICAgIGxvZygiVGVzdCBmYWlsZWQgLSAiICsg
ZXJyb3IubWVzc2FnZSk7CisgICAgbG9nKCJVbmV4cGVjdGVkIGV4Y2VwdGlvbiAtICIgKyBlcnJv
ci5tZXNzYWdlKTsKICAgICBmaW5pc2hUZXN0KCk7CiB9CiAKK2Z1bmN0aW9uIHRyYW5zYWN0aW9u
RXJyb3JGdW5jdGlvbihkYiwgZXJyb3IpCit7CisgICAgLy8gV2Ugb25seSBleHBlY3QgYW4gZXJy
b3IgbWVzc2FnZSBmb3IgZGF0YWJhc2UyCisgICAgaWYgKGRiID09IGRhdGFiYXNlMikgeworICAg
ICAgICBsb2coIkV4cGVjdGVkIHF1b3RhIGV4Y2VwdGlvbiAtICIgKyBlcnJvci5tZXNzYWdlKTsK
KyAgICAgICAgY2hlY2tDb21wbGV0aW9uKGRiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsb2co
IlVuZXhwZWN0ZWQgZXhjZXB0aW9uIC0gIiArIGVycm9yLm1lc3NhZ2UpOworICAgICAgICBmaW5p
c2hUZXN0KCk7CisgICAgfQorfQorCiBmdW5jdGlvbiBjaGVja0NvbXBsZXRpb24oZGIpCiB7CiAg
ICAgbG9nKCJEb25lIGFkZGluZyBkYXRhIik7CiAKICAgICBkYi5jb21wbGV0ZSA9IHRydWU7Ci0g
ICAgaWYgKGRhdGFiYXNlMS5jb21wbGV0ZSAmJiBkYXRhYmFzZTIuY29tcGxldGUpCisgICAgaWYg
KGRhdGFiYXNlMS5jb21wbGV0ZSAmJiBkYXRhYmFzZTIuY29tcGxldGUgJiYgZGF0YWJhc2UzLmNv
bXBsZXRlKQogICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgZWxzZSBpZiAoZGF0YWJhc2UyLmNv
bXBsZXRlKQorICAgICAgICB0ZXN0RGF0YWJhc2UoZGF0YWJhc2UzKTsKICAgICBlbHNlCiAgICAg
ICAgIHRlc3REYXRhYmFzZShkYXRhYmFzZTIpOwogfQpAQCAtMzgsOSArNTMsMjAgQEAgZnVuY3Rp
b24gYWRkRGF0YShkYikKICAgICBkYi50cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgewogICAgICAg
ICBsb2coIkluc2VydGluZyBzb21lIGRhdGEiKTsKICAgICAgICAgdHguZXhlY3V0ZVNxbCgiSU5T
RVJUIElOVE8gRGF0YVRlc3QgKHJhbmRvbURhdGEpIFZBTFVFUyAoWkVST0JMT0IoMTc0MDgpKSIs
IFtdLAotICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHR4LCByZXN1bHQpIHsgfSwKLSAg
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0eCwgZXJyb3IpIHsgZXJyb3JGdW5jdGlvbihl
cnJvcik7IH0pOwotICAgIH0sIGVycm9yRnVuY3Rpb24sIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKHR4LCByZXN1bHQpIHsgfSwgc3RhdGVtZW50RXJyb3JGdW5j
dGlvbik7CisgICAgICAgIGlmIChkYiA9PSBkYXRhYmFzZTIpIHsKKyAgICAgICAgICAgIC8vIFRy
eSB0byBydW4gdGhpcyBzdGF0ZW1lbnQgb24gJ2RhdGFiYXNlMicgb25seS4KKyAgICAgICAgICAg
IC8vIEl0IHNob3VsZCBub3QgYmUgcnVuLCBiZWNhdXNlIHRoZSBwcmV2aW91cyBzdGF0ZW1lbnQg
c2hvdWxkJ3ZlCisgICAgICAgICAgICAvLyByZXN1bHRlZCBpbiBhIGZhaWx1cmUgdGhhdCBtYWRl
IHNxbGl0ZSByb2xsIGJhY2sgdGhlIGVudGlyZSB0cmFuc2FjdGlvbi4KKyAgICAgICAgICAgIHR4
LmV4ZWN1dGVTcWwoIklOU0VSVCBJTlRPIERhdGFUZXN0IChyYW5kb21EYXRhKSBWQUxVRVMgKFpF
Uk9CTE9CKDEwKSkiLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odHgs
IHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCJUaGlzIHN0YXRl
bWVudCBzaG91bGQgbm90IGhhdmUgYmVlbiBydW4uIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHN0YXRl
bWVudEVycm9yRnVuY3Rpb24pOworICAgICAgICB9CisgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsK
KyAgICAgICAgdHJhbnNhY3Rpb25FcnJvckZ1bmN0aW9uKGRiLCBlcnJvcik7CisgICAgfSwgZnVu
Y3Rpb24oKSB7CiAgICAgICAgIGNoZWNrQ29tcGxldGlvbihkYik7CiAgICAgfSk7CiB9CkBAIC01
MCw5ICs3NiwxMCBAQCBmdW5jdGlvbiB0ZXN0RGF0YWJhc2UoZGIpCiAgICAgZGIudHJhbnNhY3Rp
b24oZnVuY3Rpb24odHgpIHsKICAgICAgICAgbG9nKCJBZGRpbmcgYSB0YWJsZSIpOwogICAgICAg
ICB0eC5leGVjdXRlU3FsKCJDUkVBVEUgVEFCTEUgRGF0YVRlc3QgKHJhbmRvbURhdGEpIiwgW10s
Ci0gICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odHgsIHJlc3VsdCkgeyB9LAotICAgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHR4LCBlcnJvcikgeyBlcnJvckZ1bmN0aW9uKGVycm9y
KTsgfSk7Ci0gICAgfSwgZXJyb3JGdW5jdGlvbiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24odHgsIHJlc3VsdCkgeyB9LCBzdGF0ZW1lbnRFcnJvckZ1bmN0aW9u
KTsKKyAgICB9LCBmdW5jdGlvbihlcnJvcikgeworICAgICAgICB0cmFuc2FjdGlvbkVycm9yRnVu
Y3Rpb24oZGIsIGVycm9yKTsKKyAgICB9LCBmdW5jdGlvbigpIHsKICAgICAgICAgYWRkRGF0YShk
Yik7CiAgICAgfSk7CiB9CkBAIC02OSw4ICs5NiwxMCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKIAog
ICAgIGRhdGFiYXNlMSA9IG9wZW5EYXRhYmFzZSgiUXVvdGFNYW5hZ2VtZW50RGF0YWJhc2UxIiwg
IjEuMCIsICJUZXN0IGZvciBxdW90YSBtYW5hZ2VtZW50IDxyZGFyOi8vNTYyODQ2OD4iLCAxKTsK
ICAgICBkYXRhYmFzZTIgPSBvcGVuRGF0YWJhc2UoIlF1b3RhTWFuYWdlbWVudERhdGFiYXNlMiIs
ICIxLjAiLCAiVGVzdCBmb3IgcXVvdGEgbWFuYWdlbWVudCA8cmRhcjovLzU2Mjg0Njg+IiwgMSk7
CisgICAgZGF0YWJhc2UzID0gb3BlbkRhdGFiYXNlKCJRdW90YU1hbmFnZW1lbnREYXRhYmFzZTMi
LCAiMS4wIiwgIlRlc3QgZm9yIHF1b3RhIG1hbmFnZW1lbnQgPHJkYXI6Ly81NjI4NDY4PiIsIDEp
OwogICAgIGRhdGFiYXNlMS5jb21wbGV0ZSA9IGZhbHNlOwogICAgIGRhdGFiYXNlMi5jb21wbGV0
ZSA9IGZhbHNlOworICAgIGRhdGFiYXNlMy5jb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgdGVzdERh
dGFiYXNlKGRhdGFiYXNlMSk7CiB9CkBAIC04MCw3ICsxMDksNyBAQCBmdW5jdGlvbiBydW5UZXN0
KCkKIAogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogVGhpcyB0ZXN0IGNoZWNrcyB0byBtYWtl
IHN1cmUgdGhhdCBxdW90YXMgYXJlIGVuZm9yY2VkIHBlci1vcmlnaW4gaW5zdGVhZCBvZiBwZXIt
ZGF0YWJhc2UsIGFzIHRoZXkgd2VyZSBwcmlvciB0byBodHRwOi8vdHJhYy53ZWJraXQub3JnL3By
b2plY3RzL3dlYmtpdC9jaGFuZ2VzZXQvMjk5ODMuPGJyPgotVGhlIHRlc3QgY2xlYXJzIGFsbCBk
YXRhYmFzZXMsIHNldHMgdGhlIHF1b3RhIGZvciB0aGUgb3JpZ2luIHRvIDMyaywgdGhlbiB0cmll
cyB0byBpbnNlcnQgMTdrIG9mIGRhdGEgaW50byB0d28gZGF0YWJhc2VzLiAgSWYgdGhpbmdzIGdv
IGFzIHBsYW5uZWQsIHRoZSBVSSBEZWxlZ2F0ZSB3aWxsIGJlIGluZm9ybWVkIG9mIHRoZSBleGNl
ZWRlZCBxdW90YS4KK1RoZSB0ZXN0IGNsZWFycyBhbGwgZGF0YWJhc2VzLCBzZXRzIHRoZSBxdW90
YSBmb3IgdGhlIG9yaWdpbiB0byAzMmssIHRoZW4gdHJpZXMgdG8gaW5zZXJ0IDE3ayBvZiBkYXRh
IGludG8gdHdvIGRhdGFiYXNlcy4gSWYgdGhpbmdzIGdvIGFzIHBsYW5uZWQsIHRoZSBVSSBEZWxl
Z2F0ZSB3aWxsIGJlIGluZm9ybWVkIG9mIHRoZSBleGNlZWRlZCBxdW90YSBhbmQgc2hvdWxkIGlu
Y3JlYXNlIHRoZSBxdW90YSBmb3IgdGhpcyBvcmlnaW4uIEluc2VydGluZyAxN2sgb2YgZGF0YSB0
aGUgdGhpcmQgdGltZSBzaG91bGQgc3VjY2VlZCBhZ2Fpbi4KIDxwcmUgaWQ9ImNvbnNvbGUiPgog
PC9wcmU+CiA8L2JvZHk+Cg==
</data>
<flag name="review"
          id="30587"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="30588"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
      

    </bug>

</bugzilla>