<?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>35048</bug_id>
          
          <creation_ts>2010-02-17 12:32:12 -0800</creation_ts>
          <short_desc>an &apos;undefined&apos; return value from a statement error callback should be treated as &apos;true&apos;</short_desc>
          <delta_ts>2010-02-18 12:52:32 -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>P2</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>dglazkov</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>191153</commentid>
    <comment_count>0</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-17 12:32:12 -0800</bug_when>
    <thetext>According to the Web SQL Database spec and http://www.mail-archive.com/public-webapps@w3.org/msg06679.html, if a statement error callback returns &apos;undefined&apos; (doesn&apos;t return anything), we should treat it as &apos;not false&apos;, and roll back the transaction. Currently we treat it as &apos;false&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191279</commentid>
    <comment_count>1</comment_count>
      <attachid>48944</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-17 16:10:24 -0800</bug_when>
    <thetext>Created attachment 48944
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191280</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-17 16:13:20 -0800</bug_when>
    <thetext>Attachment 48944 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp:102:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp:103:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp:104:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp:105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp:108:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp:109:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp:110:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp:111:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp:112:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 10


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191297</commentid>
    <comment_count>3</comment_count>
      <attachid>48946</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-17 16:45:46 -0800</bug_when>
    <thetext>Created attachment 48946
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191305</commentid>
    <comment_count>4</comment_count>
      <attachid>48946</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-02-17 17:09:31 -0800</bug_when>
    <thetext>Comment on attachment 48946
patch

What about null? Should that still be false?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191329</commentid>
    <comment_count>5</comment_count>
      <attachid>48953</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-17 17:49:32 -0800</bug_when>
    <thetext>Created attachment 48953
patch

(In reply to comment #4)
&gt; (From update of attachment 48946 [details])
&gt; What about null? Should that still be false?

fixed. treating all non-boolean values as &apos;true&apos; (since the spec seems to divide all return values into &apos;false&apos; and &apos;everything else&apos;). also added more test cases to storage/statement-error-callback.html to test all kind of non-boolean return types (including &apos;null&apos;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191660</commentid>
    <comment_count>6</comment_count>
      <attachid>48953</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-02-18 10:51:44 -0800</bug_when>
    <thetext>Comment on attachment 48953
patch

&gt; -    return result.toBoolean(exec);
&gt; +    return !result.isBoolean() || result.toBoolean(exec);

While this will work, it&apos;s unnecessarily inefficient. The toBoolean function&apos;s job is to convert things from other types to boolean. The efficient way is to write:

    return result.isFalse();

The patch otherwise seems fine. r=me, but please make the fix I suggest above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191695</commentid>
    <comment_count>7</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-18 12:12:57 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 48953 [details])
&gt; &gt; -    return result.toBoolean(exec);
&gt; &gt; +    return !result.isBoolean() || result.toBoolean(exec);
&gt; 
&gt; While this will work, it&apos;s unnecessarily inefficient. The toBoolean function&apos;s
&gt; job is to convert things from other types to boolean. The efficient way is to
&gt; write:
&gt; 
&gt;     return result.isFalse();
&gt; 
&gt; The patch otherwise seems fine. r=me, but please make the fix I suggest above.

nice optimization! will change this in the JSC and V8 code before submitting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191701</commentid>
    <comment_count>8</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-02-18 12:52:32 -0800</bug_when>
    <thetext>Landed as r54981.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48944</attachid>
            <date>2010-02-17 16:10:24 -0800</date>
            <delta_ts>2010-02-17 16:45:46 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>7568</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDkxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDItMTcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDaGFuZ2UgdGhlIFY4IGFuZCBKU0MgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjayB0byBpbnRl
cnByZXQKKyAgICAgICAgJ3VuZGVmaW5lZCcgcmV0dXJuIHZhbHVlcyBhcyAndHJ1ZScsIGFzIHJl
cXVpcmVkIGJ5IHRoZSBzcGVjLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNTA0OAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21TUUxT
dGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEN1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOjpoYW5kbGVFdmVu
dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Omludm9rZUNhbGxiYWNrSGVscGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Omludm9rZUNhbGxiYWNr
VHJlYXRVbmRlZmluZWRBc1RydWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1
c3RvbVZvaWRDYWxsYmFjay5oOgorCiAyMDEwLTAyLTE3ICBEaXJrIFNjaHVsemUgIDxrcml0QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUm9sbGluZyBvdXQgcjU0OTA5LiBCcmVha3MgU0wgYW5kIFdp
bi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAJKHJldmlzaW9uIDU0OTEwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIGJvb2wgSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrOjoKICAgICAgICAgLy8gVGhlcmVmb3JlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuaW5n
IHRydWUgYXJlIHRoZSBzYW1lIHRoaW5nIC0gc28sIHJldHVybiB0cnVlIG9uIGFuIGV4Y2VwdGlv
bgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xl
YW4oZXhlYyk7CisgICAgcmV0dXJuIChyZXN1bHQuaXNVbmRlZmluZWQoKSB8fCByZXN1bHQudG9C
b29sZWFuKGV4ZWMpKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2su
Y3BwCShyZXZpc2lvbiA1NDkxMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDEw
ICs3NSw5IEBAIGJvb2wgVjhDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOjoKICAgICAv
LyBzdGF0ZW1lbnQsIGlmIGFueSwgb3Igb250byB0aGUgbmV4dCBvdmVyYWxsIHN0ZXAgb3RoZXJ3
aXNlLiBPdGhlcndpc2UsCiAgICAgLy8gdGhlIGVycm9yIGNhbGxiYWNrIGRpZCBub3QgcmV0dXJu
IGZhbHNlLCBvciB0aGVyZSB3YXMgbm8gZXJyb3IgY2FsbGJhY2suCiAgICAgLy8gSnVtcCB0byB0
aGUgbGFzdCBzdGVwIGluIHRoZSBvdmVyYWxsIHN0ZXBzLgotICAgIHJldHVybiBpbnZva2VDYWxs
YmFjayhtX2NhbGxiYWNrLCAyLCBhcmd2LCBjYWxsYmFja1JldHVyblZhbHVlKSB8fCBjYWxsYmFj
a1JldHVyblZhbHVlOworICAgIHJldHVybiBpbnZva2VDYWxsYmFja1RyZWF0VW5kZWZpbmVkQXNU
cnVlKG1fY2FsbGJhY2ssIDIsIGFyZ3YsIGNhbGxiYWNrUmV0dXJuVmFsdWUpIHx8IGNhbGxiYWNr
UmV0dXJuVmFsdWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCi0KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxs
YmFjay5jcHAJKHJldmlzaW9uIDU0OTEwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBA
IHZvaWQgVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KCkKICAgICBpbnZva2VDYWxs
YmFjayhtX2NhbGxiYWNrLCAwLCAwLCBjYWxsYmFja1JldHVyblZhbHVlKTsKIH0KIAotYm9vbCBp
bnZva2VDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFy
Z2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFs
dWUpCitzdGF0aWMgYm9vbCBpbnZva2VDYWxsYmFja0hlbHBlcih2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10s
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgcmV0dXJuVmFsdWUpCiB7CiAgICAgdjg6OlRyeUNhdGNo
IGV4Y2VwdGlvbkNhdGNoZXI7CiAKQEAgLTg3LDkgKzg3LDcgQEAgYm9vbCBpbnZva2VDYWxsYmFj
ayh2ODo6UGVyc2lzdGVudDx2ODo6TwogICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0
cmlldmUoKTsKICAgICBBU1NFUlQocHJveHkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHJlc3VsdCA9IHByb3h5LT5jYWxsRnVuY3Rpb24oY2FsbGJhY2tGdW5jdGlvbiwgdGhpc09iamVj
dCwgYXJnYywgYXJndik7Ci0KLSAgICBjYWxsYmFja1JldHVyblZhbHVlID0gIXJlc3VsdC5Jc0Vt
cHR5KCkgJiYgcmVzdWx0LT5Jc0Jvb2xlYW4oKSAmJiByZXN1bHQtPkJvb2xlYW5WYWx1ZSgpOwor
ICAgIHJldHVyblZhbHVlID0gcHJveHktPmNhbGxGdW5jdGlvbihjYWxsYmFja0Z1bmN0aW9uLCB0
aGlzT2JqZWN0LCBhcmdjLCBhcmd2KTsKIAogICAgIGlmIChleGNlcHRpb25DYXRjaGVyLkhhc0Nh
dWdodCgpKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6TWVzc2FnZT4gbWVzc2FnZSA9IGV4Y2Vw
dGlvbkNhdGNoZXIuTWVzc2FnZSgpOwpAQCAtMTAwLDQgKzk4LDE4IEBAIGJvb2wgaW52b2tlQ2Fs
bGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6Ok8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wg
aW52b2tlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBh
cmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBjYWxsYmFja1JldHVyblZh
bHVlKSB7CisgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXR1cm5WYWx1ZTsKKyAgYm9vbCByZXN1
bHQgPSBpbnZva2VDYWxsYmFja0hlbHBlcihjYWxsYmFjaywgYXJnYywgYXJndiwgcmV0dXJuVmFs
dWUpOworICBjYWxsYmFja1JldHVyblZhbHVlID0gIXJldHVyblZhbHVlLklzRW1wdHkoKSAmJiBy
ZXR1cm5WYWx1ZS0+SXNCb29sZWFuKCkgJiYgcmV0dXJuVmFsdWUtPkJvb2xlYW5WYWx1ZSgpOwor
ICByZXR1cm4gcmVzdWx0OworfQorCitib29sIGludm9rZUNhbGxiYWNrVHJlYXRVbmRlZmluZWRB
c1RydWUodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBjYWxsYmFja1JldHVyblZhbHVlKSB7Cisg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXR1cm5WYWx1ZTsKKyAgYm9vbCByZXN1bHQgPSBpbnZv
a2VDYWxsYmFja0hlbHBlcihjYWxsYmFjaywgYXJnYywgYXJndiwgcmV0dXJuVmFsdWUpOworICBj
YWxsYmFja1JldHVyblZhbHVlID0gIXJldHVyblZhbHVlLklzRW1wdHkoKSAmJiAocmV0dXJuVmFs
dWUtPklzVW5kZWZpbmVkKCkgfHwgKHJldHVyblZhbHVlLT5Jc0Jvb2xlYW4oKSAmJiByZXR1cm5W
YWx1ZS0+Qm9vbGVhblZhbHVlKCkpKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21W
b2lkQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbVZvaWRDYWxsYmFjay5oCShyZXZpc2lvbiA1NDkxMCkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDYgKzYwLDcgQEAgcHJpdmF0ZToKIAogLy8gUmV0dXJucyBmYWxzZSBpZiBjYWxsYmFjayBmYWls
ZWQgKG51bGwsIHdyb25nIHR5cGUsIG9yIHRocmV3IGV4Y2VwdGlvbikuCiBib29sIGludm9rZUNh
bGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSk7Citi
b29sIGludm9rZUNhbGxiYWNrVHJlYXRVbmRlZmluZWRBc1RydWUodjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltd
LCBib29sJiBjYWxsYmFja1JldHVyblZhbHVlKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA1NDkxMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTAyLTE3ICBEdW1pdHJ1IERhbmlsaXVj
ICA8ZHVtaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgJ3VuZGVmaW5lZCcgcmV0dXJuIHZhbHVlcyBmcm9tIHN0YXRlbWVudCBl
cnJvciBjYWxsYmFja3MgYXJlIG5vdAorICAgICAgICB0cmVhdGVkIGFzICd0cnVlJy4gRml4IHRo
ZSB0ZXN0cyB0aGF0IGRpZCBub3QgdXNlIHRoaXMKKyAgICAgICAgYXNzdW1wdGlvbi4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwNDgKKworICAg
ICAgICAqIHN0b3JhZ2UvZGF0YWJhc2UtbG9jay1hZnRlci1yZWxvYWQuaHRtbDoKKyAgICAgICAg
KiBzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctcmVhZG9ubHkuaHRtbDoKKwogMjAxMC0wMi0xNyAg
RHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvZGF0YWJhc2Ut
bG9jay1hZnRlci1yZWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdl
L2RhdGFiYXNlLWxvY2stYWZ0ZXItcmVsb2FkLmh0bWwJKHJldmlzaW9uIDU0OTEwKQorKysgTGF5
b3V0VGVzdHMvc3RvcmFnZS9kYXRhYmFzZS1sb2NrLWFmdGVyLXJlbG9hZC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIGFkZERhdGEoZGIpCiAgICAgICAgIC8v
IEluc2VydCBhIGxhcmdlIGFtb3VudCBvZiBkYXRhIHRoYXQgd2lsbCB0YWtlIGEgbGl0dGxlIHdo
aWxlIHRvIHJ1bi4gU2NoZWR1bGUgYSB0aW1vdXQgdG8gcnVuIHRoYXQgd2lsbCBsb2FkIGEgbmV3
IHBhZ2UKICAgICAgICAgLy8gd2hpbHN0IHRoZSB0cmFuc2FjdGlvbiBpcyBzdGlsbCBpbiBwcm9n
cmVzcywgaW50ZXJydXB0aW5nIHRoZSB0cmFuc2FjdGlvbi4gVGhpcyBzaG91bGQgbm90IGxlYXZl
IHRoZSBkYXRhYmFzZSBsb2NrZWQgYW5kIG9uCiAgICAgICAgIC8vIHRoZSBuZXh0IHBhZ2Ugd2Ug
c2hvdWxkIGJlIGFibGUgdG8gaW5zZXJ0IHNvbWUgbW9yZSBkYXRhLgotICAgICAgICB0eC5leGVj
dXRlU3FsKCJJTlNFUlQgSU5UTyBEYXRhVGVzdCAodGVzdERhdGEpIFZBTFVFUyAocmFuZG9tQmxv
Yig1MjQyMDAgKSkiLCBbXSwgZnVuY3Rpb24odHgsIHJlc3VsdCkgeyB9LCBlcnJvckZ1bmN0aW9u
KTsKKyAgICAgICAgdHguZXhlY3V0ZVNxbCgiSU5TRVJUIElOVE8gRGF0YVRlc3QgKHRlc3REYXRh
KSBWQUxVRVMgKFpFUk9CTE9CKDUyNDIwMCkpIiwgW10sIGZ1bmN0aW9uKHR4LCByZXN1bHQpIHsg
fSwgZXJyb3JGdW5jdGlvbik7CiAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSAiLi9yZXNvdXJjZXMv
ZGF0YWJhc2UtbG9jay1hZnRlci1yZWxvYWQtMi5odG1sIjsKICAgICB9LCBlcnJvckZ1bmN0aW9u
LCBmdW5jdGlvbigpIHsgCiAgICAgICAgIGZpbmlzaFRlc3QoKTsKSW5kZXg6IExheW91dFRlc3Rz
L3N0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1yZWFkb25seS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1yZWFkb25seS5odG1sCShyZXZpc2lv
biA1NDkxMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1yZWFkb25s
eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIGZ1bmN0aW9uIHByaXZhdGVC
cm93c2luZ0Vycm9yRnVuY3Rpb24odHgKIHsKICAgICArK2NvbXBsZXRlZDsKICAgICB3cml0ZU1l
c3NhZ2VUb0xvZygiUHJpdmF0ZSBicm93c2luZyBzdGF0ZW1lbnQgIiArIGNvbXBsZXRlZCArICIg
Y29tcGxldGVkIHdpdGggYW4gZXJyb3JcbiIgKyBlcnJvci5tZXNzYWdlKTsKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIGZ1bmN0aW9uIHJ1blNldHVwKHRyYW5zYWN0aW9uKQo=
</data>
<flag name="commit-queue"
          id="31684"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48946</attachid>
            <date>2010-02-17 16:45:46 -0800</date>
            <delta_ts>2010-02-17 17:49:32 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13564</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDkxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDItMTcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDaGFuZ2UgdGhlIFY4IGFuZCBKU0MgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjayB0byBpbnRl
cnByZXQKKyAgICAgICAgJ3VuZGVmaW5lZCcgcmV0dXJuIHZhbHVlcyBhcyAndHJ1ZScsIGFzIHJl
cXVpcmVkIGJ5IHRoZSBzcGVjLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNTA0OAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21TUUxT
dGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEN1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOjpoYW5kbGVFdmVu
dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Omludm9rZUNhbGxiYWNrSGVscGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Omludm9rZUNhbGxiYWNr
VHJlYXRVbmRlZmluZWRBc1RydWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1
c3RvbVZvaWRDYWxsYmFjay5oOgorCiAyMDEwLTAyLTE3ICBEaXJrIFNjaHVsemUgIDxrcml0QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUm9sbGluZyBvdXQgcjU0OTA5LiBCcmVha3MgU0wgYW5kIFdp
bi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAJKHJldmlzaW9uIDU0OTEwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIGJvb2wgSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrOjoKICAgICAgICAgLy8gVGhlcmVmb3JlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuaW5n
IHRydWUgYXJlIHRoZSBzYW1lIHRoaW5nIC0gc28sIHJldHVybiB0cnVlIG9uIGFuIGV4Y2VwdGlv
bgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xl
YW4oZXhlYyk7CisgICAgcmV0dXJuIChyZXN1bHQuaXNVbmRlZmluZWQoKSB8fCByZXN1bHQudG9C
b29sZWFuKGV4ZWMpKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2su
Y3BwCShyZXZpc2lvbiA1NDkxMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDEw
ICs3NSw5IEBAIGJvb2wgVjhDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOjoKICAgICAv
LyBzdGF0ZW1lbnQsIGlmIGFueSwgb3Igb250byB0aGUgbmV4dCBvdmVyYWxsIHN0ZXAgb3RoZXJ3
aXNlLiBPdGhlcndpc2UsCiAgICAgLy8gdGhlIGVycm9yIGNhbGxiYWNrIGRpZCBub3QgcmV0dXJu
IGZhbHNlLCBvciB0aGVyZSB3YXMgbm8gZXJyb3IgY2FsbGJhY2suCiAgICAgLy8gSnVtcCB0byB0
aGUgbGFzdCBzdGVwIGluIHRoZSBvdmVyYWxsIHN0ZXBzLgotICAgIHJldHVybiBpbnZva2VDYWxs
YmFjayhtX2NhbGxiYWNrLCAyLCBhcmd2LCBjYWxsYmFja1JldHVyblZhbHVlKSB8fCBjYWxsYmFj
a1JldHVyblZhbHVlOworICAgIHJldHVybiBpbnZva2VDYWxsYmFja1RyZWF0VW5kZWZpbmVkQXNU
cnVlKG1fY2FsbGJhY2ssIDIsIGFyZ3YsIGNhbGxiYWNrUmV0dXJuVmFsdWUpIHx8IGNhbGxiYWNr
UmV0dXJuVmFsdWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCi0KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxs
YmFjay5jcHAJKHJldmlzaW9uIDU0OTEwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBA
IHZvaWQgVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KCkKICAgICBpbnZva2VDYWxs
YmFjayhtX2NhbGxiYWNrLCAwLCAwLCBjYWxsYmFja1JldHVyblZhbHVlKTsKIH0KIAotYm9vbCBp
bnZva2VDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFy
Z2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFs
dWUpCitzdGF0aWMgYm9vbCBpbnZva2VDYWxsYmFja0hlbHBlcih2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10s
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgcmV0dXJuVmFsdWUpCiB7CiAgICAgdjg6OlRyeUNhdGNo
IGV4Y2VwdGlvbkNhdGNoZXI7CiAKQEAgLTg3LDkgKzg3LDcgQEAgYm9vbCBpbnZva2VDYWxsYmFj
ayh2ODo6UGVyc2lzdGVudDx2ODo6TwogICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0
cmlldmUoKTsKICAgICBBU1NFUlQocHJveHkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHJlc3VsdCA9IHByb3h5LT5jYWxsRnVuY3Rpb24oY2FsbGJhY2tGdW5jdGlvbiwgdGhpc09iamVj
dCwgYXJnYywgYXJndik7Ci0KLSAgICBjYWxsYmFja1JldHVyblZhbHVlID0gIXJlc3VsdC5Jc0Vt
cHR5KCkgJiYgcmVzdWx0LT5Jc0Jvb2xlYW4oKSAmJiByZXN1bHQtPkJvb2xlYW5WYWx1ZSgpOwor
ICAgIHJldHVyblZhbHVlID0gcHJveHktPmNhbGxGdW5jdGlvbihjYWxsYmFja0Z1bmN0aW9uLCB0
aGlzT2JqZWN0LCBhcmdjLCBhcmd2KTsKIAogICAgIGlmIChleGNlcHRpb25DYXRjaGVyLkhhc0Nh
dWdodCgpKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6TWVzc2FnZT4gbWVzc2FnZSA9IGV4Y2Vw
dGlvbkNhdGNoZXIuTWVzc2FnZSgpOwpAQCAtMTAwLDQgKzk4LDIwIEBAIGJvb2wgaW52b2tlQ2Fs
bGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6Ok8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wg
aW52b2tlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBh
cmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBjYWxsYmFja1JldHVyblZh
bHVlKQoreworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXR1cm5WYWx1ZTsKKyAgICBib29s
IHJlc3VsdCA9IGludm9rZUNhbGxiYWNrSGVscGVyKGNhbGxiYWNrLCBhcmdjLCBhcmd2LCByZXR1
cm5WYWx1ZSk7CisgICAgY2FsbGJhY2tSZXR1cm5WYWx1ZSA9ICFyZXR1cm5WYWx1ZS5Jc0VtcHR5
KCkgJiYgcmV0dXJuVmFsdWUtPklzQm9vbGVhbigpICYmIHJldHVyblZhbHVlLT5Cb29sZWFuVmFs
dWUoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIGludm9rZUNhbGxiYWNrVHJlYXRV
bmRlZmluZWRBc1RydWUodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBh
cmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBjYWxsYmFja1JldHVyblZh
bHVlKQoreworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXR1cm5WYWx1ZTsKKyAgICBib29s
IHJlc3VsdCA9IGludm9rZUNhbGxiYWNrSGVscGVyKGNhbGxiYWNrLCBhcmdjLCBhcmd2LCByZXR1
cm5WYWx1ZSk7CisgICAgY2FsbGJhY2tSZXR1cm5WYWx1ZSA9ICFyZXR1cm5WYWx1ZS5Jc0VtcHR5
KCkgJiYgKHJldHVyblZhbHVlLT5Jc1VuZGVmaW5lZCgpIHx8IChyZXR1cm5WYWx1ZS0+SXNCb29s
ZWFuKCkgJiYgcmV0dXJuVmFsdWUtPkJvb2xlYW5WYWx1ZSgpKSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5oCShyZXZpc2lvbiA1NDkxMCkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAgcHJpdmF0ZToKIAogLy8gUmV0dXJucyBmYWxz
ZSBpZiBjYWxsYmFjayBmYWlsZWQgKG51bGwsIHdyb25nIHR5cGUsIG9yIHRocmV3IGV4Y2VwdGlv
bikuCiBib29sIGludm9rZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNhbGxi
YWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYgY2FsbGJh
Y2tSZXR1cm5WYWx1ZSk7Citib29sIGludm9rZUNhbGxiYWNrVHJlYXRVbmRlZmluZWRBc1RydWUo
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBjYWxsYmFja1JldHVyblZhbHVlKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDkxMSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEwLTAyLTE3
ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgJ3VuZGVmaW5lZCcgcmV0dXJuIHZhbHVl
cyBmcm9tIHN0YXRlbWVudCBlcnJvciBjYWxsYmFja3MgYXJlIG5vdAorICAgICAgICB0cmVhdGVk
IGFzICd0cnVlJy4gRml4IHRoZSB0ZXN0cyB0aGF0IGRpZCBub3QgdXNlIHRoaXMKKyAgICAgICAg
YXNzdW1wdGlvbi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzUwNDgKKworICAgICAgICAqIHN0b3JhZ2UvZGF0YWJhc2UtbG9jay1hZnRlci1yZWxv
YWQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL3ByaXZhdGUtYnJvd3NpbmctcmVhZG9ubHkuaHRt
bDoKKyAgICAgICAgKiBzdG9yYWdlL3N0YXRlbWVudC1lcnJvci1jYWxsYmFjay5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2Uvc3RhdGVtZW50LWVycm9yLWNhbGxiYWNrLWV4cGVjdGVkLnR4dDoKKwog
MjAxMC0wMi0xNyAgRHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IExheW91dFRlc3RzL3N0b3Jh
Z2UvZGF0YWJhc2UtbG9jay1hZnRlci1yZWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2RhdGFiYXNlLWxvY2stYWZ0ZXItcmVsb2FkLmh0bWwJKHJldmlzaW9uIDU0
OTEwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9kYXRhYmFzZS1sb2NrLWFmdGVyLXJlbG9hZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIGFkZERhdGEoZGIp
CiAgICAgICAgIC8vIEluc2VydCBhIGxhcmdlIGFtb3VudCBvZiBkYXRhIHRoYXQgd2lsbCB0YWtl
IGEgbGl0dGxlIHdoaWxlIHRvIHJ1bi4gU2NoZWR1bGUgYSB0aW1vdXQgdG8gcnVuIHRoYXQgd2ls
bCBsb2FkIGEgbmV3IHBhZ2UKICAgICAgICAgLy8gd2hpbHN0IHRoZSB0cmFuc2FjdGlvbiBpcyBz
dGlsbCBpbiBwcm9ncmVzcywgaW50ZXJydXB0aW5nIHRoZSB0cmFuc2FjdGlvbi4gVGhpcyBzaG91
bGQgbm90IGxlYXZlIHRoZSBkYXRhYmFzZSBsb2NrZWQgYW5kIG9uCiAgICAgICAgIC8vIHRoZSBu
ZXh0IHBhZ2Ugd2Ugc2hvdWxkIGJlIGFibGUgdG8gaW5zZXJ0IHNvbWUgbW9yZSBkYXRhLgotICAg
ICAgICB0eC5leGVjdXRlU3FsKCJJTlNFUlQgSU5UTyBEYXRhVGVzdCAodGVzdERhdGEpIFZBTFVF
UyAocmFuZG9tQmxvYig1MjQyMDAgKSkiLCBbXSwgZnVuY3Rpb24odHgsIHJlc3VsdCkgeyB9LCBl
cnJvckZ1bmN0aW9uKTsKKyAgICAgICAgdHguZXhlY3V0ZVNxbCgiSU5TRVJUIElOVE8gRGF0YVRl
c3QgKHRlc3REYXRhKSBWQUxVRVMgKFpFUk9CTE9CKDUyNDIwMCkpIiwgW10sIGZ1bmN0aW9uKHR4
LCByZXN1bHQpIHsgfSwgZXJyb3JGdW5jdGlvbik7CiAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSAi
Li9yZXNvdXJjZXMvZGF0YWJhc2UtbG9jay1hZnRlci1yZWxvYWQtMi5odG1sIjsKICAgICB9LCBl
cnJvckZ1bmN0aW9uLCBmdW5jdGlvbigpIHsgCiAgICAgICAgIGZpbmlzaFRlc3QoKTsKSW5kZXg6
IExheW91dFRlc3RzL3N0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1yZWFkb25seS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1yZWFkb25seS5o
dG1sCShyZXZpc2lvbiA1NDkxMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvcHJpdmF0ZS1icm93
c2luZy1yZWFkb25seS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIGZ1bmN0
aW9uIHByaXZhdGVCcm93c2luZ0Vycm9yRnVuY3Rpb24odHgKIHsKICAgICArK2NvbXBsZXRlZDsK
ICAgICB3cml0ZU1lc3NhZ2VUb0xvZygiUHJpdmF0ZSBicm93c2luZyBzdGF0ZW1lbnQgIiArIGNv
bXBsZXRlZCArICIgY29tcGxldGVkIHdpdGggYW4gZXJyb3JcbiIgKyBlcnJvci5tZXNzYWdlKTsK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGZ1bmN0aW9uIHJ1blNldHVwKHRyYW5zYWN0aW9uKQpJ
bmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9zdGF0ZW1lbnQtZXJyb3ItY2FsbGJhY2stZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2Uvc3RhdGVtZW50LWVycm9y
LWNhbGxiYWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTQ5MTApCisrKyBMYXlvdXRUZXN0cy9z
dG9yYWdlL3N0YXRlbWVudC1lcnJvci1jYWxsYmFjay1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogRXhjZXB0aW9uIGlu
IFN0YXRlbWVudCBlcnJvciBjYWxsYmFjawotVGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgaWYgdGhl
IHN0YXRlbWVudCBlcnJvciBjYWxsYmFjayByZXR1cm5zIHRydWUgb3IgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiB3ZSBkbyBub3QgZXhlY3V0ZSBhbnkgZnVydGhlciBzdGF0ZW1lbnRzIGluIHRoYXQgdHJh
bnNhY3Rpb24gYW5kIGluc3RlYWQgZXhlY3V0ZSB0aGUgdHJhbnNhY3Rpb24gZXJyb3IgY2FsbGJh
Y2sgaW1tZWRpYXRlbHkuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogRXhjZXB0aW9uIGluIHN0
YXRlbWVudCBlcnJvciBjYWxsYmFjaworVGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgYSB0cmFuc2Fj
dGlvbiBpcyBpbW1lZGlhdGVseSByb2xsZWQgYmFjayBpZiBhbmQgb25seSBpZiBhIHN0YXRlbWVu
dCdzIGVycm9yIGNhbGxiYWNrIHRocm93cyBhbiBleGNlcHRpb24sIHJldHVybnMgdHJ1ZSwgb3Ig
ZG9lc24ndCByZXR1cm4gYW55IHZhbHVlLgorUEFTUyAtIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBj
YWxsYmFjayB3YXMgaW52b2tlZC4KIFBBU1MgLSB0aGUgdHJhbnNhY3Rpb24gZXJyb3IgY2FsbGJh
Y2sgd2FzIGludm9rZWQuCiBQQVNTIC0gdGhlIHRyYW5zYWN0aW9uIGVycm9yIGNhbGxiYWNrIHdh
cyBpbnZva2VkLgogVGVzdCBDb21wbGV0ZQpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9zdGF0
ZW1lbnQtZXJyb3ItY2FsbGJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9y
YWdlL3N0YXRlbWVudC1lcnJvci1jYWxsYmFjay5odG1sCShyZXZpc2lvbiA1NDkxMCkKKysrIExh
eW91dFRlc3RzL3N0b3JhZ2Uvc3RhdGVtZW50LWVycm9yLWNhbGxiYWNrLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTE1LDcgKzE1LDggQEAgZnVuY3Rpb24gZmluaXNoVGVzdCgpCiB9CiAKIHZhciB0
eENhbGxiYWNrQ291bnQgPSAwOwotdmFyIE5VTUJFUl9PRl9UUkFOU0FDVElPTlMgPSAyOwordmFy
IE5VTUJFUl9PRl9UUkFOU0FDVElPTlMgPSAzOwordmFyIGRhdGFiYXNlOwogCiBmdW5jdGlvbiB0
cmFuc2FjdGlvbkVycm9yRnVuY3Rpb24oZXJyb3IpCiB7CkBAIC0zMSw2ICszMiwyMiBAQCBmdW5j
dGlvbiB0cmFuc2FjdGlvblN1Y2Nlc3NGdW5jdGlvbihtZXNzCiAgICAgICAgIGZpbmlzaFRlc3Qo
KTsKIH0KIAorZnVuY3Rpb24gcnVuVHJhbnNhY3Rpb25FeHBlY3RlZFRvRmFpbChzdGF0ZW1lbnRF
cnJvckNhbGxiYWNrKQoreworICAgIGRhdGFiYXNlLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHR4KSB7
CisgICAgICAgIHR4LmV4ZWN1dGVTcWwoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIFN0YXRl
bWVudEVycm9yQ2FsbGJhY2tUZXN0IChyYW5kb21EYXRhKSIpOworICAgICAgICB0eC5leGVjdXRl
U3FsKCJJTlNFUlQgSU5UTyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNrVGVzdCAocmFuZG9tRGF0YSkg
VkFMVUVTICg/KSIsIFsndGVzdCddKTsKKyAgICAgICAgdHguZXhlY3V0ZVNxbCgiVEhJUyBTVEFU
RU1FTlQgV0lMTCBGQUlMIiwgW10sCisgICAgICAgICAgICBmdW5jdGlvbih0eCwgZGF0YSkgewor
ICAgICAgICAgICAgICAgIGxvZygiRkFJTCAtIHRoaXMgc3RhdGVtZW50IHNob3VsZCBoYXZlIGZh
aWxlZCIpOworICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0sIHN0
YXRlbWVudEVycm9yQ2FsbGJhY2spOworICAgICAgICB0eC5leGVjdXRlU3FsKCJJTlNFUlQgSU5U
TyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNrVGVzdCAocmFuZG9tRGF0YSkgVkFMVUVTICg/KSIsIFsn
dGVzdDEnXSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGxvZygiRkFJTCAtIFRoaXMg
c3RhdGVtZW50IHNob3VsZCBub3QgaGF2ZSBiZWVuIGV4ZWN1dGVkIik7IH0sCisgICAgICAgICAg
ICBmdW5jdGlvbigpIHsgbG9nKCJGQUlMIC0gVGhpcyBzdGF0ZW1lbnQgc2hvdWxkIG5vdCBoYXZl
IGJlZW4gZXhlY3V0ZWQiKTsgfSk7CisgICAgfSwgdHJhbnNhY3Rpb25FcnJvckZ1bmN0aW9uLCB0
cmFuc2FjdGlvblN1Y2Nlc3NGdW5jdGlvbik7Cit9CisKIGZ1bmN0aW9uIHJ1blRlc3QoKQogewog
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKQEAgLTM4LDI5ICs1NSwzMiBA
QCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAg
ICAgfQotICAgIAotICAgIHZhciBkYXRhYmFzZSA9IG9wZW5EYXRhYmFzZSgiYnVnLTI4ODcyIiwg
IjEuMCIsICJzdGF0ZW1lbnQgZXJyb3IgY2FsbGJhY2sgdGVzdCIsIDEwMjQpOwotICAgIAotICAg
IGRhdGFiYXNlLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKHR4KSB7Ci0gICAgICAgICAgICB0eC5leGVj
dXRlU3FsKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNr
VGVzdCAocmFuZG9tRGF0YSkiKTsKLSAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIklOU0VSVCBJ
TlRPIFN0YXRlbWVudEVycm9yQ2FsbGJhY2tUZXN0IChyYW5kb21EYXRhKSBWQUxVRVMgKD8pIiwg
Wyd0ZXN0J10pOwotICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiVEhJUyBTVEFURU1FTlQgV0lM
TCBGQUlMIiwgW10sIGZ1bmN0aW9uKG1lc3NhZ2UpIHsgbG9nKCJGQUlMIC0gdGhpcyBzdGF0ZW1l
bnQgc2hvdWxkIGhhdmUgZmFpbGVkIik7IGZpbmlzaFRlc3QoKTsgfSwgZnVuY3Rpb24oZXJyb3Ip
IHsgcmV0dXJuIHRydWU7IH0pOwotICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiSU5TRVJUIElO
VE8gU3RhdGVtZW50RXJyb3JDYWxsYmFja1Rlc3QgKHJhbmRvbURhdGEpIFZBTFVFUyAoPykiLCBb
J3Rlc3QxJ10sIGZ1bmN0aW9uKG1lc3NhZ2UpIHsgbG9nKCJGQUlMIC0gVGhpcyBzdGF0ZW1lbnQg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gZXhlY3V0ZWQiKTsgfSwgZnVuY3Rpb24obWVzc2FnZSkgeyBs
b2coIkZBSUwgLSBUaGlzIHN0YXRlbWVudCBzaG91bGQgbm90IGhhdmUgYmVlbiBleGVjdXRlZCIp
OyB9KTsKLSAgICAgICAgfSwgdHJhbnNhY3Rpb25FcnJvckZ1bmN0aW9uLCB0cmFuc2FjdGlvblN1
Y2Nlc3NGdW5jdGlvbik7CiAKLSAgICBkYXRhYmFzZS50cmFuc2FjdGlvbihmdW5jdGlvbih0eCkg
eyAgICAgICAgCisgICAgZGF0YWJhc2UgPSBvcGVuRGF0YWJhc2UoImJ1Zy0yODg3MiIsICIxLjAi
LCAic3RhdGVtZW50IGVycm9yIGNhbGxiYWNrIHRlc3QiLCAxMDI0KTsKKyAgICBkYXRhYmFzZS50
cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgewogICAgICAgICB0eC5leGVjdXRlU3FsKCJDUkVBVEUg
VEFCTEUgSUYgTk9UIEVYSVNUUyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNrVGVzdCAocmFuZG9tRGF0
YSkiKTsKLSAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIklOU0VSVCBJTlRPIFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2tUZXN0IChyYW5kb21EYXRhKSBWQUxVRVMgKD8pIiwgWyd0ZXN0J10pOwotICAg
ICAgICAgICAgdHguZXhlY3V0ZVNxbCgiVEhJUyBTVEFURU1FTlQgV0lMTCBGQUlMIiwgW10sIGZ1
bmN0aW9uKG1lc3NhZ2UpIHsgbG9nKCJGQUlMIC0gdGhpcyBzdGF0ZW1lbnQgc2hvdWxkIGhhdmUg
ZmFpbGVkIik7IGZpbmlzaFRlc3QoKTsgfSwgZnVuY3Rpb24oZXJyb3IpIHsgdGhyb3cgIkV4Y2Vw
dGlvbiBpbiBTdGF0ZW1lbnQgZXJyb3IgY2FsbGJhY2siOyByZXR1cm4gZmFsc2U7IH0pOwotICAg
ICAgICAgICAgdHguZXhlY3V0ZVNxbCgiSU5TRVJUIElOVE8gU3RhdGVtZW50RXJyb3JDYWxsYmFj
a1Rlc3QgKHJhbmRvbURhdGEpIFZBTFVFUyAoPykiLCBbJ3Rlc3QxJ10sIGZ1bmN0aW9uKG1lc3Nh
Z2UpIHsgbG9nKCJGQUlMIC0gVGhpcyBzdGF0ZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGJlZW4gZXhl
Y3V0ZWQiKTsgfSwgZnVuY3Rpb24obWVzc2FnZSkgeyBsb2coIkZBSUwgLSBUaGlzIHN0YXRlbWVu
dCBzaG91bGQgbm90IGhhdmUgYmVlbiBleGVjdXRlZCIpOyB9KTsKLSAgICAgICAgfSwgdHJhbnNh
Y3Rpb25FcnJvckZ1bmN0aW9uLCB0cmFuc2FjdGlvblN1Y2Nlc3NGdW5jdGlvbik7CisgICAgICAg
IHR4LmV4ZWN1dGVTcWwoIklOU0VSVCBJTlRPIFN0YXRlbWVudEVycm9yQ2FsbGJhY2tUZXN0IChy
YW5kb21EYXRhKSBWQUxVRVMgKD8pIiwgWyd0ZXN0J10pOworICAgICAgICB0eC5leGVjdXRlU3Fs
KCJUSElTIFNUQVRFTUVOVCBXSUxMIEZBSUwiLCBbXSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKHR4
LCBkYXRhKSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMIC0gdGhpcyBzdGF0ZW1lbnQgc2hv
dWxkIGhhdmUgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAg
ICAgICAgfSwgZnVuY3Rpb24odHgsIGVycm9yKSB7IHJldHVybiBmYWxzZTsgfSk7CisgICAgICAg
IHR4LmV4ZWN1dGVTcWwoIklOU0VSVCBJTlRPIFN0YXRlbWVudEVycm9yQ2FsbGJhY2tUZXN0IChy
YW5kb21EYXRhKSBWQUxVRVMgKD8pIiwgWyd0ZXN0MSddLAorICAgICAgICAgICAgZnVuY3Rpb24o
dHgsIGRhdGEpIHsgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKHR4LCBlcnJvcikgeyBsb2coIkZB
SUwgLSBUaGlzIHN0YXRlbWVudCBzaG91bGQgbm90IGhhdmUgY2F1c2VkIGFuIGVycm9yIik7IH0p
OworICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7IGxvZygiRkFJTCAtIFRoZSB0cmFuc2FjdGlvbiBl
cnJvciBjYWxsYmFjayBzaG91bGQgbm90IGhhdmUgYmVlbiBpbnZva2VkIik7IH0sCisgICAgZnVu
Y3Rpb24oKSB7IH0pOworCisgICAgcnVuVHJhbnNhY3Rpb25FeHBlY3RlZFRvRmFpbChmdW5jdGlv
bihlcnJvcikgeyByZXR1cm4gdHJ1ZTsgfSk7CisgICAgcnVuVHJhbnNhY3Rpb25FeHBlY3RlZFRv
RmFpbChmdW5jdGlvbihlcnJvcikgeyB0aHJvdyAiRXhjZXB0aW9uIGluIHN0YXRlbWVudCBlcnJv
ciBjYWxsYmFjayI7IHJldHVybiB0cnVlOyB9KTsKKyAgICBydW5UcmFuc2FjdGlvbkV4cGVjdGVk
VG9GYWlsKGZ1bmN0aW9uKGVycm9yKSB7fSk7CiB9CiAKIDwvc2NyaXB0PgogPC9oZWFkPgogCiA8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci1UaGlzIHRlc3QgY29uZmlybXMgdGhhdCBpZiB0aGUg
c3RhdGVtZW50IGVycm9yIGNhbGxiYWNrIHJldHVybnMgdHJ1ZSBvciB0aHJvd3MgYW4gZXhjZXB0
aW9uIHdlIGRvIG5vdCBleGVjdXRlIGFueSBmdXJ0aGVyIHN0YXRlbWVudHMgaW4gdGhhdCB0cmFu
c2FjdGlvbiBhbmQgaW5zdGVhZCBleGVjdXRlIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFj
ayBpbW1lZGlhdGVseS4KK1RoaXMgdGVzdCBjb25maXJtcyB0aGF0IGEgdHJhbnNhY3Rpb24gaXMg
aW1tZWRpYXRlbHkgcm9sbGVkIGJhY2sgaWYgYW5kIG9ubHkgaWYgYSBzdGF0ZW1lbnQncyBlcnJv
ciBjYWxsYmFjayB0aHJvd3MgYW4gZXhjZXB0aW9uLCByZXR1cm5zIHRydWUsIG9yIGRvZXNuJ3Qg
cmV0dXJuIGFueSB2YWx1ZS4KIDxwcmUgaWQ9ImNvbnNvbGUiPgogPC9wcmU+CiA8L2JvZHk+Cg==
</data>
<flag name="commit-queue"
          id="31688"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48953</attachid>
            <date>2010-02-17 17:49:32 -0800</date>
            <delta_ts>2010-02-18 10:51:44 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14064</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDkxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDItMTcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDaGFuZ2UgdGhlIFY4IGFuZCBKU0MgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjayB0byBpbnRl
cnByZXQKKyAgICAgICAgJ3VuZGVmaW5lZCcgcmV0dXJuIHZhbHVlcyBhcyAndHJ1ZScsIGFzIHJl
cXVpcmVkIGJ5IHRoZSBzcGVjLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNTA0OAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21TUUxT
dGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEN1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOjpoYW5kbGVFdmVu
dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Omludm9rZUNhbGxiYWNrSGVscGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Omludm9rZUNhbGxiYWNr
VHJlYXRVbmRlZmluZWRBc1RydWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1
c3RvbVZvaWRDYWxsYmFjay5oOgorCiAyMDEwLTAyLTE3ICBEaXJrIFNjaHVsemUgIDxrcml0QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUm9sbGluZyBvdXQgcjU0OTA5LiBCcmVha3MgU0wgYW5kIFdp
bi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAJKHJldmlzaW9uIDU0OTEwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIGJvb2wgSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrOjoKICAgICAgICAgLy8gVGhlcmVmb3JlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuaW5n
IHRydWUgYXJlIHRoZSBzYW1lIHRoaW5nIC0gc28sIHJldHVybiB0cnVlIG9uIGFuIGV4Y2VwdGlv
bgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xl
YW4oZXhlYyk7CisgICAgcmV0dXJuICFyZXN1bHQuaXNCb29sZWFuKCkgfHwgcmVzdWx0LnRvQm9v
bGVhbihleGVjKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3Bw
CShyZXZpc2lvbiA1NDkxMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9t
U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDEwICs3
NSw5IEBAIGJvb2wgVjhDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOjoKICAgICAvLyBz
dGF0ZW1lbnQsIGlmIGFueSwgb3Igb250byB0aGUgbmV4dCBvdmVyYWxsIHN0ZXAgb3RoZXJ3aXNl
LiBPdGhlcndpc2UsCiAgICAgLy8gdGhlIGVycm9yIGNhbGxiYWNrIGRpZCBub3QgcmV0dXJuIGZh
bHNlLCBvciB0aGVyZSB3YXMgbm8gZXJyb3IgY2FsbGJhY2suCiAgICAgLy8gSnVtcCB0byB0aGUg
bGFzdCBzdGVwIGluIHRoZSBvdmVyYWxsIHN0ZXBzLgotICAgIHJldHVybiBpbnZva2VDYWxsYmFj
ayhtX2NhbGxiYWNrLCAyLCBhcmd2LCBjYWxsYmFja1JldHVyblZhbHVlKSB8fCBjYWxsYmFja1Jl
dHVyblZhbHVlOworICAgIHJldHVybiBpbnZva2VDYWxsYmFja1RyZWF0T25seUV4cGxpY2l0RmFs
c2VBc0ZhbHNlKG1fY2FsbGJhY2ssIDIsIGFyZ3YsIGNhbGxiYWNrUmV0dXJuVmFsdWUpIHx8IGNh
bGxiYWNrUmV0dXJuVmFsdWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
Ci0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZv
aWRDYWxsYmFjay5jcHAJKHJldmlzaW9uIDU0OTEwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgVjhDdXN0b21Wb2lkQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KCkKICAgICBpbnZv
a2VDYWxsYmFjayhtX2NhbGxiYWNrLCAwLCAwLCBjYWxsYmFja1JldHVyblZhbHVlKTsKIH0KIAot
Ym9vbCBpbnZva2VDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBjYWxsYmFjaywg
aW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0
dXJuVmFsdWUpCitzdGF0aWMgYm9vbCBpbnZva2VDYWxsYmFja0hlbHBlcih2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
cmd2W10sIHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgcmV0dXJuVmFsdWUpCiB7CiAgICAgdjg6OlRy
eUNhdGNoIGV4Y2VwdGlvbkNhdGNoZXI7CiAKQEAgLTg3LDkgKzg3LDcgQEAgYm9vbCBpbnZva2VD
YWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6TwogICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94
eTo6cmV0cmlldmUoKTsKICAgICBBU1NFUlQocHJveHkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHJlc3VsdCA9IHByb3h5LT5jYWxsRnVuY3Rpb24oY2FsbGJhY2tGdW5jdGlvbiwgdGhp
c09iamVjdCwgYXJnYywgYXJndik7Ci0KLSAgICBjYWxsYmFja1JldHVyblZhbHVlID0gIXJlc3Vs
dC5Jc0VtcHR5KCkgJiYgcmVzdWx0LT5Jc0Jvb2xlYW4oKSAmJiByZXN1bHQtPkJvb2xlYW5WYWx1
ZSgpOworICAgIHJldHVyblZhbHVlID0gcHJveHktPmNhbGxGdW5jdGlvbihjYWxsYmFja0Z1bmN0
aW9uLCB0aGlzT2JqZWN0LCBhcmdjLCBhcmd2KTsKIAogICAgIGlmIChleGNlcHRpb25DYXRjaGVy
Lkhhc0NhdWdodCgpKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6TWVzc2FnZT4gbWVzc2FnZSA9
IGV4Y2VwdGlvbkNhdGNoZXIuTWVzc2FnZSgpOwpAQCAtMTAwLDQgKzk4LDIwIEBAIGJvb2wgaW52
b2tlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6Ok8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K2Jvb2wgaW52b2tlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gY2FsbGJhY2ss
IGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBjYWxsYmFja1Jl
dHVyblZhbHVlKQoreworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXR1cm5WYWx1ZTsKKyAg
ICBib29sIHJlc3VsdCA9IGludm9rZUNhbGxiYWNrSGVscGVyKGNhbGxiYWNrLCBhcmdjLCBhcmd2
LCByZXR1cm5WYWx1ZSk7CisgICAgY2FsbGJhY2tSZXR1cm5WYWx1ZSA9ICFyZXR1cm5WYWx1ZS5J
c0VtcHR5KCkgJiYgcmV0dXJuVmFsdWUtPklzQm9vbGVhbigpICYmIHJldHVyblZhbHVlLT5Cb29s
ZWFuVmFsdWUoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIGludm9rZUNhbGxiYWNr
VHJlYXRPbmx5RXhwbGljaXRGYWxzZUFzRmFsc2Uodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
Y2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBj
YWxsYmFja1JldHVyblZhbHVlKQoreworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXR1cm5W
YWx1ZTsKKyAgICBib29sIHJlc3VsdCA9IGludm9rZUNhbGxiYWNrSGVscGVyKGNhbGxiYWNrLCBh
cmdjLCBhcmd2LCByZXR1cm5WYWx1ZSk7CisgICAgY2FsbGJhY2tSZXR1cm5WYWx1ZSA9ICFyZXR1
cm5WYWx1ZS5Jc0VtcHR5KCkgJiYgKCFyZXR1cm5WYWx1ZS0+SXNCb29sZWFuKCkgfHwgcmV0dXJu
VmFsdWUtPkJvb2xlYW5WYWx1ZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bVZvaWRDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmgJKHJldmlzaW9uIDU0OTEwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAt
NjAsNiArNjAsNyBAQCBwcml2YXRlOgogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIGNhbGxiYWNrIGZh
aWxlZCAobnVsbCwgd3JvbmcgdHlwZSwgb3IgdGhyZXcgZXhjZXB0aW9uKS4KIGJvb2wgaW52b2tl
Q2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBjYWxsYmFja1JldHVyblZhbHVlKTsK
K2Jvb2wgaW52b2tlQ2FsbGJhY2tUcmVhdE9ubHlFeHBsaWNpdEZhbHNlQXNGYWxzZSh2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcmd2W10sIGJvb2wmIGNhbGxiYWNrUmV0dXJuVmFsdWUpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU0OTExKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDItMTcgIER1bWl0
cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAndW5kZWZpbmVkJyByZXR1cm4gdmFsdWVzIGZyb20g
c3RhdGVtZW50IGVycm9yIGNhbGxiYWNrcyBhcmUgbm90CisgICAgICAgIHRyZWF0ZWQgYXMgJ3Ry
dWUnLiBGaXggdGhlIHRlc3RzIHRoYXQgZGlkIG5vdCB1c2UgdGhpcworICAgICAgICBhc3N1bXB0
aW9uLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NTA0OAorCisgICAgICAgICogc3RvcmFnZS9kYXRhYmFzZS1sb2NrLWFmdGVyLXJlbG9hZC5odG1s
OgorICAgICAgICAqIHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1yZWFkb25seS5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2Uvc3RhdGVtZW50LWVycm9yLWNhbGxiYWNrLmh0bWw6CisgICAgICAgICog
c3RvcmFnZS9zdGF0ZW1lbnQtZXJyb3ItY2FsbGJhY2stZXhwZWN0ZWQudHh0OgorCiAyMDEwLTAy
LTE3ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9kYXRh
YmFzZS1sb2NrLWFmdGVyLXJlbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0
b3JhZ2UvZGF0YWJhc2UtbG9jay1hZnRlci1yZWxvYWQuaHRtbAkocmV2aXNpb24gNTQ5MTApCisr
KyBMYXlvdXRUZXN0cy9zdG9yYWdlL2RhdGFiYXNlLWxvY2stYWZ0ZXItcmVsb2FkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rpb24gYWRkRGF0YShkYikKICAgICAg
ICAgLy8gSW5zZXJ0IGEgbGFyZ2UgYW1vdW50IG9mIGRhdGEgdGhhdCB3aWxsIHRha2UgYSBsaXR0
bGUgd2hpbGUgdG8gcnVuLiBTY2hlZHVsZSBhIHRpbW91dCB0byBydW4gdGhhdCB3aWxsIGxvYWQg
YSBuZXcgcGFnZQogICAgICAgICAvLyB3aGlsc3QgdGhlIHRyYW5zYWN0aW9uIGlzIHN0aWxsIGlu
IHByb2dyZXNzLCBpbnRlcnJ1cHRpbmcgdGhlIHRyYW5zYWN0aW9uLiBUaGlzIHNob3VsZCBub3Qg
bGVhdmUgdGhlIGRhdGFiYXNlIGxvY2tlZCBhbmQgb24KICAgICAgICAgLy8gdGhlIG5leHQgcGFn
ZSB3ZSBzaG91bGQgYmUgYWJsZSB0byBpbnNlcnQgc29tZSBtb3JlIGRhdGEuCi0gICAgICAgIHR4
LmV4ZWN1dGVTcWwoIklOU0VSVCBJTlRPIERhdGFUZXN0ICh0ZXN0RGF0YSkgVkFMVUVTIChyYW5k
b21CbG9iKDUyNDIwMCApKSIsIFtdLCBmdW5jdGlvbih0eCwgcmVzdWx0KSB7IH0sIGVycm9yRnVu
Y3Rpb24pOworICAgICAgICB0eC5leGVjdXRlU3FsKCJJTlNFUlQgSU5UTyBEYXRhVGVzdCAodGVz
dERhdGEpIFZBTFVFUyAoWkVST0JMT0IoNTI0MjAwKSkiLCBbXSwgZnVuY3Rpb24odHgsIHJlc3Vs
dCkgeyB9LCBlcnJvckZ1bmN0aW9uKTsKICAgICAgICAgbG9jYXRpb24uaHJlZiA9ICIuL3Jlc291
cmNlcy9kYXRhYmFzZS1sb2NrLWFmdGVyLXJlbG9hZC0yLmh0bWwiOwogICAgIH0sIGVycm9yRnVu
Y3Rpb24sIGZ1bmN0aW9uKCkgeyAKICAgICAgICAgZmluaXNoVGVzdCgpOwpJbmRleDogTGF5b3V0
VGVzdHMvc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLXJlYWRvbmx5Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLXJlYWRvbmx5Lmh0bWwJKHJl
dmlzaW9uIDU0OTEwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS9wcml2YXRlLWJyb3dzaW5nLXJl
YWRvbmx5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgZnVuY3Rpb24gcHJp
dmF0ZUJyb3dzaW5nRXJyb3JGdW5jdGlvbih0eAogewogICAgICsrY29tcGxldGVkOwogICAgIHdy
aXRlTWVzc2FnZVRvTG9nKCJQcml2YXRlIGJyb3dzaW5nIHN0YXRlbWVudCAiICsgY29tcGxldGVk
ICsgIiBjb21wbGV0ZWQgd2l0aCBhbiBlcnJvclxuIiArIGVycm9yLm1lc3NhZ2UpOworICAgIHJl
dHVybiBmYWxzZTsKIH0KIAogZnVuY3Rpb24gcnVuU2V0dXAodHJhbnNhY3Rpb24pCkluZGV4OiBM
YXlvdXRUZXN0cy9zdG9yYWdlL3N0YXRlbWVudC1lcnJvci1jYWxsYmFjay1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9zdGF0ZW1lbnQtZXJyb3ItY2FsbGJh
Y2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1NDkxMCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2Uv
c3RhdGVtZW50LWVycm9yLWNhbGxiYWNrLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDEwIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogRXhjZXB0aW9uIGluIFN0YXRl
bWVudCBlcnJvciBjYWxsYmFjawotVGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgaWYgdGhlIHN0YXRl
bWVudCBlcnJvciBjYWxsYmFjayByZXR1cm5zIHRydWUgb3IgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3
ZSBkbyBub3QgZXhlY3V0ZSBhbnkgZnVydGhlciBzdGF0ZW1lbnRzIGluIHRoYXQgdHJhbnNhY3Rp
b24gYW5kIGluc3RlYWQgZXhlY3V0ZSB0aGUgdHJhbnNhY3Rpb24gZXJyb3IgY2FsbGJhY2sgaW1t
ZWRpYXRlbHkuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogRXhjZXB0aW9uIGluIHN0YXRlbWVu
dCBlcnJvciBjYWxsYmFjaworVGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgYSB0cmFuc2FjdGlvbiBp
cyBpbW1lZGlhdGVseSByb2xsZWQgYmFjayBpZiBhbmQgb25seSBpZiBhIHN0YXRlbWVudCdzIGVy
cm9yIGNhbGxiYWNrIHRocm93cyBhbiBleGNlcHRpb24sIHJldHVybnMgdHJ1ZSwgb3IgZG9lc24n
dCByZXR1cm4gYW55IHZhbHVlLgorUEFTUyAtIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFj
ayB3YXMgaW52b2tlZC4KK1BBU1MgLSB0aGUgdHJhbnNhY3Rpb24gZXJyb3IgY2FsbGJhY2sgd2Fz
IGludm9rZWQuCitQQVNTIC0gdGhlIHRyYW5zYWN0aW9uIGVycm9yIGNhbGxiYWNrIHdhcyBpbnZv
a2VkLgorUEFTUyAtIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjayB3YXMgaW52b2tlZC4K
K1BBU1MgLSB0aGUgdHJhbnNhY3Rpb24gZXJyb3IgY2FsbGJhY2sgd2FzIGludm9rZWQuCiBQQVNT
IC0gdGhlIHRyYW5zYWN0aW9uIGVycm9yIGNhbGxiYWNrIHdhcyBpbnZva2VkLgogUEFTUyAtIHRo
ZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjayB3YXMgaW52b2tlZC4KIFRlc3QgQ29tcGxldGUK
SW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2Uvc3RhdGVtZW50LWVycm9yLWNhbGxiYWNrLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9zdGF0ZW1lbnQtZXJyb3ItY2FsbGJh
Y2suaHRtbAkocmV2aXNpb24gNTQ5MTApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL3N0YXRlbWVu
dC1lcnJvci1jYWxsYmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw3ICsxNSw4IEBAIGZ1
bmN0aW9uIGZpbmlzaFRlc3QoKQogfQogCiB2YXIgdHhDYWxsYmFja0NvdW50ID0gMDsKLXZhciBO
VU1CRVJfT0ZfVFJBTlNBQ1RJT05TID0gMjsKK3ZhciBOVU1CRVJfT0ZfVFJBTlNBQ1RJT05TID0g
NzsKK3ZhciBkYXRhYmFzZTsKIAogZnVuY3Rpb24gdHJhbnNhY3Rpb25FcnJvckZ1bmN0aW9uKGVy
cm9yKQogewpAQCAtMzEsNiArMzIsMjIgQEAgZnVuY3Rpb24gdHJhbnNhY3Rpb25TdWNjZXNzRnVu
Y3Rpb24obWVzcwogICAgICAgICBmaW5pc2hUZXN0KCk7CiB9CiAKK2Z1bmN0aW9uIHJ1blRyYW5z
YWN0aW9uRXhwZWN0ZWRUb0ZhaWwoc3RhdGVtZW50RXJyb3JDYWxsYmFjaykKK3sKKyAgICBkYXRh
YmFzZS50cmFuc2FjdGlvbihmdW5jdGlvbih0eCkgeworICAgICAgICB0eC5leGVjdXRlU3FsKCJD
UkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNrVGVzdCAocmFu
ZG9tRGF0YSkiKTsKKyAgICAgICAgdHguZXhlY3V0ZVNxbCgiSU5TRVJUIElOVE8gU3RhdGVtZW50
RXJyb3JDYWxsYmFja1Rlc3QgKHJhbmRvbURhdGEpIFZBTFVFUyAoPykiLCBbJ3Rlc3QnXSk7Cisg
ICAgICAgIHR4LmV4ZWN1dGVTcWwoIlRISVMgU1RBVEVNRU5UIFdJTEwgRkFJTCIsIFtdLAorICAg
ICAgICAgICAgZnVuY3Rpb24odHgsIGRhdGEpIHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUwg
LSB0aGlzIHN0YXRlbWVudCBzaG91bGQgaGF2ZSBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICBm
aW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9LCBzdGF0ZW1lbnRFcnJvckNhbGxiYWNrKTsKKyAg
ICAgICAgdHguZXhlY3V0ZVNxbCgiSU5TRVJUIElOVE8gU3RhdGVtZW50RXJyb3JDYWxsYmFja1Rl
c3QgKHJhbmRvbURhdGEpIFZBTFVFUyAoPykiLCBbJ3Rlc3QxJ10sCisgICAgICAgICAgICBmdW5j
dGlvbihlcnJvcikgeyBsb2coIkZBSUwgLSBUaGlzIHN0YXRlbWVudCBzaG91bGQgbm90IGhhdmUg
YmVlbiBleGVjdXRlZCIpOyB9LAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGxvZygiRkFJTCAt
IFRoaXMgc3RhdGVtZW50IHNob3VsZCBub3QgaGF2ZSBiZWVuIGV4ZWN1dGVkIik7IH0pOworICAg
IH0sIHRyYW5zYWN0aW9uRXJyb3JGdW5jdGlvbiwgdHJhbnNhY3Rpb25TdWNjZXNzRnVuY3Rpb24p
OworfQorCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CkBAIC0zOCwyOSArNTUsMzYgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KLSAgICAKLSAgICB2YXIgZGF0YWJh
c2UgPSBvcGVuRGF0YWJhc2UoImJ1Zy0yODg3MiIsICIxLjAiLCAic3RhdGVtZW50IGVycm9yIGNh
bGxiYWNrIHRlc3QiLCAxMDI0KTsKLSAgICAKLSAgICBkYXRhYmFzZS50cmFuc2FjdGlvbihmdW5j
dGlvbih0eCkgewotICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiQ1JFQVRFIFRBQkxFIElGIE5P
VCBFWElTVFMgU3RhdGVtZW50RXJyb3JDYWxsYmFja1Rlc3QgKHJhbmRvbURhdGEpIik7Ci0gICAg
ICAgICAgICB0eC5leGVjdXRlU3FsKCJJTlNFUlQgSU5UTyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNr
VGVzdCAocmFuZG9tRGF0YSkgVkFMVUVTICg/KSIsIFsndGVzdCddKTsKLSAgICAgICAgICAgIHR4
LmV4ZWN1dGVTcWwoIlRISVMgU1RBVEVNRU5UIFdJTEwgRkFJTCIsIFtdLCBmdW5jdGlvbihtZXNz
YWdlKSB7IGxvZygiRkFJTCAtIHRoaXMgc3RhdGVtZW50IHNob3VsZCBoYXZlIGZhaWxlZCIpOyBm
aW5pc2hUZXN0KCk7IH0sIGZ1bmN0aW9uKGVycm9yKSB7IHJldHVybiB0cnVlOyB9KTsKLSAgICAg
ICAgICAgIHR4LmV4ZWN1dGVTcWwoIklOU0VSVCBJTlRPIFN0YXRlbWVudEVycm9yQ2FsbGJhY2tU
ZXN0IChyYW5kb21EYXRhKSBWQUxVRVMgKD8pIiwgWyd0ZXN0MSddLCBmdW5jdGlvbihtZXNzYWdl
KSB7IGxvZygiRkFJTCAtIFRoaXMgc3RhdGVtZW50IHNob3VsZCBub3QgaGF2ZSBiZWVuIGV4ZWN1
dGVkIik7IH0sIGZ1bmN0aW9uKG1lc3NhZ2UpIHsgbG9nKCJGQUlMIC0gVGhpcyBzdGF0ZW1lbnQg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gZXhlY3V0ZWQiKTsgfSk7Ci0gICAgICAgIH0sIHRyYW5zYWN0
aW9uRXJyb3JGdW5jdGlvbiwgdHJhbnNhY3Rpb25TdWNjZXNzRnVuY3Rpb24pOwogCi0gICAgZGF0
YWJhc2UudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsgICAgICAgIAorICAgIGRhdGFiYXNlID0g
b3BlbkRhdGFiYXNlKCJidWctMjg4NzIiLCAiMS4wIiwgInN0YXRlbWVudCBlcnJvciBjYWxsYmFj
ayB0ZXN0IiwgMTAyNCk7CisgICAgZGF0YWJhc2UudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsK
ICAgICAgICAgdHguZXhlY3V0ZVNxbCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgU3RhdGVt
ZW50RXJyb3JDYWxsYmFja1Rlc3QgKHJhbmRvbURhdGEpIik7Ci0gICAgICAgICAgICB0eC5leGVj
dXRlU3FsKCJJTlNFUlQgSU5UTyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNrVGVzdCAocmFuZG9tRGF0
YSkgVkFMVUVTICg/KSIsIFsndGVzdCddKTsKLSAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIlRI
SVMgU1RBVEVNRU5UIFdJTEwgRkFJTCIsIFtdLCBmdW5jdGlvbihtZXNzYWdlKSB7IGxvZygiRkFJ
TCAtIHRoaXMgc3RhdGVtZW50IHNob3VsZCBoYXZlIGZhaWxlZCIpOyBmaW5pc2hUZXN0KCk7IH0s
IGZ1bmN0aW9uKGVycm9yKSB7IHRocm93ICJFeGNlcHRpb24gaW4gU3RhdGVtZW50IGVycm9yIGNh
bGxiYWNrIjsgcmV0dXJuIGZhbHNlOyB9KTsKLSAgICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIklO
U0VSVCBJTlRPIFN0YXRlbWVudEVycm9yQ2FsbGJhY2tUZXN0IChyYW5kb21EYXRhKSBWQUxVRVMg
KD8pIiwgWyd0ZXN0MSddLCBmdW5jdGlvbihtZXNzYWdlKSB7IGxvZygiRkFJTCAtIFRoaXMgc3Rh
dGVtZW50IHNob3VsZCBub3QgaGF2ZSBiZWVuIGV4ZWN1dGVkIik7IH0sIGZ1bmN0aW9uKG1lc3Nh
Z2UpIHsgbG9nKCJGQUlMIC0gVGhpcyBzdGF0ZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGJlZW4gZXhl
Y3V0ZWQiKTsgfSk7Ci0gICAgICAgIH0sIHRyYW5zYWN0aW9uRXJyb3JGdW5jdGlvbiwgdHJhbnNh
Y3Rpb25TdWNjZXNzRnVuY3Rpb24pOworICAgICAgICB0eC5leGVjdXRlU3FsKCJJTlNFUlQgSU5U
TyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNrVGVzdCAocmFuZG9tRGF0YSkgVkFMVUVTICg/KSIsIFsn
dGVzdCddKTsKKyAgICAgICAgdHguZXhlY3V0ZVNxbCgiVEhJUyBTVEFURU1FTlQgV0lMTCBGQUlM
IiwgW10sCisgICAgICAgICAgICBmdW5jdGlvbih0eCwgZGF0YSkgeworICAgICAgICAgICAgICAg
IGxvZygiRkFJTCAtIHRoaXMgc3RhdGVtZW50IHNob3VsZCBoYXZlIGZhaWxlZCIpOworICAgICAg
ICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0sIGZ1bmN0aW9uKHR4LCBlcnJv
cikgeyByZXR1cm4gZmFsc2U7IH0pOworICAgICAgICB0eC5leGVjdXRlU3FsKCJJTlNFUlQgSU5U
TyBTdGF0ZW1lbnRFcnJvckNhbGxiYWNrVGVzdCAocmFuZG9tRGF0YSkgVkFMVUVTICg/KSIsIFsn
dGVzdDEnXSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKHR4LCBkYXRhKSB7IH0sCisgICAgICAgICAg
ICBmdW5jdGlvbih0eCwgZXJyb3IpIHsgbG9nKCJGQUlMIC0gVGhpcyBzdGF0ZW1lbnQgc2hvdWxk
IG5vdCBoYXZlIGNhdXNlZCBhbiBlcnJvciIpOyB9KTsKKyAgICB9LCBmdW5jdGlvbihlcnJvcikg
eyBsb2coIkZBSUwgLSBUaGUgdHJhbnNhY3Rpb24gZXJyb3IgY2FsbGJhY2sgc2hvdWxkIG5vdCBo
YXZlIGJlZW4gaW52b2tlZCIpOyB9LAorICAgIGZ1bmN0aW9uKCkgeyB9KTsKKworICAgIHJ1blRy
YW5zYWN0aW9uRXhwZWN0ZWRUb0ZhaWwoZnVuY3Rpb24oZXJyb3IpIHsgcmV0dXJuIHRydWU7IH0p
OworICAgIHJ1blRyYW5zYWN0aW9uRXhwZWN0ZWRUb0ZhaWwoZnVuY3Rpb24oZXJyb3IpIHsgdGhy
b3cgIkV4Y2VwdGlvbiBpbiBzdGF0ZW1lbnQgZXJyb3IgY2FsbGJhY2siOyByZXR1cm4gZmFsc2U7
IH0pOworICAgIHJ1blRyYW5zYWN0aW9uRXhwZWN0ZWRUb0ZhaWwoZnVuY3Rpb24oZXJyb3IpIHt9
KTsKKyAgICBydW5UcmFuc2FjdGlvbkV4cGVjdGVkVG9GYWlsKGZ1bmN0aW9uKGVycm9yKSB7IHJl
dHVybiBudWxsOyB9KTsKKyAgICBydW5UcmFuc2FjdGlvbkV4cGVjdGVkVG9GYWlsKGZ1bmN0aW9u
KGVycm9yKSB7IHJldHVybiAic29tZSBzdHJpbmciOyB9KTsKKyAgICBydW5UcmFuc2FjdGlvbkV4
cGVjdGVkVG9GYWlsKGZ1bmN0aW9uKGVycm9yKSB7IHJldHVybiAxMjM0OyB9KTsKKyAgICBydW5U
cmFuc2FjdGlvbkV4cGVjdGVkVG9GYWlsKGZ1bmN0aW9uKGVycm9yKSB7IHJldHVybiB7YTogMiwg
YjogImFiYyJ9OyB9KTsKIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKIDxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KLVRoaXMgdGVzdCBjb25maXJtcyB0aGF0IGlmIHRoZSBzdGF0ZW1lbnQgZXJy
b3IgY2FsbGJhY2sgcmV0dXJucyB0cnVlIG9yIHRocm93cyBhbiBleGNlcHRpb24gd2UgZG8gbm90
IGV4ZWN1dGUgYW55IGZ1cnRoZXIgc3RhdGVtZW50cyBpbiB0aGF0IHRyYW5zYWN0aW9uIGFuZCBp
bnN0ZWFkIGV4ZWN1dGUgdGhlIHRyYW5zYWN0aW9uIGVycm9yIGNhbGxiYWNrIGltbWVkaWF0ZWx5
LgorVGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgYSB0cmFuc2FjdGlvbiBpcyBpbW1lZGlhdGVseSBy
b2xsZWQgYmFjayBpZiBhbmQgb25seSBpZiBhIHN0YXRlbWVudCdzIGVycm9yIGNhbGxiYWNrIHRo
cm93cyBhbiBleGNlcHRpb24sIHJldHVybnMgdHJ1ZSwgb3IgZG9lc24ndCByZXR1cm4gYW55IHZh
bHVlLgogPHByZSBpZD0iY29uc29sZSI+CiA8L3ByZT4KIDwvYm9keT4K
</data>
<flag name="review"
          id="31700"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="31701"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
      

    </bug>

</bugzilla>