<?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>44728</bug_id>
          
          <creation_ts>2010-08-26 15:48:44 -0700</creation_ts>
          <short_desc>Adopt more uses OwnPtr/OwnArray in WebKit2</short_desc>
          <delta_ts>2010-08-26 18:49:31 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>270171</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-26 15:48:44 -0700</bug_when>
    <thetext>Adopt more uses OwnPtr/OwnArray in WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270173</commentid>
    <comment_count>1</comment_count>
      <attachid>65636</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-26 15:50:01 -0700</bug_when>
    <thetext>Created attachment 65636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270185</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-26 16:01:47 -0700</bug_when>
    <thetext>Attachment 65636 did not build on qt:
Build output: http://queues.webkit.org/results/3808087</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270247</commentid>
    <comment_count>3</comment_count>
      <attachid>65636</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-26 17:48:25 -0700</bug_when>
    <thetext>Comment on attachment 65636
Patch

&gt; -    for (size_t i = 0; i &lt; m_size; ++i)
&gt; -        m_entries[i]-&gt;ref();

You got rid of the ref() here. That is not right, is it?

Should this be an array of RefPtr&lt;APIObject&gt;?

r=me as long as you fix that ref thing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270262</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-26 18:34:20 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 65636 [details])
&gt; &gt; -    for (size_t i = 0; i &lt; m_size; ++i)
&gt; &gt; -        m_entries[i]-&gt;ref();
&gt; 
&gt; You got rid of the ref() here. That is not right, is it?

It is.  I commented in the changelog that I change the semantics of this function to match the adopt function. It is currently unused.

&gt; Should this be an array of RefPtr&lt;APIObject&gt;?

It can&apos;t be if we want to allow the adoption semantics to remain the same (the C API is allowed to give a buffer that is adopted by the Array).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270265</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-26 18:49:31 -0700</bug_when>
    <thetext>Landed in r66165.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65636</attachid>
            <date>2010-08-26 15:50:01 -0700</date>
            <delta_ts>2010-08-26 17:48:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>29948</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjE0MykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjMgQEAKKzIwMTAtMDgtMjYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZG9wdCBt
b3JlIHVzZXMgT3duUHRyL093bkFycmF5IGluIFdlYktpdDIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDcyOAorCisgICAgICAgIEFsc28gY2xlYXJz
IHVwIHdlaXJkIGNyZWF0ZSB2cy4gYWRvcHRpb24gc2VtYW50aWNzLiBOb3cgYm90aCBjcmVhdGUK
KyAgICAgICAgYW5kIGFkb3B0IGJvdGggZG9uJ3QgcmVmIHRoZWlyIHBvaW50ZXJzLCBhZG9wdGlv
biBpcyBqdXN0IGFib3V0IHRoZQorICAgICAgICBidWZmZXIuCisKKyAgICAgICAgKiBTaGFyZWQv
SW1tdXRhYmxlQXJyYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbW11dGFibGVBcnJheTo6SW1t
dXRhYmxlQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpJbW11dGFibGVBcnJheTo6fkltbXV0YWJs
ZUFycmF5KToKKyAgICAgICAgKiBTaGFyZWQvSW1tdXRhYmxlQXJyYXkuaDoKKyAgICAgICAgKFdl
YktpdDo6SW1tdXRhYmxlQXJyYXk6OmFkb3B0KToKKyAgICAgICAgKiBTaGFyZWQvSW1tdXRhYmxl
RGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltbXV0YWJsZURpY3Rpb25hcnk6Omtl
eXMpOgorICAgICAgICAqIFNoYXJlZC9XZWJEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdl
Q2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1Zp
ZXcgaW5pdFdpdGhGcmFtZTpwYWdlTmFtZXNwYWNlUmVmOl0pOgorICAgICAgICAoLVtXS1ZpZXcg
X3N3aXRjaFRvRHJhd2luZ0FyZWFUeXBlSWZOZWNlc3Nhcnk6RHJhd2luZ0FyZWFQcm94eTo6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0xheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJh
Y2tGb3J3YXJkTGlzdDo6YmFja0xpc3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdEFzSW1tdXRhYmxlQXJy
YXlXaXRoTGltaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UG9zdE1lc3NhZ2VFbmNvZGVyOjpQb3N0TWVzc2FnZURlY29kZXI6OmRlY29k
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBvc3RNZXNzYWdlRW5jb2Rlcjo6UG9zdE1lc3NhZ2VEZWNv
ZGVyOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVQ
b3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJj
aFBvcHVwTWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1
cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OmNyZWF0ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNlYXJjaFBvcHVwTWVudTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2VhcmNoUG9wdXBNZW51OjpXZWJTZWFyY2hQb3B1cE1lbnUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWU6OmNoaWxkRnJhbWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjbG9zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29yZVBhZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQpOgorCiAyMDEwLTA4LTI2ICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuY3BwCShyZXZpc2lvbiA2NjEzNSkKKysr
IFdlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MTUgKzM0LDEzIEBAIEltbXV0YWJsZUFycmF5OjpJbW11dGFibGVBcnJheSgpCiB9CiAKIEltbXV0
YWJsZUFycmF5OjpJbW11dGFibGVBcnJheShBUElPYmplY3QqKiBlbnRyaWVzLCBzaXplX3Qgc2l6
ZSkKLSAgICA6IG1fZW50cmllcyhuZXcgQVBJT2JqZWN0KltzaXplXSkKKyAgICA6IG1fZW50cmll
cyhhZG9wdEFycmF5UHRyKG5ldyBBUElPYmplY3QqW3NpemVdKSkKICAgICAsIG1fc2l6ZShzaXpl
KQogewotICAgIG1lbWNweShtX2VudHJpZXMsIGVudHJpZXMsIG1fc2l6ZSk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKLSAgICAgICAgbV9lbnRyaWVzW2ldLT5yZWYo
KTsKKyAgICBtZW1jcHkobV9lbnRyaWVzLmdldCgpLCBlbnRyaWVzLCBtX3NpemUpOwogfQogCi1J
bW11dGFibGVBcnJheTo6SW1tdXRhYmxlQXJyYXkoQVBJT2JqZWN0KiogZW50cmllcywgc2l6ZV90
IHNpemUsIEFkb3B0VGFnKQorSW1tdXRhYmxlQXJyYXk6OkltbXV0YWJsZUFycmF5KFBhc3NPd25B
cnJheVB0cjxBUElPYmplY3QqPiBlbnRyaWVzLCBzaXplX3Qgc2l6ZSkKICAgICA6IG1fZW50cmll
cyhlbnRyaWVzKQogICAgICwgbV9zaXplKHNpemUpCiB7CkBAIC01NSw3ICs1Myw2IEBAIEltbXV0
YWJsZUFycmF5Ojp+SW1tdXRhYmxlQXJyYXkoKQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3NpemU7ICsraSkKICAgICAgICAgbV9lbnRyaWVzW2ldLT5kZXJlZigpOwotICAgIGRlbGV0
ZSBbXSBtX2VudHJpZXM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0
Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9J
bW11dGFibGVBcnJheS5oCShyZXZpc2lvbiA2NjEzNSkKKysrIFdlYktpdDIvU2hhcmVkL0ltbXV0
YWJsZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNkZWZpbmUgSW1t
dXRhYmxlQXJyYXlfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL093
bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25BcnJheVB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsMTAgKzQ3LDEx
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1tdXRhYmxl
QXJyYXkoZW50cmllcywgc2l6ZSkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbW11
dGFibGVBcnJheT4gYWRvcHQoQVBJT2JqZWN0KiogZW50cmllcywgc2l6ZV90IHNpemUpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGFkb3B0KFBhc3NPd25BcnJheVB0cjxB
UElPYmplY3QqPiBlbnRyaWVzLCBzaXplX3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSW1tdXRhYmxlQXJyYXkoZW50cmllcywgc2l6ZSwgQWRvcHQpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbW11dGFibGVBcnJheShlbnRyaWVzLCBzaXplKSk7CiAg
ICAgfQorCiAgICAgfkltbXV0YWJsZUFycmF5KCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgpAQCAtNjAsMTIgKzYzLDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW1tdXRhYmxlQXJy
YXkoKTsKICAgICBJbW11dGFibGVBcnJheShBUElPYmplY3QqKiBlbnRyaWVzLCBzaXplX3Qgc2l6
ZSk7Ci0gICAgZW51bSBBZG9wdFRhZyB7IEFkb3B0IH07Ci0gICAgSW1tdXRhYmxlQXJyYXkoQVBJ
T2JqZWN0KiogZW50cmllcywgc2l6ZV90IHNpemUsIEFkb3B0VGFnKTsKKyAgICBJbW11dGFibGVB
cnJheShQYXNzT3duQXJyYXlQdHI8QVBJT2JqZWN0Kj4gZW50cmllcywgc2l6ZV90IHNpemUpOwog
CiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CiAKLSAg
ICBBUElPYmplY3QqKiBtX2VudHJpZXM7CisgICAgT3duQXJyYXlQdHI8QVBJT2JqZWN0Kj4gbV9l
bnRyaWVzOwogICAgIHNpemVfdCBtX3NpemU7CiB9OwogCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9J
bW11dGFibGVEaWN0aW9uYXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9JbW11
dGFibGVEaWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gNjYxMzUpCisrKyBXZWJLaXQyL1NoYXJlZC9J
bW11dGFibGVEaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTQgKzQ5LDE0IEBA
IFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IEltbXV0YWJsZURpY3QKICAgICAgICAgcmV0dXJu
IEltbXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKIAogICAgIHNpemVfdCBzaXplID0gbV9tYXAuc2l6
ZSgpOwotICAgIEFQSU9iamVjdCoqIGFycmF5ID0gbmV3IEFQSU9iamVjdCpbc2l6ZV07CisgICAg
T3duQXJyYXlQdHI8QVBJT2JqZWN0Kj4gYXJyYXkgPSBhZG9wdEFycmF5UHRyKG5ldyBBUElPYmpl
Y3QqW3NpemVdKTsKIAogICAgIE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yOjpLZXlzIGl0ID0gbV9t
YXAuYmVnaW4oKS5rZXlzKCk7CiAgICAgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3I6OktleXMgZW5k
ID0gbV9tYXAuZW5kKCkua2V5cygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGl0ICE9IGVu
ZDsgKytpdCwgKytpKQogICAgICAgICBhcnJheVtpXSA9IFdlYlN0cmluZzo6Y3JlYXRlKCppdCku
cmVsZWFzZVJlZigpOwogCi0gICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdChhcnJheSwg
c2l6ZSk7CisgICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdChhcnJheS5yZWxlYXNlKCks
IHNpemUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvU2hhcmVk
L1dlYkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJEYXRhLmgJKHJldmlz
aW9uIDY2MTM1KQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIFdlYkRhdGFfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHku
Y3BwCShyZXZpc2lvbiA2NjEzNSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitQYXNzT3duUHRy
PENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5PiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQ
cm94eTo6Y3JlYXRlKFBsYXRmb3JtV2ViVmlldyogd2ViVmlldykKK3sKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5KHdlYlZpZXcpKTsKK30KKwog
Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVBy
b3h5KFBsYXRmb3JtV2ViVmlldyogd2ViVmlldykKICAgICA6IERyYXdpbmdBcmVhUHJveHkoQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhVHlwZSkKICAgICAsIG1faXNXYWl0aW5nRm9yRGlkU2V0RnJh
bWVOb3RpZmljYXRpb24oZmFsc2UpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9DaHVua2VkVXBk
YXRlRHJhd2luZ0FyZWFQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0No
dW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9uIDY2MTM1KQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNyArNTcsOCBAQCB0eXBlZGVmIFFHcmFwaGljc1dLVmlldyBQbGF0Zm9ybVdlYlZp
ZXc7CiAKIGNsYXNzIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5IDogcHVibGljIERyYXdp
bmdBcmVhUHJveHkgewogcHVibGljOgotICAgIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5
KFBsYXRmb3JtV2ViVmlldyopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5PiBjcmVhdGUoUGxhdGZvcm1XZWJWaWV3Kik7CisKICAgICB2aXJ0dWFs
IH5DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eSgpOwogCiAgICAgLy8gVGhlIERyYXdpbmdB
cmVhUHJveHkgc2hvdWxkIG5ldmVyIGJlIGRlY29kZWQgaXRzZWxmLiBJbnN0ZWFkLCB0aGUgRHJh
d2luZ0FyZWEgc2hvdWxkIGJlIGRlY29kZWQuCkBAIC02Nyw2ICs2OCw4IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6CisgICAgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkoUGxhdGZv
cm1XZWJWaWV3Kik7CisKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UoKTsKIAogICAgIC8vIERyYXdp
bmdBcmVhUHJveHkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0xheWVyQmFja2VkRHJhd2luZ0Fy
ZWFQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJCYWNrZWRE
cmF3aW5nQXJlYVByb3h5LmNwcAkocmV2aXNpb24gNjYxMzUpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNywxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK1Bhc3NPd25QdHI8TGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5PiBMYXllckJhY2tlZERy
YXdpbmdBcmVhUHJveHk6OmNyZWF0ZShQbGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkod2ViVmlldykp
OworfQorCiBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHk6OkxheWVyQmFja2VkRHJhd2luZ0Fy
ZWFQcm94eShQbGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBEcmF3aW5nQXJlYVByb3h5
KExheWVyQmFja2VkRHJhd2luZ0FyZWFUeXBlKQogICAgICwgbV9pc1dhaXRpbmdGb3JEaWRTZXRG
cmFtZU5vdGlmaWNhdGlvbihmYWxzZSkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0xheWVyQmFj
a2VkRHJhd2luZ0FyZWFQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0xh
eWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiA2NjEzNSkKKysrIFdlYktpdDIv
VUlQcm9jZXNzL0xheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NSwxMCArNTUsMTIgQEAgdHlwZWRlZiBXZWJWaWV3IFBsYXRmb3JtV2ViVmlldzsKIAogY2xh
c3MgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5IDogcHVibGljIERyYXdpbmdBcmVhUHJveHkg
ewogcHVibGljOgotICAgIExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eShQbGF0Zm9ybVdlYlZp
ZXcqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHk+
IGNyZWF0ZShQbGF0Zm9ybVdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIH5MYXllckJhY2tlZERyYXdp
bmdBcmVhUHJveHkoKTsKIAogcHJpdmF0ZToKKyAgICBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJv
eHkoUGxhdGZvcm1XZWJWaWV3Kik7CisKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UoKTsKIAogICAg
IC8vIERyYXdpbmdBcmVhUHJveHkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0Zvcndh
cmRMaXN0LmNwcAkocmV2aXNpb24gNjYxMzUpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTczLDcgQEAgUGFzc1Jl
ZlB0cjxJbW11dGFibGVBcnJheT4gV2ViQmFja0ZvcndhcgogICAgIGlmICghc2l6ZSkKICAgICAg
ICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKIAotICAgIEFQSU9iamVjdCoqIGFy
cmF5ID0gbmV3IEFQSU9iamVjdCpbc2l6ZV07CisgICAgT3duQXJyYXlQdHI8QVBJT2JqZWN0Kj4g
YXJyYXkgPSBhZG9wdEFycmF5UHRyKG5ldyBBUElPYmplY3QqW3NpemVdKTsKICAgICBBU1NFUlQo
YmFja0xpc3RTaXplID49IHNpemUpOwogICAgIGZvciAodW5zaWduZWQgaSA9IGJhY2tMaXN0U2l6
ZSAtIHNpemUsIGogPSAwOyBpIDwgYmFja0xpc3RTaXplOyArK2ksICsraikgewogICAgICAgICBB
UElPYmplY3QqIGl0ZW0gPSBtX2VudHJpZXNbaV0uZ2V0KCk7CkBAIC0xODEsNyArMTgxLDcgQEAg
UGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViQmFja0ZvcndhcgogICAgICAgICBhcnJheVtq
XSA9IGl0ZW07CiAgICAgfQogCi0gICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdChhcnJh
eSwgc2l6ZSk7CisgICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdChhcnJheS5yZWxlYXNl
KCksIHNpemUpOwogfQogCiBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OmZvcndhcmRMaXN0QXNJbW11dGFibGVBcnJheVdpdGhMaW1pdCh1bnNpZ25lZCBsaW1p
dCkKQEAgLTE5MCw3ICsxOTAsNyBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJCYWNr
Rm9yd2FyCiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmNy
ZWF0ZSgpOwogCi0gICAgQVBJT2JqZWN0KiogYXJyYXkgPSBuZXcgQVBJT2JqZWN0KltzaXplXTsK
KyAgICBPd25BcnJheVB0cjxBUElPYmplY3QqPiBhcnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IEFQ
SU9iamVjdCpbc2l6ZV0pOwogICAgIHVuc2lnbmVkIGxhc3QgPSBtX2N1cnJlbnQgKyBzaXplOwog
ICAgIEFTU0VSVChsYXN0IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9jdXJyZW50ICsgMSwgaiA9IDA7IGkgPD0gbGFzdDsgKytpLCArK2opIHsKQEAgLTE5OSw3
ICsxOTksNyBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJCYWNrRm9yd2FyCiAgICAg
ICAgIGFycmF5W2pdID0gaXRlbTsKICAgICB9CiAKLSAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6
OmFkb3B0KGFycmF5LCBzaXplKTsKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KGFy
cmF5LnJlbGVhc2UoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDY2MTM5KQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw5ICsxMjcsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShzaXplKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIE93bkFycmF5
UHRyPEFQSU9iamVjdCo+IGFycmF5OwotICAgICAgICAgICAgYXJyYXkuc2V0KG5ldyBBUElPYmpl
Y3QqW3NpemVdKTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgT3duQXJyYXlQdHI8QVBJT2Jq
ZWN0Kj4gYXJyYXkgPSBhZG9wdEFycmF5UHRyKG5ldyBBUElPYmplY3QqW3NpemVdKTsKICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICAg
ICAgQVBJT2JqZWN0KiBlbGVtZW50OwogICAgICAgICAgICAgICAgIFBvc3RNZXNzYWdlRGVjb2Rl
ciBtZXNzYWdlQ29kZXIoJmVsZW1lbnQsIGNvZGVyLm1fY29udGV4dCk7CkBAIC0xMzgsNyArMTM2
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFycmF5W2ldID0gZWxlbWVudDsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgKihjb2Rlci5tX3Jvb3QpID0gSW1tdXRhYmxlQXJyYXk6
OmNyZWF0ZShhcnJheS5yZWxlYXNlKCkubGVha1B0cigpLCBzaXplKS5sZWFrUmVmKCk7CisgICAg
ICAgICAgICAqKGNvZGVyLm1fcm9vdCkgPSBJbW11dGFibGVBcnJheTo6YWRvcHQoYXJyYXkucmVs
ZWFzZSgpLCBzaXplKS5sZWFrUmVmKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVN0cmluZzogewpJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gNjYxMzUpCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDEwICszOCwxMiBAQCBOU1N0cmluZyogbnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhjb25z
CiAKIGNsYXNzIFBhZ2VDbGllbnRJbXBsIDogcHVibGljIFBhZ2VDbGllbnQgewogcHVibGljOgot
ICAgIFBhZ2VDbGllbnRJbXBsKFdLVmlldyopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VD
bGllbnRJbXBsPiBjcmVhdGUoV0tWaWV3Kik7CiAgICAgdmlydHVhbCB+UGFnZUNsaWVudEltcGwo
KTsKIAogcHJpdmF0ZToKKyAgICBQYWdlQ2xpZW50SW1wbChXS1ZpZXcqKTsKKwogICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzRGlkRXhpdCgpOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkUmV2
aXZlKCk7CiAgICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhib29sIGRpcmVjdGlvbik7CkluZGV4
OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0JKHJldmlzaW9u
IDY2MTM1KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwu
aCIKICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvdW5kYXRp
b25FeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00MSw2ICs0Miwx
MSBAQCBOU1N0cmluZyogbnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhjb25zCiAgICAgcmV0dXJu
IHN0cmluZy5pbXBsKCkgPyBIYXJkQXV0b3JlbGVhc2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwg
dG9SZWYoc3RyaW5nLmltcGwoKSkpKSA6IEAiIjsKIH0KIAorUGFzc093blB0cjxQYWdlQ2xpZW50
SW1wbD4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZShXS1ZpZXcqIHdrVmlldykKK3sKKyAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFBhZ2VDbGllbnRJbXBsKHdrVmlldykpOworfQorCiBQYWdlQ2xpZW50
SW1wbDo6UGFnZUNsaWVudEltcGwoV0tWaWV3KiB3a1ZpZXcpCiAgICAgOiBtX3drVmlldyh3a1Zp
ZXcpCiB7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gNjYx
MzUpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5
KQpAQCAtODUsMTAgKzg1LDEwIEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBw
YWdlTmEKIAogICAgIF9kYXRhID0gW1tXS1ZpZXdEYXRhIGFsbG9jXSBpbml0XTsKIAotICAgIF9k
YXRhLT5fcGFnZUNsaWVudC5zZXQobmV3IFBhZ2VDbGllbnRJbXBsKHNlbGYpKTsKKyAgICBfZGF0
YS0+X3BhZ2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKHNlbGYpOwogICAgIF9kYXRh
LT5fcGFnZSA9IHRvV0socGFnZU5hbWVzcGFjZVJlZiktPmNyZWF0ZVdlYlBhZ2UoKTsKICAgICBf
ZGF0YS0+X3BhZ2UtPnNldFBhZ2VDbGllbnQoX2RhdGEtPl9wYWdlQ2xpZW50LmdldCgpKTsKLSAg
ICBfZGF0YS0+X3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKEludFNpemUoZnJhbWUuc2l6ZSksIG5l
dyBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eShzZWxmKSk7CisgICAgX2RhdGEtPl9wYWdl
LT5pbml0aWFsaXplV2ViUGFnZShJbnRTaXplKGZyYW1lLnNpemUpLCBDaHVua2VkVXBkYXRlRHJh
d2luZ0FyZWFQcm94eTo6Y3JlYXRlKHNlbGYpKTsKICAgICBfZGF0YS0+X3BhZ2UtPnNldElzSW5X
aW5kb3coW3NlbGYgd2luZG93XSk7CiAKICAgICByZXR1cm4gc2VsZjsKQEAgLTUzMSwxMSArNTMx
LDExIEBAIC0gKHZvaWQpX3N3aXRjaFRvRHJhd2luZ0FyZWFUeXBlSWZOZWNlc3MKICAgICAgICAg
Y2FzZSBEcmF3aW5nQXJlYVByb3h5OjpOb25lOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgRHJhd2luZ0FyZWFQcm94eTo6Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhVHlwZTogewot
ICAgICAgICAgICAgbmV3RHJhd2luZ0FyZWEgPSBuZXcgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVh
UHJveHkoc2VsZik7CisgICAgICAgICAgICBuZXdEcmF3aW5nQXJlYSA9IENodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5OjpjcmVhdGUoc2VsZik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERyYXdpbmdBcmVhUHJveHk6OkxheWVyQmFja2VkRHJhd2luZ0Fy
ZWFUeXBlOiB7Ci0gICAgICAgICAgICBuZXdEcmF3aW5nQXJlYSA9IG5ldyBMYXllckJhY2tlZERy
YXdpbmdBcmVhUHJveHkoc2VsZik7CisgICAgICAgICAgICBuZXdEcmF3aW5nQXJlYSA9IExheWVy
QmFja2VkRHJhd2luZ0FyZWFQcm94eTo6Y3JlYXRlKHNlbGYpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDY2MTM5KQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIyLDEwICsxMjIsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICB1aW50NjRf
dCBzaXplOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc2l6ZSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBPd25BcnJh
eVB0cjxBUElPYmplY3QqPiBhcnJheTsKLSAgICAgICAgICAgIGFycmF5LnNldChuZXcgQVBJT2Jq
ZWN0KltzaXplXSk7Ci0gICAgICAgICAgICAKKworICAgICAgICAgICAgT3duQXJyYXlQdHI8QVBJ
T2JqZWN0Kj4gYXJyYXkgPSBhZG9wdEFycmF5UHRyKG5ldyBBUElPYmplY3QqW3NpemVdKTsKICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgQVBJT2JqZWN0KiBlbGVtZW50OwogICAgICAgICAgICAgICAgIFBvc3RNZXNzYWdlRGVj
b2RlciBtZXNzYWdlQ29kZXIoJmVsZW1lbnQpOwpAQCAtMTM0LDcgKzEzMiw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBhcnJheVtpXSA9IGVsZW1lbnQ7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICooY29kZXIubV9yb290KSA9IEltbXV0YWJsZUFycmF5OjpjcmVhdGUoYXJyYXku
cmVsZWFzZSgpLmxlYWtQdHIoKSwgc2l6ZSkubGVha1JlZigpOworICAgICAgICAgICAgKihjb2Rl
ci5tX3Jvb3QpID0gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KGFycmF5LnJlbGVhc2UoKSwgc2l6ZSku
bGVha1JlZigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBB
UElPYmplY3Q6OlR5cGVTdHJpbmc6IHsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA2NjEzNSkK
KysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MDEsMTIgKzUwMSwxMiBAQCBib29sIFdlYkNocm9tZUNsaWVu
dDo6c2VsZWN0SXRlbVdyaXRpbmdECiAKIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBX
ZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
IGNsaWVudCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudShj
bGllbnQpKTsKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51OjpjcmVhdGUoY2xpZW50KTsKIH0KIAog
UGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25z
dAogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU2VhcmNoUG9wdXBNZW51KGNsaWVudCkp
OworICAgIHJldHVybiBXZWJTZWFyY2hQb3B1cE1lbnU6OmNyZWF0ZShjbGllbnQpOwogfQogCiBQ
YXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSFRNTFBh
cnNlclF1aXJrcygpCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UG9wdXBNZW51LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUG9wdXBNZW51LmNwcAkocmV2aXNpb24gNjYxMzUpCisrKyBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTcsNiAr
MTgsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKgogICovCisKICNpbmNs
dWRlICJXZWJQb3B1cE1lbnUuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CkBA
IC0yNCw2ICsyNiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorUGFzc1JlZlB0cjxXZWJQ
b3B1cE1lbnU+IFdlYlBvcHVwTWVudTo6Y3JlYXRlKFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCog
Y2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51KGNsaWVudCkp
OworfQorCiBXZWJQb3B1cE1lbnU6OldlYlBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqIGNsaWVudCkKICAgICA6IG1fcG9wdXBDbGllbnQoY2xpZW50KQogewpAQCAtNTIsNCArNTks
NCBAQCB2b2lkIFdlYlBvcHVwTWVudTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogewogfQogCi19Cit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQb3B1cE1lbnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgJKHJldmlzaW9uIDY2MTM1KQorKysgV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw2
ICsyMyw3IEBACiAjZGVmaW5lIFdlYlBvcHVwTWVudV9oCiAKICNpbmNsdWRlIDxXZWJDb3JlL1Bv
cHVwTWVudS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFBvcHVwTWVudUNsaWVudDsKQEAgLTMxLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYlBvcHVwTWVudSA6IHB1YmxpYyBXZWJDb3JlOjpQb3B1cE1lbnUg
ewogcHVibGljOgotICAgIFdlYlBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnU+IGNyZWF0ZShXZWJDb3JlOjpQb3B1
cE1lbnVDbGllbnQqKTsKICAgICB+V2ViUG9wdXBNZW51KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2hvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6RnJhbWVWaWV3KiwgaW50IGlu
ZGV4KTsKQEAgLTQwLDkgKzQyLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29u
bmVjdENsaWVudCgpOwogCiBwcml2YXRlOgorICAgIFdlYlBvcHVwTWVudShXZWJDb3JlOjpQb3B1
cE1lbnVDbGllbnQqKTsKKwogICAgIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogbV9wb3B1cENs
aWVudDsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2ViUG9w
dXBNZW51X2gKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFy
Y2hQb3B1cE1lbnUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCShyZXZpc2lvbiA2NjEzNSkKKysrIFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yMyw4ICsyNCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorUGFzc1JlZlB0
cjxXZWJTZWFyY2hQb3B1cE1lbnU+IFdlYlNlYXJjaFBvcHVwTWVudTo6Y3JlYXRlKFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
U2VhcmNoUG9wdXBNZW51KGNsaWVudCkpOworfQorCiBXZWJTZWFyY2hQb3B1cE1lbnU6OldlYlNl
YXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1f
cG9wdXAoYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudShjbGllbnQpKSkKKyAgICA6IG1fcG9wdXAo
V2ViUG9wdXBNZW51OjpjcmVhdGUoY2xpZW50KSkKIHsKIH0KIApAQCAtNDYsNCArNTIsNCBAQCBi
b29sIFdlYlNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci19Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgJKHJldmlzaW9uIDY2
MTM1KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVw
TWVudS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxNCArMjEsMTQgQEAKICNpZm5kZWYgV2ViU2Vh
cmNoUG9wdXBNZW51X2gKICNkZWZpbmUgV2ViU2VhcmNoUG9wdXBNZW51X2gKIAotI2luY2x1ZGUg
PFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYlNlYXJjaFBvcHVwTWVudSA6IHB1YmxpYyBXZWJDb3JlOjpTZWFyY2hQb3B1
cE1lbnUgewogcHVibGljOgotICAgIFdlYlNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTZWFyY2hQb3B1cE1lbnU+IGNy
ZWF0ZShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6
UG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlY2VudFNlYXJj
aGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiBzZWFyY2hJdGVtcyk7CkBAIC0zNiw2ICszNiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgZW5hYmxlZCgpOwogCiBwcml2YXRlOgorICAgIFdlYlNlYXJjaFBvcHVwTWVudShXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKKwogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnU+IG1fcG9w
dXA7CiB9OwogCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShy
ZXZpc2lvbiA2NjEzNSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw3IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxl
QXJyYXk+IFdlYkZyYW1lOjpjaGkKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBJbW11
dGFibGVBcnJheTo6Y3JlYXRlKCk7CiAKLSAgICBBUElPYmplY3QqKiBhcnJheSA9IG5ldyBBUElP
YmplY3QqW3NpemVdOworICAgIE93bkFycmF5UHRyPEFQSU9iamVjdCo+IGFycmF5ID0gYWRvcHRB
cnJheVB0cihuZXcgQVBJT2JqZWN0KltzaXplXSk7CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAg
Zm9yIChGcmFtZSogY2hpbGQgPSBtX2NvcmVGcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCksICsraSkgewogICAgICAg
ICBXZWJGcmFtZSogd2ViRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+
KGNoaWxkLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOwpAQCAtMjMyLDcgKzIzMiw3
IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IFdlYkZyYW1lOjpjaGkKICAgICAgICAgYXJy
YXlbaV0gPSB3ZWJGcmFtZTsKICAgICB9CiAKLSAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFk
b3B0KGFycmF5LCBzaXplKTsKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KGFycmF5
LnJlbGVhc2UoKSwgc2l6ZSk7CiB9CiAKIHVuc2lnbmVkIFdlYkZyYW1lOjpudW1iZXJPZkFjdGl2
ZUFuaW1hdGlvbnMoKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHJldmlzaW9uIDY2MTM1KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IAogICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgV2Vi
RHJhZ0NsaWVudCh0aGlzKTsKICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcg
V2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMpOwogICAgIHBhZ2VDbGllbnRzLmJhY2tGb3J3YXJkQ29u
dHJvbGxlckNsaWVudCA9IG5ldyBXZWJCYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQodGhpcyk7
Ci0gICAgbV9wYWdlID0gbmV3IFBhZ2UocGFnZUNsaWVudHMpOworICAgIG1fcGFnZSA9IGFkb3B0
UHRyKG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CiAKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNl
dEphdmFTY3JpcHRFbmFibGVkKHN0b3JlLmphdmFTY3JpcHRFbmFibGVkKTsKICAgICBtX3BhZ2Ut
PnNldHRpbmdzKCktPnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShzdG9yZS5sb2Fkc0ltYWdl
c0F1dG9tYXRpY2FsbHkpOwpAQCAtMjMwLDggKzIzMCw3IEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2Uo
KQogCiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+ZGV0YWNoRnJvbVBh
cmVudCgpOwogCi0gICAgZGVsZXRlIG1fcGFnZTsKLSAgICBtX3BhZ2UgPSAwOworICAgIG1fcGFn
ZS5jbGVhcigpOwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlV2ViUGFnZShtX3Bh
Z2VJRCk7CiB9CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lv
biA2NjEzNSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVG91
Y2hFdmVudC5oPgogI2VuZGlmCkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y2xvc2UoKTsKIAotICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlOyB9CisgICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2UoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2UuZ2V0KCk7IH0KICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VJRDsgfQogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lKHVpbnQ2NF90KSBjb25zdDsKQEAgLTE2
OCw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KFdlYkZyYW1lKiwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBv
bGljeUFjdGlvbik7CiAgICAgdm9pZCBzZXRDdXN0b21Vc2VyQWdlbnQoY29uc3QgV1RGOjpTdHJp
bmcmKTsKIAotICAgIFdlYkNvcmU6OlBhZ2UqIG1fcGFnZTsKKyAgICBPd25QdHI8V2ViQ29yZTo6
UGFnZT4gbV9wYWdlOwogICAgIFJlZlB0cjxXZWJGcmFtZT4gbV9tYWluRnJhbWU7CiAgICAgSGFz
aE1hcDx1aW50NjRfdCwgV2ViRnJhbWUqPiBtX2ZyYW1lTWFwOwogCkluZGV4OiBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gNjYxMzUpCisr
KyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjAyLDQ1ICsyMDIsNDUgQEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtRGVmYXVsdEJl
aGF2aW9yRm9ySwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZLX1NQQUNFOgogICAgICAgICBp
ZiAoa2V5Ym9hcmRFdmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgc2Nyb2xsKG1fcGFnZSwg
U2Nyb2xsVXAsIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgp
LCBTY3JvbGxVcCwgU2Nyb2xsQnlQYWdlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2Ny
b2xsKG1fcGFnZSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsKKyAgICAgICAgICAgIHNjcm9s
bChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgVktfUFJJT1I6Ci0gICAgICAgIHNjcm9sbChtX3BhZ2UsIFNjcm9sbFVwLCBT
Y3JvbGxCeVBhZ2UpOworICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Ny
b2xsQnlQYWdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWS19ORVhUOgotICAgICAgICBz
Y3JvbGwobV9wYWdlLCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAgICAgICBzY3JvbGwo
bV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgIHNjcm9sbChtX3BhZ2UsIFNjcm9sbFVwLCBTY3Jv
bGxCeURvY3VtZW50KTsKLSAgICAgICAgc2Nyb2xsKG1fcGFnZSwgU2Nyb2xsTGVmdCwgU2Nyb2xs
QnlEb2N1bWVudCk7CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3Jv
bGxCeURvY3VtZW50KTsKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwg
U2Nyb2xsQnlEb2N1bWVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVktfRU5EOgotICAg
ICAgICBzY3JvbGwobV9wYWdlLCBTY3JvbGxEb3duLCBTY3JvbGxCeURvY3VtZW50KTsKLSAgICAg
ICAgc2Nyb2xsKG1fcGFnZSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgICAg
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOworICAg
ICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWS19VUDoKICAgICAgICAgaWYgKGtleWJvYXJkRXZl
bnQuc2hpZnRLZXkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGtl
eWJvYXJkRXZlbnQubWV0YUtleSgpKSB7Ci0gICAgICAgICAgICBzY3JvbGwobV9wYWdlLCBTY3Jv
bGxVcCwgU2Nyb2xsQnlEb2N1bWVudCk7Ci0gICAgICAgICAgICBzY3JvbGwobV9wYWdlLCBTY3Jv
bGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0
KCksIFNjcm9sbFVwLCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAgICAgICAgIHNjcm9sbChtX3Bh
Z2UuZ2V0KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5RG9jdW1lbnQpOwogICAgICAgICB9IGVsc2Ug
aWYgKGtleWJvYXJkRXZlbnQuYWx0S2V5KCkgfHwga2V5Ym9hcmRFdmVudC5jb250cm9sS2V5KCkp
Ci0gICAgICAgICAgICBzY3JvbGwobV9wYWdlLCBTY3JvbGxVcCwgU2Nyb2xsQnlQYWdlKTsKKyAg
ICAgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeVBhZ2UpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JvbGwobV9wYWdlLCBTY3JvbGxVcCwgU2Nyb2xs
QnlMaW5lKTsKKyAgICAgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3Jv
bGxCeUxpbmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZLX0RPV046CiAgICAgICAgIGlm
IChrZXlib2FyZEV2ZW50LnNoaWZ0S2V5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGlmIChrZXlib2FyZEV2ZW50Lm1ldGFLZXkoKSkgewotICAgICAgICAgICAgc2Nyb2xs
KG1fcGFnZSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlEb2N1bWVudCk7Ci0gICAgICAgICAgICBzY3Jv
bGwobV9wYWdlLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAgICAgICAgIHNj
cm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgICAg
ICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlEb2N1bWVudCk7
CiAgICAgICAgIH0gZWxzZSBpZiAoa2V5Ym9hcmRFdmVudC5hbHRLZXkoKSB8fCBrZXlib2FyZEV2
ZW50LmNvbnRyb2xLZXkoKSkKLSAgICAgICAgICAgIHNjcm9sbChtX3BhZ2UsIFNjcm9sbERvd24s
IFNjcm9sbEJ5UGFnZSk7CisgICAgICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxE
b3duLCBTY3JvbGxCeVBhZ2UpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JvbGwobV9w
YWdlLCBTY3JvbGxEb3duLCBTY3JvbGxCeUxpbmUpOworICAgICAgICAgICAgc2Nyb2xsKG1fcGFn
ZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlMaW5lKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBWS19MRUZUOgogICAgICAgICBpZiAoa2V5Ym9hcmRFdmVudC5zaGlmdEtleSgpKQpAQCAt
MjQ5LDkgKzI0OSw5IEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcksK
ICAgICAgICAgICAgIG1fcGFnZS0+Z29CYWNrKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgaWYgKGtleWJvYXJkRXZlbnQuYWx0S2V5KCkgIHwga2V5Ym9hcmRFdmVudC5jb250cm9sS2V5
KCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsKG1fcGFnZSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQ
YWdlKTsKKyAgICAgICAgICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBT
Y3JvbGxCeVBhZ2UpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNjcm9sbCht
X3BhZ2UsIFNjcm9sbExlZnQsIFNjcm9sbEJ5TGluZSk7CisgICAgICAgICAgICAgICAgc2Nyb2xs
KG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFZLX1JJR0hUOgpAQCAtMjYxLDkgKzI2MSw5IEBAIGJvb2wg
V2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcksKICAgICAgICAgICAgIG1fcGFnZS0+
Z29Gb3J3YXJkKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKGtleWJvYXJkRXZl
bnQuYWx0S2V5KCkgfHwga2V5Ym9hcmRFdmVudC5jb250cm9sS2V5KCkpCi0gICAgICAgICAgICAg
ICAgc2Nyb2xsKG1fcGFnZSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgICAg
ICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2Nyb2xsKG1fcGFnZSwgU2Nyb2xsUmln
aHQsIFNjcm9sbEJ5TGluZSk7CisgICAgICAgICAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwg
U2Nyb2xsUmlnaHQsIFNjcm9sbEJ5TGluZSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdl
V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2Vi
UGFnZVdpbi5jcHAJKHJldmlzaW9uIDY2MTM1KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2luL1dlYlBhZ2VXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMzMgKzIwMCwzMyBA
QCBib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLCiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgVktfU1BBQ0U6CiAgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LnNoaWZ0S2V5
KCkpCi0gICAgICAgICAgICBzY3JvbGwobV9wYWdlLCBTY3JvbGxVcCwgU2Nyb2xsQnlQYWdlKTsK
KyAgICAgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeVBhZ2Up
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JvbGwobV9wYWdlLCBTY3JvbGxEb3duLCBT
Y3JvbGxCeVBhZ2UpOworICAgICAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93
biwgU2Nyb2xsQnlQYWdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWS19MRUZUOgotICAg
ICAgICBzY3JvbGwobV9wYWdlLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeUxpbmUpOworICAgICAgICBz
Y3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeUxpbmUpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICBzY3JvbGwobV9wYWdlLCBTY3JvbGxS
aWdodCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xs
UmlnaHQsIFNjcm9sbEJ5TGluZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVktfVVA6Ci0g
ICAgICAgIHNjcm9sbChtX3BhZ2UsIFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUpOworICAgICAgICBz
Y3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICBzY3JvbGwobV9wYWdlLCBTY3JvbGxEb3du
LCBTY3JvbGxCeUxpbmUpOworICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3du
LCBTY3JvbGxCeUxpbmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZLX0hPTUU6Ci0gICAg
ICAgIHNjcm9sbChtX3BhZ2UsIFNjcm9sbFVwLCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAgICAg
c2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5RG9jdW1lbnQpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFZLX0VORDoKLSAgICAgICAgc2Nyb2xsKG1fcGFnZSwgU2Nyb2xs
RG93biwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNj
cm9sbERvd24sIFNjcm9sbEJ5RG9jdW1lbnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZL
X1BSSU9SOgotICAgICAgICBzY3JvbGwobV9wYWdlLCBTY3JvbGxVcCwgU2Nyb2xsQnlQYWdlKTsK
KyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5UGFnZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgVktfTkVYVDoKLSAgICAgICAgc2Nyb2xsKG1fcGFnZSwg
U2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwg
U2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwo=
</data>
<flag name="review"
          id="54459"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>