<?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>36694</bug_id>
          
          <creation_ts>2010-03-27 00:24:48 -0700</creation_ts>
          <short_desc>Make XSSAuditor go fast with large POST data</short_desc>
          <delta_ts>2010-04-02 02:01:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://webblaze.org/abarth/tests/slow-filter/webkit-test-5.php</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="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204949</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-27 00:24:48 -0700</bug_when>
    <thetext>This bug is a followup to https://bugs.webkit.org/show_bug.cgi?id=35373.  In that bug, we got within a factor of four of the auditor-disabled speed.  In this bug, we&apos;re going do a lot better in this benchmark.

I&apos;ve hosted the benchmark here for convenience:
http://webblaze.org/abarth/tests/slow-filter/webkit-test-5.php</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204951</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-27 00:25:46 -0700</bug_when>
    <thetext>I hate git.  I just deleted all my work.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204952</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-27 00:28:27 -0700</bug_when>
    <thetext>TextMate, however, is awesome and recovered all my code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204954</commentid>
    <comment_count>3</comment_count>
      <attachid>51817</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-27 00:37:43 -0700</bug_when>
    <thetext>Created attachment 51817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204955</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-27 00:39:43 -0700</bug_when>
    <thetext>Attachment 51817 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/page/XSSAuditor.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204956</commentid>
    <comment_count>5</comment_count>
      <attachid>51817</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-27 00:43:57 -0700</bug_when>
    <thetext>Comment on attachment 51817
Patch

Will fix some nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204960</commentid>
    <comment_count>6</comment_count>
      <attachid>51818</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-27 01:04:56 -0700</bug_when>
    <thetext>Created attachment 51818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204961</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-27 01:07:52 -0700</bug_when>
    <thetext>Here are some run times for that benchmark:

XSSAuditor enabled:
1562
1531
1652

XSSAuditor disabled:
1525
1538
1571

I ran it a bunch more times, and anecdotally the benchmark seemed to have higher variance than these number.  However, I didn&apos;t keep records, so it&apos;s hard to draw conclusions.

In any case, the overhead is much smaller (even in this pathological case) using the suffix tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204962</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-27 01:10:21 -0700</bug_when>
    <thetext>Attachment 51818 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/page/XSSAuditor.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207676</commentid>
    <comment_count>9</comment_count>
      <attachid>51818</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-01 22:32:57 -0700</bug_when>
    <thetext>Comment on attachment 51818
Patch

I would suggest adding SuffixTree to the Xcode project code for consistency with the changes to the other projects files even though the Mac EWS does not report any issues.

Looks good to me.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207775</commentid>
    <comment_count>10</comment_count>
      <attachid>52398</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 00:36:45 -0700</bug_when>
    <thetext>Created attachment 52398
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207814</commentid>
    <comment_count>11</comment_count>
      <attachid>52398</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-02 02:00:59 -0700</bug_when>
    <thetext>Comment on attachment 52398
Patch for landing

Clearing flags on attachment: 52398

Committed r56991: &lt;http://trac.webkit.org/changeset/56991&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207815</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-02 02:01:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51817</attachid>
            <date>2010-03-27 00:37:43 -0700</date>
            <delta_ts>2010-03-27 01:04:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36694-20100327003742.patch</filename>
            <type>text/plain</type>
            <size>12814</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDliM2VmMi4uMzc2NWJlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0wMy0yNyAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgWFNTQXVkaXRvciBnbyBmYXN0IHdpdGggbGFyZ2UgUE9TVCBkYXRh
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjY5NAor
CisgICAgICAgIFRoZXJlIHdlcmUgdHdvIHRoaW5ncyBzbG93aW5nIGRvd24gdGhpcyBiZWNobWFy
azoKKworICAgICAgICAxKSBTZWFyY2hpbmcgdGhlIGxhcmdlIFBPU1QgZGF0YSBmb3IgZWFjaCBp
bmxpbmUgZXZlbnQgaGFuZGxlci4gIFRvCisgICAgICAgICAgIG1ha2UgdGhpcyBmYXN0ZXIsIHdl
IG5vdyB1c2UgYSBzdWZmaXggdHJlZSB0byBmYXN0LXJlamVjdCBzdHJpbmdzCisgICAgICAgICAg
IHRoYXQgZG9uJ3QgYXBwZWFyIGFzIHN1YnN0cmluZ3Mgb2YgdGhlIFBPU1QgZGF0YS4KKworICAg
ICAgICAyKSBUaGUgbmV4dCBsYXJnZXN0IGNvc3Qgd2FzIGZsYXR0ZW5pbmcgdGhlIGZvcm0gZGF0
YSBpbnRvIGEgc3RyaW5nLgorICAgICAgICAgICBUbyBtYWtlIHRoaXMgZmF0ZXIsIHdlIG5vdyB1
c2UgdGhlIGZvcm0gZGF0YSBvYmplY3QgaXRzZWxmIGFzIGEga2V5CisgICAgICAgICAgIGFuZCBv
bmx5IGZsYXR0ZW4gb25jZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVk
aXRvcjo6Q2FjaGluZ1VSTENhbm9uaWNhbGl6ZXI6OmNhbm9uaWNhbGl6ZVVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpYU1NBdWRpdG9yOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcjo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6WFNTQXVkaXRvcik6CisgICAgICAgIChXZWJD
b3JlOjpYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KToKKyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OkNhY2hpbmdVUkxDYW5vbmljYWxp
emVyOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRp
dG9yOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcjo6Z2VuZXJhdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9TdWZmaXhUcmVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VW5pY29k
ZUNvZGVib29rOjpjb2RlV29yZCk6CisgICAgICAgIChXZWJDb3JlOjpVbmljb2RlQ29kZWJvb2s6
Oik6CisgICAgICAgIChXZWJDb3JlOjpBU0NJSUNvZGVib29rOjpjb2RlV29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpBU0NJSUNvZGVib29rOjopOgorICAgICAgICAoV2ViQ29yZTo6U3VmZml4VHJl
ZTo6U3VmZml4VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWZmaXhUcmVlOjptaWdodENvbnRh
aW4pOgorICAgICAgICAoV2ViQ29yZTo6U3VmZml4VHJlZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdWZmaXhUcmVlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dWZmaXhUcmVlOjpOb2RlOjphdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWZmaXhUcmVlOjpidWls
ZCk6CisKIDIwMTAtMDMtMjYgIEp1c3RpbiBTY2h1aCAgPGpzY2h1aEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDUxNzMwYmQuLmFiN2Ni
NWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtMTcyMCw2ICsxNzIwLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSGFzaC5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvU3RyaW5nSW1wbC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBsLmgg
XAorCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdWZmaXhUcmVlLmggXAogCVdlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Qm91bmRhcmllcy5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJv
dW5kYXJpZXMuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDk3NDZiNDYuLmJlZjFiNDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzA3LDYgKzI3MDcsNyBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL3RleHQvU3RyaW5nSGFzaC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS90ZXh0L1N0cmluZ0ltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1N0
cmluZ0ltcGwuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TdWZmaXhUcmVlLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCAyYWQ0YjU2Li40ODQ1NGQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTI1NjgwLDYgKzI1NjgwLDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFN1ZmZp
eFRyZWUuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTdHJpbmdUcnVuY2F0b3IuY3BwIg0KIAkJCQkJ
Pg0KIAkJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3Bw
IGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCmluZGV4IDA5NGYyMDAuLmViZDRjNjAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uv
WFNTQXVkaXRvci5jcHAKQEAgLTcwLDYgKzcwLDE2IEBAIHN0YXRpYyBib29sIGlzSWxsZWdhbFVS
SUNoYXJhY3RlcihVQ2hhciBjKQogICAgIHJldHVybiAoYyA9PSAnXCcnIHx8IGMgPT0gJyInIHx8
IGMgPT0gJzwnIHx8IGMgPT0gJz4nKTsKIH0KIAorU3RyaW5nIFhTU0F1ZGl0b3I6OkNhY2hpbmdV
UkxDYW5vbmljYWxpemVyOjpjYW5vbmljYWxpemVVUkwoRm9ybURhdGEqIGZvcm1EYXRhLCBjb25z
dCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGRlY29kZUVudGl0aWVzLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UpCit7CisgICAgaWYgKGRlY29kZUVudGl0aWVz
ID09IG1fZGVjb2RlRW50aXRpZXMgJiYgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UgPT0g
bV9kZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSAKKyAgICAgICAgJiYgZW5jb2RpbmcgPT0g
bV9lbmNvZGluZyAmJiBmb3JtRGF0YSA9PSBtX2Zvcm1EYXRhKQorICAgICAgICByZXR1cm4gbV9j
YWNoZWRDYW5vbmljYWxpemVkVVJMOworICAgIG1fZm9ybURhdGEgPSBmb3JtRGF0YTsKKyAgICBy
ZXR1cm4gY2Fub25pY2FsaXplVVJMKGZvcm1EYXRhLT5mbGF0dGVuVG9TdHJpbmcoKSwgZW5jb2Rp
bmcsIGRlY29kZUVudGl0aWVzLCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSk7Cit9CisK
IFN0cmluZyBYU1NBdWRpdG9yOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcjo6Y2Fub25pY2FsaXpl
VVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29s
IGRlY29kZUVudGl0aWVzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2Up
CiB7CkBAIC04MiwxMSArOTIsMTkgQEAgU3RyaW5nIFhTU0F1ZGl0b3I6OkNhY2hpbmdVUkxDYW5v
bmljYWxpemVyOjpjYW5vbmljYWxpemVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGMKICAgICBtX2Vu
Y29kaW5nID0gZW5jb2Rpbmc7CiAgICAgbV9kZWNvZGVFbnRpdGllcyA9IGRlY29kZUVudGl0aWVz
OwogICAgIG1fZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UgPSBkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXNUd2ljZTsKKyAgICArK21fZ2VuZXJhdGlvbjsKICAgICByZXR1cm4gbV9jYWNoZWRD
YW5vbmljYWxpemVkVVJMOwogfQogCit2b2lkIFhTU0F1ZGl0b3I6OkNhY2hpbmdVUkxDYW5vbmlj
YWxpemVyOjpjbGVhcigpCit7CisgICAgbV9mb3JtRGF0YS5jbGVhcigpOworICAgIG1faW5wdXRV
UkwgPSBTdHJpbmcoKTsKK30KKwogWFNTQXVkaXRvcjo6WFNTQXVkaXRvcihGcmFtZSogZnJhbWUp
CiAgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9nZW5lcmF0aW9uT2ZTdWZmaXhUcmVlKC0x
KQogewogfQogCkBAIC0zNDgsNiArMzY2LDEyIEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVx
dWVzdChGcmFtZSogZnJhbWUsIGNvbnN0IEZpbmRUYXNrJiB0YXNrKSBjb25zdAogICAgIGNvbnN0
IGJvb2wgaGFzRm9ybURhdGEgPSBmb3JtRGF0YU9iaiAmJiAhZm9ybURhdGFPYmotPmlzRW1wdHko
KTsKICAgICBTdHJpbmcgcGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmco
KTsKIAorICAgIGlmICghaGFzRm9ybURhdGEpIHsKKyAgICAgICAgLy8gV2UgY2xlYXIgb3V0IG91
ciBmb3JtIGRhdGEgY2FjaGVzLCBpbiBjYXNlIHdlJ3JlIGhvbGRpbmcgb250byBhIGJ1bmNoIG9m
IG1lbW9yeS4KKyAgICAgICAgbV9mb3JtRGF0YUNhY2hlLmNsZWFyKCk7CisgICAgICAgIG1fZm9y
bURhdGFTdWZmaXhUcmVlLmNsZWFyKCk7CisgICAgfQorCiAgICAgU3RyaW5nIGNhbm9uaWNhbGl6
ZWRTdHJpbmc7CiAgICAgaWYgKCFoYXNGb3JtRGF0YSAmJiB0YXNrLnN0cmluZy5sZW5ndGgoKSA+
IDIgKiBwYWdlVVJMLmxlbmd0aCgpKSB7CiAgICAgICAgIC8vIFE6IFdoeSBkbyB3ZSBib3RoZXIg
dG8gZG8gdGhpcyBjaGVjayBhdCBhbGw/CkBAIC0zODQsNyArNDA4LDE3IEBAIGJvb2wgWFNTQXVk
aXRvcjo6ZmluZEluUmVxdWVzdChGcmFtZSogZnJhbWUsIGNvbnN0IEZpbmRUYXNrJiB0YXNrKSBj
b25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gV2UndmUgZm91bmQgdGhlIHN0cmluZyBpbiB0
aGUgR0VUIGRhdGEuCiAKICAgICBpZiAoaGFzRm9ybURhdGEpIHsKLSAgICAgICAgU3RyaW5nIGRl
Y29kZWRGb3JtRGF0YSA9IG1fZm9ybURhdGFDYWNoZS5jYW5vbmljYWxpemVVUkwoZm9ybURhdGFP
YmotPmZsYXR0ZW5Ub1N0cmluZygpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNv
ZGluZygpLCB0YXNrLmRlY29kZUVudGl0aWVzLCB0YXNrLmRlY29kZVVSTEVzY2FwZVNlcXVlbmNl
c1R3aWNlKTsKKyAgICAgICAgU3RyaW5nIGRlY29kZWRGb3JtRGF0YSA9IG1fZm9ybURhdGFDYWNo
ZS5jYW5vbmljYWxpemVVUkwoZm9ybURhdGFPYmosIGZyYW1lLT5kb2N1bWVudCgpLT5kZWNvZGVy
KCktPmVuY29kaW5nKCksIHRhc2suZGVjb2RlRW50aXRpZXMsIHRhc2suZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzVHdpY2UpOworCisgICAgICAgIGlmIChtX2dlbmVyYXRpb25PZlN1ZmZpeFRyZWUg
IT0gbV9mb3JtRGF0YUNhY2hlLmdlbmVyYXRpb24oKSkgeworICAgICAgICAgICAgbV9mb3JtRGF0
YVN1ZmZpeFRyZWUgPSBuZXcgU3VmZml4VHJlZTxBU0NJSUNvZGVib29rPihkZWNvZGVkRm9ybURh
dGEsIDUpOworICAgICAgICAgICAgbV9nZW5lcmF0aW9uT2ZTdWZmaXhUcmVlID0gbV9mb3JtRGF0
YUNhY2hlLmdlbmVyYXRpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRyeSBhIGZhc3Qt
cmVqZWN0IHZpYSB0aGUgc3VmZml4VHJlZS4KKyAgICAgICAgaWYgKG1fZm9ybURhdGFTdWZmaXhU
cmVlLmdldCgpICYmICFtX2Zvcm1EYXRhU3VmZml4VHJlZS0+bWlnaHRDb250YWluKGNhbm9uaWNh
bGl6ZWRTdHJpbmcpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgICAgIGlmIChk
ZWNvZGVkRm9ybURhdGEuZmluZChjYW5vbmljYWxpemVkU3RyaW5nLCAwLCBmYWxzZSkgIT0gLTEp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gV2UgZm91bmQgdGhlIHN0cmluZyBpbiB0aGUg
UE9TVCBkYXRhLgogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgg
Yi9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oCmluZGV4IGE3NjI4ZjMuLmQyZjUyNWQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgKKysrIGIvV2ViQ29yZS9wYWdlL1hTU0F1
ZGl0b3IuaApAQCAtMjksMTAgKzI5LDEyIEBACiAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU3VmZml4VHJlZS5oIgogI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFz
cyBGb3JtRGF0YTsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBTY3JpcHRTb3VyY2VDb2Rl
OwogCkBAIC0xMDYsMTYgKzEwOCwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNs
YXNzIENhY2hpbmdVUkxDYW5vbmljYWxpemVyCiAgICAgICAgIHsKICAgICAgICAgcHVibGljOgot
ICAgICAgICAgICAgQ2FjaGluZ1VSTENhbm9uaWNhbGl6ZXIoKSA6IG1fZGVjb2RlRW50aXRpZXMo
ZmFsc2UpLCBtX2RlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlKGZhbHNlKSB7IH0KKyAgICAg
ICAgICAgIENhY2hpbmdVUkxDYW5vbmljYWxpemVyKCkgOiBtX2RlY29kZUVudGl0aWVzKGZhbHNl
KSwgbV9kZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZShmYWxzZSksIG1fZ2VuZXJhdGlvbigw
KSB7IH0KKyAgICAgICAgICAgIFN0cmluZyBjYW5vbmljYWxpemVVUkwoRm9ybURhdGEqLCBjb25z
dCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGRlY29kZUVudGl0aWVzLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNU
d2ljZSk7CiAgICAgICAgICAgICBTdHJpbmcgY2Fub25pY2FsaXplVVJMKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGRlY29kZUVudGl0aWVzLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXNUd2ljZSk7CiAKKyAgICAgICAgICAgIHZvaWQgY2xlYXIoKTsKKworICAgICAgICAg
ICAgaW50IGdlbmVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRpb247IH0KKwogICAg
ICAgICBwcml2YXRlOgogICAgICAgICAgICAgLy8gVGhlIHBhcmFtZXRlcnMgd2Ugd2VyZSBjYWxs
ZWQgd2l0aCBsYXN0LgogICAgICAgICAgICAgU3RyaW5nIG1faW5wdXRVUkw7CiAgICAgICAgICAg
ICBUZXh0RW5jb2RpbmcgbV9lbmNvZGluZzsKICAgICAgICAgICAgIGJvb2wgbV9kZWNvZGVFbnRp
dGllczsKICAgICAgICAgICAgIGJvb2wgbV9kZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZTsK
KyAgICAgICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9mb3JtRGF0YTsKKworICAgICAgICAgICAg
Ly8gSW5jcmVtZW50ZWQgZXZlcnkgdGltZSB3ZSBzZWUgYSBuZXcgVVJMLgorICAgICAgICAgICAg
aW50IG1fZ2VuZXJhdGlvbjsKIAogICAgICAgICAgICAgLy8gVGhlIGNhY2hlZCByZXN1bHQuCiAg
ICAgICAgICAgICBTdHJpbmcgbV9jYWNoZWRDYW5vbmljYWxpemVkVVJMOwpAQCAtMTU4LDYgKzE3
MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MzczCiAgICAgICAgIG11dGFibGUgQ2FjaGluZ1VSTENh
bm9uaWNhbGl6ZXIgbV9wYWdlVVJMQ2FjaGU7CiAgICAgICAgIG11dGFibGUgQ2FjaGluZ1VSTENh
bm9uaWNhbGl6ZXIgbV9mb3JtRGF0YUNhY2hlOworCisgICAgICAgIG11dGFibGUgT3duUHRyPFN1
ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4gPiBtX2Zvcm1EYXRhU3VmZml4VHJlZTsKKyAgICAgICAg
bXV0YWJsZSBpbnQgbV9nZW5lcmF0aW9uT2ZTdWZmaXhUcmVlOwogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdWZmaXhU
cmVlLmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3VmZml4VHJlZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjOTcxYmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvU3VmZml4VHJlZS5oCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFkYW0gQmFydGguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN1
ZmZpeFRyZWVfaAorI2RlZmluZSBTdWZmaXhUcmVlX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFVuaWNvZGVDb2RlYm9vayB7CitwdWJsaWM6CisgICAgc3RhdGljIGludCBjb2RlV29y
ZChVQ2hhciBjKSB7IHJldHVybiBjOyB9CisgICAgZW51bSB7IGNvZGVTaXplID0gMSA8PCA4ICog
c2l6ZW9mKFVDaGFyKSB9OworfTsKKworY2xhc3MgQVNDSUlDb2RlYm9vayB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGludCBjb2RlV29yZChVQ2hhciBjKSB7IHJldHVybiBjICYgKGNvZGVTaXplIC0g
MSk7IH0KKyAgICBlbnVtIHsgY29kZVNpemUgPSAxIDw8ICg4ICogc2l6ZW9mKGNoYXIpIC0gMSkg
fTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVib29rPgorY2xhc3MgU3VmZml4VHJlZSB7
CitwdWJsaWM6CisgICAgU3VmZml4VHJlZShjb25zdCBTdHJpbmcmIHRleHQsIHVuc2lnbmVkIGRl
cHRoKQorICAgICAgICA6IG1fZGVwdGgoZGVwdGgpCisgICAgICAgICwgbV9sZWFmKHRydWUpCisg
ICAgeworICAgICAgICBidWlsZCh0ZXh0KTsKKyAgICB9CisKKyAgICBib29sIG1pZ2h0Q29udGFp
bihjb25zdCBTdHJpbmcmIHF1ZXJ5KQorICAgIHsKKyAgICAgICAgTm9kZSogY3VycmVudCA9ICZt
X3Jvb3Q7CisgICAgICAgIGludCBsaW1pdCA9IHN0ZDo6bWluKG1fZGVwdGgsIHF1ZXJ5Lmxlbmd0
aCgpKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW1pdDsgKytpKSB7CisgICAgICAg
ICAgICBjdXJyZW50ID0gY3VycmVudC0+YXQoQ29kZWJvb2s6OmNvZGVXb3JkKHF1ZXJ5W2ldKSk7
CisgICAgICAgICAgICBpZiAoIWN1cnJlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBjbGFzcyBOb2RlOworICAgIHR5cGVkZWYgVmVjdG9yPE5vZGUqLCBDb2RlYm9vazo6Y29kZVNp
emU+IENoaWxkcmVuVmVjdG9yOworCisgICAgY2xhc3MgTm9kZSB7CisgICAgcHVibGljOgorICAg
ICAgICBOb2RlKGJvb2wgaXNMZWFmID0gZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
Y2hpbGRyZW4ucmVzaXplKENvZGVib29rOjpjb2RlU2l6ZSk7CisgICAgICAgICAgICBtX2NoaWxk
cmVuLmZpbGwoMCk7CisgICAgICAgICAgICBtX2lzTGVhZiA9IGlzTGVhZjsKKyAgICAgICAgfQor
CisgICAgICAgIH5Ob2RlKCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBOb2Rl
KiBjaGlsZCA9IG1fY2hpbGRyZW4uYXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkICYm
ICFjaGlsZC0+bV9pc0xlYWYpCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjaGlsZDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIE5vZGUqJiBhdChpbnQgY29kZVdvcmQp
IHsgcmV0dXJuIG1fY2hpbGRyZW4uYXQoY29kZVdvcmQpOyB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBDaGlsZHJlblZlY3RvciBtX2NoaWxkcmVuOworICAgICAgICBib29sIG1faXNMZWFmOwor
ICAgIH07CisKKyAgICB2b2lkIGJ1aWxkKGNvbnN0IFN0cmluZyYgdGV4dCkKKyAgICB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgYmFzZSA9IDA7IGJhc2UgPCB0ZXh0Lmxlbmd0aCgpOyArK2Jhc2Up
IHsKKyAgICAgICAgICAgIE5vZGUqIGN1cnJlbnQgPSAmbV9yb290OworICAgICAgICAgICAgdW5z
aWduZWQgbGltaXQgPSBzdGQ6Om1pbihiYXNlICsgbV9kZXB0aCwgdGV4dC5sZW5ndGgoKSk7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG9mZnNldCA9IDA7IGJhc2UgKyBvZmZzZXQgPCBsaW1p
dDsgKytvZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoY3VycmVudCAhPSAmbV9sZWFm
KTsKKyAgICAgICAgICAgICAgICBOb2RlKiYgY2hpbGQgPSBjdXJyZW50LT5hdChDb2RlYm9vazo6
Y29kZVdvcmQodGV4dFtiYXNlICsgb2Zmc2V0XSkpOworICAgICAgICAgICAgICAgIGlmICghY2hp
bGQpCisgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gYmFzZSArIG9mZnNldCA9PSBsaW1pdCA/
ICZtX2xlYWYgOiBuZXcgTm9kZSgpOworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjaGlsZDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIE5vZGUgbV9yb290OworICAg
IHVuc2lnbmVkIG1fZGVwdGg7CisKKyAgICAvLyBJbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBmcmVz
aCBlbXB0eSBsZWFmIG5vZGUgZm9yIGV2ZXIgbGVhZiBpbiB0aGUgdHJlZQorICAgIC8vICh0aGVy
ZSBjYW4gYmUgYSBsb3Qgb2YgdGhlc2UpLCB3ZSBhbGlhcyBhbGwgdGhlIGxlYXZlcyB0byB0aGlz
ICJzdGF0aWMiCisgICAgLy8gbGVhZiBub2RlLgorICAgIE5vZGUgbV9sZWFmOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU3VmZml4VHJlZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51818</attachid>
            <date>2010-03-27 01:04:56 -0700</date>
            <delta_ts>2010-04-02 00:36:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36694-20100327010455.patch</filename>
            <type>text/plain</type>
            <size>12799</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDliM2VmMi4uMzc2NWJlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0wMy0yNyAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgWFNTQXVkaXRvciBnbyBmYXN0IHdpdGggbGFyZ2UgUE9TVCBkYXRh
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjY5NAor
CisgICAgICAgIFRoZXJlIHdlcmUgdHdvIHRoaW5ncyBzbG93aW5nIGRvd24gdGhpcyBiZWNobWFy
azoKKworICAgICAgICAxKSBTZWFyY2hpbmcgdGhlIGxhcmdlIFBPU1QgZGF0YSBmb3IgZWFjaCBp
bmxpbmUgZXZlbnQgaGFuZGxlci4gIFRvCisgICAgICAgICAgIG1ha2UgdGhpcyBmYXN0ZXIsIHdl
IG5vdyB1c2UgYSBzdWZmaXggdHJlZSB0byBmYXN0LXJlamVjdCBzdHJpbmdzCisgICAgICAgICAg
IHRoYXQgZG9uJ3QgYXBwZWFyIGFzIHN1YnN0cmluZ3Mgb2YgdGhlIFBPU1QgZGF0YS4KKworICAg
ICAgICAyKSBUaGUgbmV4dCBsYXJnZXN0IGNvc3Qgd2FzIGZsYXR0ZW5pbmcgdGhlIGZvcm0gZGF0
YSBpbnRvIGEgc3RyaW5nLgorICAgICAgICAgICBUbyBtYWtlIHRoaXMgZmF0ZXIsIHdlIG5vdyB1
c2UgdGhlIGZvcm0gZGF0YSBvYmplY3QgaXRzZWxmIGFzIGEga2V5CisgICAgICAgICAgIGFuZCBv
bmx5IGZsYXR0ZW4gb25jZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVk
aXRvcjo6Q2FjaGluZ1VSTENhbm9uaWNhbGl6ZXI6OmNhbm9uaWNhbGl6ZVVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpYU1NBdWRpdG9yOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcjo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6WFNTQXVkaXRvcik6CisgICAgICAgIChXZWJD
b3JlOjpYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KToKKyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OkNhY2hpbmdVUkxDYW5vbmljYWxp
emVyOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRp
dG9yOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcjo6Z2VuZXJhdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9TdWZmaXhUcmVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VW5pY29k
ZUNvZGVib29rOjpjb2RlV29yZCk6CisgICAgICAgIChXZWJDb3JlOjpVbmljb2RlQ29kZWJvb2s6
Oik6CisgICAgICAgIChXZWJDb3JlOjpBU0NJSUNvZGVib29rOjpjb2RlV29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpBU0NJSUNvZGVib29rOjopOgorICAgICAgICAoV2ViQ29yZTo6U3VmZml4VHJl
ZTo6U3VmZml4VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWZmaXhUcmVlOjptaWdodENvbnRh
aW4pOgorICAgICAgICAoV2ViQ29yZTo6U3VmZml4VHJlZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdWZmaXhUcmVlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dWZmaXhUcmVlOjpOb2RlOjphdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWZmaXhUcmVlOjpidWls
ZCk6CisKIDIwMTAtMDMtMjYgIEp1c3RpbiBTY2h1aCAgPGpzY2h1aEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDUxNzMwYmQuLmFiN2Ni
NWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtMTcyMCw2ICsxNzIwLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSGFzaC5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvU3RyaW5nSW1wbC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBsLmgg
XAorCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdWZmaXhUcmVlLmggXAogCVdlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Qm91bmRhcmllcy5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJv
dW5kYXJpZXMuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDk3NDZiNDYuLmJlZjFiNDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzA3LDYgKzI3MDcsNyBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL3RleHQvU3RyaW5nSGFzaC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS90ZXh0L1N0cmluZ0ltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1N0
cmluZ0ltcGwuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TdWZmaXhUcmVlLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCAyYWQ0YjU2Li40ODQ1NGQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTI1NjgwLDYgKzI1NjgwLDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFN1ZmZp
eFRyZWUuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTdHJpbmdUcnVuY2F0b3IuY3BwIg0KIAkJCQkJ
Pg0KIAkJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3Bw
IGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCmluZGV4IDA5NGYyMDAuLmU3MzI3NGQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uv
WFNTQXVkaXRvci5jcHAKQEAgLTcwLDYgKzcwLDE2IEBAIHN0YXRpYyBib29sIGlzSWxsZWdhbFVS
SUNoYXJhY3RlcihVQ2hhciBjKQogICAgIHJldHVybiAoYyA9PSAnXCcnIHx8IGMgPT0gJyInIHx8
IGMgPT0gJzwnIHx8IGMgPT0gJz4nKTsKIH0KIAorU3RyaW5nIFhTU0F1ZGl0b3I6OkNhY2hpbmdV
UkxDYW5vbmljYWxpemVyOjpjYW5vbmljYWxpemVVUkwoRm9ybURhdGEqIGZvcm1EYXRhLCBjb25z
dCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGRlY29kZUVudGl0aWVzLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UpCit7CisgICAgaWYgKGRlY29kZUVudGl0aWVz
ID09IG1fZGVjb2RlRW50aXRpZXMgJiYgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UgPT0g
bV9kZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSAKKyAgICAgICAgJiYgZW5jb2RpbmcgPT0g
bV9lbmNvZGluZyAmJiBmb3JtRGF0YSA9PSBtX2Zvcm1EYXRhKQorICAgICAgICByZXR1cm4gbV9j
YWNoZWRDYW5vbmljYWxpemVkVVJMOworICAgIG1fZm9ybURhdGEgPSBmb3JtRGF0YTsKKyAgICBy
ZXR1cm4gY2Fub25pY2FsaXplVVJMKGZvcm1EYXRhLT5mbGF0dGVuVG9TdHJpbmcoKSwgZW5jb2Rp
bmcsIGRlY29kZUVudGl0aWVzLCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSk7Cit9CisK
IFN0cmluZyBYU1NBdWRpdG9yOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcjo6Y2Fub25pY2FsaXpl
VVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29s
IGRlY29kZUVudGl0aWVzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2Up
CiB7CkBAIC04MiwxMSArOTIsMTkgQEAgU3RyaW5nIFhTU0F1ZGl0b3I6OkNhY2hpbmdVUkxDYW5v
bmljYWxpemVyOjpjYW5vbmljYWxpemVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGMKICAgICBtX2Vu
Y29kaW5nID0gZW5jb2Rpbmc7CiAgICAgbV9kZWNvZGVFbnRpdGllcyA9IGRlY29kZUVudGl0aWVz
OwogICAgIG1fZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UgPSBkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXNUd2ljZTsKKyAgICArK21fZ2VuZXJhdGlvbjsKICAgICByZXR1cm4gbV9jYWNoZWRD
YW5vbmljYWxpemVkVVJMOwogfQogCit2b2lkIFhTU0F1ZGl0b3I6OkNhY2hpbmdVUkxDYW5vbmlj
YWxpemVyOjpjbGVhcigpCit7CisgICAgbV9mb3JtRGF0YS5jbGVhcigpOworICAgIG1faW5wdXRV
UkwgPSBTdHJpbmcoKTsKK30KKwogWFNTQXVkaXRvcjo6WFNTQXVkaXRvcihGcmFtZSogZnJhbWUp
CiAgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9nZW5lcmF0aW9uT2ZTdWZmaXhUcmVlKC0x
KQogewogfQogCkBAIC0zNDgsNiArMzY2LDEyIEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVx
dWVzdChGcmFtZSogZnJhbWUsIGNvbnN0IEZpbmRUYXNrJiB0YXNrKSBjb25zdAogICAgIGNvbnN0
IGJvb2wgaGFzRm9ybURhdGEgPSBmb3JtRGF0YU9iaiAmJiAhZm9ybURhdGFPYmotPmlzRW1wdHko
KTsKICAgICBTdHJpbmcgcGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmco
KTsKIAorICAgIGlmICghaGFzRm9ybURhdGEpIHsKKyAgICAgICAgLy8gV2UgY2xlYXIgb3V0IG91
ciBmb3JtIGRhdGEgY2FjaGVzLCBpbiBjYXNlIHdlJ3JlIGhvbGRpbmcgb250byBhIGJ1bmNoIG9m
IG1lbW9yeS4KKyAgICAgICAgbV9mb3JtRGF0YUNhY2hlLmNsZWFyKCk7CisgICAgICAgIG1fZm9y
bURhdGFTdWZmaXhUcmVlLmNsZWFyKCk7CisgICAgfQorCiAgICAgU3RyaW5nIGNhbm9uaWNhbGl6
ZWRTdHJpbmc7CiAgICAgaWYgKCFoYXNGb3JtRGF0YSAmJiB0YXNrLnN0cmluZy5sZW5ndGgoKSA+
IDIgKiBwYWdlVVJMLmxlbmd0aCgpKSB7CiAgICAgICAgIC8vIFE6IFdoeSBkbyB3ZSBib3RoZXIg
dG8gZG8gdGhpcyBjaGVjayBhdCBhbGw/CkBAIC0zODQsNyArNDA4LDE3IEBAIGJvb2wgWFNTQXVk
aXRvcjo6ZmluZEluUmVxdWVzdChGcmFtZSogZnJhbWUsIGNvbnN0IEZpbmRUYXNrJiB0YXNrKSBj
b25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gV2UndmUgZm91bmQgdGhlIHN0cmluZyBpbiB0
aGUgR0VUIGRhdGEuCiAKICAgICBpZiAoaGFzRm9ybURhdGEpIHsKLSAgICAgICAgU3RyaW5nIGRl
Y29kZWRGb3JtRGF0YSA9IG1fZm9ybURhdGFDYWNoZS5jYW5vbmljYWxpemVVUkwoZm9ybURhdGFP
YmotPmZsYXR0ZW5Ub1N0cmluZygpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNv
ZGluZygpLCB0YXNrLmRlY29kZUVudGl0aWVzLCB0YXNrLmRlY29kZVVSTEVzY2FwZVNlcXVlbmNl
c1R3aWNlKTsKKyAgICAgICAgU3RyaW5nIGRlY29kZWRGb3JtRGF0YSA9IG1fZm9ybURhdGFDYWNo
ZS5jYW5vbmljYWxpemVVUkwoZm9ybURhdGFPYmosIGZyYW1lLT5kb2N1bWVudCgpLT5kZWNvZGVy
KCktPmVuY29kaW5nKCksIHRhc2suZGVjb2RlRW50aXRpZXMsIHRhc2suZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzVHdpY2UpOworCisgICAgICAgIGlmIChtX2dlbmVyYXRpb25PZlN1ZmZpeFRyZWUg
IT0gbV9mb3JtRGF0YUNhY2hlLmdlbmVyYXRpb24oKSkgeworICAgICAgICAgICAgbV9mb3JtRGF0
YVN1ZmZpeFRyZWUgPSBuZXcgU3VmZml4VHJlZTxBU0NJSUNvZGVib29rPihkZWNvZGVkRm9ybURh
dGEsIDUpOworICAgICAgICAgICAgbV9nZW5lcmF0aW9uT2ZTdWZmaXhUcmVlID0gbV9mb3JtRGF0
YUNhY2hlLmdlbmVyYXRpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRyeSBhIGZhc3Qt
cmVqZWN0IHZpYSB0aGUgc3VmZml4VHJlZS4KKyAgICAgICAgaWYgKG1fZm9ybURhdGFTdWZmaXhU
cmVlICYmICFtX2Zvcm1EYXRhU3VmZml4VHJlZS0+bWlnaHRDb250YWluKGNhbm9uaWNhbGl6ZWRT
dHJpbmcpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgICAgIGlmIChkZWNvZGVk
Rm9ybURhdGEuZmluZChjYW5vbmljYWxpemVkU3RyaW5nLCAwLCBmYWxzZSkgIT0gLTEpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gV2UgZm91bmQgdGhlIHN0cmluZyBpbiB0aGUgUE9TVCBk
YXRhLgogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmggYi9XZWJD
b3JlL3BhZ2UvWFNTQXVkaXRvci5oCmluZGV4IGE3NjI4ZjMuLmQyZjUyNWQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgKKysrIGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3Iu
aApAQCAtMjksMTAgKzI5LDEyIEBACiAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU3VmZml4VHJlZS5oIgogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBGb3Jt
RGF0YTsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogCkBA
IC0xMDYsMTYgKzEwOCwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIENh
Y2hpbmdVUkxDYW5vbmljYWxpemVyCiAgICAgICAgIHsKICAgICAgICAgcHVibGljOgotICAgICAg
ICAgICAgQ2FjaGluZ1VSTENhbm9uaWNhbGl6ZXIoKSA6IG1fZGVjb2RlRW50aXRpZXMoZmFsc2Up
LCBtX2RlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlKGZhbHNlKSB7IH0KKyAgICAgICAgICAg
IENhY2hpbmdVUkxDYW5vbmljYWxpemVyKCkgOiBtX2RlY29kZUVudGl0aWVzKGZhbHNlKSwgbV9k
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZShmYWxzZSksIG1fZ2VuZXJhdGlvbigwKSB7IH0K
KyAgICAgICAgICAgIFN0cmluZyBjYW5vbmljYWxpemVVUkwoRm9ybURhdGEqLCBjb25zdCBUZXh0
RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGRlY29kZUVudGl0aWVzLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSk7
CiAgICAgICAgICAgICBTdHJpbmcgY2Fub25pY2FsaXplVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGRlY29kZUVudGl0aWVzLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXNUd2ljZSk7CiAKKyAgICAgICAgICAgIHZvaWQgY2xlYXIoKTsKKworICAgICAgICAgICAgaW50
IGdlbmVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRpb247IH0KKwogICAgICAgICBw
cml2YXRlOgogICAgICAgICAgICAgLy8gVGhlIHBhcmFtZXRlcnMgd2Ugd2VyZSBjYWxsZWQgd2l0
aCBsYXN0LgogICAgICAgICAgICAgU3RyaW5nIG1faW5wdXRVUkw7CiAgICAgICAgICAgICBUZXh0
RW5jb2RpbmcgbV9lbmNvZGluZzsKICAgICAgICAgICAgIGJvb2wgbV9kZWNvZGVFbnRpdGllczsK
ICAgICAgICAgICAgIGJvb2wgbV9kZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZTsKKyAgICAg
ICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9mb3JtRGF0YTsKKworICAgICAgICAgICAgLy8gSW5j
cmVtZW50ZWQgZXZlcnkgdGltZSB3ZSBzZWUgYSBuZXcgVVJMLgorICAgICAgICAgICAgaW50IG1f
Z2VuZXJhdGlvbjsKIAogICAgICAgICAgICAgLy8gVGhlIGNhY2hlZCByZXN1bHQuCiAgICAgICAg
ICAgICBTdHJpbmcgbV9jYWNoZWRDYW5vbmljYWxpemVkVVJMOwpAQCAtMTU4LDYgKzE3MCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM1MzczCiAgICAgICAgIG11dGFibGUgQ2FjaGluZ1VSTENhbm9uaWNh
bGl6ZXIgbV9wYWdlVVJMQ2FjaGU7CiAgICAgICAgIG11dGFibGUgQ2FjaGluZ1VSTENhbm9uaWNh
bGl6ZXIgbV9mb3JtRGF0YUNhY2hlOworCisgICAgICAgIG11dGFibGUgT3duUHRyPFN1ZmZpeFRy
ZWU8QVNDSUlDb2RlYm9vaz4gPiBtX2Zvcm1EYXRhU3VmZml4VHJlZTsKKyAgICAgICAgbXV0YWJs
ZSBpbnQgbV9nZW5lcmF0aW9uT2ZTdWZmaXhUcmVlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdWZmaXhUcmVlLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3VmZml4VHJlZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmYxMWZkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvU3VmZml4VHJlZS5oCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFkYW0gQmFydGguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN1ZmZpeFRy
ZWVfaAorI2RlZmluZSBTdWZmaXhUcmVlX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFVuaWNvZGVDb2RlYm9vayB7CitwdWJsaWM6CisgICAgc3RhdGljIGludCBjb2RlV29yZChVQ2hh
ciBjKSB7IHJldHVybiBjOyB9CisgICAgZW51bSB7IGNvZGVTaXplID0gMSA8PCA4ICogc2l6ZW9m
KFVDaGFyKSB9OworfTsKKworY2xhc3MgQVNDSUlDb2RlYm9vayB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGludCBjb2RlV29yZChVQ2hhciBjKSB7IHJldHVybiBjICYgKGNvZGVTaXplIC0gMSk7IH0K
KyAgICBlbnVtIHsgY29kZVNpemUgPSAxIDw8ICg4ICogc2l6ZW9mKGNoYXIpIC0gMSkgfTsKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVib29rPgorY2xhc3MgU3VmZml4VHJlZSB7CitwdWJs
aWM6CisgICAgU3VmZml4VHJlZShjb25zdCBTdHJpbmcmIHRleHQsIHVuc2lnbmVkIGRlcHRoKQor
ICAgICAgICA6IG1fZGVwdGgoZGVwdGgpCisgICAgICAgICwgbV9sZWFmKHRydWUpCisgICAgewor
ICAgICAgICBidWlsZCh0ZXh0KTsKKyAgICB9CisKKyAgICBib29sIG1pZ2h0Q29udGFpbihjb25z
dCBTdHJpbmcmIHF1ZXJ5KQorICAgIHsKKyAgICAgICAgTm9kZSogY3VycmVudCA9ICZtX3Jvb3Q7
CisgICAgICAgIGludCBsaW1pdCA9IHN0ZDo6bWluKG1fZGVwdGgsIHF1ZXJ5Lmxlbmd0aCgpKTsK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW1pdDsgKytpKSB7CisgICAgICAgICAgICBj
dXJyZW50ID0gY3VycmVudC0+YXQoQ29kZWJvb2s6OmNvZGVXb3JkKHF1ZXJ5W2ldKSk7CisgICAg
ICAgICAgICBpZiAoIWN1cnJlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBjbGFz
cyBOb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIE5vZGUoYm9vbCBpc0xlYWYgPSBmYWxzZSkK
KyAgICAgICAgeworICAgICAgICAgICAgbV9jaGlsZHJlbi5yZXNpemUoQ29kZWJvb2s6OmNvZGVT
aXplKTsKKyAgICAgICAgICAgIG1fY2hpbGRyZW4uZmlsbCgwKTsKKyAgICAgICAgICAgIG1faXNM
ZWFmID0gaXNMZWFmOworICAgICAgICB9CisKKyAgICAgICAgfk5vZGUoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gbV9jaGlsZHJlbi5hdChpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoY2hpbGQgJiYgIWNoaWxkLT5tX2lzTGVhZikKKyAgICAgICAgICAg
ICAgICAgICAgZGVsZXRlIGNoaWxkOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgTm9kZSomIGF0KGludCBjb2RlV29yZCkgeyByZXR1cm4gbV9jaGlsZHJlbi5hdChjb2RlV29y
ZCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHR5cGVkZWYgVmVjdG9yPE5vZGUqLCBDb2Rl
Ym9vazo6Y29kZVNpemU+IENoaWxkcmVuVmVjdG9yOworCisgICAgICAgIENoaWxkcmVuVmVjdG9y
IG1fY2hpbGRyZW47CisgICAgICAgIGJvb2wgbV9pc0xlYWY7CisgICAgfTsKKworICAgIHZvaWQg
YnVpbGQoY29uc3QgU3RyaW5nJiB0ZXh0KQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBi
YXNlID0gMDsgYmFzZSA8IHRleHQubGVuZ3RoKCk7ICsrYmFzZSkgeworICAgICAgICAgICAgTm9k
ZSogY3VycmVudCA9ICZtX3Jvb3Q7CisgICAgICAgICAgICB1bnNpZ25lZCBsaW1pdCA9IHN0ZDo6
bWluKGJhc2UgKyBtX2RlcHRoLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgb2Zmc2V0ID0gMDsgYmFzZSArIG9mZnNldCA8IGxpbWl0OyArK29mZnNldCkgeworICAg
ICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50ICE9ICZtX2xlYWYpOworICAgICAgICAgICAgICAg
IE5vZGUqJiBjaGlsZCA9IGN1cnJlbnQtPmF0KENvZGVib29rOjpjb2RlV29yZCh0ZXh0W2Jhc2Ug
KyBvZmZzZXRdKSk7CisgICAgICAgICAgICAgICAgaWYgKCFjaGlsZCkKKyAgICAgICAgICAgICAg
ICAgICAgY2hpbGQgPSBiYXNlICsgb2Zmc2V0ICsgMSA9PSBsaW1pdCA/ICZtX2xlYWYgOiBuZXcg
Tm9kZSgpOworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjaGlsZDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIE5vZGUgbV9yb290OworICAgIHVuc2lnbmVkIG1fZGVw
dGg7CisKKyAgICAvLyBJbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBmcmVzaCBlbXB0eSBsZWFmIG5v
ZGUgZm9yIGV2ZXIgbGVhZiBpbiB0aGUgdHJlZQorICAgIC8vICh0aGVyZSBjYW4gYmUgYSBsb3Qg
b2YgdGhlc2UpLCB3ZSBhbGlhcyBhbGwgdGhlIGxlYXZlcyB0byB0aGlzICJzdGF0aWMiCisgICAg
Ly8gbGVhZiBub2RlLgorICAgIE5vZGUgbV9sZWFmOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gU3VmZml4VHJlZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52398</attachid>
            <date>2010-04-02 00:36:45 -0700</date>
            <delta_ts>2010-04-02 02:00:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-36694-20100402003643.patch</filename>
            <type>text/plain</type>
            <size>16364</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDEzZDUyMi4uOWMzMGQzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMC0wNC0wMiAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4K
KworICAgICAgICBNYWtlIFhTU0F1ZGl0b3IgZ28gZmFzdCB3aXRoIGxhcmdlIFBPU1QgZGF0YQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY2OTQKKwor
ICAgICAgICBUaGVyZSB3ZXJlIHR3byB0aGluZ3Mgc2xvd2luZyBkb3duIHRoaXMgYmVjaG1hcms6
CisKKyAgICAgICAgMSkgU2VhcmNoaW5nIHRoZSBsYXJnZSBQT1NUIGRhdGEgZm9yIGVhY2ggaW5s
aW5lIGV2ZW50IGhhbmRsZXIuICBUbworICAgICAgICAgICBtYWtlIHRoaXMgZmFzdGVyLCB3ZSBu
b3cgdXNlIGEgc3VmZml4IHRyZWUgdG8gZmFzdC1yZWplY3Qgc3RyaW5ncworICAgICAgICAgICB0
aGF0IGRvbid0IGFwcGVhciBhcyBzdWJzdHJpbmdzIG9mIHRoZSBQT1NUIGRhdGEuCisKKyAgICAg
ICAgMikgVGhlIG5leHQgbGFyZ2VzdCBjb3N0IHdhcyBmbGF0dGVuaW5nIHRoZSBmb3JtIGRhdGEg
aW50byBhIHN0cmluZy4KKyAgICAgICAgICAgVG8gbWFrZSB0aGlzIGZhdGVyLCB3ZSBub3cgdXNl
IHRoZSBmb3JtIGRhdGEgb2JqZWN0IGl0c2VsZiBhcyBhIGtleQorICAgICAgICAgICBhbmQgb25s
eSBmbGF0dGVuIG9uY2UuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBh
Z2UvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpDYWNoaW5n
VVJMQ2Fub25pY2FsaXplcjo6Y2Fub25pY2FsaXplVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlhT
U0F1ZGl0b3I6OkNhY2hpbmdVUkxDYW5vbmljYWxpemVyOjpjbGVhcik6CisgICAgICAgIChXZWJD
b3JlOjpYU1NBdWRpdG9yOjpYU1NBdWRpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmZpbmRJblJlcXVlc3QpOgorICAgICAgICAqIHBhZ2UvWFNTQXVkaXRvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6Q2FjaGluZ1VSTENhbm9uaWNhbGl6ZXI6OkNhY2hpbmdV
UkxDYW5vbmljYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OkNhY2hpbmdV
UkxDYW5vbmljYWxpemVyOjpnZW5lcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N1
ZmZpeFRyZWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVbmljb2RlQ29kZWJvb2s6OmNv
ZGVXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlVuaWNvZGVDb2RlYm9vazo6KToKKyAgICAgICAg
KFdlYkNvcmU6OkFTQ0lJQ29kZWJvb2s6OmNvZGVXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkFT
Q0lJQ29kZWJvb2s6Oik6CisgICAgICAgIChXZWJDb3JlOjpTdWZmaXhUcmVlOjpTdWZmaXhUcmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1ZmZpeFRyZWU6Om1pZ2h0Q29udGFpbik6CisgICAgICAg
IChXZWJDb3JlOjpTdWZmaXhUcmVlOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1
ZmZpeFRyZWU6Ok5vZGU6On5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1ZmZpeFRyZWU6Ok5v
ZGU6OmF0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1ZmZpeFRyZWU6OmJ1aWxkKToKKwogMjAxMC0w
NC0wMiAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBkNzJiMjMyLi43ZGU5YzBkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTE3MjMsNiArMTcyMyw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1N0cmluZ0hhc2guaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmlu
Z0ltcGwuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5oIFwKKwlXZWJD
b3JlL3BsYXRmb3JtL3RleHQvU3VmZml4VHJlZS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dEJvdW5kYXJpZXMuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVz
LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmggXApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCA5YTViN2E3Li5kMzBmMTU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjcwMSw2ICsyNzAxLDcgQEAKICAgICAgICAgICAg
ICdwbGF0Zm9ybS90ZXh0L1N0cmluZ0hhc2guaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4
dC9TdHJpbmdJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBs
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvU3VmZml4VHJlZS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0
L1RleHRCcmVha0l0ZXJhdG9yLmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
aW5kZXggOGI1ZWU5Yi4uMzgwZmRiYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCkBAIC0yNTY4MCw2ICsyNTY4MCwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJ
PEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxTdWZmaXhUcmVlLmgi
DQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcU3RyaW5nVHJ1bmNhdG9yLmNwcCINCiAJCQkJCT4NCiAJCQkJ
PC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MzUzMzVhYi4uN2NjZTE2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTI0ODEsNiArMjQ4MSw3IEBACiAJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAv
KiBSZXNvdXJjZUxvYWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTczRTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5v
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTc5RjQzRDMxMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QxMTA3NUU0
NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5jcHAgKi87IH07CiAJCTk3OUY0M0Q0MTA3
NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNCIC8qIFJl
ZGlyZWN0U2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTdDMDc4NTAxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QzA3ODRGMTE2NUQ1
QkUwMDNBMzJFRiAvKiBTdWZmaXhUcmVlLmggKi87IH07CiAJCTk3RENFMjAxMTA4MDdDNzUwMDU3
RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RDRTFGRjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNv
bnRyb2xsZXIuY3BwICovOyB9OwogCQk5N0RDRTIwMjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9y
eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3RENFMjAwMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3REQ0RDg2MEZE
RjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NBdWRp
dG9yLmNwcCAqLzsgfTsKQEAgLTc5MDEsNiArNzkwMiw3IEBACiAJCTk3M0UzMjU1MTA4ODNCN0Mw
MDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZUxvYWROb3RpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVkaXJlY3RTY2hlZHVsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzlGNDNEMjEwNzVFNDRBMDAwMEY4
M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVkaXJlY3RTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdD
MDc4NEYxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3VmZml4VHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5N0RDRTFGRjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGlzdG9yeUNvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0RDRTIwMDEwODA3Qzc1MDA1N0QzOTQgLyog
SGlzdG9yeUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlz
dG9yeUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdERDREODQw
RkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gWFNTQXVkaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNDcwOCw2ICsxNDcxMCw3IEBACiAJCQkJQjJDM0RBMDEwRDAwNkMxRDAwRUY2RjI2IC8q
IFN0cmluZ0hhc2guaCAqLywKIAkJCQlCMkMzREEwMjBEMDA2QzFEMDBFRjZGMjYgLyogU3RyaW5n
SW1wbC5jcHAgKi8sCiAJCQkJQjJDM0RBMDMwRDAwNkMxRDAwRUY2RjI2IC8qIFN0cmluZ0ltcGwu
aCAqLywKKwkJCQk5N0MwNzg0RjExNjVENUJFMDAzQTMyRUYgLyogU3VmZml4VHJlZS5oICovLAog
CQkJCUIyQzNEQTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oICovLAogCQkJ
CUIyQzNEQTA2MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5oICovLAogCQkJ
CUIyQzNEQTA3MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAgKi8s
CkBAIC0xODc3NSw2ICsxODc3OCw3IEBACiAJCQkJODQ5OUE1MTUxMTVGQjMzMDAwRjU2NkUzIC8q
IFJlbmRlclNWR1Jlc291cmNlTWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTNCQkYwODEx
NjJEQTExMDBCOTQwOUEgLyogVVVJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODk1MjUzNTMxMTY0
MUIzNDAwQ0FCRjAwIC8qIEZpbGVUaHJlYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3QzA3ODUw
MTE2NUQ1QkUwMDNBMzJFRiAvKiBTdWZmaXhUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcCBiL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9y
LmNwcAppbmRleCAyMWI5MGJmLi45ZTIyNWZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvWFNT
QXVkaXRvci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCkBAIC03MCw2ICs3
MCwxNiBAQCBzdGF0aWMgYm9vbCBpc0lsbGVnYWxVUklDaGFyYWN0ZXIoVUNoYXIgYykKICAgICBy
ZXR1cm4gKGMgPT0gJ1wnJyB8fCBjID09ICciJyB8fCBjID09ICc8JyB8fCBjID09ICc+Jyk7CiB9
CiAKK1N0cmluZyBYU1NBdWRpdG9yOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcjo6Y2Fub25pY2Fs
aXplVVJMKEZvcm1EYXRhKiBmb3JtRGF0YSwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywg
Ym9vbCBkZWNvZGVFbnRpdGllcywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3
aWNlKQoreworICAgIGlmIChkZWNvZGVFbnRpdGllcyA9PSBtX2RlY29kZUVudGl0aWVzICYmIGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlID09IG1fZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
VHdpY2UgCisgICAgICAgICYmIGVuY29kaW5nID09IG1fZW5jb2RpbmcgJiYgZm9ybURhdGEgPT0g
bV9mb3JtRGF0YSkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVkQ2Fub25pY2FsaXplZFVSTDsKKyAg
ICBtX2Zvcm1EYXRhID0gZm9ybURhdGE7CisgICAgcmV0dXJuIGNhbm9uaWNhbGl6ZVVSTChmb3Jt
RGF0YS0+ZmxhdHRlblRvU3RyaW5nKCksIGVuY29kaW5nLCBkZWNvZGVFbnRpdGllcywgZGVjb2Rl
VVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UpOworfQorCiBTdHJpbmcgWFNTQXVkaXRvcjo6Q2FjaGlu
Z1VSTENhbm9uaWNhbGl6ZXI6OmNhbm9uaWNhbGl6ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBkZWNvZGVFbnRpdGllcywgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlKQogewpAQCAtODIsMTEgKzkyLDE5IEBAIFN0
cmluZyBYU1NBdWRpdG9yOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcjo6Y2Fub25pY2FsaXplVVJM
KGNvbnN0IFN0cmluZyYgdXJsLCBjCiAgICAgbV9lbmNvZGluZyA9IGVuY29kaW5nOwogICAgIG1f
ZGVjb2RlRW50aXRpZXMgPSBkZWNvZGVFbnRpdGllczsKICAgICBtX2RlY29kZVVSTEVzY2FwZVNl
cXVlbmNlc1R3aWNlID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2U7CisgICAgKyttX2dl
bmVyYXRpb247CiAgICAgcmV0dXJuIG1fY2FjaGVkQ2Fub25pY2FsaXplZFVSTDsKIH0KIAordm9p
ZCBYU1NBdWRpdG9yOjpDYWNoaW5nVVJMQ2Fub25pY2FsaXplcjo6Y2xlYXIoKQoreworICAgIG1f
Zm9ybURhdGEuY2xlYXIoKTsKKyAgICBtX2lucHV0VVJMID0gU3RyaW5nKCk7Cit9CisKIFhTU0F1
ZGl0b3I6OlhTU0F1ZGl0b3IoRnJhbWUqIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKKyAg
ICAsIG1fZ2VuZXJhdGlvbk9mU3VmZml4VHJlZSgtMSkKIHsKIH0KIApAQCAtMzQ4LDYgKzM2Niwx
MiBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QoRnJhbWUqIGZyYW1lLCBjb25zdCBG
aW5kVGFzayYgdGFzaykgY29uc3QKICAgICBjb25zdCBib29sIGhhc0Zvcm1EYXRhID0gZm9ybURh
dGFPYmogJiYgIWZvcm1EYXRhT2JqLT5pc0VtcHR5KCk7CiAgICAgU3RyaW5nIHBhZ2VVUkwgPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CiAKKyAgICBpZiAoIWhhc0Zvcm1EYXRh
KSB7CisgICAgICAgIC8vIFdlIGNsZWFyIG91dCBvdXIgZm9ybSBkYXRhIGNhY2hlcywgaW4gY2Fz
ZSB3ZSdyZSBob2xkaW5nIG9udG8gYSBidW5jaCBvZiBtZW1vcnkuCisgICAgICAgIG1fZm9ybURh
dGFDYWNoZS5jbGVhcigpOworICAgICAgICBtX2Zvcm1EYXRhU3VmZml4VHJlZS5jbGVhcigpOwor
ICAgIH0KKwogICAgIFN0cmluZyBjYW5vbmljYWxpemVkU3RyaW5nOwogICAgIGlmICghaGFzRm9y
bURhdGEgJiYgdGFzay5zdHJpbmcubGVuZ3RoKCkgPiAyICogcGFnZVVSTC5sZW5ndGgoKSkgewog
ICAgICAgICAvLyBROiBXaHkgZG8gd2UgYm90aGVyIHRvIGRvIHRoaXMgY2hlY2sgYXQgYWxsPwpA
QCAtMzg0LDcgKzQwOCwxNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QoRnJhbWUq
IGZyYW1lLCBjb25zdCBGaW5kVGFzayYgdGFzaykgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7
IC8vIFdlJ3ZlIGZvdW5kIHRoZSBzdHJpbmcgaW4gdGhlIEdFVCBkYXRhLgogCiAgICAgaWYgKGhh
c0Zvcm1EYXRhKSB7Ci0gICAgICAgIFN0cmluZyBkZWNvZGVkRm9ybURhdGEgPSBtX2Zvcm1EYXRh
Q2FjaGUuY2Fub25pY2FsaXplVVJMKGZvcm1EYXRhT2JqLT5mbGF0dGVuVG9TdHJpbmcoKSwgZnJh
bWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSwgdGFzay5kZWNvZGVFbnRpdGll
cywgdGFzay5kZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNUd2ljZSk7CisgICAgICAgIFN0cmluZyBk
ZWNvZGVkRm9ybURhdGEgPSBtX2Zvcm1EYXRhQ2FjaGUuY2Fub25pY2FsaXplVVJMKGZvcm1EYXRh
T2JqLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpLCB0YXNrLmRlY29k
ZUVudGl0aWVzLCB0YXNrLmRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlKTsKKworICAgICAg
ICBpZiAobV9nZW5lcmF0aW9uT2ZTdWZmaXhUcmVlICE9IG1fZm9ybURhdGFDYWNoZS5nZW5lcmF0
aW9uKCkpIHsKKyAgICAgICAgICAgIG1fZm9ybURhdGFTdWZmaXhUcmVlID0gbmV3IFN1ZmZpeFRy
ZWU8QVNDSUlDb2RlYm9vaz4oZGVjb2RlZEZvcm1EYXRhLCA1KTsKKyAgICAgICAgICAgIG1fZ2Vu
ZXJhdGlvbk9mU3VmZml4VHJlZSA9IG1fZm9ybURhdGFDYWNoZS5nZW5lcmF0aW9uKCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBUcnkgYSBmYXN0LXJlamVjdCB2aWEgdGhlIHN1ZmZpeFRyZWUu
CisgICAgICAgIGlmIChtX2Zvcm1EYXRhU3VmZml4VHJlZSAmJiAhbV9mb3JtRGF0YVN1ZmZpeFRy
ZWUtPm1pZ2h0Q29udGFpbihjYW5vbmljYWxpemVkU3RyaW5nKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKwogICAgICAgICBpZiAoZGVjb2RlZEZvcm1EYXRhLmZpbmQoY2Fub25pY2FsaXpl
ZFN0cmluZywgMCwgZmFsc2UpICE9IC0xKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIFdl
IGZvdW5kIHRoZSBzdHJpbmcgaW4gdGhlIFBPU1QgZGF0YS4KICAgICB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oIGIvV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaAppbmRl
eCBhNzYyOGYzLi5kMmY1MjVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5o
CisrKyBiL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgKQEAgLTI5LDEwICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgIlN1ZmZpeFRyZWUuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCisgICAgY2xhc3MgRm9ybURhdGE7CiAgICAgY2xhc3MgRnJhbWU7CiAg
ICAgY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIApAQCAtMTA2LDE2ICsxMDgsMjYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBjbGFzcyBDYWNoaW5nVVJMQ2Fub25pY2FsaXplcgogICAg
ICAgICB7CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIENhY2hpbmdVUkxDYW5vbmljYWxp
emVyKCkgOiBtX2RlY29kZUVudGl0aWVzKGZhbHNlKSwgbV9kZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXNUd2ljZShmYWxzZSkgeyB9CisgICAgICAgICAgICBDYWNoaW5nVVJMQ2Fub25pY2FsaXplcigp
IDogbV9kZWNvZGVFbnRpdGllcyhmYWxzZSksIG1fZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdp
Y2UoZmFsc2UpLCBtX2dlbmVyYXRpb24oMCkgeyB9CisgICAgICAgICAgICBTdHJpbmcgY2Fub25p
Y2FsaXplVVJMKEZvcm1EYXRhKiwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBk
ZWNvZGVFbnRpdGllcywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UpOwogICAgICAgICAgICAgU3RyaW5nIGNhbm9u
aWNhbGl6ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGlu
ZywgYm9vbCBkZWNvZGVFbnRpdGllcywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzVHdpY2UpOwogCisgICAgICAgICAgICB2
b2lkIGNsZWFyKCk7CisKKyAgICAgICAgICAgIGludCBnZW5lcmF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9nZW5lcmF0aW9uOyB9CisKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFRo
ZSBwYXJhbWV0ZXJzIHdlIHdlcmUgY2FsbGVkIHdpdGggbGFzdC4KICAgICAgICAgICAgIFN0cmlu
ZyBtX2lucHV0VVJMOwogICAgICAgICAgICAgVGV4dEVuY29kaW5nIG1fZW5jb2Rpbmc7CiAgICAg
ICAgICAgICBib29sIG1fZGVjb2RlRW50aXRpZXM7CiAgICAgICAgICAgICBib29sIG1fZGVjb2Rl
VVJMRXNjYXBlU2VxdWVuY2VzVHdpY2U7CisgICAgICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IG1f
Zm9ybURhdGE7CisKKyAgICAgICAgICAgIC8vIEluY3JlbWVudGVkIGV2ZXJ5IHRpbWUgd2Ugc2Vl
IGEgbmV3IFVSTC4KKyAgICAgICAgICAgIGludCBtX2dlbmVyYXRpb247CiAKICAgICAgICAgICAg
IC8vIFRoZSBjYWNoZWQgcmVzdWx0LgogICAgICAgICAgICAgU3RyaW5nIG1fY2FjaGVkQ2Fub25p
Y2FsaXplZFVSTDsKQEAgLTE1OCw2ICsxNzAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTM3MwogICAg
ICAgICBtdXRhYmxlIENhY2hpbmdVUkxDYW5vbmljYWxpemVyIG1fcGFnZVVSTENhY2hlOwogICAg
ICAgICBtdXRhYmxlIENhY2hpbmdVUkxDYW5vbmljYWxpemVyIG1fZm9ybURhdGFDYWNoZTsKKwor
ICAgICAgICBtdXRhYmxlIE93blB0cjxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+ID4gbV9mb3Jt
RGF0YVN1ZmZpeFRyZWU7CisgICAgICAgIG11dGFibGUgaW50IG1fZ2VuZXJhdGlvbk9mU3VmZml4
VHJlZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvU3VmZml4VHJlZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N1
ZmZpeFRyZWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTFmZDIzCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N1ZmZpeFRyZWUuaApAQCAt
MCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBZGFtIEJhcnRoLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBTdWZmaXhUcmVlX2gKKyNkZWZpbmUgU3VmZml4VHJlZV9o
CisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBVbmljb2RlQ29kZWJvb2sgeworcHVibGlj
OgorICAgIHN0YXRpYyBpbnQgY29kZVdvcmQoVUNoYXIgYykgeyByZXR1cm4gYzsgfQorICAgIGVu
dW0geyBjb2RlU2l6ZSA9IDEgPDwgOCAqIHNpemVvZihVQ2hhcikgfTsKK307CisKK2NsYXNzIEFT
Q0lJQ29kZWJvb2sgeworcHVibGljOgorICAgIHN0YXRpYyBpbnQgY29kZVdvcmQoVUNoYXIgYykg
eyByZXR1cm4gYyAmIChjb2RlU2l6ZSAtIDEpOyB9CisgICAgZW51bSB7IGNvZGVTaXplID0gMSA8
PCAoOCAqIHNpemVvZihjaGFyKSAtIDEpIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2Rl
Ym9vaz4KK2NsYXNzIFN1ZmZpeFRyZWUgeworcHVibGljOgorICAgIFN1ZmZpeFRyZWUoY29uc3Qg
U3RyaW5nJiB0ZXh0LCB1bnNpZ25lZCBkZXB0aCkKKyAgICAgICAgOiBtX2RlcHRoKGRlcHRoKQor
ICAgICAgICAsIG1fbGVhZih0cnVlKQorICAgIHsKKyAgICAgICAgYnVpbGQodGV4dCk7CisgICAg
fQorCisgICAgYm9vbCBtaWdodENvbnRhaW4oY29uc3QgU3RyaW5nJiBxdWVyeSkKKyAgICB7Cisg
ICAgICAgIE5vZGUqIGN1cnJlbnQgPSAmbV9yb290OworICAgICAgICBpbnQgbGltaXQgPSBzdGQ6
Om1pbihtX2RlcHRoLCBxdWVyeS5sZW5ndGgoKSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGltaXQ7ICsraSkgeworICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPmF0KENvZGVi
b29rOjpjb2RlV29yZChxdWVyeVtpXSkpOworICAgICAgICAgICAgaWYgKCFjdXJyZW50KQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY2xhc3MgTm9kZSB7CisgICAgcHVibGljOgorICAg
ICAgICBOb2RlKGJvb2wgaXNMZWFmID0gZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
Y2hpbGRyZW4ucmVzaXplKENvZGVib29rOjpjb2RlU2l6ZSk7CisgICAgICAgICAgICBtX2NoaWxk
cmVuLmZpbGwoMCk7CisgICAgICAgICAgICBtX2lzTGVhZiA9IGlzTGVhZjsKKyAgICAgICAgfQor
CisgICAgICAgIH5Ob2RlKCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBOb2Rl
KiBjaGlsZCA9IG1fY2hpbGRyZW4uYXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkICYm
ICFjaGlsZC0+bV9pc0xlYWYpCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjaGlsZDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIE5vZGUqJiBhdChpbnQgY29kZVdvcmQp
IHsgcmV0dXJuIG1fY2hpbGRyZW4uYXQoY29kZVdvcmQpOyB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICB0eXBlZGVmIFZlY3RvcjxOb2RlKiwgQ29kZWJvb2s6OmNvZGVTaXplPiBDaGlsZHJlblZl
Y3RvcjsKKworICAgICAgICBDaGlsZHJlblZlY3RvciBtX2NoaWxkcmVuOworICAgICAgICBib29s
IG1faXNMZWFmOworICAgIH07CisKKyAgICB2b2lkIGJ1aWxkKGNvbnN0IFN0cmluZyYgdGV4dCkK
KyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgYmFzZSA9IDA7IGJhc2UgPCB0ZXh0Lmxlbmd0
aCgpOyArK2Jhc2UpIHsKKyAgICAgICAgICAgIE5vZGUqIGN1cnJlbnQgPSAmbV9yb290OworICAg
ICAgICAgICAgdW5zaWduZWQgbGltaXQgPSBzdGQ6Om1pbihiYXNlICsgbV9kZXB0aCwgdGV4dC5s
ZW5ndGgoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG9mZnNldCA9IDA7IGJhc2UgKyBv
ZmZzZXQgPCBsaW1pdDsgKytvZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoY3VycmVu
dCAhPSAmbV9sZWFmKTsKKyAgICAgICAgICAgICAgICBOb2RlKiYgY2hpbGQgPSBjdXJyZW50LT5h
dChDb2RlYm9vazo6Y29kZVdvcmQodGV4dFtiYXNlICsgb2Zmc2V0XSkpOworICAgICAgICAgICAg
ICAgIGlmICghY2hpbGQpCisgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gYmFzZSArIG9mZnNl
dCArIDEgPT0gbGltaXQgPyAmbV9sZWFmIDogbmV3IE5vZGUoKTsKKyAgICAgICAgICAgICAgICBj
dXJyZW50ID0gY2hpbGQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBO
b2RlIG1fcm9vdDsKKyAgICB1bnNpZ25lZCBtX2RlcHRoOworCisgICAgLy8gSW5zdGVhZCBvZiBh
bGxvY2F0aW5nIGEgZnJlc2ggZW1wdHkgbGVhZiBub2RlIGZvciBldmVyIGxlYWYgaW4gdGhlIHRy
ZWUKKyAgICAvLyAodGhlcmUgY2FuIGJlIGEgbG90IG9mIHRoZXNlKSwgd2UgYWxpYXMgYWxsIHRo
ZSBsZWF2ZXMgdG8gdGhpcyAic3RhdGljIgorICAgIC8vIGxlYWYgbm9kZS4KKyAgICBOb2RlIG1f
bGVhZjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFN1ZmZpeFRy
ZWVfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>