<?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>69567</bug_id>
          
          <creation_ts>2011-10-06 14:55:14 -0700</creation_ts>
          <short_desc>Make IconLoader a CachedResourceClient</short_desc>
          <delta_ts>2011-10-07 11:15:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>479519</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-10-06 14:55:14 -0700</bug_when>
    <thetext>This, combined with bugs.webkit.org/show_bug.cgi?id=61225, would allow us to remove SubresourceLoaderClient and simplify the layering in the loader.  Unlike bugs.webkit.org/show_bug.cgi?id=61225, this patch is relatively small.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479530</commentid>
    <comment_count>1</comment_count>
      <attachid>110037</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-10-06 14:59:07 -0700</bug_when>
    <thetext>Created attachment 110037
patch

This is plumbing only, the CachedResource for an icon load is never reused.  I&apos;d be happy to change that policy in a later patch, if others think it&apos;s a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479591</commentid>
    <comment_count>2</comment_count>
      <attachid>110037</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-06 16:04:25 -0700</bug_when>
    <thetext>Comment on attachment 110037
patch

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

This looks great.  One question: Why &quot;raw&quot; resource instead of &quot;icon&quot; resource?  Are you planning to use this kind of cached resource for other purposes?

&gt; Source/WebCore/loader/cache/CachedResource.h:139
&gt; +    virtual bool ignoreForRequestCount() const

Why virtual?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480031</commentid>
    <comment_count>3</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-10-07 08:49:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 110037 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110037&amp;action=review
&gt; 
&gt; This looks great.  One question: Why &quot;raw&quot; resource instead of &quot;icon&quot; resource?  Are you planning to use this kind of cached resource for other purposes?

The behavior of the CachedResource for icons will be pretty much exactly the behavior of the CachedResource for DocumentThreadableLoader (see the naming in https://bugs.webkit.org/show_bug.cgi?id=61225)

Also, I was trying to indicate that this CachedResource type has no decoded version of the data, unlike all of the other types.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResource.h:139
&gt; &gt; +    virtual bool ignoreForRequestCount() const
&gt; 
&gt; Why virtual?

I had been thinking that it might make sense to allow CachedResource subtypes to override this, but I don&apos;t think it&apos;s actually necessary.  Will remove before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480037</commentid>
    <comment_count>4</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-10-07 08:50:50 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 110037 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110037&amp;action=review
&gt; &gt; 
&gt; &gt; This looks great.  One question: Why &quot;raw&quot; resource instead of &quot;icon&quot; resource?  Are you planning to use this kind of cached resource for other purposes?

&gt; 
&gt; The behavior of the CachedResource for icons will be pretty much exactly the behavior of the CachedResource for DocumentThreadableLoader (see the naming in https://bugs.webkit.org/show_bug.cgi?id=61225)

I hit submit too soon.  The icon behavior should be a strict subset of the behavior for DocumentThreadableLoader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480046</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-07 08:57:16 -0700</bug_when>
    <thetext>Ok.  We might end up with empty subclasses so that we can continue to do security checks using semantically meaningful type names, but that&apos;s a super minor issue and something we can worry about in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480108</commentid>
    <comment_count>6</comment_count>
      <attachid>110167</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-10-07 10:23:53 -0700</bug_when>
    <thetext>Created attachment 110167
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480149</commentid>
    <comment_count>7</comment_count>
      <attachid>110167</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-07 11:15:11 -0700</bug_when>
    <thetext>Comment on attachment 110167
Patch for landing

Clearing flags on attachment: 110167

Committed r96961: &lt;http://trac.webkit.org/changeset/96961&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480150</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-07 11:15:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110037</attachid>
            <date>2011-10-06 14:59:07 -0700</date>
            <delta_ts>2011-10-07 10:23:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>iconloader.txt</filename>
            <type>text/plain</type>
            <size>30321</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTY3MjApCisrKyBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMDk5
LDYgKzIwOTksOCBAQAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXIuaCBcCisJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwIFwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA5NjcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC04NjgsNiArODY4LDcgQEAKICAgICBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBcCisgICAgbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyLmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
SGFuZGxlLmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAg
XApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTY4NjEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxMS0xMC0wNiAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgSWNvbkxvYWRlciBh
IENhY2hlZFJlc291cmNlQ2xpZW50IGluc3RlYWQgb2YgYSBTdWJyZXNvdXJjZUxvYWRlckNsaWVu
dC4KKyAgICAgICAgVGhpcyBpcyBvbmUgb2YgdGhlIHN0ZXBzIHJlcXVpcmVkIHRvIHJlbW92ZSB0
aGUgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQgaW50ZXJmYWNlLAorICAgICAgICB3aGljaCB3aWxs
IHNpbXBsaWZ5IHRoZSBsYXllcmluZyBpbiB0aGUgbG9hZGVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NjcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWxp
dHkgY2hhbmdlIGludGVuZGVkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Omlnbm9yZUZvclJl
cXVlc3RDb3VudCk6IFJlbmFtZWQgYW5kIGdlbmVyYWxpemVkIGZyb20gaXNMaW5rUmVzb3VyY2Uo
KSwKKyAgICAgICAgICAgIHdoaWNoIHdhcyBvbmx5IHVzZWQgdG8gZGVjaWRlZCB3aGV0aGVyIHRo
ZSBDYWNoZWRSZXNvdXJjZSBzaG91bGQgY291bnQgdG93YXJkCisgICAgICAgICAgICBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdENvdW50KCkuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmg6
CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6IEdldCBhIENhY2hlZFJlc291
cmNlIGluc3RlYWQgb2YgYSBTdWJyZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6Oklj
b25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogTWVyZ2UgaW4gdGhlIHN0YXR1cyBjb2RlIGNoZWNr
IHRoYXQgd2FzIGluIGRpZFJlY2VpdmVSZXNwb25zZSgpLAorICAgICAgICAgICAgc2luY2Ugd2Ug
d29uJ3QgYmUgY2hlY2tpbmcgYW55IGNhbGxiYWNrcyBiZWZvcmUgdGhlIGxvYWQgY29tcGxldGVz
LgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuaDoKKwogMjAxMS0xMC0wNiAgQW5u
YSBDYXZlbmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkaW5nIHBhcmVu
cyBpbiBXZWJWVFRQYXJzZXIuY3BwIHRvIGFwcGVhc2UgY29tcGlsZXIgcHJlZmVyZW5jZXMuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2
aXNpb24gOTY3MjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjY1OTcsNiArMjY1OTcsMTQgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxjYWNoZVxD
YWNoZWRSYXdSZXNvdXJjZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcY2FjaGVcQ2FjaGVkUmF3UmVzb3VyY2UuaCIKKwkJ
CQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRl
clxjYWNoZVxDYWNoZWRSZXNvdXJjZS5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCShyZXZpc2lvbiA5NjcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtNTg5LDYgKzU4OSw3IEBACiAgICAgICAgICAgICAnbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2Nh
Y2hlL0NhY2hlUG9saWN5LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oJywKKyAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgnLAogICAgICAgICAgICAg
J2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oJywKICAgICAgICAgICAgICdsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCcsCkBAIC0yODE5LDYgKzI4MjAsNyBAQAog
ICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCcsCiAgICAgICAgICAgICAn
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCcsCisgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCcs
CiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmNw
cCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
LmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDk2NzIwKQorKysgU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk0Miw2ICs5NDIsNyBA
QAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAogICAgIGxvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKyAg
ICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCiAgICAgbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlci5jcHAKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA5NjcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTQ5NSw2ICs1NDk1LDggQEAKIAkJRDBD
RTU4RjkxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBDRTU4RjcxMjVFNENDMjAw
RjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQwRDE0MUIyMTJCMkJGNTIwMEUzOTYyMCAvKiBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDBEMTQxQjAxMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNl
UmVxdWVzdC5jcHAgKi87IH07CiAJCUQwRDE0MUIzMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEQwRDE0MUIxMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEMEVE
QTc3NDE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBFREE3NzIxNDNFMzAzQzAwMjhF
MzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmNwcCAqLzsgfTsKKwkJRDBFREE3NzUxNDNFMzAzQzAw
MjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEMEVEQTc3MzE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3
UmVzb3VyY2UuaCAqLzsgfTsKIAkJRDBGRjJBNUQxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2Fk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBG
RjJBNUIxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuY3BwICovOyB9OwogCQlEMEZGMkE1
RTExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBGRjJBNUMxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdM
b2FkZXIuaCAqLzsgfTsKIAkJRDIzQ0E1NUQwQUIwRUFBRTAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNl
cHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQy
M0NBNTVDMEFCMEVBQUUwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmggKi87IH07CkBAIC0x
MjI4MSw2ICsxMjI4Myw4IEBACiAJCUQwQ0U1OEY3MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRDE0MUIw
MTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBEMTQxQjExMkIyQkY1MjAwRTM5NjIwIC8qIENh
Y2hlZFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBF
REE3NzIxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJhd1Jlc291cmNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBFREE3NzMxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hl
ZFJhd1Jlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJh
d1Jlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRkYyQTVCMTFGOEM0
NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBpbmdMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MEZGMkE1QzExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQaW5nTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUQyM0NBNTQ4MEFCMEU5ODMwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFJhbmdlRXhjZXB0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3NjM5LDYgKzE3NjQzLDggQEAKIAkJQThEMkIyNTIxMjg3QTU2MDAwQUY0
RERBIC8qIGNhY2hlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlEMEVEQTc3MjE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuY3BwICov
LAorCQkJCUQwRURBNzczMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5oICov
LAogCQkJCUJDQjE2QzAwMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cCAqLywKIAkJCQlCQ0IxNkMwMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oICovLAogCQkJCUJDNjRCNEM5MENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmNwcCAq
LywKQEAgLTIzNTU5LDYgKzIzNTY1LDcgQEAKIAkJCQk1OTEwMkZCQzE0MzI3RDNCMDAzQzlEMDQg
LyogQ29udGVudFNlYXJjaFV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4NEYwNTE0M0JB
N0JEMDA1MUQxNTMgLyogU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUYzRjY4REE2MTQzQ0FDNUEwMEMyRjg4NyAvKiBJbnNwZWN0b3JTdGF0ZUNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRDBFREE3NzUxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJh
d1Jlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI2NDAwLDYgKzI2NDA3LDcgQEAKIAkJCQkz
MTlBRTA2OTE0MkQ3OEREMDA2NTYzQTEgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1OTEwMkZCQjE0MzI3RDNCMDAzQzlEMDQgLyogQ29udGVudFNlYXJjaFV0aWxz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQTg0RjA0MTQzQkE3QkQwMDUxRDE1MyAvKiBTY3Jv
bGxFbGFzdGljaXR5Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUQwRURBNzc0MTQz
RTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAxOTk4IExhcnMgS25vbGwgKGtub2xsQG1waS1oZC5tcGcuZGUpCisgICAgQ29weXJpZ2h0
IChDKSAyMDAxIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgorICAgIENvcHlyaWdodCAo
QykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKKyAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpZm5kZWYgQ2FjaGVkUmF3UmVzb3VyY2VfaAorI2RlZmluZSBDYWNoZWRSYXdS
ZXNvdXJjZV9oCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIENhY2hlZFJhd1Jlc291cmNlIDogcHVibGljIENhY2hlZFJlc291cmNl
IHsKK3B1YmxpYzoKKyAgICBDYWNoZWRSYXdSZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmKTsKKyAg
ICAKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKTsKK307CisKK30KKworI2VuZGlmIC8v
IENhY2hlZFJhd1Jlc291cmNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTY3MjApCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oIgogI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgor
I2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkWFNM
U3R5bGVTaGVldC5oIgpAQCAtNjYsNiArNjcsOCBAQAogICAgICAgICByZXR1cm4gbmV3IENhY2hl
ZFNjcmlwdChyZXF1ZXN0LCBjaGFyc2V0KTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250
UmVzb3VyY2U6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkRm9udChyZXF1ZXN0KTsKKyAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNo
ZWRSYXdSZXNvdXJjZShyZXF1ZXN0KTsKICNpZiBFTkFCTEUoWFNMVCkKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZFhTTFN0
eWxlU2hlZXQocmVxdWVzdCk7CkBAIC0yMDIsNiArMjA1LDExIEBACiB9CiAjZW5kaWYKIAorQ2Fj
aGVkUmF3UmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmF3UmVzb3VyY2Uo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZFJhd1Jlc291cmNlKj4ocmVx
dWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5n
KCksIG9wdGlvbnMsIFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgZmFsc2UpKTsKK30K
KwogYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVk
UmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAogewogICAgIHN3aXRj
aCAodHlwZSkgewpAQCAtMjI2LDEzICsyMzQsMTQgQEAKICAgICAgICAgfQogICAgICAgICBicmVh
azsKICAgICB9CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6CiAjaWYgRU5B
QkxFKExJTktfUFJFRkVUQ0gpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNo
OgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVyZW5kZXI6CiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6TGlua1N1YnJlc291cmNlOgogICAgICAgICAvLyBQcmVmZXRjaCBjYW5ub3Qg
YWZmZWN0IHRoZSBjdXJyZW50IGRvY3VtZW50LgorI2VuZGlmCiAgICAgICAgIGJyZWFrOwotI2Vu
ZGlmCiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjU0LDYgKzI2Myw3IEBACiAgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDoKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpTY3JpcHQ6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOgorICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOgogI2lmIEVOQUJMRShMSU5LX1BSRUZF
VENIKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpMaW5rUHJlcmVuZGVyOgpAQCAtMzA4LDEyICszMTgsMTMgQEAKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOgogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQogICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpMaW5rUHJlcmVuZGVyOgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtTdWJyZXNv
dXJjZToKKyNlbmRpZgogICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIH0KIAogICAgIHJldHVy
biB0cnVlOwpAQCAtNDUyLDYgKzQ2MywxMCBAQAogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5n
LCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSByZWxv
YWRpbmcgZHVlIHRvIHR5cGUgbWlzbWF0Y2guIik7CiAgICAgICAgIHJldHVybiBSZWxvYWQ7CiAg
ICAgfQorCisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgYWxsIENhY2hlZFJhd1Jlc291cmNlcyBh
cmUgYWx3YXlzIHJlbG9hZGVkLiBTb21lIG9mIHRoZW0gc2hvdWxkIGJlIGNhY2hlYWJsZS4KKyAg
ICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpSYXdSZXNv
dXJjZSkKKyAgICAgICAgcmV0dXJuIFJlbG9hZDsKICAgICAKICAgICAvLyBEb24ndCByZWxvYWQg
cmVzb3VyY2VzIHdoaWxlIHBhc3RpbmcuCiAgICAgaWYgKG1fYWxsb3dTdGFsZVJlc291cmNlcykK
QEAgLTYyNyw3ICs2NDIsNyBAQAogCiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjppbmNyZW1l
bnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlcykKIHsKLSAgICBpZiAocmVz
LT5pc0xpbmtSZXNvdXJjZSgpKQorICAgIGlmIChyZXMtPmlnbm9yZUZvclJlcXVlc3RDb3VudCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICArK21fcmVxdWVzdENvdW50OwpAQCAtNjM1LDcgKzY1
MCw3IEBACiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlY3JlbWVudFJlcXVlc3RDb3Vu
dChjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzKQogewotICAgIGlmIChyZXMtPmlzTGlua1Jlc291
cmNlKCkpCisgICAgaWYgKHJlcy0+aWdub3JlRm9yUmVxdWVzdENvdW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC0tbV9yZXF1ZXN0Q291bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gOTY3MjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDsKIGNsYXNzIENhY2hlZEZvbnQ7CiBjbGFzcyBDYWNoZWRJbWFnZTsKK2NsYXNzIENhY2hlZFJh
d1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkU2NyaXB0OwogY2xhc3MgQ2FjaGVkWFNMU3R5bGVTaGVl
dDsKIGNsYXNzIERvY3VtZW50OwpAQCAtNjQsNiArNjUsNyBAQAogICAgIENhY2hlZENTU1N0eWxl
U2hlZXQqIHJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBT
dHJpbmcmIGNoYXJzZXQpOwogICAgIENhY2hlZFNjcmlwdCogcmVxdWVzdFNjcmlwdChSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwogICAgIENhY2hlZEZvbnQqIHJlcXVl
c3RGb250KFJlc291cmNlUmVxdWVzdCYpOworICAgIENhY2hlZFJhd1Jlc291cmNlKiByZXF1ZXN0
UmF3UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
Jik7CiAKICNpZiBFTkFCTEUoWFNMVCkKICAgICBDYWNoZWRYU0xTdHlsZVNoZWV0KiByZXF1ZXN0
WFNMU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTEwNyw4ICsxMDksNiBAQAogICAg
IGJvb2wgY2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgS1VSTCYsIGJvb2wg
Zm9yUHJlbG9hZCA9IGZhbHNlKTsKICAgICAKIHByaXZhdGU6Ci0gICAgLy8gRklYTUU6IFRoZSBk
ZWZhdWx0IHZhbHVlIGZvciBSZXNvdXJjZUxvYWRlck9wdGlvbnMgd2lsbCBhbHdheXMgYmUgdXNl
ZCBjdXJyZW50bHkuCi0gICAgLy8gSXQgaXMgcGx1bWJlZCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEyMjUgLgogICAgIENhY2hlZFJlc291cmNlKiByZXF1ZXN0
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2Fk
UHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2Fk
ID0gZmFsc2UpOwogICAgIENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJik7CiAgICAgQ2FjaGVkUmVzb3VyY2UqIGxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6
VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxv
YWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDk2
NzIwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQAogICAgICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpGb250UmVzb3VyY2U6CiAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3Jp
dHlNZWRpdW07CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6Cisg
ICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOgogICAgICAgICAgICAgcmV0
dXJuIFJlc291cmNlTG9hZFByaW9yaXR5TG93OwogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQog
ICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gOTY3MjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsNyArNjMsOCBAQAogICAgICAgICBJbWFnZVJlc291cmNlLAogICAgICAg
ICBDU1NTdHlsZVNoZWV0LAogICAgICAgICBTY3JpcHQsCi0gICAgICAgIEZvbnRSZXNvdXJjZQor
ICAgICAgICBGb250UmVzb3VyY2UsCisgICAgICAgIFJhd1Jlc291cmNlCiAjaWYgRU5BQkxFKFhT
TFQpCiAgICAgICAgICwgWFNMU3R5bGVTaGVldAogI2VuZGlmCkBAIC0xMzUsMTMgKzEzNiwxNSBA
QAogICAgIHZvaWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5nID0gYjsgfQogCiAgICAg
dmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wg
aXNMaW5rUmVzb3VyY2UoKSBjb25zdAorICAgIHZpcnR1YWwgYm9vbCBpZ25vcmVGb3JSZXF1ZXN0
Q291bnQoKSBjb25zdAogICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlCiAjaWYgRU5BQkxFKExJ
TktfUFJFRkVUQ0gpCi0gICAgICAgIHJldHVybiB0eXBlKCkgPT0gTGlua1ByZWZldGNoIHx8IHR5
cGUoKSA9PSBMaW5rUHJlcmVuZGVyIHx8IHR5cGUoKSA9PSBMaW5rU3VicmVzb3VyY2U7Ci0jZWxz
ZQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB8fCB0eXBlKCkgPT0gTGlua1By
ZWZldGNoCisgICAgICAgICAgICB8fCB0eXBlKCkgPT0gTGlua1ByZXJlbmRlcgorICAgICAgICAg
ICAgfHwgdHlwZSgpID09IExpbmtTdWJyZXNvdXJjZQogI2VuZGlmCisgICAgICAgICAgICB8fCB0
eXBlKCkgPT0gUmF3UmVzb3VyY2U7CiAgICAgfQogCiAgICAgdW5zaWduZWQgYWNjZXNzQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc0NvdW50OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAkocmV2aXNp
b24gOTY3MjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQAogICAgICAgICByZXR1
cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ZvbnRSZXNvdXJjZTsKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0
OjpUYXJnZXRJc0ltYWdlOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOgor
ICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlOyAgICAK
ICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5r
UHJlZmV0Y2g6CiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzUHJlZmV0
Y2g7CkBAIC0xNDUsNiArMTQ3LDEzIEBACiAgICAgbV9yZXNvdXJjZS0+c2V0UmVxdWVzdGVkRnJv
bU5ldHdvcmtpbmdMYXllcigpOwogfQogCit2b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6Y2Fu
Y2VsKCkKK3sKKyAgICBpZiAobV9maW5pc2hpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBtX2xv
YWRlci0+Y2FuY2VsKCk7Cit9CisKIHZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpkaWRGaW5p
c2hMb2FkaW5nKFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGRvdWJsZSkKIHsKICAgICBpZiAo
bV9maW5pc2hpbmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291
cmNlLmgiCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0NhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCkKKyAgICA6IENhY2hlZFJlc291cmNlKHJlc291cmNlUmVx
dWVzdCwgUmF3UmVzb3VyY2UpCit7Cit9CisKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmRhdGEo
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorewor
ICAgIG1fZGF0YSA9IGRhdGE7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmRhdGEobV9kYXRhLCBhbGxE
YXRhUmVjZWl2ZWQpOworfQorCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjphbGxDbGllbnRzUmVt
b3ZlZCgpCit7CisgICAgaWYgKG1fcmVxdWVzdCkKKyAgICAgICAgbV9yZXF1ZXN0LT5jYW5jZWwo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gOTY3
MjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICAgICAgICAgfkNhY2hlZFJlc291
cmNlUmVxdWVzdCgpOwogCiAgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNv
dXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7IH0KKyAg
ICAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIENhY2hlZFJlc291
cmNlUmVxdWVzdChDYWNoZWRSZXNvdXJjZUxvYWRlciosIENhY2hlZFJlc291cmNlKik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkocmV2aXNpb24gOTY3
MjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMjggKzI2LDIyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSWNvbkxvYWRlci5oIgogCisjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKKyNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUg
IlN1YnJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEljb25Mb2FkZXI6Okljb25Mb2FkZXIoRnJhbWUqIGZyYW1lKQog
ICAgIDogbV9mcmFtZShmcmFtZSkKLSAgICAsIG1fbG9hZElzSW5Qcm9ncmVzcyhmYWxzZSkKIHsK
IH0KIApAQCAtNjEsMTEwICs1NSw0OCBAQAogfQogCiB2b2lkIEljb25Mb2FkZXI6OnN0YXJ0TG9h
ZGluZygpCi17ICAgIAotICAgIGlmIChtX3Jlc291cmNlTG9hZGVyKQoreworICAgIGlmIChtX3Jl
c291cmNlIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAv
LyBTZXQgZmxhZyBzbyB3ZSBjYW4gZGV0ZWN0IHRoZSBjYXNlIHdoZXJlIHRoZSBsb2FkIGNvbXBs
ZXRlcyBiZWZvcmUKLSAgICAvLyBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlIHJldHVybnMuCi0g
ICAgbV9sb2FkSXNJblByb2dyZXNzID0gdHJ1ZTsKLQogICAgIFJlc291cmNlUmVxdWVzdCByZXNv
dXJjZVJlcXVlc3QobV9mcmFtZS0+bG9hZGVyKCktPmljb24oKS0+dXJsKCkpOwogICAgIHJlc291
cmNlUmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eUxvdyk7CiAKLSAgICBS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigp
LT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChtX2ZyYW1lLCB0aGlzLCByZXNvdXJjZVJlcXVlc3Qs
IFJlc291cmNlTG9hZFByaW9yaXR5TG93LCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxi
YWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlh
bHMsIERvTm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscywgRG9TZWN1cml0eUNo
ZWNrKSk7Ci0gICAgaWYgKCFsb2FkZXIpCisgICAgbV9yZXNvdXJjZSA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RSYXdSZXNvdXJjZShyZXNvdXJj
ZVJlcXVlc3QsCisgICAgICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBT
bmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgRG9O
b3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBEb1NlY3VyaXR5Q2hlY2spKTsK
KyAgICBpZiAobV9yZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KHRoaXMp
OworICAgIGVsc2UKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBmb3Ig
aWNvbiBhdCB1cmwgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+aWNvbigpLT51cmwoKS5zdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSk7Ci0KLSAgICAvLyBTdG9yZSB0aGUgaGFuZGxlIHNvIHdlIGNhbiBj
YW5jZWwgdGhlIGxvYWQgaWYgc3RvcExvYWRpbmcgaXMgY2FsbGVkIGxhdGVyLgotICAgIC8vIEJ1
dCBvbmx5IGRvIGl0IGlmIHRoZSBsb2FkIGhhc24ndCBhbHJlYWR5IGNvbXBsZXRlZC4KLSAgICBp
ZiAobV9sb2FkSXNJblByb2dyZXNzKQotICAgICAgICBtX3Jlc291cmNlTG9hZGVyID0gbG9hZGVy
LnJlbGVhc2UoKTsKIH0KIAogdm9pZCBJY29uTG9hZGVyOjpzdG9wTG9hZGluZygpCiB7Ci0gICAg
Y2xlYXJMb2FkaW5nU3RhdGUoKTsKKyAgICBpZiAobV9yZXNvdXJjZSkgeworICAgICAgICBtX3Jl
c291cmNlLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgICAgIG1fcmVzb3VyY2UgPSAwOworICAg
IH0KIH0KIAotdm9pZCBJY29uTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VM
b2FkZXIqIHJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K3ZvaWQgSWNvbkxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
KQogeworICAgIEFTU0VSVChyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKKwogICAgIC8vIElmIHdl
IGdvdCBhIHN0YXR1cyBjb2RlIGluZGljYXRpbmcgYW4gaW52YWxpZCByZXNwb25zZSwgdGhlbiBs
ZXRzCiAgICAgLy8gaWdub3JlIHRoZSBkYXRhIGFuZCBub3QgdHJ5IHRvIGRlY29kZSB0aGUgZXJy
b3IgcGFnZSBhcyBhbiBpY29uLgotICAgIGludCBzdGF0dXMgPSByZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpOwotICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoKSAtIExvYWRlciAlcCwgcmVzcG9uc2UgJWkiLCByZXNvdXJjZUxvYWRlciwgc3RhdHVz
KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKKyAg
ICBpbnQgc3RhdHVzID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKTsKKyAg
ICBpZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkKKyAgICAgICAg
ZGF0YSA9IDA7CiAKLSAgICBpZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4g
Mjk5KSkgewotICAgICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gcmVzb3VyY2VMb2FkZXIt
PmhhbmRsZSgpOwotICAgICAgICBmaW5pc2hMb2FkaW5nKGhhbmRsZSA/IGhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCkgOiBLVVJMKCksIDApOwotICAgIH0KKyAgICBMT0coSWNvbkRhdGFiYXNl
LCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygpIC0gQ29tbWl0dGluZyBpY29uVVJMICVzIHRv
IGRhdGFiYXNlIiwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICBtX2ZyYW1lLT5sb2FkZXIoKS0+aWNvbigpLT5jb21taXRUb0RhdGFiYXNlKHJlc291cmNlLT51
cmwoKSk7CisgICAgLy8gU2V0dGluZyB0aGUgaWNvbiBkYXRhIG9ubHkgYWZ0ZXIgY29tbWl0dGlu
ZyB0byB0aGUgZGF0YWJhc2UgZW5zdXJlcyB0aGF0IHRoZSBkYXRhIGlzCisgICAgLy8ga2VwdCBp
biBtZW1vcnkgKHNvIGl0IGRvZXMgbm90IGhhdmUgdG8gYmUgcmVhZCBmcm9tIHRoZSBkYXRhYmFz
ZSBhc3luY2hyb25vdXNseSksIHNpbmNlCisgICAgLy8gdGhlcmUgaXMgYSBwYWdlIFVSTCByZWZl
cmVuY2luZyBpdC4KKyAgICBpY29uRGF0YWJhc2UoKS5zZXRJY29uRGF0YUZvckljb25VUkwoZGF0
YSwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xp
ZW50KCktPmRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKKyAgICBzdG9wTG9hZGluZygpOwogfQog
Ci12b2lkIEljb25Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9hZGVyKiB1bnVz
ZWRMb2FkZXIsIGNvbnN0IGNoYXIqLCBpbnQgdW51c2VkU2l6ZSkKLXsKLSNpZiBMT0dfRElTQUJM
RUQKLSAgICBVTlVTRURfUEFSQU0odW51c2VkTG9hZGVyKTsKLSAgICBVTlVTRURfUEFSQU0odW51
c2VkU2l6ZSk7Ci0jZW5kaWYKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoKSAtIExvYWRlciAlcCwgbnVtYmVyIG9mIGJ5dGVzICVpIiwgdW51c2VkTG9h
ZGVyLCB1bnVzZWRTaXplKTsKIH0KLQotdm9pZCBJY29uTG9hZGVyOjpkaWRGYWlsKFN1YnJlc291
cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYpCi17Ci0gICAg
TE9HKEljb25EYXRhYmFzZSwgIkljb25Mb2FkZXI6OmRpZEZhaWwoKSAtIExvYWRlciAlcCIsIHJl
c291cmNlTG9hZGVyKTsKLSAgICAKLSAgICAvLyBVbnRpbCA8cmRhcjovL3Byb2JsZW0vNTQ2MzM5
Mj4gaXMgcmVzb2x2ZWQgYW5kIHdlIGNhbiBwcm9wZXJseSBjYW5jZWwgU3VicmVzb3VyY2VMb2Fk
ZXJzIHdoZW4gdGhleSBnZXQgYW4gZXJyb3IgcmVzcG9uc2UsCi0gICAgLy8gd2UgbmVlZCB0byBi
ZSBwcmVwYXJlZCB0byByZWNlaXZlIHRoaXMgY2FsbCBldmVuIGFmdGVyIHdlJ3ZlICJmaW5pc2hl
ZCBsb2FkaW5nIiBvbmNlLgotICAgIC8vIEFmdGVyIGl0IGlzIHJlc29sdmVkLCB3ZSBjYW4gcmVz
dG9yZSBhbiBhc3NlcnRpb24gdGhhdCB0aGUgbG9hZCBpcyBpbiBwcm9ncmVzcyBpZiA6OmRpZEZh
aWwoKSBpcyBjYWxsZWQKLSAgICAKLSAgICBpZiAobV9sb2FkSXNJblByb2dyZXNzKSB7Ci0gICAg
ICAgIEFTU0VSVChyZXNvdXJjZUxvYWRlciA9PSBtX3Jlc291cmNlTG9hZGVyKTsKLSAgICAgICAg
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHJlc291cmNlTG9hZGVyLT5oYW5kbGUoKTsKLSAgICAg
ICAgZmluaXNoTG9hZGluZyhoYW5kbGUgPyBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpIDog
S1VSTCgpLCAwKTsKLSAgICB9Ci19Ci0KLXZvaWQgSWNvbkxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
ZyhTdWJyZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIGRvdWJsZSkKLXsKLSAgICBMT0co
SWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygpIC0gTG9hZGVyICVw
IiwgcmVzb3VyY2VMb2FkZXIpOwotCi0gICAgLy8gVW50aWwgPHJkYXI6Ly9wcm9ibGVtLzU0NjMz
OTI+IGlzIHJlc29sdmVkIGFuZCB3ZSBjYW4gcHJvcGVybHkgY2FuY2VsIFN1YnJlc291cmNlTG9h
ZGVycyB3aGVuIHRoZXkgZ2V0IGFuIGVycm9yIHJlc3BvbnNlLAotICAgIC8vIHdlIG5lZWQgdG8g
YmUgcHJlcGFyZWQgdG8gcmVjZWl2ZSB0aGlzIGNhbGwgZXZlbiBhZnRlciB3ZSd2ZSAiZmluaXNo
ZWQgbG9hZGluZyIgb25jZS4KLSAgICAvLyBBZnRlciBpdCBpcyByZXNvbHZlZCwgd2UgY2FuIHJl
c3RvcmUgYW4gYXNzZXJ0aW9uIHRoYXQgdGhlIGxvYWQgaXMgaW4gcHJvZ3Jlc3MgaWYgOjpkaWRG
YWlsKCkgaXMgY2FsbGVkCi0gICAgCi0gICAgaWYgKG1fbG9hZElzSW5Qcm9ncmVzcykgewotICAg
ICAgICBBU1NFUlQocmVzb3VyY2VMb2FkZXIgPT0gbV9yZXNvdXJjZUxvYWRlcik7Ci0gICAgICAg
IFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSByZXNvdXJjZUxvYWRlci0+aGFuZGxlKCk7Ci0gICAg
ICAgIGZpbmlzaExvYWRpbmcoaGFuZGxlID8gaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSA6
IEtVUkwoKSwgbV9yZXNvdXJjZUxvYWRlci0+cmVzb3VyY2VEYXRhKCkpOwotICAgIH0KLX0KLQot
dm9pZCBJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEtVUkwmIGljb25VUkwsIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQotewotICAgIC8vIFdoZW4gYW4gaWNvbiBsb2FkIHJl
c3VsdHMgaW4gYSA0MDQgd2UgY29tbWl0IGl0IHRvIHRoZSBkYXRhYmFzZSBoZXJlIGFuZCBjbGVh
ciB0aGUgbG9hZGluZyBzdGF0ZS4gIAotICAgIC8vIEJ1dCB0aGUgU3VicmVzb3VyY2VMb2FkZXIg
Y29udGludWVzIHB1bGxpbmcgaW4gZGF0YSBpbiB0aGUgYmFja2dyb3VuZCBmb3IgdGhlIDQwNCBw
YWdlIGlmIHRoZSBzZXJ2ZXIgc2VuZHMgb25lLiAgCi0gICAgLy8gT25jZSB0aGF0IGRhdGEgZmlu
aXNoZXMgbG9hZGluZyBvciBpZiB0aGUgbG9hZCBpcyBjYW5jZWxsZWQgd2hpbGUgdGhhdCBkYXRh
IGlzIGJlaW5nIHJlYWQsIGZpbmlzaExvYWRpbmcgZW5kcyB1cCBiZWluZyBjYWxsZWQgYSBzZWNv
bmQgdGltZS4KLSAgICAvLyBXZSBuZWVkIHRvIGNoYW5nZSBTdWJyZXNvdXJjZUxvYWRlciB0byBo
YXZlIGEgbW9kZSB3aGVyZSBpdCB3aWxsIHN0b3AgaXRzZWxmIGFmdGVyIHJlY2VpdmluZyBhIDQw
NCBzbyB0aGlzIHdvbid0IGhhcHBlbiAtCi0gICAgLy8gaW4gdGhlIG1lYW50aW1lLCB3ZSdsbCBv
bmx5IGNvbW1pdCB0aGlzIGRhdGEgdG8gdGhlIEljb25EYXRhYmFzZSBpZiBpdCdzIHRoZSBmaXJz
dCB0aW1lIDo6ZmluaXNoTG9hZGluZygpIGlzIGNhbGxlZAotICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS81NDYzMzkyPiB0cmFja3MgdGhhdCBlbmhhbmNlbWVudAotICAgIAotICAgIGlmICghaWNvblVS
TC5pc0VtcHR5KCkgJiYgbV9sb2FkSXNJblByb2dyZXNzKSB7Ci0gICAgICAgIExPRyhJY29uRGF0
YWJhc2UsICJJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBDb21taXR0aW5nIGljb25VUkwg
JXMgdG8gZGF0YWJhc2UiLCBpY29uVVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAg
ICAgbV9mcmFtZS0+bG9hZGVyKCktPmljb24oKS0+Y29tbWl0VG9EYXRhYmFzZShpY29uVVJMKTsK
LSAgICAgICAgLy8gU2V0dGluZyB0aGUgaWNvbiBkYXRhIG9ubHkgYWZ0ZXIgY29tbWl0dGluZyB0
byB0aGUgZGF0YWJhc2UgZW5zdXJlcyB0aGF0IHRoZSBkYXRhIGlzCi0gICAgICAgIC8vIGtlcHQg
aW4gbWVtb3J5IChzbyBpdCBkb2VzIG5vdCBoYXZlIHRvIGJlIHJlYWQgZnJvbSB0aGUgZGF0YWJh
c2UgYXN5bmNocm9ub3VzbHkpLCBzaW5jZQotICAgICAgICAvLyB0aGVyZSBpcyBhIHBhZ2UgVVJM
IHJlZmVyZW5jaW5nIGl0LgotICAgICAgICBpY29uRGF0YWJhc2UoKS5zZXRJY29uRGF0YUZvcklj
b25VUkwoZGF0YSwgaWNvblVSTC5zdHJpbmcoKSk7Ci0gICAgICAgIG1fZnJhbWUtPmxvYWRlcigp
LT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwotICAgIH0KLQotICAgIGNsZWFy
TG9hZGluZ1N0YXRlKCk7Ci19Ci0KLXZvaWQgSWNvbkxvYWRlcjo6Y2xlYXJMb2FkaW5nU3RhdGUo
KQotewotICAgIG1fcmVzb3VyY2VMb2FkZXIgPSAwOwotICAgIG1fbG9hZElzSW5Qcm9ncmVzcyA9
IGZhbHNlOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRl
ci5oCShyZXZpc2lvbiA5NjcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25M
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTggKzI2LDE4IEBACiAjaWZuZGVmIEljb25M
b2FkZXJfaAogI2RlZmluZSBJY29uTG9hZGVyX2gKIAotI2luY2x1ZGUgIlN1YnJlc291cmNlTG9h
ZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgRnJhbWU7
Ci1jbGFzcyBLVVJMOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCi1jbGFzcyBJY29uTG9hZGVyIDog
cHJpdmF0ZSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCB7CitjbGFzcyBJY29uTG9hZGVyIDogcHJp
dmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSWNv
bkxvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEljb25Mb2FkZXI+IGNyZWF0ZShGcmFtZSopOwpAQCAtNDgsMTkgKzQ4LDEwIEBA
CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSWNvbkxvYWRlcihGcmFtZSopOworICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoU3VicmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhTdWJyZXNvdXJjZUxvYWRlciosIGRvdWJsZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0KLSAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgS1VSTCYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
KTsKLSAgICB2b2lkIGNsZWFyTG9hZGluZ1N0YXRlKCk7Ci0KICAgICBGcmFtZSogbV9mcmFtZTsK
LQotICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKLSAgICBi
b29sIG1fbG9hZElzSW5Qcm9ncmVzczsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110167</attachid>
            <date>2011-10-07 10:23:53 -0700</date>
            <delta_ts>2011-10-07 11:15:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-69567-20111007102352.patch</filename>
            <type>text/plain</type>
            <size>31342</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2OTU0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMTAtMDYgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIEljb25Mb2FkZXIgYSBD
YWNoZWRSZXNvdXJjZUNsaWVudCBpbnN0ZWFkIG9mIGEgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQu
CisgICAgICAgIFRoaXMgaXMgb25lIG9mIHRoZSBzdGVwcyByZXF1aXJlZCB0byByZW1vdmUgdGhl
IFN1YnJlc291cmNlTG9hZGVyQ2xpZW50IGludGVyZmFjZSwKKyAgICAgICAgd2hpY2ggd2lsbCBz
aW1wbGlmeSB0aGUgbGF5ZXJpbmcgaW4gdGhlIGxvYWRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hh
bmdlIGludGVuZGVkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Omlnbm9yZUZvclJlcXVlc3RD
b3VudCk6IFJlbmFtZWQgYW5kIGdlbmVyYWxpemVkIGZyb20gaXNMaW5rUmVzb3VyY2UoKSwKKyAg
ICAgICAgICAgIHdoaWNoIHdhcyBvbmx5IHVzZWQgdG8gZGVjaWRlZCB3aGV0aGVyIHRoZSBDYWNo
ZWRSZXNvdXJjZSBzaG91bGQgY291bnQgdG93YXJkCisgICAgICAgICAgICBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdENvdW50KCkuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAg
ICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6IEdldCBhIENhY2hlZFJlc291cmNlIGlu
c3RlYWQgb2YgYSBTdWJyZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKTogTWVyZ2UgaW4gdGhlIHN0YXR1cyBjb2RlIGNoZWNrIHRoYXQg
d2FzIGluIGRpZFJlY2VpdmVSZXNwb25zZSgpLAorICAgICAgICAgICAgc2luY2Ugd2Ugd29uJ3Qg
YmUgY2hlY2tpbmcgYW55IGNhbGxiYWNrcyBiZWZvcmUgdGhlIGxvYWQgY29tcGxldGVzLgorICAg
ICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuaDoKKwogMjAxMS0xMC0wNyAgRGF2aWQgQmFy
ciAgPGRhdmlkYmFyckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IGN1cnJlbnRD
b2xvciBzdXBwb3J0IGZvciBib3gtc2hhZG93IGFuZCB0ZXh0LXNoYWRvdwpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDk2OTU0KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk0NCw2ICs5NDQsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCiAgICAgbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAor
ICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKICAgICBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50
V2Fsa2VyLmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTY5NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAzLDYg
KzIxMDMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCBcCisJU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDk2OTU0KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01OTAsNiAr
NTkwLDcgQEAKICAgICAgICAgICAgICdsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5o
JywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVQb2xpY3kuaCcsCiAgICAgICAgICAg
ICAnbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgnLAorICAgICAgICAgICAgJ2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xp
ZW50LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5o
JywKQEAgLTI4MjIsNiArMjgyMyw3IEBACiAgICAgICAgICAgICAnbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oJywKICAg
ICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwJywKKyAgICAgICAgICAgICds
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNp
b24gOTY5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpA
QCAtODY5LDYgKzg2OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIFwKICAg
ICBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIFwKKyAgICBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXIuY3BwIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwIFwK
ICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTY5
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtMjY2NTMsNiArMjY2NTMsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZWRSYXdS
ZXNvdXJjZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxsb2FkZXJcY2FjaGVcQ2FjaGVkUmF3UmVzb3VyY2UuaCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxjYWNoZVxD
YWNoZWRSZXNvdXJjZS5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5
Njk1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNTc0Miw2ICs1NzQyLDggQEAKIAkJRDBDRTU4RjkxMjVFNEND
MjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBDRTU4RjcxMjVFNENDMjAwRjNGMTk5IC8qIFJl
c291cmNlTG9hZFNjaGVkdWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUQwRDE0MUIyMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDBEMTQxQjAxMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAg
Ki87IH07CiAJCUQwRDE0MUIzMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwRDE0
MUIxMTJCMkJGNTIwMEUzOTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEMEVEQTc3NDE0M0UzMDND
MDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hl
ZFJhd1Jlc291cmNlLmNwcCAqLzsgfTsKKwkJRDBFREE3NzUxNDNFMzAzQzAwMjhFMzgzIC8qIENh
Y2hlZFJhd1Jlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEMEVEQTc3MzE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuaCAq
LzsgfTsKIAkJRDBGRjJBNUQxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBGRjJBNUIxMUY4QzQ1
QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuY3BwICovOyB9OwogCQlEMEZGMkE1RTExRjhDNDVBMDA3
RTc0RTAgLyogUGluZ0xvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRDBGRjJBNUMxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuaCAqLzsg
fTsKIAkJRDIzQ0E1NUQwQUIwRUFBRTAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyM0NBNTVDMEFCMEVB
QUUwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmggKi87IH07CkBAIC0xMzAyNiw2ICsxMzAy
OCw4IEBACiAJCUQwQ0U1OEY3MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRDE0MUIwMTJCMkJGNTIwMEUz
OTYyMCAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDBEMTQxQjExMkIyQkY1MjAwRTM5NjIwIC8qIENhY2hlZFJlc291cmNl
UmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBFREE3NzIxNDNFMzAz
QzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENhY2hlZFJhd1Jlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRDBFREE3NzMxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJhd1Jlc291cmNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRkYyQTVCMTFGOEM0NUEwMDdFNzRFMCAv
KiBQaW5nTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBp
bmdMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEZGMkE1QzExRjhD
NDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQaW5nTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyM0NBNTQ4
MEFCMEU5ODMwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFJhbmdlRXhjZXB0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE4MzkwLDYgKzE4Mzk0LDggQEAKIAkJQThEMkIyNTIxMjg3QTU2MDAwQUY0RERBIC8qIGNhY2hl
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlEMEVEQTc3
MjE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuY3BwICovLAorCQkJCUQwRURB
NzczMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5oICovLAogCQkJCUJDQjE2
QzAwMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCAqLywKIAkJCQlC
Q0IxNkMwMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oICovLAogCQkJ
CUJDNjRCNEM5MENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmNwcCAqLywKQEAgLTIxNjcz
LDYgKzIxNjc5LDcgQEAKIAkJCQk1MUNCRkM5OTBEMTBFNDgzMDAyREJGNTEgLyogQ2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjE2QzFDMDk3OUMzQkQwMDQ2
Nzc0MSAvKiBDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwMTg0NjkwQjA4NjAy
QTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUQwRURBNzc1MTQz
RTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNCMTZDMjAwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0ZCMkU1RTA5NzlFNDY0MDBCQTcwM0QgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjE2QzIyMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRS
ZXNvdXJjZUNsaWVudFdhbGtlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTAxOSw2ICsyNTAyNiw3
IEBACiAJCQkJNTFDMEFBNDEwRjJBQTE1RTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDQjE2QzFCMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVk
UGFnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEMEVEQTc3NDE0M0UzMDNDMDAyOEUzODMgLyog
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMTZDMUYwOTc5QzNC
RDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjE2
QzIxMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFNDdCNEJFOTBFNzEyNDE2MDAwMzg4NTQgLyogQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNhY2hlZFJhd1Jlc291cmNlLmgiCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5o
IgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCisjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNv
dXJjZShSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKKyAgICA6IENhY2hlZFJlc291
cmNlKHJlc291cmNlUmVxdWVzdCwgUmF3UmVzb3VyY2UpCit7Cit9CisKK3ZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQoreworICAgIG1fZGF0YSA9IGRhdGE7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmRh
dGEobV9kYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOworfQorCit2b2lkIENhY2hlZFJhd1Jlc291cmNl
OjphbGxDbGllbnRzUmVtb3ZlZCgpCit7CisgICAgaWYgKG1fcmVxdWVzdCkKKyAgICAgICAgbV9y
ZXF1ZXN0LT5jYW5jZWwoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDE5
OTggTGFycyBLbm9sbCAoa25vbGxAbXBpLWhkLm1wZy5kZSkKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDEgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA2
IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21haWwuY29tKQorICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2lmbmRlZiBDYWNoZWRSYXdSZXNvdXJjZV9oCisjZGVmaW5lIENhY2hlZFJhd1Jlc291cmNl
X2gKKworI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2UgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgeworcHVi
bGljOgorICAgIENhY2hlZFJhd1Jlc291cmNlKFJlc291cmNlUmVxdWVzdCYpOworICAgIAorcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworCisgICAgdmlydHVhbCBib29sIHNob3VsZElnbm9y
ZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpOworfTsKKworfQorCisjZW5kaWYgLy8gQ2FjaGVk
UmF3UmVzb3VyY2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiA5Njk1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcg
QEAgc3RhdGljIFJlc291cmNlTG9hZFByaW9yaXR5IGRlZmF1bHRQcmlvcgogICAgICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6CiAgICAgICAgICAgICByZXR1cm4gUmVzb3Vy
Y2VMb2FkUHJpb3JpdHlNZWRpdW07CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2U6CisgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOgogICAg
ICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5TG93OwogI2lmIEVOQUJMRShMSU5L
X1BSRUZFVENIKQogICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2
aXNpb24gOTY5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsOCBAQCBwdWJsaWM6CiAgICAgICAgIElt
YWdlUmVzb3VyY2UsCiAgICAgICAgIENTU1N0eWxlU2hlZXQsCiAgICAgICAgIFNjcmlwdCwKLSAg
ICAgICAgRm9udFJlc291cmNlCisgICAgICAgIEZvbnRSZXNvdXJjZSwKKyAgICAgICAgUmF3UmVz
b3VyY2UKICNpZiBFTkFCTEUoWFNMVCkKICAgICAgICAgLCBYU0xTdHlsZVNoZWV0CiAjZW5kaWYK
QEAgLTEzNSwxMyArMTM2LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBi
KSB7IG1fbG9hZGluZyA9IGI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTGlua1Jlc291cmNlKCkgY29uc3QKKyAgICBi
b29sIGlnbm9yZUZvclJlcXVlc3RDb3VudCgpIGNvbnN0CiAgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2UKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICAgICAgcmV0dXJuIHR5cGUoKSA9
PSBMaW5rUHJlZmV0Y2ggfHwgdHlwZSgpID09IExpbmtQcmVyZW5kZXIgfHwgdHlwZSgpID09IExp
bmtTdWJyZXNvdXJjZTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IHx8IHR5cGUoKSA9PSBMaW5rUHJlZmV0Y2gKKyAgICAgICAgICAgIHx8IHR5cGUoKSA9PSBMaW5r
UHJlcmVuZGVyCisgICAgICAgICAgICB8fCB0eXBlKCkgPT0gTGlua1N1YnJlc291cmNlCiAjZW5k
aWYKKyAgICAgICAgICAgIHx8IHR5cGUoKSA9PSBSYXdSZXNvdXJjZTsKICAgICB9CiAKICAgICB1
bnNpZ25lZCBhY2Nlc3NDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzQ291bnQ7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcAkocmV2aXNpb24gOTY5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hlZEZv
bnQuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291
cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkWFNMU3R5bGVTaGVldC5oIgpAQCAtNjYsNiAr
NjcsOCBAQCBzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhCiAgICAgICAg
IHJldHVybiBuZXcgQ2FjaGVkU2NyaXB0KHJlcXVlc3QsIGNoYXJzZXQpOwogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKICAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRGb250
KHJlcXVlc3QpOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOgorICAgICAg
ICByZXR1cm4gbmV3IENhY2hlZFJhd1Jlc291cmNlKHJlcXVlc3QpOwogI2lmIEVOQUJMRShYU0xU
KQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQ6CiAgICAgICAgIHJldHVy
biBuZXcgQ2FjaGVkWFNMU3R5bGVTaGVldChyZXF1ZXN0KTsKQEAgLTIwMiw2ICsyMDUsMTEgQEAg
Q2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZQogfQogI2VuZGlmCiAKK0Nh
Y2hlZFJhd1Jlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJhd1Jlc291cmNl
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBv
cHRpb25zKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZSo+KHJl
cXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UsIHJlcXVlc3QsIFN0cmlu
ZygpLCBvcHRpb25zLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGZhbHNlKSk7Cit9
CisKIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hl
ZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKQEAgLTIyNiwxMyArMjM0LDE0IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmNoZWNrSW5zZWN1cmUKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CisgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6CiAjaWYgRU5BQkxFKExJTktfUFJFRkVU
Q0gpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkxpbmtQcmVyZW5kZXI6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlu
a1N1YnJlc291cmNlOgogICAgICAgICAvLyBQcmVmZXRjaCBjYW5ub3QgYWZmZWN0IHRoZSBjdXJy
ZW50IGRvY3VtZW50LgotICAgICAgICBicmVhazsKICNlbmRpZgorICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNTQsNiArMjYzLDcgQEAgYm9vbCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNT
U1N0eWxlU2hlZXQ6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpS
YXdSZXNvdXJjZToKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpMaW5rUHJlZmV0Y2g6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZXJl
bmRlcjoKQEAgLTMwOCwxMiArMzE4LDEzIEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNh
blJlcXVlc3QoQ2EKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOgogI2lmIEVOQUJMRShM
SU5LX1BSRUZFVENIKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlcmVuZGVyOgogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkxpbmtTdWJyZXNvdXJjZToKLSAgICAgICAgYnJlYWs7CiAjZW5kaWYKKyAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC00NTIsNiArNDYzLDEwIEBAIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kKICAgICAgICAgTE9HKFJlc291
cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Q
b2xpY3kgcmVsb2FkaW5nIGR1ZSB0byB0eXBlIG1pc21hdGNoLiIpOwogICAgICAgICByZXR1cm4g
UmVsb2FkOwogICAgIH0KKworICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIGFsbCBDYWNoZWRSYXdS
ZXNvdXJjZXMgYXJlIGFsd2F5cyByZWxvYWRlZC4gU29tZSBvZiB0aGVtIHNob3VsZCBiZSBjYWNo
ZWFibGUuCisgICAgaWYgKGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJj
ZTo6UmF3UmVzb3VyY2UpCisgICAgICAgIHJldHVybiBSZWxvYWQ7CiAgICAgCiAgICAgLy8gRG9u
J3QgcmVsb2FkIHJlc291cmNlcyB3aGlsZSBwYXN0aW5nLgogICAgIGlmIChtX2FsbG93U3RhbGVS
ZXNvdXJjZXMpCkBAIC02MjcsNyArNjQyLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
bm90aWZ5TG9hZGVkRgogCiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjppbmNyZW1lbnRSZXF1
ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlcykKIHsKLSAgICBpZiAocmVzLT5pc0xp
bmtSZXNvdXJjZSgpKQorICAgIGlmIChyZXMtPmlnbm9yZUZvclJlcXVlc3RDb3VudCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICArK21fcmVxdWVzdENvdW50OwpAQCAtNjM1LDcgKzY1MCw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmluY3JlbWVudFJlcXUKIAogdm9pZCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNl
KiByZXMpCiB7Ci0gICAgaWYgKHJlcy0+aXNMaW5rUmVzb3VyY2UoKSkKKyAgICBpZiAocmVzLT5p
Z25vcmVGb3JSZXF1ZXN0Q291bnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLS1tX3JlcXVl
c3RDb3VudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiA5Njk1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2
ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7
CiBjbGFzcyBDYWNoZWRGb250OwogY2xhc3MgQ2FjaGVkSW1hZ2U7CitjbGFzcyBDYWNoZWRSYXdS
ZXNvdXJjZTsKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIENhY2hlZFhTTFN0eWxlU2hlZXQ7
CiBjbGFzcyBEb2N1bWVudDsKQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgogICAgIENhY2hlZENT
U1N0eWxlU2hlZXQqIHJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTdHJpbmcmIGNoYXJzZXQpOwogICAgIENhY2hlZFNjcmlwdCogcmVxdWVzdFNjcmlwdChS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwogICAgIENhY2hlZEZvbnQq
IHJlcXVlc3RGb250KFJlc291cmNlUmVxdWVzdCYpOworICAgIENhY2hlZFJhd1Jlc291cmNlKiBy
ZXF1ZXN0UmF3UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJik7CiAKICNpZiBFTkFCTEUoWFNMVCkKICAgICBDYWNoZWRYU0xTdHlsZVNoZWV0KiBy
ZXF1ZXN0WFNMU3R5bGVTaGVldChSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTEwNyw4ICsxMDksNiBA
QCBwdWJsaWM6CiAgICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25z
dCBLVVJMJiwgYm9vbCBmb3JQcmVsb2FkID0gZmFsc2UpOwogICAgIAogcHJpdmF0ZToKLSAgICAv
LyBGSVhNRTogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIFJlc291cmNlTG9hZGVyT3B0aW9ucyB3aWxs
IGFsd2F5cyBiZSB1c2VkIGN1cnJlbnRseS4KLSAgICAvLyBJdCBpcyBwbHVtYmVkIGZvciBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTIyNSAuCiAgICAgQ2FjaGVkUmVz
b3VyY2UqIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwg
Ym9vbCBpc1ByZWxvYWQgPSBmYWxzZSk7CiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJldmFsaWRhdGVS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlTG9hZFByaW9yaXR5LCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICBDYWNoZWRSZXNvdXJjZSogbG9hZFJlc291cmNlKENh
Y2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJz
ZXQsIFJlc291cmNlTG9hZFByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwCShyZXZpc2lvbiA5Njk1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2
ICs2MCw4IEBAIHN0YXRpYyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgY2FjaGUKICAgICAg
ICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNGb250UmVzb3VyY2U7CiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICAgICAgcmV0dXJuIFJlc291cmNl
UmVxdWVzdDo6VGFyZ2V0SXNJbWFnZTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNv
dXJjZToKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJj
ZTsgICAgCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6TGlua1ByZWZldGNoOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJ
c1ByZWZldGNoOwpAQCAtMTQ1LDYgKzE0NywxMyBAQCB2b2lkIENhY2hlZFJlc291cmNlUmVxdWVz
dDo6d2lsbFNlbmRSZXF1CiAgICAgbV9yZXNvdXJjZS0+c2V0UmVxdWVzdGVkRnJvbU5ldHdvcmtp
bmdMYXllcigpOwogfQogCit2b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6Y2FuY2VsKCkKK3sK
KyAgICBpZiAobV9maW5pc2hpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBtX2xvYWRlci0+Y2Fu
Y2VsKCk7Cit9CisKIHZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5n
KFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGRvdWJsZSkKIHsKICAgICBpZiAobV9maW5pc2hp
bmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiA5Njk1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiAr
NDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH5DYWNoZWRSZXNvdXJjZVJlcXVl
c3QoKTsKIAogICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlTG9hZGVyOyB9CisgICAgICAgIHZv
aWQgY2FuY2VsKCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAJKHJldmlzaW9uIDk2OTU0KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDI4ICsyNiwyMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkljb25M
b2FkZXIuaCIKIAorI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCisjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
LSNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVk
dWxlci5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlci5oIgotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBJY29uTG9hZGVyOjpJY29uTG9hZGVyKEZyYW1lKiBmcmFtZSkKICAgICA6IG1f
ZnJhbWUoZnJhbWUpCi0gICAgLCBtX2xvYWRJc0luUHJvZ3Jlc3MoZmFsc2UpCiB7CiB9CiAKQEAg
LTYxLDExMCArNTUsNDggQEAgSWNvbkxvYWRlcjo6fkljb25Mb2FkZXIoKQogfQogCiB2b2lkIElj
b25Mb2FkZXI6OnN0YXJ0TG9hZGluZygpCi17ICAgIAotICAgIGlmIChtX3Jlc291cmNlTG9hZGVy
KQoreworICAgIGlmIChtX3Jlc291cmNlIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICAvLyBTZXQgZmxhZyBzbyB3ZSBjYW4gZGV0ZWN0IHRoZSBjYXNlIHdo
ZXJlIHRoZSBsb2FkIGNvbXBsZXRlcyBiZWZvcmUKLSAgICAvLyBTdWJyZXNvdXJjZUxvYWRlcjo6
Y3JlYXRlIHJldHVybnMuCi0gICAgbV9sb2FkSXNJblByb2dyZXNzID0gdHJ1ZTsKLQogICAgIFJl
c291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QobV9mcmFtZS0+bG9hZGVyKCktPmljb24oKS0+
dXJsKCkpOwogICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlv
cml0eUxvdyk7CiAKLSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHJlc291
cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChtX2ZyYW1lLCB0aGlz
LCByZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlTG9hZFByaW9yaXR5TG93LCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBEb05vdEFs
bG93U3RvcmVkQ3JlZGVudGlhbHMsIERvTm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50
aWFscywgRG9TZWN1cml0eUNoZWNrKSk7Ci0gICAgaWYgKCFsb2FkZXIpCisgICAgbV9yZXNvdXJj
ZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RS
YXdSZXNvdXJjZShyZXNvdXJjZVJlcXVlc3QsCisgICAgICAgIFJlc291cmNlTG9hZGVyT3B0aW9u
cyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9y
ZWRDcmVkZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBE
b1NlY3VyaXR5Q2hlY2spKTsKKyAgICBpZiAobV9yZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJj
ZS0+YWRkQ2xpZW50KHRoaXMpOworICAgIGVsc2UKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gc3RhcnQgbG9hZCBmb3IgaWNvbiBhdCB1cmwgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+aWNv
bigpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0KLSAgICAvLyBTdG9yZSB0aGUg
aGFuZGxlIHNvIHdlIGNhbiBjYW5jZWwgdGhlIGxvYWQgaWYgc3RvcExvYWRpbmcgaXMgY2FsbGVk
IGxhdGVyLgotICAgIC8vIEJ1dCBvbmx5IGRvIGl0IGlmIHRoZSBsb2FkIGhhc24ndCBhbHJlYWR5
IGNvbXBsZXRlZC4KLSAgICBpZiAobV9sb2FkSXNJblByb2dyZXNzKQotICAgICAgICBtX3Jlc291
cmNlTG9hZGVyID0gbG9hZGVyLnJlbGVhc2UoKTsKIH0KIAogdm9pZCBJY29uTG9hZGVyOjpzdG9w
TG9hZGluZygpCiB7Ci0gICAgY2xlYXJMb2FkaW5nU3RhdGUoKTsKLX0KLQotdm9pZCBJY29uTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICAvLyBJZiB3ZSBnb3Qg
YSBzdGF0dXMgY29kZSBpbmRpY2F0aW5nIGFuIGludmFsaWQgcmVzcG9uc2UsIHRoZW4gbGV0cwot
ICAgIC8vIGlnbm9yZSB0aGUgZGF0YSBhbmQgbm90IHRyeSB0byBkZWNvZGUgdGhlIGVycm9yIHBh
Z2UgYXMgYW4gaWNvbi4KLSAgICBpbnQgc3RhdHVzID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KTsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KCkgLSBMb2FkZXIgJXAsIHJlc3BvbnNlICVpIiwgcmVzb3VyY2VMb2FkZXIsIHN0YXR1cyk7Ci0K
LSAgICBpZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkgewotICAg
ICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gcmVzb3VyY2VMb2FkZXItPmhhbmRsZSgpOwot
ICAgICAgICBmaW5pc2hMb2FkaW5nKGhhbmRsZSA/IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJs
KCkgOiBLVVJMKCksIDApOworICAgIGlmIChtX3Jlc291cmNlKSB7CisgICAgICAgIG1fcmVzb3Vy
Y2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgbV9yZXNvdXJjZSA9IDA7CiAgICAgfQog
fQogCi12b2lkIEljb25Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9hZGVyKiB1
bnVzZWRMb2FkZXIsIGNvbnN0IGNoYXIqLCBpbnQgdW51c2VkU2l6ZSkKK3ZvaWQgSWNvbkxvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogewotI2lmIExPR19E
SVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTSh1bnVzZWRMb2FkZXIpOwotICAgIFVOVVNFRF9QQVJB
TSh1bnVzZWRTaXplKTsKLSNlbmRpZgotICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YSgpIC0gTG9hZGVyICVwLCBudW1iZXIgb2YgYnl0ZXMgJWkiLCB1bnVz
ZWRMb2FkZXIsIHVudXNlZFNpemUpOwotfQotCi12b2lkIEljb25Mb2FkZXI6OmRpZEZhaWwoU3Vi
cmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJikKLXsK
LSAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZGlkRmFpbCgpIC0gTG9hZGVyICVw
IiwgcmVzb3VyY2VMb2FkZXIpOwotICAgIAotICAgIC8vIFVudGlsIDxyZGFyOi8vcHJvYmxlbS81
NDYzMzkyPiBpcyByZXNvbHZlZCBhbmQgd2UgY2FuIHByb3Blcmx5IGNhbmNlbCBTdWJyZXNvdXJj
ZUxvYWRlcnMgd2hlbiB0aGV5IGdldCBhbiBlcnJvciByZXNwb25zZSwKLSAgICAvLyB3ZSBuZWVk
IHRvIGJlIHByZXBhcmVkIHRvIHJlY2VpdmUgdGhpcyBjYWxsIGV2ZW4gYWZ0ZXIgd2UndmUgImZp
bmlzaGVkIGxvYWRpbmciIG9uY2UuCi0gICAgLy8gQWZ0ZXIgaXQgaXMgcmVzb2x2ZWQsIHdlIGNh
biByZXN0b3JlIGFuIGFzc2VydGlvbiB0aGF0IHRoZSBsb2FkIGlzIGluIHByb2dyZXNzIGlmIDo6
ZGlkRmFpbCgpIGlzIGNhbGxlZAotICAgIAotICAgIGlmIChtX2xvYWRJc0luUHJvZ3Jlc3MpIHsK
LSAgICAgICAgQVNTRVJUKHJlc291cmNlTG9hZGVyID09IG1fcmVzb3VyY2VMb2FkZXIpOwotICAg
ICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gcmVzb3VyY2VMb2FkZXItPmhhbmRsZSgpOwot
ICAgICAgICBmaW5pc2hMb2FkaW5nKGhhbmRsZSA/IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJs
KCkgOiBLVVJMKCksIDApOwotICAgIH0KLX0KKyAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9yZXNv
dXJjZSk7CiAKLXZvaWQgSWNvbkxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXNvdXJjZUxv
YWRlciogcmVzb3VyY2VMb2FkZXIsIGRvdWJsZSkKLXsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAi
SWNvbkxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygpIC0gTG9hZGVyICVwIiwgcmVzb3VyY2VMb2Fk
ZXIpOwotCi0gICAgLy8gVW50aWwgPHJkYXI6Ly9wcm9ibGVtLzU0NjMzOTI+IGlzIHJlc29sdmVk
IGFuZCB3ZSBjYW4gcHJvcGVybHkgY2FuY2VsIFN1YnJlc291cmNlTG9hZGVycyB3aGVuIHRoZXkg
Z2V0IGFuIGVycm9yIHJlc3BvbnNlLAotICAgIC8vIHdlIG5lZWQgdG8gYmUgcHJlcGFyZWQgdG8g
cmVjZWl2ZSB0aGlzIGNhbGwgZXZlbiBhZnRlciB3ZSd2ZSAiZmluaXNoZWQgbG9hZGluZyIgb25j
ZS4KLSAgICAvLyBBZnRlciBpdCBpcyByZXNvbHZlZCwgd2UgY2FuIHJlc3RvcmUgYW4gYXNzZXJ0
aW9uIHRoYXQgdGhlIGxvYWQgaXMgaW4gcHJvZ3Jlc3MgaWYgOjpkaWRGYWlsKCkgaXMgY2FsbGVk
Ci0gICAgCi0gICAgaWYgKG1fbG9hZElzSW5Qcm9ncmVzcykgewotICAgICAgICBBU1NFUlQocmVz
b3VyY2VMb2FkZXIgPT0gbV9yZXNvdXJjZUxvYWRlcik7Ci0gICAgICAgIFJlc291cmNlSGFuZGxl
KiBoYW5kbGUgPSByZXNvdXJjZUxvYWRlci0+aGFuZGxlKCk7Ci0gICAgICAgIGZpbmlzaExvYWRp
bmcoaGFuZGxlID8gaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSA6IEtVUkwoKSwgbV9yZXNv
dXJjZUxvYWRlci0+cmVzb3VyY2VEYXRhKCkpOwotICAgIH0KLX0KLQotdm9pZCBJY29uTG9hZGVy
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEtVUkwmIGljb25VUkwsIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhKQotewotICAgIC8vIFdoZW4gYW4gaWNvbiBsb2FkIHJlc3VsdHMgaW4gYSA0MDQg
d2UgY29tbWl0IGl0IHRvIHRoZSBkYXRhYmFzZSBoZXJlIGFuZCBjbGVhciB0aGUgbG9hZGluZyBz
dGF0ZS4gIAotICAgIC8vIEJ1dCB0aGUgU3VicmVzb3VyY2VMb2FkZXIgY29udGludWVzIHB1bGxp
bmcgaW4gZGF0YSBpbiB0aGUgYmFja2dyb3VuZCBmb3IgdGhlIDQwNCBwYWdlIGlmIHRoZSBzZXJ2
ZXIgc2VuZHMgb25lLiAgCi0gICAgLy8gT25jZSB0aGF0IGRhdGEgZmluaXNoZXMgbG9hZGluZyBv
ciBpZiB0aGUgbG9hZCBpcyBjYW5jZWxsZWQgd2hpbGUgdGhhdCBkYXRhIGlzIGJlaW5nIHJlYWQs
IGZpbmlzaExvYWRpbmcgZW5kcyB1cCBiZWluZyBjYWxsZWQgYSBzZWNvbmQgdGltZS4KLSAgICAv
LyBXZSBuZWVkIHRvIGNoYW5nZSBTdWJyZXNvdXJjZUxvYWRlciB0byBoYXZlIGEgbW9kZSB3aGVy
ZSBpdCB3aWxsIHN0b3AgaXRzZWxmIGFmdGVyIHJlY2VpdmluZyBhIDQwNCBzbyB0aGlzIHdvbid0
IGhhcHBlbiAtCi0gICAgLy8gaW4gdGhlIG1lYW50aW1lLCB3ZSdsbCBvbmx5IGNvbW1pdCB0aGlz
IGRhdGEgdG8gdGhlIEljb25EYXRhYmFzZSBpZiBpdCdzIHRoZSBmaXJzdCB0aW1lIDo6ZmluaXNo
TG9hZGluZygpIGlzIGNhbGxlZAotICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDYzMzkyPiB0cmFj
a3MgdGhhdCBlbmhhbmNlbWVudAotICAgIAotICAgIGlmICghaWNvblVSTC5pc0VtcHR5KCkgJiYg
bV9sb2FkSXNJblByb2dyZXNzKSB7Ci0gICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9h
ZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBDb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2Ui
LCBpY29uVVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgbV9mcmFtZS0+bG9h
ZGVyKCktPmljb24oKS0+Y29tbWl0VG9EYXRhYmFzZShpY29uVVJMKTsKLSAgICAgICAgLy8gU2V0
dGluZyB0aGUgaWNvbiBkYXRhIG9ubHkgYWZ0ZXIgY29tbWl0dGluZyB0byB0aGUgZGF0YWJhc2Ug
ZW5zdXJlcyB0aGF0IHRoZSBkYXRhIGlzCi0gICAgICAgIC8vIGtlcHQgaW4gbWVtb3J5IChzbyBp
dCBkb2VzIG5vdCBoYXZlIHRvIGJlIHJlYWQgZnJvbSB0aGUgZGF0YWJhc2UgYXN5bmNocm9ub3Vz
bHkpLCBzaW5jZQotICAgICAgICAvLyB0aGVyZSBpcyBhIHBhZ2UgVVJMIHJlZmVyZW5jaW5nIGl0
LgotICAgICAgICBpY29uRGF0YWJhc2UoKS5zZXRJY29uRGF0YUZvckljb25VUkwoZGF0YSwgaWNv
blVSTC5zdHJpbmcoKSk7Ci0gICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlz
cGF0Y2hEaWRSZWNlaXZlSWNvbigpOwotICAgIH0KLQotICAgIGNsZWFyTG9hZGluZ1N0YXRlKCk7
Ci19Ci0KLXZvaWQgSWNvbkxvYWRlcjo6Y2xlYXJMb2FkaW5nU3RhdGUoKQotewotICAgIG1fcmVz
b3VyY2VMb2FkZXIgPSAwOwotICAgIG1fbG9hZElzSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIC8v
IElmIHdlIGdvdCBhIHN0YXR1cyBjb2RlIGluZGljYXRpbmcgYW4gaW52YWxpZCByZXNwb25zZSwg
dGhlbiBsZXRzCisgICAgLy8gaWdub3JlIHRoZSBkYXRhIGFuZCBub3QgdHJ5IHRvIGRlY29kZSB0
aGUgZXJyb3IgcGFnZSBhcyBhbiBpY29uLgorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpOworICAgIGludCBzdGF0dXMgPSByZXNvdXJjZS0+cmVzcG9uc2Uo
KS5odHRwU3RhdHVzQ29kZSgpOworICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyA8IDIwMCB8fCBz
dGF0dXMgPiAyOTkpKQorICAgICAgICBkYXRhID0gMDsKKworICAgIExPRyhJY29uRGF0YWJhc2Us
ICJJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBDb21taXR0aW5nIGljb25VUkwgJXMgdG8g
ZGF0YWJhc2UiLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAg
IG1fZnJhbWUtPmxvYWRlcigpLT5pY29uKCktPmNvbW1pdFRvRGF0YWJhc2UocmVzb3VyY2UtPnVy
bCgpKTsKKyAgICAvLyBTZXR0aW5nIHRoZSBpY29uIGRhdGEgb25seSBhZnRlciBjb21taXR0aW5n
IHRvIHRoZSBkYXRhYmFzZSBlbnN1cmVzIHRoYXQgdGhlIGRhdGEgaXMKKyAgICAvLyBrZXB0IGlu
IG1lbW9yeSAoc28gaXQgZG9lcyBub3QgaGF2ZSB0byBiZSByZWFkIGZyb20gdGhlIGRhdGFiYXNl
IGFzeW5jaHJvbm91c2x5KSwgc2luY2UKKyAgICAvLyB0aGVyZSBpcyBhIHBhZ2UgVVJMIHJlZmVy
ZW5jaW5nIGl0LgorICAgIGljb25EYXRhYmFzZSgpLnNldEljb25EYXRhRm9ySWNvblVSTChkYXRh
LCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkpOworICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOworICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgJKHJldmlzaW9u
IDk2OTU0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwxOCArMjYsMTggQEAKICNpZm5kZWYgSWNvbkxvYWRlcl9oCiAjZGVm
aW5lIEljb25Mb2FkZXJfaAogCi0jaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXJDbGllbnQuaCIK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKLWNsYXNzIEljb25Mb2FkZXIgOiBwcml2YXRlIFN1YnJl
c291cmNlTG9hZGVyQ2xpZW50IHsKK2NsYXNzIEljb25Mb2FkZXIgOiBwcml2YXRlIENhY2hlZFJl
c291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJY29uTG9hZGVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SWNv
bkxvYWRlcj4gY3JlYXRlKEZyYW1lKik7CkBAIC00OCwxOSArNDgsMTAgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IEljb25Mb2FkZXIoRnJhbWUqKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNl
TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoU3VicmVzb3VyY2VMb2FkZXIqLCBkb3VibGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwotCi0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YSk7Ci0gICAgdm9pZCBjbGVhckxvYWRpbmdTdGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7Ci0KLSAg
ICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7Ci0gICAgYm9vbCBt
X2xvYWRJc0luUHJvZ3Jlc3M7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVz
b3VyY2U+IG1fcmVzb3VyY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>