<?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>54999</bug_id>
          
          <creation_ts>2011-02-22 14:13:27 -0800</creation_ts>
          <short_desc>Manage MarkedBlocks in a linked list instead of a vector, so arbitrary removal is O(1)</short_desc>
          <delta_ts>2011-02-23 12:25:24 -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>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>55012</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>355591</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-22 14:13:27 -0800</bug_when>
    <thetext>Managed MarkedBlocks in a linked list instead of a vector, so arbitrary removal is O(1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355600</commentid>
    <comment_count>1</comment_count>
      <attachid>83389</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-22 14:19:59 -0800</bug_when>
    <thetext>Created attachment 83389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355637</commentid>
    <comment_count>2</comment_count>
      <attachid>83389</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-22 15:00:28 -0800</bug_when>
    <thetext>Comment on attachment 83389
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355650</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-22 15:23:49 -0800</bug_when>
    <thetext>Committed r79367: &lt;http://trac.webkit.org/changeset/79367&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355765</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-22 19:13:19 -0800</bug_when>
    <thetext>This patch caused all tests to crash on Snow Leopard:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r79366%20(25764)/
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r79367%20(25765)/results.html

I&apos;m rolling this patch per olliej&apos;s suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355836</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-22 21:33:44 -0800</bug_when>
    <thetext>Reopening, since it was rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356248</commentid>
    <comment_count>6</comment_count>
      <attachid>83513</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-23 11:35:05 -0800</bug_when>
    <thetext>Created attachment 83513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356252</commentid>
    <comment_count>7</comment_count>
      <attachid>83513</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-02-23 11:38:49 -0800</bug_when>
    <thetext>Comment on attachment 83513
Patch

This patch does not include the DoublyLinkedList.h header, but includes many references to it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356256</commentid>
    <comment_count>8</comment_count>
      <attachid>83516</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-23 11:43:07 -0800</bug_when>
    <thetext>Created attachment 83516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356263</commentid>
    <comment_count>9</comment_count>
      <attachid>83516</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-02-23 11:46:13 -0800</bug_when>
    <thetext>Comment on attachment 83516
Patch

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

&gt; Source/JavaScriptCore/runtime/MarkedSpace.cpp:58
&gt; +    MarkedBlock* next = 0;

Doesn’t seem helpful to initialize this here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356302</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-02-23 12:25:24 -0800</bug_when>
    <thetext>Committed r79472: &lt;http://trac.webkit.org/changeset/79472&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83389</attachid>
            <date>2011-02-22 14:19:59 -0800</date>
            <delta_ts>2011-02-23 11:35:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54999-20110222141958.patch</filename>
            <type>text/plain</type>
            <size>20583</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzkzNTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAK
KzIwMTEtMDItMjIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYW5hZ2UgTWFya2VkQmxv
Y2tzIGluIGEgbGlua2VkIGxpc3QgaW5zdGVhZCBvZiBhIHZlY3Rvciwgc28gYXJiaXRyYXJ5IHJl
bW92YWwgaXMgTygxKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTQ5OTkKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLmd5cGk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYu
dmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IFNvIG1hbnkgYnVpbGQgc3lzdGVtcywgc28gbGl0dGxlIHRpbWUuCisgICAgICAgICogd3Rm
L0NNYWtlTGlzdHMudHh0OgorCisgICAgICAgICogcnVudGltZS9NYXJrZWRCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayk6CisgICAgICAgICogcnVudGlt
ZS9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c2V0UHJldik6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzZXROZXh0KToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OnByZXYpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6bmV4dCk6IEFkZGVkIGxp
bmtlZCBsaXN0IGRhdGEgbWVtYmVycyBhbmQgYWNjZXNzb3JzLgorCisgICAgICAgICogcnVudGlt
ZS9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkZXN0cm95KToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFsbG9jYXRlQmxvY2spOiBTdG9wIHVzaW5nIHZl
Y3Rvciwgc2luY2UgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgorCisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpmcmVlQmxvY2tzKTogTmV3IGhlbHBlciBmdW5jdGlvbiBmb3IgdXBkYXRpbmcg
cmVsZXZhbnQKKyAgICAgICAgZGF0YSBzdHJ1Y3R1cmVzIHdoZW4gZnJlZWluZyBibG9ja3MuCisK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFsbG9jYXRlKTogVXBkYXRlZCBmb3IgbmV4dEJs
b2NrIGJlaW5nIGEgcG9pbnRlciBhbmQKKyAgICAgICAgbm90IGEgdmVjdG9yIGluZGV4LgorCisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzaHJpbmspOiBDb25zdHJ1Y3QgYSB0ZW1wb3Jhcnkg
bGlzdCBvZiBlbXB0aWVzIGFuZAorICAgICAgICB0aGVuIGZyZWUgdGhlbSwgdG8gYXZvaWQgbW9k
aWZ5aW5nIG91ciBoYXNoIHRhYmxlIHdoaWxlIGl0ZXJhdGluZyBpdC4KKyAgICAgICAgVGhpcyB3
YXNuJ3QgYSBjb25jZXJuIGJlZm9yZSBiZWNhdXNlIHdlIHdlcmUgdXNpbmcgaW5kaXJlY3QgYXJy
YXkKKyAgICAgICAgaW5kZXhpbmcsIG5vdCBkaXJlY3QgcG9pbnRlciBpbmRleGluZy4KKworICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cmVzZXQpOiBVcGRhdGVkIGZvciBuZXh0QmxvY2sgYmVp
bmcgYSBwb2ludGVyIGFuZAorICAgICAgICBub3QgYSB2ZWN0b3IgaW5kZXguCisKKyAgICAgICAg
KiBydW50aW1lL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6OkNvbGxlY3RvckhlYXA6OkNv
bGxlY3RvckhlYXApOiBDaGFuZ2VkIGRhdGEgdHlwZSBmcm9tIHZlY3RvciB0byBsaW5rZWQgbGlz
dC4KKworICAgICAgICAqIHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg6IEFkZGVkLiBOZXcgbGlua2Vk
IGxpc3QgY2xhc3MuCisgICAgICAgIChXVEY6Ojo6RG91Ymx5TGlua2VkTGlzdCk6CisgICAgICAg
IChXVEY6Ojo6aXNFbXB0eSk6CisgICAgICAgIChXVEY6Ojo6aGVhZCk6CisgICAgICAgIChXVEY6
Ojo6YXBwZW5kKToKKyAgICAgICAgKFdURjo6OjpyZW1vdmUpOgorCiAyMDExLTAyLTIyICBHYXZp
biBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5kb3dz
IGJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlz
aW9uIDc5MzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NDEsNiArNDQxLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EZWNvZGVyLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvRGVxdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EaXNhbGxv
d0NUeXBlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRG91Ymx5TGlua2VkTGlzdC5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL2R0b2EuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9FbmNvZGVy
LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHJl
dmlzaW9uIDc5MzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTM3MSw2ICszNzEsNyBAQAogICAgICAgICAgICAgJ3d0Zi9E
ZWNpbWFsTnVtYmVyLmNwcCcsCiAgICAgICAgICAgICAnd3RmL0RlcXVlLmgnLAogICAgICAgICAg
ICAgJ3d0Zi9EaXNhbGxvd0NUeXBlLmgnLAorICAgICAgICAgICAgJ3d0Zi9Eb3VibHlMaW5rZWRM
aXN0LmgnLAogICAgICAgICAgICAgJ3d0Zi9kdG9hLmNwcCcsCiAgICAgICAgICAgICAnd3RmL2R0
b2EuaCcsCiAgICAgICAgICAgICAnd3RmL0Zhc3RBbGxvY0Jhc2UuaCcsCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RG
L1dURi52Y3Byb2oJKHJldmlzaW9uIDc5MzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjAx
LDYgKzYwMSwxMCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXHd0ZlxEb3VibHlMaW5rZWRMaXN0LmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUK
IAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXGR0b2EuY3BwIgogCQkJPgogCQk8L0ZpbGU+Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzkzNTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBACiAJCTE0NDBGODkyMEE1MDhCMTAw
MDA1RjA2MSAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4OTAwQTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2Fs
bGJhY2tGdW5jdGlvbi5jcHAgKi87IH07CiAJCTE0NDBGOEFGMEE1MDhEMjAwMDA1RjA2MSAvKiBK
U0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ0MEY4QUQwQTUwOEQyMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tDb25z
dHJ1Y3Rvci5jcHAgKi87IH07CiAJCTE0NDBGQ0U0MEE1MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNz
UmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
NDBGQ0UyMEE1MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVmLmNwcCAqLzsgfTsKKwkJMTQ0NTZB
MzIxMzE0NjU3ODAwMjEyQ0EzIC8qIERvdWJseUxpbmtlZExpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDU2QTMxMTMxNDY1NzgwMDIxMkNBMyAv
KiBEb3VibHlMaW5rZWRMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMTQ0NjlERDcxMDdFQzc5RTAwNjUwNDQ2IC8qIGR0b2EuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxRjY0MTIwMzlENUI1
RjAwNzgzOTVDIC8qIGR0b2EuY3BwICovOyB9OwogCQkxNDQ2OURERTEwN0VDN0U3MDA2NTA0NDYg
LyogTG9va3VwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY2OTJBODY4MDI1NTU5N0QwMUZGNjBGNyAvKiBMb29rdXAuY3BwICovOyB9OwogCQkxNDQ2
OURERjEwN0VDN0U3MDA2NTA0NDYgLyogTWF0aE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg2QTAyNTU1OTdEMDFGRjYwRjcgLyog
TWF0aE9iamVjdC5jcHAgKi87IH07CkBAIC02ODksNiArNjkwLDcgQEAKIAkJMTQ0MEY4QUQwQTUw
OEQyMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDQwRkNFMTBBNTFFNDZCMDAwNUYwNjEgLyogSlNDbGFz
c1JlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NsYXNzUmVmLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NDBGQ0UyMEE1MUU0NkIwMDA1RjA2MSAvKiBK
U0NsYXNzUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2xh
c3NSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDQ1NkEzMTEzMTQ2NTc4
MDAyMTJDQTMgLyogRG91Ymx5TGlua2VkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEb3VibHlMaW5rZWRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAvKiBDYWxsRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWxsRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxNDZBQUIyQTBCNjZBODQ5MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdSZWZDRi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDZBQUIzNzBCNjZBOTQ0MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmdSZWZDRi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTE5LDYgKzE1MjEsNyBAQAogCQkJ
CTg2MkFGNEI1MTIyMzlDN0IwMDI0RTVCOCAvKiBEZWNpbWFsTnVtYmVyLmggKi8sCiAJCQkJNTE4
NjExMUQwQ0M4MjQ4MzAwODE0MTJCIC8qIERlcXVlLmggKi8sCiAJCQkJOTM4QzRGNkIwQ0EwNkJD
RTAwRDkzMTBBIC8qIERpc2FsbG93Q1R5cGUuaCAqLywKKwkJCQkxNDQ1NkEzMTEzMTQ2NTc4MDAy
MTJDQTMgLyogRG91Ymx5TGlua2VkTGlzdC5oICovLAogCQkJCTY1MUY2NDEyMDM5RDVCNUYwMDc4
Mzk1QyAvKiBkdG9hLmNwcCAqLywKIAkJCQk2NTFGNjQxMzAzOUQ1QjVGMDA3ODM5NUMgLyogZHRv
YS5oICovLAogCQkJCUU0OEUwRjJDMEY4MjE1MTcwMEE4Q0EzNyAvKiBGYXN0QWxsb2NCYXNlLmgg
Ki8sCkBAIC0yMTQ0LDYgKzIxNDcsNyBAQAogCQkJCTUxMzVGQUYyMTJEMjZBQ0UwMDNDMDgzQiAv
KiBEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNGQzBFMTZGNUNEMDBCMzQ0NjAg
LyogRGVxdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0ZEMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBEaXNhbGxvd0NUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDQ1NkEzMjEzMTQ2NTc4MDAy
MTJDQTMgLyogRG91Ymx5TGlua2VkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRkUw
RTE2RjVDRDAwQjM0NDYwIC8qIGR0b2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMzVGQUYzMTJE
MjZBRDEwMDNDMDgzQiAvKiBFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNDYwNzBF
MUY0OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gNzkzNTcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAgTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKGNvbnN0
IFBhZ2VBbGxvYwogICAgICwgbV9lbmRBdG9tKGF0b21zUGVyQmxvY2sgLSBtX2F0b21zUGVyQ2Vs
bCArIDEpCiAgICAgLCBtX2FsbG9jYXRpb24oYWxsb2NhdGlvbikKICAgICAsIG1faGVhcCgmZ2xv
YmFsRGF0YS0+aGVhcCkKKyAgICAsIG1fcHJldigwKQorICAgICwgbV9uZXh0KDApCiB7CiAgICAg
U3RydWN0dXJlKiBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSA9IGdsb2JhbERhdGEtPmR1bW15
TWFya2FibGVDZWxsU3RydWN0dXJlLmdldCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0
b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkQmxvY2suaAkocmV2aXNpb24gNzkzNTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw2ICs1NCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHNp
emVfdCBmaXJzdEF0b20oKTsKICAgICAgICAgCiAgICAgICAgIEhlYXAqIGhlYXAoKSBjb25zdDsK
KworICAgICAgICB2b2lkIHNldFByZXYoTWFya2VkQmxvY2sqKTsKKyAgICAgICAgdm9pZCBzZXRO
ZXh0KE1hcmtlZEJsb2NrKik7CisgICAgICAgIE1hcmtlZEJsb2NrKiBwcmV2KCkgY29uc3Q7Cisg
ICAgICAgIE1hcmtlZEJsb2NrKiBuZXh0KCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICB2b2lk
KiBhbGxvY2F0ZShzaXplX3QmIG5leHRDZWxsKTsKICAgICAgICAgdm9pZCBzd2VlcCgpOwpAQCAt
OTcsNiArMTAyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdURjo6Qml0bWFwPGJsb2Nr
U2l6ZSAvIGF0b21TaXplPiBtX21hcmtzOwogICAgICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQg
bV9hbGxvY2F0aW9uOwogICAgICAgICBIZWFwKiBtX2hlYXA7CisgICAgICAgIE1hcmtlZEJsb2Nr
KiBtX3ByZXY7CisgICAgICAgIE1hcmtlZEJsb2NrKiBtX25leHQ7CiAgICAgfTsKIAogICAgIGlu
bGluZSBzaXplX3QgTWFya2VkQmxvY2s6OmZpcnN0QXRvbSgpCkBAIC0xMjQsNiArMTMxLDI2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9oZWFwOwogICAgIH0KIAorICAgIGlu
bGluZSB2b2lkIE1hcmtlZEJsb2NrOjpzZXRQcmV2KE1hcmtlZEJsb2NrKiBwcmV2KQorICAgIHsK
KyAgICAgICAgbV9wcmV2ID0gcHJldjsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBNYXJrZWRC
bG9jazo6c2V0TmV4dChNYXJrZWRCbG9jayogbmV4dCkKKyAgICB7CisgICAgICAgIG1fbmV4dCA9
IG5leHQ7CisgICAgfQorCisgICAgaW5saW5lIE1hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6cHJl
digpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9wcmV2OworICAgIH0KKworICAgIGlu
bGluZSBNYXJrZWRCbG9jayogTWFya2VkQmxvY2s6Om5leHQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fbmV4dDsKKyAgICB9CisKICAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6
aXNFbXB0eSgpCiAgICAgewogICAgICAgICByZXR1cm4gbV9tYXJrcy5pc0VtcHR5KCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuY3BwCShyZXZp
c2lvbiA3OTM1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNTYgKzM5LDY0IEBAIE1hcmtlZFNwYWNlOjpNYXJr
ZWRTcGFjZShKU0dsb2JhbERhdGEqIGcKIAogdm9pZCBNYXJrZWRTcGFjZTo6ZGVzdHJveSgpCiB7
Ci0gICAgY2xlYXJNYXJrcygpOyAvLyBNYWtlIHN1cmUgd2VhayBwb2ludGVycyBhcHBlYXIgZGVh
ZCBkdXJpbmcgZGVzdHJ1Y3Rpb24uCi0KLSAgICB3aGlsZSAobV9oZWFwLmJsb2Nrcy5zaXplKCkp
Ci0gICAgICAgIGZyZWVCbG9jaygwKTsKKyAgICBjbGVhck1hcmtzKCk7CisgICAgc2hyaW5rKCk7
CisgICAgQVNTRVJUKCFzaXplKCkpOwogfQogCiBORVZFUl9JTkxJTkUgTWFya2VkQmxvY2sqIE1h
cmtlZFNwYWNlOjphbGxvY2F0ZUJsb2NrKCkKIHsKICAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBN
YXJrZWRCbG9jazo6Y3JlYXRlKGdsb2JhbERhdGEoKSwgY2VsbFNpemUpOwotICAgIG1faGVhcC5i
bG9ja3MuYXBwZW5kKGJsb2NrKTsKKyAgICBtX2hlYXAuYmxvY2tMaXN0LmFwcGVuZChibG9jayk7
CiAgICAgbV9ibG9ja3MuYWRkKGJsb2NrKTsKKwogICAgIHJldHVybiBibG9jazsKIH0KIAotTkVW
RVJfSU5MSU5FIHZvaWQgTWFya2VkU3BhY2U6OmZyZWVCbG9jayhzaXplX3QgYmxvY2tOdW1iZXIp
Cit2b2lkIE1hcmtlZFNwYWNlOjpmcmVlQmxvY2tzKERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxv
Y2s+JiBibG9ja3MpCiB7Ci0gICAgTWFya2VkQmxvY2sqIGJsb2NrID0gbV9oZWFwLmJsb2Nrc1ti
bG9ja051bWJlcl07Ci0KLSAgICAvLyBzd2FwIHdpdGggdGhlIGxhc3QgYmxvY2sgc28gd2UgY29t
cGFjdCBhcyB3ZSBnbwotICAgIG1faGVhcC5ibG9ja3NbYmxvY2tOdW1iZXJdID0gbV9oZWFwLmJs
b2Nrcy5sYXN0KCk7Ci0gICAgbV9oZWFwLmJsb2Nrcy5yZW1vdmVMYXN0KCk7Ci0gICAgbV9ibG9j
a3MucmVtb3ZlKGJsb2NrKTsKLQotICAgIE1hcmtlZEJsb2NrOjpkZXN0cm95KGJsb2NrKTsKKyAg
ICBNYXJrZWRCbG9jayogbmV4dCA9IDA7CisgICAgZm9yIChNYXJrZWRCbG9jayogYmxvY2sgPSBi
bG9ja3MuaGVhZCgpOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBibG9j
ay0+bmV4dCgpOworCisgICAgICAgIGJsb2Nrcy5yZW1vdmUoYmxvY2spOworICAgICAgICBtX2Js
b2Nrcy5yZW1vdmUoYmxvY2spOworICAgICAgICBNYXJrZWRCbG9jazo6ZGVzdHJveShibG9jayk7
CisgICAgfQogfQogCiB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGUoc2l6ZV90KQogewotICAg
IGZvciAoIDsgbV9oZWFwLm5leHRCbG9jayA8IG1faGVhcC5ibG9ja3Muc2l6ZSgpOyArK21faGVh
cC5uZXh0QmxvY2spIHsKLSAgICAgICAgTWFya2VkQmxvY2sqIGJsb2NrID0gbV9oZWFwLmNvbGxl
Y3RvckJsb2NrKG1faGVhcC5uZXh0QmxvY2spOwotICAgICAgICBpZiAodm9pZCogcmVzdWx0ID0g
YmxvY2stPmFsbG9jYXRlKG1faGVhcC5uZXh0QXRvbSkpCisgICAgZm9yICggOyBtX2hlYXAubmV4
dEJsb2NrOyBtX2hlYXAubmV4dEJsb2NrID0gbV9oZWFwLm5leHRCbG9jay0+bmV4dCgpKSB7Cisg
ICAgICAgIGlmICh2b2lkKiByZXN1bHQgPSBtX2hlYXAubmV4dEJsb2NrLT5hbGxvY2F0ZShtX2hl
YXAubmV4dEF0b20pKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgICAgICBtX3dh
dGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKTsKKyAgICAgICAgbV93YXRlck1hcmsgKz0gbV9o
ZWFwLm5leHRCbG9jay0+Y2FwYWNpdHkoKTsKICAgICB9CiAKLSAgICBpZiAobV93YXRlck1hcmsg
PCBtX2hpZ2hXYXRlck1hcmspCi0gICAgICAgIHJldHVybiBhbGxvY2F0ZUJsb2NrKCktPmFsbG9j
YXRlKG1faGVhcC5uZXh0QXRvbSk7CisgICAgaWYgKG1fd2F0ZXJNYXJrIDwgbV9oaWdoV2F0ZXJN
YXJrKSB7CisgICAgICAgIG1faGVhcC5uZXh0QmxvY2sgPSBhbGxvY2F0ZUJsb2NrKCk7CisgICAg
ICAgIHJldHVybiBtX2hlYXAubmV4dEJsb2NrLT5hbGxvY2F0ZShtX2hlYXAubmV4dEF0b20pOwor
ICAgIH0KIAogICAgIHJldHVybiAwOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjpzaHJpbmsoKQog
ewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG1faGVhcC5ibG9ja3Muc2l6ZSgpICYmIG1f
aGVhcC5ibG9ja3Muc2l6ZSgpID4gMTsgKSB7IC8vIFdlIGFzc3VtZSBhdCBsZWFzdCBvbmUgYmxv
Y2sgZXhpc3RzIGF0IGFsbCB0aW1lcy4KLSAgICAgICAgaWYgKG1faGVhcC5jb2xsZWN0b3JCbG9j
ayhpKS0+aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBmcmVlQmxvY2soaSk7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgKytpOworICAgIC8vIFdlIHJlY29yZCBhIHRlbXBvcmFyeSBsaXN0
IG9mIGVtcHRpZXMgdG8gYXZvaWQgbW9kaWZ5aW5nIG1fYmxvY2tzIHdoaWxlIGl0ZXJhdGluZyBp
dC4KKyAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiBlbXB0aWVzOworCisgICAgQmxv
Y2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5lbmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3Ig
aXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgq
aXQpLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1faGVhcC5ibG9ja0xpc3QucmVtb3ZlKCpp
dCk7CisgICAgICAgICAgICBlbXB0aWVzLmFwcGVuZCgqaXQpOworICAgICAgICB9CiAgICAgfQor
ICAgIAorICAgIGZyZWVCbG9ja3MoZW1wdGllcyk7CisgICAgQVNTRVJUKGVtcHRpZXMuaXNFbXB0
eSgpKTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJNYXJrcygpCkBAIC0xMzQsNyArMTQy
LDcgQEAgc2l6ZV90IE1hcmtlZFNwYWNlOjpjYXBhY2l0eSgpIGNvbnN0CiAKIHZvaWQgTWFya2Vk
U3BhY2U6OnJlc2V0KCkKIHsKLSAgICBtX2hlYXAubmV4dEJsb2NrID0gMDsKKyAgICBtX2hlYXAu
bmV4dEJsb2NrID0gbV9oZWFwLmJsb2NrTGlzdC5oZWFkKCk7CiAgICAgbV9oZWFwLm5leHRBdG9t
ID0gTWFya2VkQmxvY2s6OmZpcnN0QXRvbSgpOwogICAgIG1fd2F0ZXJNYXJrID0gMDsKICNpZiBF
TkFCTEUoSlNDX1pPTUJJRVMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDc5MzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiUGFnZUFsbG9jYXRpb25BbGlnbmVk
LmgiCiAjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRM
aXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDksMTUgKzUwLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBuZXh0QXRvbSgwKQogICAgICAgICB7CiAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIE1hcmtlZEJsb2NrKiBjb2xsZWN0b3JCbG9jayhzaXpl
X3QgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBibG9ja3NbaW5k
ZXhdOwotICAgICAgICB9CiAKLSAgICAgICAgc2l6ZV90IG5leHRCbG9jazsKKyAgICAgICAgTWFy
a2VkQmxvY2sqIG5leHRCbG9jazsKICAgICAgICAgc2l6ZV90IG5leHRBdG9tOwotICAgICAgICBW
ZWN0b3I8TWFya2VkQmxvY2sqPiBibG9ja3M7CisgICAgICAgIERvdWJseUxpbmtlZExpc3Q8TWFy
a2VkQmxvY2s+IGJsb2NrTGlzdDsKICAgICB9OwogCiAgICAgY2xhc3MgTWFya2VkU3BhY2UgewpA
QCAtMTAwLDcgKzk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgSGFzaFNl
dDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0ZXJhdG9yOwogCiAgICAgICAgIE5FVkVS
X0lOTElORSBNYXJrZWRCbG9jayogYWxsb2NhdGVCbG9jaygpOwotICAgICAgICBORVZFUl9JTkxJ
TkUgdm9pZCBmcmVlQmxvY2soc2l6ZV90KTsKKyAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZnJl
ZUJsb2NrcyhEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiYpOwogCiAgICAgICAgIHZvaWQg
Y2xlYXJNYXJrcyhNYXJrZWRCbG9jayopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDc5MzU3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTYsNiArMTYsNyBAQCBT
RVQoV1RGX0hFQURFUlMKICAgICBEZWNvZGVyLmgKICAgICBEZXF1ZS5oCiAgICAgRGlzYWxsb3dD
VHlwZS5oCisgICAgRG91Ymx5TGlua2VkTGlzdC5oCiAgICAgRW5jb2Rlci5oCiAgICAgRmFzdEFs
bG9jQmFzZS5oCiAgICAgRmFzdE1hbGxvYy5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0RvdWJseUxpbmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0RvdWJseUxpbmtlZExpc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvRG91Ymx5TGlua2VkTGlzdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEw
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRG91Ymx5TGlua2VkTGlzdF9oCisjZGVmaW5lIERv
dWJseUxpbmtlZExpc3RfaAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IE5vZGU+IGNsYXNzIERvdWJseUxpbmtlZExpc3QgeworcHVibGljOgorICAgIERvdWJseUxpbmtl
ZExpc3QoKTsKKyAgICAKKyAgICBib29sIGlzRW1wdHkoKTsKKworICAgIE5vZGUqIGhlYWQoKTsK
KworICAgIHZvaWQgYXBwZW5kKE5vZGUqKTsKKyAgICB2b2lkIHJlbW92ZShOb2RlKik7CisKK3By
aXZhdGU6CisgICAgTm9kZSogbV9oZWFkOworICAgIE5vZGUqIG1fdGFpbDsKK307CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgRG91Ymx5TGlua2VkTGlzdDxOb2RlPjo6RG91Ymx5
TGlua2VkTGlzdCgpCisgICAgOiBtX2hlYWQoMCkKKyAgICAsIG1fdGFpbCgwKQoreworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4gaW5saW5lIGJvb2wgRG91Ymx5TGlua2VkTGlzdDxOb2Rl
Pjo6aXNFbXB0eSgpCit7CisgICAgcmV0dXJuICFtX2hlYWQ7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBOb2RlPiBpbmxpbmUgTm9kZSogRG91Ymx5TGlua2VkTGlzdDxOb2RlPjo6aGVhZCgpCit7
CisgICAgcmV0dXJuIG1faGVhZDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGlubGlu
ZSB2b2lkIERvdWJseUxpbmtlZExpc3Q8Tm9kZT46OmFwcGVuZChOb2RlKiBub2RlKQoreworICAg
IGlmICghbV90YWlsKSB7CisgICAgICAgIEFTU0VSVCghbV9oZWFkKTsKKyAgICAgICAgbV9oZWFk
ID0gbm9kZTsKKyAgICAgICAgbV90YWlsID0gbm9kZTsKKyAgICAgICAgbm9kZS0+c2V0UHJldigw
KTsKKyAgICAgICAgbm9kZS0+c2V0TmV4dCgwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEFTU0VSVChtX2hlYWQpOworICAgIG1fdGFpbC0+c2V0TmV4dChub2RlKTsKKyAgICBub2Rl
LT5zZXRQcmV2KG1fdGFpbCk7CisgICAgbm9kZS0+c2V0TmV4dCgwKTsKKyAgICBtX3RhaWwgPSBu
b2RlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4gaW5saW5lIHZvaWQgRG91Ymx5TGlu
a2VkTGlzdDxOb2RlPjo6cmVtb3ZlKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUtPnByZXYo
KSkgeworICAgICAgICBBU1NFUlQobm9kZSAhPSBtX2hlYWQpOworICAgICAgICBub2RlLT5wcmV2
KCktPnNldE5leHQobm9kZS0+bmV4dCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQo
bm9kZSA9PSBtX2hlYWQpOworICAgICAgICBtX2hlYWQgPSBub2RlLT5uZXh0KCk7CisgICAgfQor
CisgICAgaWYgKG5vZGUtPm5leHQoKSkgeworICAgICAgICBBU1NFUlQobm9kZSAhPSBtX3RhaWwp
OworICAgICAgICBub2RlLT5uZXh0KCktPnNldFByZXYobm9kZS0+cHJldigpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBBU1NFUlQobm9kZSA9PSBtX3RhaWwpOworICAgICAgICBtX3RhaWwgPSBu
b2RlLT5wcmV2KCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RG
OjpEb3VibHlMaW5rZWRMaXN0OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0R2x1
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxv
ZwkocmV2aXNpb24gNzkzNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDItMjIgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNYW5hZ2UgTWFya2VkQmxvY2tzIGluIGEgbGlua2VkIGxpc3QgaW5zdGVh
ZCBvZiBhIHZlY3Rvciwgc28gYXJiaXRyYXJ5IHJlbW92YWwgaXMgTygxKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5OTkKKyAgICAgICAgCisgICAg
ICAgIE5ldyBXVEYgaGVhZGVyLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0Rv
dWJseUxpbmtlZExpc3QuaDogQ29waWVkIGZyb20gRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0ZpeGVk
QXJyYXkuaC4KKwogMjAxMS0wMi0xOCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvRG91Ymx5TGlua2VkTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvRG91Ymx5TGlua2VkTGlzdC5oCShyZXZpc2lvbiA3OTM1NykJKGZyb20gU291cmNlL0phdmFT
Y3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9GaXhlZEFycmF5Lmg6NzkzNTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RvdWJseUxpbmtlZExp
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRml4ZWRBcnJheS5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9Eb3VibHlMaW5rZWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Eb3VibHlMaW5rZWRMaXN0LmgJKHJldmlz
aW9uIDc5MzU3KQorKysgU291cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9Eb3VibHlMaW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GaXhlZEFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RG91Ymx5TGlua2VkTGlzdC5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzkzNTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAxMS0wMi0yMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hbmFnZSBNYXJrZWRCbG9j
a3MgaW4gYSBsaW5rZWQgbGlzdCBpbnN0ZWFkIG9mIGEgdmVjdG9yLCBzbyBhcmJpdHJhcnkgcmVt
b3ZhbCBpcyBPKDEpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NDk5OQorICAgICAgICAKKyAgICAgICAgTmV3IFdURiBoZWFkZXIuCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy93dGYvRG91Ymx5TGlua2VkTGlzdC5oOiBDb3BpZWQgZnJvbSBG
b3J3YXJkaW5nSGVhZGVycy93dGYvRml4ZWRBcnJheS5oLgorCiAyMDExLTAyLTIyICBBbmRyYXMg
QmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBP
c3p0cm9nb27DoWMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
RG91Ymx5TGlua2VkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9Eb3VibHlMaW5rZWRMaXN0LmgJKHJldmlzaW9uIDc5MzU3KQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvRml4ZWRBcnJheS5oOjc5MzU3KQor
KysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RvdWJseUxpbmtlZExpc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRml4
ZWRBcnJheV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0ZpeGVkQXJyYXlfaAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0ZpeGVkQXJyYXkuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RvdWJseUxpbmtlZExpc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvRG91Ymx5TGlua2VkTGlzdC5oCShy
ZXZpc2lvbiA3OTM1NykKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9E
b3VibHlMaW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jaWZuZGVm
IFdlYkNvcmVfRldEX0ZpeGVkQXJyYXlfaAotI2RlZmluZSBXZWJDb3JlX0ZXRF9GaXhlZEFycmF5
X2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GaXhlZEFycmF5Lmg+CisjaWZuZGVmIFdlYkNv
cmVfRldEX0RvdWJseUxpbmtlZExpc3RfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9Eb3VibHlMaW5r
ZWRMaXN0X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAj
ZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83513</attachid>
            <date>2011-02-23 11:35:05 -0800</date>
            <delta_ts>2011-02-23 11:43:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54999-20110223113503.patch</filename>
            <type>text/plain</type>
            <size>14764</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzk0NjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTEtMDItMjMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFJvbGxlZCBi
YWNrIGluIHI3OTM2NyB3aXRoIFNub3dMZW9wYXJkIFJlbGVhc2UgYm90IGNyYXNoIGZpeGVkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5OTkKKyAg
ICAgICAgCisgICAgICAgIFRoZSBjcmFzaCB3YXMgY2F1c2VkIGJ5IGZhaWx1cmUgdG8gdXBkYXRl
IHRoZSAibmV4dEJsb2NrIiBwb2ludGVyIHdoZW4KKyAgICAgICAgcmVtb3ZpbmcgYSBibG9jayBm
cm9tIHRoZSBsaXN0IHdoaWxlIHNocmlua2luZy4gVGhlIGZpeCBpcyB0byB1cGRhdGUgdGhlCisg
ICAgICAgICJuZXh0QmxvY2siIHBvaW50ZXIuCisgICAgICAgIAorICAgICAgICBUaGlzIGNyYXNo
IHdhcyB2ZXJ5IHJhcmUgYmVjYXVzZSBpdCBvbmx5IGhhcHBlbmVkIGluIGNhc2VzIHdoZXJlIHRo
ZSB2ZXJ5CisgICAgICAgIGZpcnN0IGJsb2NrIGluIHRoZSBoZWFwIGNvbnRhaW5lZCBubyBtYXJr
ZWQgY2VsbHMuCisKIDIwMTEtMDItMjMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDc5NDU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiArNDQxLDcg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9EZWNvZGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVxdWUuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EaXNhbGxvd0NUeXBlLmggXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvRG91Ymx5TGlua2VkTGlzdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL2R0b2EuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9FbmNvZGVyLmggXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHJldmlzaW9uIDc5NDU1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM3MSw2
ICszNzEsNyBAQAogICAgICAgICAgICAgJ3d0Zi9EZWNpbWFsTnVtYmVyLmNwcCcsCiAgICAgICAg
ICAgICAnd3RmL0RlcXVlLmgnLAogICAgICAgICAgICAgJ3d0Zi9EaXNhbGxvd0NUeXBlLmgnLAor
ICAgICAgICAgICAgJ3d0Zi9Eb3VibHlMaW5rZWRMaXN0LmgnLAogICAgICAgICAgICAgJ3d0Zi9k
dG9hLmNwcCcsCiAgICAgICAgICAgICAnd3RmL2R0b2EuaCcsCiAgICAgICAgICAgICAnd3RmL0Zh
c3RBbGxvY0Jhc2UuaCcsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL1dURi9XVEYudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHJldmlzaW9uIDc5NDU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RG
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjAxLDYgKzYwMSwxMCBAQAogCQkJPgogCQk8L0Zp
bGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxEb3VibHlMaW5rZWRMaXN0
LmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3Rm
XGR0b2EuY3BwIgogCQkJPgogCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gNzk0NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYg
KzEwMyw3IEBACiAJCTE0NDBGODkyMEE1MDhCMTAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrRnVuY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0
MEY4OTAwQTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5jcHAgKi87IH07CiAJ
CTE0NDBGOEFGMEE1MDhEMjAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4QUQwQTUw
OEQyMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTE0NDBG
Q0U0MEE1MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDBGQ0UyMEE1MUU0NkIwMDA1RjA2MSAvKiBK
U0NsYXNzUmVmLmNwcCAqLzsgfTsKKwkJMTQ0NTZBMzIxMzE0NjU3ODAwMjEyQ0EzIC8qIERvdWJs
eUxpbmtlZExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0NDU2QTMxMTMxNDY1NzgwMDIxMkNBMyAvKiBEb3VibHlMaW5rZWRMaXN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0NjlERDcxMDdF
Qzc5RTAwNjUwNDQ2IC8qIGR0b2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjUxRjY0MTIwMzlENUI1RjAwNzgzOTVDIC8qIGR0b2EuY3BwICovOyB9
OwogCQkxNDQ2OURERTEwN0VDN0U3MDA2NTA0NDYgLyogTG9va3VwLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODY4MDI1NTU5N0QwMUZGNjBG
NyAvKiBMb29rdXAuY3BwICovOyB9OwogCQkxNDQ2OURERjEwN0VDN0U3MDA2NTA0NDYgLyogTWF0
aE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNjkyQTg2QTAyNTU1OTdEMDFGRjYwRjcgLyogTWF0aE9iamVjdC5jcHAgKi87IH07CkBAIC02
ODksNiArNjkwLDcgQEAKIAkJMTQ0MEY4QUQwQTUwOEQyMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tD
b25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Nh
bGxiYWNrQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDQw
RkNFMTBBNTFFNDZCMDAwNUYwNjEgLyogSlNDbGFzc1JlZi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0NsYXNzUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0NDBGQ0UyMEE1MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVmLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2xhc3NSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNDQ1NkEzMTEzMTQ2NTc4MDAyMTJDQTMgLyogRG91Ymx5TGlua2VkTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb3VibHlMaW5rZWRMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAv
KiBDYWxsRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZBQUIyQTBCNjZBODQ5MDBFNTVGMTYg
LyogSlNTdHJpbmdSZWZDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
dHJpbmdSZWZDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZBQUIzNzBCNjZB
OTQ0MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTdHJpbmdSZWZDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTE5LDYgKzE1MjEsNyBAQAogCQkJCTg2MkFGNEI1MTIyMzlDN0IwMDI0RTVCOCAv
KiBEZWNpbWFsTnVtYmVyLmggKi8sCiAJCQkJNTE4NjExMUQwQ0M4MjQ4MzAwODE0MTJCIC8qIERl
cXVlLmggKi8sCiAJCQkJOTM4QzRGNkIwQ0EwNkJDRTAwRDkzMTBBIC8qIERpc2FsbG93Q1R5cGUu
aCAqLywKKwkJCQkxNDQ1NkEzMTEzMTQ2NTc4MDAyMTJDQTMgLyogRG91Ymx5TGlua2VkTGlzdC5o
ICovLAogCQkJCTY1MUY2NDEyMDM5RDVCNUYwMDc4Mzk1QyAvKiBkdG9hLmNwcCAqLywKIAkJCQk2
NTFGNjQxMzAzOUQ1QjVGMDA3ODM5NUMgLyogZHRvYS5oICovLAogCQkJCUU0OEUwRjJDMEY4MjE1
MTcwMEE4Q0EzNyAvKiBGYXN0QWxsb2NCYXNlLmggKi8sCkBAIC0yMTQ0LDYgKzIxNDcsNyBAQAog
CQkJCTUxMzVGQUYyMTJEMjZBQ0UwMDNDMDgzQiAvKiBEZWNvZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzNGQzBFMTZGNUNEMDBCMzQ0NjAgLyogRGVxdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDM0ZEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBEaXNhbGxvd0NUeXBlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxNDQ1NkEzMjEzMTQ2NTc4MDAyMTJDQTMgLyogRG91Ymx5TGlua2VkTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRkUwRTE2RjVDRDAwQjM0NDYwIC8qIGR0b2EuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMzVGQUYzMTJEMjZBRDEwMDNDMDgzQiAvKiBFbmNvZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNDYwNzBFMUY0OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2Vk
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cmtlZEJsb2NrLmNwcAkocmV2aXNpb24gNzk0NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAg
TWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VBbGxvYwogICAgICwgbV9lbmRBdG9t
KGF0b21zUGVyQmxvY2sgLSBtX2F0b21zUGVyQ2VsbCArIDEpCiAgICAgLCBtX2FsbG9jYXRpb24o
YWxsb2NhdGlvbikKICAgICAsIG1faGVhcCgmZ2xvYmFsRGF0YS0+aGVhcCkKKyAgICAsIG1fcHJl
digwKQorICAgICwgbV9uZXh0KDApCiB7CiAgICAgU3RydWN0dXJlKiBkdW1teU1hcmthYmxlQ2Vs
bFN0cnVjdHVyZSA9IGdsb2JhbERhdGEtPmR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlLmdldCgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBt
X2F0b21zUGVyQ2VsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtl
ZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFy
a2VkQmxvY2suaAkocmV2aXNpb24gNzk0NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHNpemVfdCBmaXJzdEF0b20oKTsKICAgICAgICAg
CiAgICAgICAgIEhlYXAqIGhlYXAoKSBjb25zdDsKKworICAgICAgICB2b2lkIHNldFByZXYoTWFy
a2VkQmxvY2sqKTsKKyAgICAgICAgdm9pZCBzZXROZXh0KE1hcmtlZEJsb2NrKik7CisgICAgICAg
IE1hcmtlZEJsb2NrKiBwcmV2KCkgY29uc3Q7CisgICAgICAgIE1hcmtlZEJsb2NrKiBuZXh0KCkg
Y29uc3Q7CiAgICAgICAgIAogICAgICAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QmIG5leHRDZWxs
KTsKICAgICAgICAgdm9pZCBzd2VlcCgpOwpAQCAtOTcsNiArMTAyLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFdURjo6Qml0bWFwPGJsb2NrU2l6ZSAvIGF0b21TaXplPiBtX21hcmtzOwog
ICAgICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgbV9hbGxvY2F0aW9uOwogICAgICAgICBIZWFw
KiBtX2hlYXA7CisgICAgICAgIE1hcmtlZEJsb2NrKiBtX3ByZXY7CisgICAgICAgIE1hcmtlZEJs
b2NrKiBtX25leHQ7CiAgICAgfTsKIAogICAgIGlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OmZp
cnN0QXRvbSgpCkBAIC0xMjQsNiArMTMxLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBy
ZXR1cm4gbV9oZWFwOwogICAgIH0KIAorICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpzZXRQ
cmV2KE1hcmtlZEJsb2NrKiBwcmV2KQorICAgIHsKKyAgICAgICAgbV9wcmV2ID0gcHJldjsKKyAg
ICB9CisKKyAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6c2V0TmV4dChNYXJrZWRCbG9jayog
bmV4dCkKKyAgICB7CisgICAgICAgIG1fbmV4dCA9IG5leHQ7CisgICAgfQorCisgICAgaW5saW5l
IE1hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6cHJldigpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9wcmV2OworICAgIH0KKworICAgIGlubGluZSBNYXJrZWRCbG9jayogTWFya2VkQmxv
Y2s6Om5leHQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbmV4dDsKKyAgICB9CisK
ICAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNFbXB0eSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9tYXJrcy5pc0VtcHR5KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiA3OTQ1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzks
NTYgKzM5LDY2IEBAIE1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZShKU0dsb2JhbERhdGEqIGcKIAog
dm9pZCBNYXJrZWRTcGFjZTo6ZGVzdHJveSgpCiB7Ci0gICAgY2xlYXJNYXJrcygpOyAvLyBNYWtl
IHN1cmUgd2VhayBwb2ludGVycyBhcHBlYXIgZGVhZCBkdXJpbmcgZGVzdHJ1Y3Rpb24uCi0KLSAg
ICB3aGlsZSAobV9oZWFwLmJsb2Nrcy5zaXplKCkpCi0gICAgICAgIGZyZWVCbG9jaygwKTsKKyAg
ICBjbGVhck1hcmtzKCk7CisgICAgc2hyaW5rKCk7CisgICAgQVNTRVJUKCFzaXplKCkpOwogfQog
CiBORVZFUl9JTkxJTkUgTWFya2VkQmxvY2sqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZUJsb2NrKCkK
IHsKICAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBNYXJrZWRCbG9jazo6Y3JlYXRlKGdsb2JhbERh
dGEoKSwgY2VsbFNpemUpOwotICAgIG1faGVhcC5ibG9ja3MuYXBwZW5kKGJsb2NrKTsKKyAgICBt
X2hlYXAuYmxvY2tMaXN0LmFwcGVuZChibG9jayk7CiAgICAgbV9ibG9ja3MuYWRkKGJsb2NrKTsK
KwogICAgIHJldHVybiBibG9jazsKIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgTWFya2VkU3BhY2U6
OmZyZWVCbG9jayhzaXplX3QgYmxvY2tOdW1iZXIpCit2b2lkIE1hcmtlZFNwYWNlOjpmcmVlQmxv
Y2tzKERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+JiBibG9ja3MpCiB7Ci0gICAgTWFya2Vk
QmxvY2sqIGJsb2NrID0gbV9oZWFwLmJsb2Nrc1tibG9ja051bWJlcl07Ci0KLSAgICAvLyBzd2Fw
IHdpdGggdGhlIGxhc3QgYmxvY2sgc28gd2UgY29tcGFjdCBhcyB3ZSBnbwotICAgIG1faGVhcC5i
bG9ja3NbYmxvY2tOdW1iZXJdID0gbV9oZWFwLmJsb2Nrcy5sYXN0KCk7Ci0gICAgbV9oZWFwLmJs
b2Nrcy5yZW1vdmVMYXN0KCk7Ci0gICAgbV9ibG9ja3MucmVtb3ZlKGJsb2NrKTsKLQotICAgIE1h
cmtlZEJsb2NrOjpkZXN0cm95KGJsb2NrKTsKKyAgICBNYXJrZWRCbG9jayogbmV4dCA9IDA7Cisg
ICAgZm9yIChNYXJrZWRCbG9jayogYmxvY2sgPSBibG9ja3MuaGVhZCgpOyBibG9jazsgYmxvY2sg
PSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBibG9jay0+bmV4dCgpOworCisgICAgICAgIGJsb2Nr
cy5yZW1vdmUoYmxvY2spOworICAgICAgICBtX2Jsb2Nrcy5yZW1vdmUoYmxvY2spOworICAgICAg
ICBNYXJrZWRCbG9jazo6ZGVzdHJveShibG9jayk7CisgICAgfQogfQogCiB2b2lkKiBNYXJrZWRT
cGFjZTo6YWxsb2NhdGUoc2l6ZV90KQogewotICAgIGZvciAoIDsgbV9oZWFwLm5leHRCbG9jayA8
IG1faGVhcC5ibG9ja3Muc2l6ZSgpOyArK21faGVhcC5uZXh0QmxvY2spIHsKLSAgICAgICAgTWFy
a2VkQmxvY2sqIGJsb2NrID0gbV9oZWFwLmNvbGxlY3RvckJsb2NrKG1faGVhcC5uZXh0QmxvY2sp
OwotICAgICAgICBpZiAodm9pZCogcmVzdWx0ID0gYmxvY2stPmFsbG9jYXRlKG1faGVhcC5uZXh0
QXRvbSkpCisgICAgZm9yICggOyBtX2hlYXAubmV4dEJsb2NrOyBtX2hlYXAubmV4dEJsb2NrID0g
bV9oZWFwLm5leHRCbG9jay0+bmV4dCgpKSB7CisgICAgICAgIGlmICh2b2lkKiByZXN1bHQgPSBt
X2hlYXAubmV4dEJsb2NrLT5hbGxvY2F0ZShtX2hlYXAubmV4dEF0b20pKQogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKIAotICAgICAgICBtX3dhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHko
KTsKKyAgICAgICAgbV93YXRlck1hcmsgKz0gbV9oZWFwLm5leHRCbG9jay0+Y2FwYWNpdHkoKTsK
ICAgICB9CiAKLSAgICBpZiAobV93YXRlck1hcmsgPCBtX2hpZ2hXYXRlck1hcmspCi0gICAgICAg
IHJldHVybiBhbGxvY2F0ZUJsb2NrKCktPmFsbG9jYXRlKG1faGVhcC5uZXh0QXRvbSk7CisgICAg
aWYgKG1fd2F0ZXJNYXJrIDwgbV9oaWdoV2F0ZXJNYXJrKSB7CisgICAgICAgIG1faGVhcC5uZXh0
QmxvY2sgPSBhbGxvY2F0ZUJsb2NrKCk7CisgICAgICAgIHJldHVybiBtX2hlYXAubmV4dEJsb2Nr
LT5hbGxvY2F0ZShtX2hlYXAubmV4dEF0b20pOworICAgIH0KIAogICAgIHJldHVybiAwOwogfQog
CiB2b2lkIE1hcmtlZFNwYWNlOjpzaHJpbmsoKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IG1faGVhcC5ibG9ja3Muc2l6ZSgpICYmIG1faGVhcC5ibG9ja3Muc2l6ZSgpID4gMTsgKSB7
IC8vIFdlIGFzc3VtZSBhdCBsZWFzdCBvbmUgYmxvY2sgZXhpc3RzIGF0IGFsbCB0aW1lcy4KLSAg
ICAgICAgaWYgKG1faGVhcC5jb2xsZWN0b3JCbG9jayhpKS0+aXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBmcmVlQmxvY2soaSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgKytpOworICAg
IC8vIFdlIHJlY29yZCBhIHRlbXBvcmFyeSBsaXN0IG9mIGVtcHRpZXMgdG8gYXZvaWQgbW9kaWZ5
aW5nIG1fYmxvY2tzIHdoaWxlIGl0ZXJhdGluZyBpdC4KKyAgICBEb3VibHlMaW5rZWRMaXN0PE1h
cmtlZEJsb2NrPiBlbXB0aWVzOworCisgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5l
bmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIG1faGVhcC5ibG9ja0xpc3QucmVtb3ZlKCppdCk7CisgICAgICAgICAgICBlbXB0aWVzLmFw
cGVuZCgqaXQpOworICAgICAgICB9CiAgICAgfQorICAgIAorICAgIG1faGVhcC5uZXh0QmxvY2sg
PSBtX2hlYXAuYmxvY2tMaXN0LmhlYWQoKTsKKworICAgIGZyZWVCbG9ja3MoZW1wdGllcyk7Cisg
ICAgQVNTRVJUKGVtcHRpZXMuaXNFbXB0eSgpKTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6Y2xl
YXJNYXJrcygpCkBAIC0xMzQsNyArMTQ0LDcgQEAgc2l6ZV90IE1hcmtlZFNwYWNlOjpjYXBhY2l0
eSgpIGNvbnN0CiAKIHZvaWQgTWFya2VkU3BhY2U6OnJlc2V0KCkKIHsKLSAgICBtX2hlYXAubmV4
dEJsb2NrID0gMDsKKyAgICBtX2hlYXAubmV4dEJsb2NrID0gbV9oZWFwLmJsb2NrTGlzdC5oZWFk
KCk7CiAgICAgbV9oZWFwLm5leHRBdG9tID0gTWFya2VkQmxvY2s6OmZpcnN0QXRvbSgpOwogICAg
IG1fd2F0ZXJNYXJrID0gMDsKICNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDc5NDU1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVk
ZSAiUGFnZUFsbG9jYXRpb25BbGlnbmVkLmgiCiAjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgpAQCAtNDksMTUgKzUwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBuZXh0
QXRvbSgwKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIE1hcmtlZEJs
b2NrKiBjb2xsZWN0b3JCbG9jayhzaXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBibG9ja3NbaW5kZXhdOwotICAgICAgICB9CiAKLSAgICAgICAgc2l6ZV90
IG5leHRCbG9jazsKKyAgICAgICAgTWFya2VkQmxvY2sqIG5leHRCbG9jazsKICAgICAgICAgc2l6
ZV90IG5leHRBdG9tOwotICAgICAgICBWZWN0b3I8TWFya2VkQmxvY2sqPiBibG9ja3M7CisgICAg
ICAgIERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+IGJsb2NrTGlzdDsKICAgICB9OwogCiAg
ICAgY2xhc3MgTWFya2VkU3BhY2UgewpAQCAtMTAwLDcgKzk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0
ZXJhdG9yOwogCiAgICAgICAgIE5FVkVSX0lOTElORSBNYXJrZWRCbG9jayogYWxsb2NhdGVCbG9j
aygpOwotICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBmcmVlQmxvY2soc2l6ZV90KTsKKyAgICAg
ICAgTkVWRVJfSU5MSU5FIHZvaWQgZnJlZUJsb2NrcyhEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJs
b2NrPiYpOwogCiAgICAgICAgIHZvaWQgY2xlYXJNYXJrcyhNYXJrZWRCbG9jayopOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDc5NDU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTYsNiArMTYsNyBAQCBTRVQoV1RGX0hFQURFUlMKICAgICBEZWNvZGVyLmgKICAg
ICBEZXF1ZS5oCiAgICAgRGlzYWxsb3dDVHlwZS5oCisgICAgRG91Ymx5TGlua2VkTGlzdC5oCiAg
ICAgRW5jb2Rlci5oCiAgICAgRmFzdEFsbG9jQmFzZS5oCiAgICAgRmFzdE1hbGxvYy5oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NDY0KQorKysgU291cmNlL0phdmFT
Y3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwIEBACisyMDEx
LTAyLTIzICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUm9sbGVkIGJhY2sgaW4gcjc5MzY3
IHdpdGggU25vd0xlb3BhcmQgUmVsZWFzZSBib3QgY3Jhc2ggZml4ZWQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDk5OQorCiAyMDExLTAyLTIyICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0RvdWJseUxpbmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdEds
dWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RvdWJseUxpbmtlZExpc3QuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvRG91Ymx5TGlu
a2VkTGlzdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRG91Ymx5TGlua2VkTGlzdC5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzk0NjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MiBAQAorMjAxMS0wMi0yMyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJvbGxlZCBiYWNr
IGluIHI3OTM2NyB3aXRoIFNub3dMZW9wYXJkIFJlbGVhc2UgYm90IGNyYXNoIGZpeGVkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5OTkKKworICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg6IEFkZGVkLgor
CiAyMDExLTAyLTIzICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9Eb3VibHlMaW5rZWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RvdWJseUxpbmtlZExpc3QuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Eb3VibHlMaW5r
ZWRMaXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZX
RF9Eb3VibHlMaW5rZWRMaXN0X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRG91Ymx5TGlua2VkTGlz
dF9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRG91Ymx5TGlua2VkTGlzdC5oPgorI2VuZGlm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83516</attachid>
            <date>2011-02-23 11:43:07 -0800</date>
            <delta_ts>2011-02-23 11:46:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54999-20110223114306.patch</filename>
            <type>text/plain</type>
            <size>17958</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzk0NjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTEtMDItMjMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFJvbGxlZCBi
YWNrIGluIHI3OTM2NyB3aXRoIFNub3dMZW9wYXJkIFJlbGVhc2UgYm90IGNyYXNoIGZpeGVkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5OTkKKyAg
ICAgICAgCisgICAgICAgIFRoZSBjcmFzaCB3YXMgY2F1c2VkIGJ5IGZhaWx1cmUgdG8gdXBkYXRl
IHRoZSAibmV4dEJsb2NrIiBwb2ludGVyIHdoZW4KKyAgICAgICAgcmVtb3ZpbmcgYSBibG9jayBm
cm9tIHRoZSBsaXN0IHdoaWxlIHNocmlua2luZy4gVGhlIGZpeCBpcyB0byB1cGRhdGUgdGhlCisg
ICAgICAgICJuZXh0QmxvY2siIHBvaW50ZXIuCisgICAgICAgIAorICAgICAgICBUaGlzIGNyYXNo
IHdhcyB2ZXJ5IHJhcmUgYmVjYXVzZSBpdCBvbmx5IGhhcHBlbmVkIGluIGNhc2VzIHdoZXJlIHRo
ZSB2ZXJ5CisgICAgICAgIGZpcnN0IGJsb2NrIGluIHRoZSBoZWFwIGNvbnRhaW5lZCBubyBtYXJr
ZWQgY2VsbHMuCisKIDIwMTEtMDItMjMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDc5NDU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiArNDQxLDcg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9EZWNvZGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVxdWUuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EaXNhbGxvd0NUeXBlLmggXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvRG91Ymx5TGlua2VkTGlzdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL2R0b2EuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9FbmNvZGVyLmggXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHJldmlzaW9uIDc5NDU1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM3MSw2
ICszNzEsNyBAQAogICAgICAgICAgICAgJ3d0Zi9EZWNpbWFsTnVtYmVyLmNwcCcsCiAgICAgICAg
ICAgICAnd3RmL0RlcXVlLmgnLAogICAgICAgICAgICAgJ3d0Zi9EaXNhbGxvd0NUeXBlLmgnLAor
ICAgICAgICAgICAgJ3d0Zi9Eb3VibHlMaW5rZWRMaXN0LmgnLAogICAgICAgICAgICAgJ3d0Zi9k
dG9hLmNwcCcsCiAgICAgICAgICAgICAnd3RmL2R0b2EuaCcsCiAgICAgICAgICAgICAnd3RmL0Zh
c3RBbGxvY0Jhc2UuaCcsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL1dURi9XVEYudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHJldmlzaW9uIDc5NDU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RG
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjAxLDYgKzYwMSwxMCBAQAogCQkJPgogCQk8L0Zp
bGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxEb3VibHlMaW5rZWRMaXN0
LmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3Rm
XGR0b2EuY3BwIgogCQkJPgogCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gNzk0NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYg
KzEwMyw3IEBACiAJCTE0NDBGODkyMEE1MDhCMTAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrRnVuY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0
MEY4OTAwQTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5jcHAgKi87IH07CiAJ
CTE0NDBGOEFGMEE1MDhEMjAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4QUQwQTUw
OEQyMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTE0NDBG
Q0U0MEE1MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDBGQ0UyMEE1MUU0NkIwMDA1RjA2MSAvKiBK
U0NsYXNzUmVmLmNwcCAqLzsgfTsKKwkJMTQ0NTZBMzIxMzE0NjU3ODAwMjEyQ0EzIC8qIERvdWJs
eUxpbmtlZExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0NDU2QTMxMTMxNDY1NzgwMDIxMkNBMyAvKiBEb3VibHlMaW5rZWRMaXN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0NjlERDcxMDdF
Qzc5RTAwNjUwNDQ2IC8qIGR0b2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjUxRjY0MTIwMzlENUI1RjAwNzgzOTVDIC8qIGR0b2EuY3BwICovOyB9
OwogCQkxNDQ2OURERTEwN0VDN0U3MDA2NTA0NDYgLyogTG9va3VwLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODY4MDI1NTU5N0QwMUZGNjBG
NyAvKiBMb29rdXAuY3BwICovOyB9OwogCQkxNDQ2OURERjEwN0VDN0U3MDA2NTA0NDYgLyogTWF0
aE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNjkyQTg2QTAyNTU1OTdEMDFGRjYwRjcgLyogTWF0aE9iamVjdC5jcHAgKi87IH07CkBAIC02
ODksNiArNjkwLDcgQEAKIAkJMTQ0MEY4QUQwQTUwOEQyMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tD
b25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Nh
bGxiYWNrQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDQw
RkNFMTBBNTFFNDZCMDAwNUYwNjEgLyogSlNDbGFzc1JlZi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0NsYXNzUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0NDBGQ0UyMEE1MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVmLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2xhc3NSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNDQ1NkEzMTEzMTQ2NTc4MDAyMTJDQTMgLyogRG91Ymx5TGlua2VkTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb3VibHlMaW5rZWRMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAv
KiBDYWxsRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZBQUIyQTBCNjZBODQ5MDBFNTVGMTYg
LyogSlNTdHJpbmdSZWZDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
dHJpbmdSZWZDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZBQUIzNzBCNjZB
OTQ0MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTdHJpbmdSZWZDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTE5LDYgKzE1MjEsNyBAQAogCQkJCTg2MkFGNEI1MTIyMzlDN0IwMDI0RTVCOCAv
KiBEZWNpbWFsTnVtYmVyLmggKi8sCiAJCQkJNTE4NjExMUQwQ0M4MjQ4MzAwODE0MTJCIC8qIERl
cXVlLmggKi8sCiAJCQkJOTM4QzRGNkIwQ0EwNkJDRTAwRDkzMTBBIC8qIERpc2FsbG93Q1R5cGUu
aCAqLywKKwkJCQkxNDQ1NkEzMTEzMTQ2NTc4MDAyMTJDQTMgLyogRG91Ymx5TGlua2VkTGlzdC5o
ICovLAogCQkJCTY1MUY2NDEyMDM5RDVCNUYwMDc4Mzk1QyAvKiBkdG9hLmNwcCAqLywKIAkJCQk2
NTFGNjQxMzAzOUQ1QjVGMDA3ODM5NUMgLyogZHRvYS5oICovLAogCQkJCUU0OEUwRjJDMEY4MjE1
MTcwMEE4Q0EzNyAvKiBGYXN0QWxsb2NCYXNlLmggKi8sCkBAIC0yMTQ0LDYgKzIxNDcsNyBAQAog
CQkJCTUxMzVGQUYyMTJEMjZBQ0UwMDNDMDgzQiAvKiBEZWNvZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzNGQzBFMTZGNUNEMDBCMzQ0NjAgLyogRGVxdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDM0ZEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBEaXNhbGxvd0NUeXBlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxNDQ1NkEzMjEzMTQ2NTc4MDAyMTJDQTMgLyogRG91Ymx5TGlua2VkTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRkUwRTE2RjVDRDAwQjM0NDYwIC8qIGR0b2EuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMzVGQUYzMTJEMjZBRDEwMDNDMDgzQiAvKiBFbmNvZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNDYwNzBFMUY0OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2Vk
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cmtlZEJsb2NrLmNwcAkocmV2aXNpb24gNzk0NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAg
TWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VBbGxvYwogICAgICwgbV9lbmRBdG9t
KGF0b21zUGVyQmxvY2sgLSBtX2F0b21zUGVyQ2VsbCArIDEpCiAgICAgLCBtX2FsbG9jYXRpb24o
YWxsb2NhdGlvbikKICAgICAsIG1faGVhcCgmZ2xvYmFsRGF0YS0+aGVhcCkKKyAgICAsIG1fcHJl
digwKQorICAgICwgbV9uZXh0KDApCiB7CiAgICAgU3RydWN0dXJlKiBkdW1teU1hcmthYmxlQ2Vs
bFN0cnVjdHVyZSA9IGdsb2JhbERhdGEtPmR1bW15TWFya2FibGVDZWxsU3RydWN0dXJlLmdldCgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBt
X2F0b21zUGVyQ2VsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtl
ZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFy
a2VkQmxvY2suaAkocmV2aXNpb24gNzk0NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHNpemVfdCBmaXJzdEF0b20oKTsKICAgICAgICAg
CiAgICAgICAgIEhlYXAqIGhlYXAoKSBjb25zdDsKKworICAgICAgICB2b2lkIHNldFByZXYoTWFy
a2VkQmxvY2sqKTsKKyAgICAgICAgdm9pZCBzZXROZXh0KE1hcmtlZEJsb2NrKik7CisgICAgICAg
IE1hcmtlZEJsb2NrKiBwcmV2KCkgY29uc3Q7CisgICAgICAgIE1hcmtlZEJsb2NrKiBuZXh0KCkg
Y29uc3Q7CiAgICAgICAgIAogICAgICAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QmIG5leHRDZWxs
KTsKICAgICAgICAgdm9pZCBzd2VlcCgpOwpAQCAtOTcsNiArMTAyLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFdURjo6Qml0bWFwPGJsb2NrU2l6ZSAvIGF0b21TaXplPiBtX21hcmtzOwog
ICAgICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgbV9hbGxvY2F0aW9uOwogICAgICAgICBIZWFw
KiBtX2hlYXA7CisgICAgICAgIE1hcmtlZEJsb2NrKiBtX3ByZXY7CisgICAgICAgIE1hcmtlZEJs
b2NrKiBtX25leHQ7CiAgICAgfTsKIAogICAgIGlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OmZp
cnN0QXRvbSgpCkBAIC0xMjQsNiArMTMxLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBy
ZXR1cm4gbV9oZWFwOwogICAgIH0KIAorICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpzZXRQ
cmV2KE1hcmtlZEJsb2NrKiBwcmV2KQorICAgIHsKKyAgICAgICAgbV9wcmV2ID0gcHJldjsKKyAg
ICB9CisKKyAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6c2V0TmV4dChNYXJrZWRCbG9jayog
bmV4dCkKKyAgICB7CisgICAgICAgIG1fbmV4dCA9IG5leHQ7CisgICAgfQorCisgICAgaW5saW5l
IE1hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6cHJldigpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9wcmV2OworICAgIH0KKworICAgIGlubGluZSBNYXJrZWRCbG9jayogTWFya2VkQmxv
Y2s6Om5leHQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbmV4dDsKKyAgICB9CisK
ICAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNFbXB0eSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9tYXJrcy5pc0VtcHR5KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiA3OTQ1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzks
NTYgKzM5LDY2IEBAIE1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZShKU0dsb2JhbERhdGEqIGcKIAog
dm9pZCBNYXJrZWRTcGFjZTo6ZGVzdHJveSgpCiB7Ci0gICAgY2xlYXJNYXJrcygpOyAvLyBNYWtl
IHN1cmUgd2VhayBwb2ludGVycyBhcHBlYXIgZGVhZCBkdXJpbmcgZGVzdHJ1Y3Rpb24uCi0KLSAg
ICB3aGlsZSAobV9oZWFwLmJsb2Nrcy5zaXplKCkpCi0gICAgICAgIGZyZWVCbG9jaygwKTsKKyAg
ICBjbGVhck1hcmtzKCk7CisgICAgc2hyaW5rKCk7CisgICAgQVNTRVJUKCFzaXplKCkpOwogfQog
CiBORVZFUl9JTkxJTkUgTWFya2VkQmxvY2sqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZUJsb2NrKCkK
IHsKICAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBNYXJrZWRCbG9jazo6Y3JlYXRlKGdsb2JhbERh
dGEoKSwgY2VsbFNpemUpOwotICAgIG1faGVhcC5ibG9ja3MuYXBwZW5kKGJsb2NrKTsKKyAgICBt
X2hlYXAuYmxvY2tMaXN0LmFwcGVuZChibG9jayk7CiAgICAgbV9ibG9ja3MuYWRkKGJsb2NrKTsK
KwogICAgIHJldHVybiBibG9jazsKIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgTWFya2VkU3BhY2U6
OmZyZWVCbG9jayhzaXplX3QgYmxvY2tOdW1iZXIpCit2b2lkIE1hcmtlZFNwYWNlOjpmcmVlQmxv
Y2tzKERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+JiBibG9ja3MpCiB7Ci0gICAgTWFya2Vk
QmxvY2sqIGJsb2NrID0gbV9oZWFwLmJsb2Nrc1tibG9ja051bWJlcl07Ci0KLSAgICAvLyBzd2Fw
IHdpdGggdGhlIGxhc3QgYmxvY2sgc28gd2UgY29tcGFjdCBhcyB3ZSBnbwotICAgIG1faGVhcC5i
bG9ja3NbYmxvY2tOdW1iZXJdID0gbV9oZWFwLmJsb2Nrcy5sYXN0KCk7Ci0gICAgbV9oZWFwLmJs
b2Nrcy5yZW1vdmVMYXN0KCk7Ci0gICAgbV9ibG9ja3MucmVtb3ZlKGJsb2NrKTsKLQotICAgIE1h
cmtlZEJsb2NrOjpkZXN0cm95KGJsb2NrKTsKKyAgICBNYXJrZWRCbG9jayogbmV4dCA9IDA7Cisg
ICAgZm9yIChNYXJrZWRCbG9jayogYmxvY2sgPSBibG9ja3MuaGVhZCgpOyBibG9jazsgYmxvY2sg
PSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBibG9jay0+bmV4dCgpOworCisgICAgICAgIGJsb2Nr
cy5yZW1vdmUoYmxvY2spOworICAgICAgICBtX2Jsb2Nrcy5yZW1vdmUoYmxvY2spOworICAgICAg
ICBNYXJrZWRCbG9jazo6ZGVzdHJveShibG9jayk7CisgICAgfQogfQogCiB2b2lkKiBNYXJrZWRT
cGFjZTo6YWxsb2NhdGUoc2l6ZV90KQogewotICAgIGZvciAoIDsgbV9oZWFwLm5leHRCbG9jayA8
IG1faGVhcC5ibG9ja3Muc2l6ZSgpOyArK21faGVhcC5uZXh0QmxvY2spIHsKLSAgICAgICAgTWFy
a2VkQmxvY2sqIGJsb2NrID0gbV9oZWFwLmNvbGxlY3RvckJsb2NrKG1faGVhcC5uZXh0QmxvY2sp
OwotICAgICAgICBpZiAodm9pZCogcmVzdWx0ID0gYmxvY2stPmFsbG9jYXRlKG1faGVhcC5uZXh0
QXRvbSkpCisgICAgZm9yICggOyBtX2hlYXAubmV4dEJsb2NrOyBtX2hlYXAubmV4dEJsb2NrID0g
bV9oZWFwLm5leHRCbG9jay0+bmV4dCgpKSB7CisgICAgICAgIGlmICh2b2lkKiByZXN1bHQgPSBt
X2hlYXAubmV4dEJsb2NrLT5hbGxvY2F0ZShtX2hlYXAubmV4dEF0b20pKQogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKIAotICAgICAgICBtX3dhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHko
KTsKKyAgICAgICAgbV93YXRlck1hcmsgKz0gbV9oZWFwLm5leHRCbG9jay0+Y2FwYWNpdHkoKTsK
ICAgICB9CiAKLSAgICBpZiAobV93YXRlck1hcmsgPCBtX2hpZ2hXYXRlck1hcmspCi0gICAgICAg
IHJldHVybiBhbGxvY2F0ZUJsb2NrKCktPmFsbG9jYXRlKG1faGVhcC5uZXh0QXRvbSk7CisgICAg
aWYgKG1fd2F0ZXJNYXJrIDwgbV9oaWdoV2F0ZXJNYXJrKSB7CisgICAgICAgIG1faGVhcC5uZXh0
QmxvY2sgPSBhbGxvY2F0ZUJsb2NrKCk7CisgICAgICAgIHJldHVybiBtX2hlYXAubmV4dEJsb2Nr
LT5hbGxvY2F0ZShtX2hlYXAubmV4dEF0b20pOworICAgIH0KIAogICAgIHJldHVybiAwOwogfQog
CiB2b2lkIE1hcmtlZFNwYWNlOjpzaHJpbmsoKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IG1faGVhcC5ibG9ja3Muc2l6ZSgpICYmIG1faGVhcC5ibG9ja3Muc2l6ZSgpID4gMTsgKSB7
IC8vIFdlIGFzc3VtZSBhdCBsZWFzdCBvbmUgYmxvY2sgZXhpc3RzIGF0IGFsbCB0aW1lcy4KLSAg
ICAgICAgaWYgKG1faGVhcC5jb2xsZWN0b3JCbG9jayhpKS0+aXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBmcmVlQmxvY2soaSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgKytpOworICAg
IC8vIFdlIHJlY29yZCBhIHRlbXBvcmFyeSBsaXN0IG9mIGVtcHRpZXMgdG8gYXZvaWQgbW9kaWZ5
aW5nIG1fYmxvY2tzIHdoaWxlIGl0ZXJhdGluZyBpdC4KKyAgICBEb3VibHlMaW5rZWRMaXN0PE1h
cmtlZEJsb2NrPiBlbXB0aWVzOworCisgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5l
bmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIG1faGVhcC5ibG9ja0xpc3QucmVtb3ZlKCppdCk7CisgICAgICAgICAgICBlbXB0aWVzLmFw
cGVuZCgqaXQpOworICAgICAgICB9CiAgICAgfQorICAgIAorICAgIG1faGVhcC5uZXh0QmxvY2sg
PSBtX2hlYXAuYmxvY2tMaXN0LmhlYWQoKTsKKworICAgIGZyZWVCbG9ja3MoZW1wdGllcyk7Cisg
ICAgQVNTRVJUKGVtcHRpZXMuaXNFbXB0eSgpKTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6Y2xl
YXJNYXJrcygpCkBAIC0xMzQsNyArMTQ0LDcgQEAgc2l6ZV90IE1hcmtlZFNwYWNlOjpjYXBhY2l0
eSgpIGNvbnN0CiAKIHZvaWQgTWFya2VkU3BhY2U6OnJlc2V0KCkKIHsKLSAgICBtX2hlYXAubmV4
dEJsb2NrID0gMDsKKyAgICBtX2hlYXAubmV4dEJsb2NrID0gbV9oZWFwLmJsb2NrTGlzdC5oZWFk
KCk7CiAgICAgbV9oZWFwLm5leHRBdG9tID0gTWFya2VkQmxvY2s6OmZpcnN0QXRvbSgpOwogICAg
IG1fd2F0ZXJNYXJrID0gMDsKICNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDc5NDU1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVk
ZSAiUGFnZUFsbG9jYXRpb25BbGlnbmVkLmgiCiAjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgpAQCAtNDksMTUgKzUwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBuZXh0
QXRvbSgwKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIE1hcmtlZEJs
b2NrKiBjb2xsZWN0b3JCbG9jayhzaXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBibG9ja3NbaW5kZXhdOwotICAgICAgICB9CiAKLSAgICAgICAgc2l6ZV90
IG5leHRCbG9jazsKKyAgICAgICAgTWFya2VkQmxvY2sqIG5leHRCbG9jazsKICAgICAgICAgc2l6
ZV90IG5leHRBdG9tOwotICAgICAgICBWZWN0b3I8TWFya2VkQmxvY2sqPiBibG9ja3M7CisgICAg
ICAgIERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+IGJsb2NrTGlzdDsKICAgICB9OwogCiAg
ICAgY2xhc3MgTWFya2VkU3BhY2UgewpAQCAtMTAwLDcgKzk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0
ZXJhdG9yOwogCiAgICAgICAgIE5FVkVSX0lOTElORSBNYXJrZWRCbG9jayogYWxsb2NhdGVCbG9j
aygpOwotICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBmcmVlQmxvY2soc2l6ZV90KTsKKyAgICAg
ICAgTkVWRVJfSU5MSU5FIHZvaWQgZnJlZUJsb2NrcyhEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJs
b2NrPiYpOwogCiAgICAgICAgIHZvaWQgY2xlYXJNYXJrcyhNYXJrZWRCbG9jayopOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDc5NDU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTYsNiArMTYsNyBAQCBTRVQoV1RGX0hFQURFUlMKICAgICBEZWNvZGVyLmgKICAg
ICBEZXF1ZS5oCiAgICAgRGlzYWxsb3dDVHlwZS5oCisgICAgRG91Ymx5TGlua2VkTGlzdC5oCiAg
ICAgRW5jb2Rlci5oCiAgICAgRmFzdEFsbG9jQmFzZS5oCiAgICAgRmFzdE1hbGxvYy5oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RvdWJseUxpbmtlZExpc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RvdWJseUxpbmtlZExpc3QuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRG91Ymx5TGlua2VkTGlzdC5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRG91Ymx5
TGlua2VkTGlzdF9oCisjZGVmaW5lIERvdWJseUxpbmtlZExpc3RfaAorCituYW1lc3BhY2UgV1RG
IHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGNsYXNzIERvdWJseUxpbmtlZExpc3Qgewor
cHVibGljOgorICAgIERvdWJseUxpbmtlZExpc3QoKTsKKyAgICAKKyAgICBib29sIGlzRW1wdHko
KTsKKworICAgIE5vZGUqIGhlYWQoKTsKKworICAgIHZvaWQgYXBwZW5kKE5vZGUqKTsKKyAgICB2
b2lkIHJlbW92ZShOb2RlKik7CisKK3ByaXZhdGU6CisgICAgTm9kZSogbV9oZWFkOworICAgIE5v
ZGUqIG1fdGFpbDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgRG91Ymx5
TGlua2VkTGlzdDxOb2RlPjo6RG91Ymx5TGlua2VkTGlzdCgpCisgICAgOiBtX2hlYWQoMCkKKyAg
ICAsIG1fdGFpbCgwKQoreworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZT4gaW5saW5lIGJv
b2wgRG91Ymx5TGlua2VkTGlzdDxOb2RlPjo6aXNFbXB0eSgpCit7CisgICAgcmV0dXJuICFtX2hl
YWQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgTm9kZSogRG91Ymx5TGlu
a2VkTGlzdDxOb2RlPjo6aGVhZCgpCit7CisgICAgcmV0dXJuIG1faGVhZDsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIE5vZGU+IGlubGluZSB2b2lkIERvdWJseUxpbmtlZExpc3Q8Tm9kZT46OmFw
cGVuZChOb2RlKiBub2RlKQoreworICAgIGlmICghbV90YWlsKSB7CisgICAgICAgIEFTU0VSVCgh
bV9oZWFkKTsKKyAgICAgICAgbV9oZWFkID0gbm9kZTsKKyAgICAgICAgbV90YWlsID0gbm9kZTsK
KyAgICAgICAgbm9kZS0+c2V0UHJldigwKTsKKyAgICAgICAgbm9kZS0+c2V0TmV4dCgwKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChtX2hlYWQpOworICAgIG1fdGFpbC0+
c2V0TmV4dChub2RlKTsKKyAgICBub2RlLT5zZXRQcmV2KG1fdGFpbCk7CisgICAgbm9kZS0+c2V0
TmV4dCgwKTsKKyAgICBtX3RhaWwgPSBub2RlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9k
ZT4gaW5saW5lIHZvaWQgRG91Ymx5TGlua2VkTGlzdDxOb2RlPjo6cmVtb3ZlKE5vZGUqIG5vZGUp
Cit7CisgICAgaWYgKG5vZGUtPnByZXYoKSkgeworICAgICAgICBBU1NFUlQobm9kZSAhPSBtX2hl
YWQpOworICAgICAgICBub2RlLT5wcmV2KCktPnNldE5leHQobm9kZS0+bmV4dCgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBBU1NFUlQobm9kZSA9PSBtX2hlYWQpOworICAgICAgICBtX2hlYWQg
PSBub2RlLT5uZXh0KCk7CisgICAgfQorCisgICAgaWYgKG5vZGUtPm5leHQoKSkgeworICAgICAg
ICBBU1NFUlQobm9kZSAhPSBtX3RhaWwpOworICAgICAgICBub2RlLT5uZXh0KCktPnNldFByZXYo
bm9kZS0+cHJldigpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobm9kZSA9PSBtX3Rh
aWwpOworICAgICAgICBtX3RhaWwgPSBub2RlLT5wcmV2KCk7CisgICAgfQorfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpEb3VibHlMaW5rZWRMaXN0OworCisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkocmV2aXNpb24gNzk0NjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAgQEAKKzIw
MTEtMDItMjMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSb2xsZWQgYmFjayBpbiByNzkz
Njcgd2l0aCBTbm93TGVvcGFyZCBSZWxlYXNlIGJvdCBjcmFzaCBmaXhlZC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0OTk5CisKIDIwMTEtMDItMjIg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVy
cy93dGYvRG91Ymx5TGlua2VkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvRG91Ymx5TGlua2VkTGlzdC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Eb3VibHlM
aW5rZWRMaXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Eb3VibHlMaW5rZWRMaXN0Lmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTQ2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEyIEBACisyMDExLTAyLTIzICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUm9sbGVkIGJh
Y2sgaW4gcjc5MzY3IHdpdGggU25vd0xlb3BhcmQgUmVsZWFzZSBib3QgY3Jhc2ggZml4ZWQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDk5OQorCisg
ICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RvdWJseUxpbmtlZExpc3QuaDogQWRkZWQu
CisKIDIwMTEtMDItMjMgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL0RvdWJseUxpbmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvRG91Ymx5TGlua2VkTGlzdC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0RvdWJseUxp
bmtlZExpc3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVf
RldEX0RvdWJseUxpbmtlZExpc3RfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9Eb3VibHlMaW5rZWRM
aXN0X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Eb3VibHlMaW5rZWRMaXN0Lmg+CisjZW5k
aWYK
</data>
<flag name="review"
          id="75345"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>