<?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>171357</bug_id>
          
          <creation_ts>2017-04-26 17:44:25 -0700</creation_ts>
          <short_desc>Modernize Frame.h</short_desc>
          <delta_ts>2017-04-27 09:42:24 -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>New Bugs</component>
          <version>WebKit 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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1301865</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-26 17:44:25 -0700</bug_when>
    <thetext>Modernize Frame.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301872</commentid>
    <comment_count>1</comment_count>
      <attachid>308317</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-26 17:53:35 -0700</bug_when>
    <thetext>Created attachment 308317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301979</commentid>
    <comment_count>2</comment_count>
      <attachid>308358</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-27 00:33:10 -0700</bug_when>
    <thetext>Created attachment 308358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302105</commentid>
    <comment_count>3</comment_count>
      <attachid>308394</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-27 08:52:41 -0700</bug_when>
    <thetext>Created attachment 308394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302130</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-27 09:42:24 -0700</bug_when>
    <thetext>http://trac.webkit.org/r215872</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308317</attachid>
            <date>2017-04-26 17:53:35 -0700</date>
            <delta_ts>2017-04-27 00:33:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171357-20170426175334.patch</filename>
            <type>text/plain</type>
            <size>27974</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTgzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE3LTA0LTI2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IEZyYW1lLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MTM1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZyYW1lLmggaGFzIHNldmVyYWwgc3RkOjp1bmlxdWVfcHRycyB0aGF0IGFyZSBjcmVhdGVkIGlu
IHRoZSBjb25zdHJ1Y3RvciwgbmV2ZXIgbnVsbCwKKyAgICAgICAgYW5kIGRlc3Ryb3llZCBpbiB0
aGUgZGVzdHJ1Y3Rvci4gIFRoaXMgaXMgd2hhdCBXVEY6OlVuaXF1ZVJlZiBpcyBmb3IsIGFuZCB1
c2luZyBVbmlxdWVSZWYKKyAgICAgICAgYWxsb3dzIHVzIHRvIG5vdCBjaGVjayBmb3IgbnVsbCB2
YWx1ZXMgYmVjYXVzZSBhIFVuaXF1ZVJlZiBjYW4gbmV2ZXIgYmUgbnVsbC4KKyAgICAgICAgQW4g
aW50ZXJlc3RpbmcgY2FzZSB3YXMgdGhlIEV2ZW50SGFuZGxlciwgd2hpY2ggd2UgZXhwbGljaXRs
eSBzZXQgdG8gbnVsbHB0ciBpbiB0aGUgZGVzdHJ1Y3RvcgorICAgICAgICBvZiBNYWluRnJhbWUs
IGEgc3ViY2xhc3Mgb2YgRnJhbWUuICBXZSBhZGRlZCB0aGlzIGluIHIxOTkxODEgdG8gZml4IGEg
Y3Jhc2ggdGVzdGVkIGJ5CisgICAgICAgIGZhc3QvZXZlbnRzL3doZWVsLWV2ZW50LWRlc3Ryb3lz
LWZyYW1lLmh0bWwgYW5kIHRoaXMgaW1wcm92ZWQgbGlmZXRpbWUgYWxzbyBkb2VzIG5vdCBjcmFz
aAorICAgICAgICBvciBhc3NlcnQgaW4gdGhhdCB0ZXN0LgorCisgICAgICAgIFVzaW5nIFVuaXF1
ZVJlZiBhbHNvIHJlcXVpcmVzIGNvbnN0IGNvcnJlY3RuZXNzLCB3aGljaCB0aGlzIHBhdGNoIGFk
ZHMgd2hlbiBuZWNlc3NhcnkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGlz
cGF0Y2hUb3VjaEV2ZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6Y2FsY3Vs
YXRlVHlwaW5nU3R5bGVBZnRlckRlbGV0ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb21wdXRlQW5kU2V0VHlwaW5nU3R5
bGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y29udGFp
bnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNvcHlUeXBpbmdTdHlsZSk6
CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OnNldFR5cGluZ1N0eWxlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlD
bGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvRXZl
bnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldFZpZXcpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRzKToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZWRpdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lOjpldmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNl
bGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6YW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lOjpzY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmV2ZW50
SGFuZGxlclB0cik6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9NYWluRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpbkZyYW1lOjp+TWFpbkZyYW1lKToKKyAgICAgICAgKiByZXBsYXkv
VXNlcklucHV0QnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1dEJyaWRnZTo6
aGFuZGxlQ29udGV4dE1lbnVFdmVudCk6CisgICAgICAgICogcmVwbGF5L1VzZXJJbnB1dEJyaWRn
ZS5oOgorCiAyMDE3LTA0LTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBMYXlvdXRUZXN0IHdlYnJ0Yy9kYXRhY2hhbm5lbC9iYXNpYy5odG1sIGlzIGEgZmxh
a3kgY3Jhc2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMjE1ODMyKQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTUxLDE1ICs5NTEsMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwcmVzcygpCiAg
ICAgCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRpc3BhdGNoVG91Y2hFdmVudCgpCiB7Ci0g
ICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0g
ICAgTWFpbkZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGhhbmRsZWQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCku
ZGlzcGF0Y2hTaW11bGF0ZWRUb3VjaEV2ZW50KGNsaWNrUG9pbnQoKSk7CisgICAgaWYgKGF1dG8q
IGZyYW1lID0gbWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCkuZGlzcGF0Y2hTaW11bGF0ZWRUb3VjaEV2ZW50KGNsaWNrUG9pbnQoKSk7CiAjZW5kaWYKLSAg
ICByZXR1cm4gaGFuZGxlZDsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEZyYW1lKiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpmcmFtZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDIxNTgzMikKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
OmNhbGN1bGF0ZVR5CiAgICAgLy8gSW4gdGhpcyBjYXNlIGlmIHdlIHN0YXJ0IHR5cGluZywgdGhl
IG5ldyBjaGFyYWN0ZXJzIHNob3VsZCBoYXZlIHRoZSBzYW1lIHN0eWxlIGFzIHRoZSBqdXN0IGRl
bGV0ZWQgb25lcywKICAgICAvLyBidXQsIGlmIHdlIGNoYW5nZSB0aGUgc2VsZWN0aW9uLCBjb21l
IGJhY2sgYW5kIHN0YXJ0IHR5cGluZyB0aGF0IHN0eWxlIHNob3VsZCBiZSBsb3N0LiAgQWxzbyBz
ZWUgCiAgICAgLy8gcHJlc2VydmVUeXBpbmdTdHlsZSgpIGJlbG93LgotICAgIGZyYW1lKCkuc2Vs
ZWN0aW9uKCkuc2V0VHlwaW5nU3R5bGUobV90eXBpbmdTdHlsZSk7CisgICAgZnJhbWUoKS5zZWxl
Y3Rpb24oKS5zZXRUeXBpbmdTdHlsZShtX3R5cGluZ1N0eWxlLmNvcHlSZWYoKSk7CiB9CiAKIHZv
aWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6Y2xlYXJUcmFuc2llbnRTdGF0ZSgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAyMTU4MzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MSw3ICszNjEsNyBA
QCBib29sIEVkaXRvcjo6Y2FuU21hcnRDb3B5T3JEZWxldGUoKQogICAgIHJldHVybiBjbGllbnQo
KSAmJiBjbGllbnQoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgJiYgbV9mcmFtZS5zZWxl
Y3Rpb24oKS5ncmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eTsKIH0KIAotYm9vbCBFZGl0
b3I6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpCitib29sIEVkaXRvcjo6aXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2xp
ZW50KCkgJiYgY2xpZW50KCktPmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwog
fQpAQCAtMzA0MSw3ICszMDQxLDcgQEAgdm9pZCBFZGl0b3I6OmNvbXB1dGVBbmRTZXRUeXBpbmdT
dHlsZShFZAogICAgICAgICBhcHBseUNvbW1hbmQoQXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShk
b2N1bWVudCgpLCBibG9ja1N0eWxlLmdldCgpLCBlZGl0aW5nQWN0aW9uKSk7CiAKICAgICAvLyBT
ZXQgdGhlIHJlbWFpbmluZyBzdHlsZSBhcyB0aGUgdHlwaW5nIHN0eWxlLgotICAgIG1fZnJhbWUu
c2VsZWN0aW9uKCkuc2V0VHlwaW5nU3R5bGUodHlwaW5nU3R5bGUpOworICAgIG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2V0VHlwaW5nU3R5bGUoV1RGTW92ZSh0eXBpbmdTdHlsZSkpOwogfQogCiB2b2lk
IEVkaXRvcjo6Y29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKFN0eWxlUHJvcGVydGllcyYgcHJvcGVy
dGllcywgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCShyZXZpc2lvbiAyMTU4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNyArMzEyLDcgQEAgcHVibGljOgogICAgIC8vIHNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZCBhbmQgc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCBh
cmUgCiAgICAgLy8gbXV0dWFsbHkgZXhjbHVzaXZlLCBtZWFuaW5nIHRoYXQgZW5hYmxpbmcgb25l
IHdpbGwgZGlzYWJsZSB0aGUgb3RoZXIuCiAgICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQoKTsKLSAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOworICAg
IGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3Q7CiAgICAgCiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNCaWRpU2VsZWN0aW9uKCkgY29uc3Q7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyMTU4
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgxMyw3ICsxODEzLDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6ZGVidWdS
ZW5kZXJlcihSZW5kZQogICAgIH0KIH0KIAotYm9vbCBGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMo
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQorYm9vbCBGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMo
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIC8vIFRyZWF0IGEgY29sbGFw
c2VkIHNlbGVjdGlvbiBsaWtlIG5vIHNlbGVjdGlvbi4KICAgICBpZiAoIWlzUmFuZ2UoKSkKQEAg
LTIyMDEsMTAgKzIyMDEsMTAgQEAgdm9pZCBEcmFnQ2FyZXRDb250cm9sbGVyOjpwYWludERyYWdD
YXJldAogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gRnJh
bWVTZWxlY3Rpb246OmNvcHlUeXBpbmdTdHlsZSgpIGNvbnN0CitSZWZQdHI8TXV0YWJsZVN0eWxl
UHJvcGVydGllcz4gRnJhbWVTZWxlY3Rpb246OmNvcHlUeXBpbmdTdHlsZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX3R5cGluZ1N0eWxlIHx8ICFtX3R5cGluZ1N0eWxlLT5zdHlsZSgpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fdHlwaW5n
U3R5bGUtPnN0eWxlKCktPm11dGFibGVDb3B5KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHJldmlzaW9uIDIxNTgzMikKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUFwcGVhcmFuY2VBZnRlckxheW91dCgpOwog
ICAgIHZvaWQgc2V0TmVlZHNTZWxlY3Rpb25VcGRhdGUoKTsKIAotICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IExheW91dFBvaW50
JikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1vZGlmeShFQWx0ZXJhdGlvbiwg
U2VsZWN0aW9uRGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkID0gTm90
VXNlclRyaWdnZXJlZCk7CiAgICAgZW51bSBWZXJ0aWNhbERpcmVjdGlvbiB7IERpcmVjdGlvblVw
LCBEaXJlY3Rpb25Eb3duIH07CkBAIC0yNTMsOCArMjUzLDggQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U2VsZWN0aW9uQnlNb3VzZUlmRGlmZmVyZW50KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBU
ZXh0R3JhbnVsYXJpdHksIEVuZFBvaW50c0FkanVzdG1lbnRNb2RlID0gRG9Ob3RBZGpzdXRFbmRw
b2ludHMpOwogCiAgICAgRWRpdGluZ1N0eWxlKiB0eXBpbmdTdHlsZSgpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVR5cGlu
Z1N0eWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUeXBpbmdTdHlsZShQYXNzUmVmUHRyPEVkaXRp
bmdTdHlsZT4pOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBjb3B5VHlwaW5nU3R5bGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFR5cGluZ1N0eWxlKFJl
ZlB0cjxFZGl0aW5nU3R5bGU+JiYgc3R5bGUpIHsgbV90eXBpbmdTdHlsZSA9IFdURk1vdmUoc3R5
bGUpOyB9CiAgICAgdm9pZCBjbGVhclR5cGluZ1N0eWxlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBGbG9hdFJlY3Qgc2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0
cnVlKSBjb25zdDsKQEAgLTM2NCwxMSArMzY0LDYgQEAgaW5saW5lIHZvaWQgRnJhbWVTZWxlY3Rp
b246OmNsZWFyVHlwaW5nUwogICAgIG1fdHlwaW5nU3R5bGUgPSBudWxscHRyOwogfQogCi1pbmxp
bmUgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0VHlwaW5nU3R5bGUoUGFzc1JlZlB0cjxFZGl0aW5n
U3R5bGU+IHN0eWxlKQotewotICAgIG1fdHlwaW5nU3R5bGUgPSBzdHlsZTsKLX0KLQogI2lmICEo
UExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykpCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZ
KQogaW5saW5lIHZvaWQgRnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxl
Y3Rpb25DaGFuZ2UoY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9uIDIxNTgzMikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYs
NyArMTQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIHNob3VsZERlbGV0ZVJhbmdl
KFJhbmdlKikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHNtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZCgpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1NlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBib29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENo
ZWNraW5nKCkgZmluYWwgeyB9CiAgICAgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAyMTU4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjcsMTAgKzYyNyw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNsZWFyKERvY3VtZW50KiBuZXdEb2MKICAgICB9CiAKICAgICBtX2ZyYW1lLnNlbGVj
dGlvbigpLnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOwotCi0gICAgLy8gV2UgbWF5IGNhbGwgdGhp
cyBjb2RlIGR1cmluZyBvYmplY3QgZGVzdHJ1Y3Rpb24sIHNvIG5lZWQgdG8gbWFrZSBzdXJlIGV2
ZW50SGFuZGxlciBpcyBwcmVzZW50LgotICAgIGlmIChhdXRvIGV2ZW50SGFuZGxlciA9IG1fZnJh
bWUuZXZlbnRIYW5kbGVyUHRyKCkpCi0gICAgICAgIGV2ZW50SGFuZGxlci0+Y2xlYXIoKTsKKyAg
ICBtX2ZyYW1lLmV2ZW50SGFuZGxlcigpLmNsZWFyKCk7CiAKICAgICBpZiAoY2xlYXJGcmFtZVZp
ZXcgJiYgbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIG1fZnJhbWUudmlldygpLT5jbGVhcigpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCShyZXZpc2lvbiAyMTU4MzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShS
YW5nZSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkg
PSAwOyAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVDb250aW51b3VzU3BlbGxD
aGVja2luZygpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVk
KCkgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24g
MjE1ODMyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTE4LDcgKzExMTgsNyBAQCBEcmFnU291cmNlQWN0aW9uIEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhCiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIAotSGl0VGVz
dFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBv
aW50JiBwb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlLCBj
b25zdCBMYXlvdXRTaXplJiBwYWRkaW5nKQorSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6Omhp
dFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgSGl0VGVzdFJlcXVl
c3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlLCBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5n
KSBjb25zdAogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gMjE1ODMyKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDkg
KzE0Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoRmFrZU1v
dXNlTW92ZUV2ZW50U29vbigpOwogICAgIHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRT
b29uSW5RdWFkKGNvbnN0IEZsb2F0UXVhZCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSGl0VGVz
dFJlc3VsdCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYsCi0gICAgICAg
IEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6
RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LAotICAgICAgICBjb25zdCBMYXlvdXRTaXpl
JiBwYWRkaW5nID0gTGF5b3V0U2l6ZSgpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIaXRUZXN0UmVz
dWx0IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiwgSGl0VGVzdFJlcXVl
c3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJB
Z2VudFNoYWRvd0NvbnRlbnQsIGNvbnN0IExheW91dFNpemUmIHBhZGRpbmcgPSBMYXlvdXRTaXpl
KCkpIGNvbnN0OwogCiAgICAgYm9vbCBtb3VzZVByZXNzZWQoKSBjb25zdCB7IHJldHVybiBtX21v
dXNlUHJlc3NlZDsgfQogICAgIE5vZGUqIG1vdXNlUHJlc3NOb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9tb3VzZVByZXNzTm9kZS5nZXQoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlz
aW9uIDIxNTgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTcsMTAgKzE1NywxMCBAQCBGcmFtZTo6RnJhbWUoUGFnZSYgcGFnZSwgSFRNTEZy
YW1lT3duZXJFCiAgICAgLCBtX2xvYWRlcigqdGhpcywgZnJhbWVMb2FkZXJDbGllbnQpCiAgICAg
LCBtX25hdmlnYXRpb25TY2hlZHVsZXIoKnRoaXMpCiAgICAgLCBtX293bmVyRWxlbWVudChvd25l
ckVsZW1lbnQpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdENvbnRyb2xs
ZXI+KCp0aGlzKSkKLSAgICAsIG1fZWRpdG9yKHN0ZDo6bWFrZV91bmlxdWU8RWRpdG9yPigqdGhp
cykpCi0gICAgLCBtX3NlbGVjdGlvbihzdGQ6Om1ha2VfdW5pcXVlPEZyYW1lU2VsZWN0aW9uPih0
aGlzKSkKLSAgICAsIG1fYW5pbWF0aW9uQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPENTU0Fu
aW1hdGlvbkNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWVSZWY8
U2NyaXB0Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9lZGl0b3IobWFrZVVuaXF1ZVJlZjxF
ZGl0b3I+KCp0aGlzKSkKKyAgICAsIG1fc2VsZWN0aW9uKG1ha2VVbmlxdWVSZWY8RnJhbWVTZWxl
Y3Rpb24+KHRoaXMpKQorICAgICwgbV9hbmltYXRpb25Db250cm9sbGVyKG1ha2VVbmlxdWVSZWY8
Q1NTQW5pbWF0aW9uQ29udHJvbGxlcj4oKnRoaXMpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAs
IG1fb3ZlcmZsb3dBdXRvU2Nyb2xsVGltZXIoKnRoaXMsICZGcmFtZTo6b3ZlcmZsb3dBdXRvU2Ny
b2xsVGltZXJGaXJlZCkKICAgICAsIG1fc2VsZWN0aW9uQ2hhbmdlQ2FsbGJhY2tzRGlzYWJsZWQo
ZmFsc2UpCkBAIC0xNjgsNyArMTY4LDcgQEAgRnJhbWU6OkZyYW1lKFBhZ2UmIHBhZ2UsIEhUTUxG
cmFtZU93bmVyRQogICAgICwgbV9wYWdlWm9vbUZhY3RvcihwYXJlbnRQYWdlWm9vbUZhY3Rvcih0
aGlzKSkKICAgICAsIG1fdGV4dFpvb21GYWN0b3IocGFyZW50VGV4dFpvb21GYWN0b3IodGhpcykp
CiAgICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQoMCkK
LSAgICAsIG1fZXZlbnRIYW5kbGVyKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRIYW5kbGVyPigqdGhp
cykpCisgICAgLCBtX2V2ZW50SGFuZGxlcihtYWtlVW5pcXVlUmVmPEV2ZW50SGFuZGxlcj4oKnRo
aXMpKQogewogICAgIEF0b21pY1N0cmluZzo6aW5pdCgpOwogICAgIEhUTUxOYW1lczo6aW5pdCgp
OwpAQCAtMjUxLDkgKzI1MSw3IEBAIHZvaWQgRnJhbWU6OnNldFZpZXcoUmVmUHRyPEZyYW1lVmll
dz4mJiAKICAgICBpZiAobV92aWV3KQogICAgICAgICBtX3ZpZXctPnVuc2NoZWR1bGVSZWxheW91
dCgpOwogICAgIAotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBkdXJpbmcgZGVzdHJ1Y3Rpb24s
IHNvIG5lZWQgdG8gZG8gYSBudWxsIGNoZWNrLgotICAgIGlmIChtX2V2ZW50SGFuZGxlcikKLSAg
ICAgICAgbV9ldmVudEhhbmRsZXItPmNsZWFyKCk7CisgICAgbV9ldmVudEhhbmRsZXItPmNsZWFy
KCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVCghbV9kb2MgfHwgIW1fZG9jLT5oYXNMaXZpbmdSZW5k
ZXJUcmVlKCkpOwogCkBAIC03MTQsOCArNzEyLDcgQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNlclNj
cmlwdHMoVXNlclNjcmlwdAogICAgICAgICBpZiAoc2NyaXB0LmluamVjdGlvblRpbWUoKSA9PSBp
bmplY3Rpb25UaW1lICYmIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGRv
Y3VtZW50LT51cmwoKSwgc2NyaXB0LndoaXRlbGlzdCgpLCBzY3JpcHQuYmxhY2tsaXN0KCkpKSB7
CiAgICAgICAgICAgICBpZiAobV9wYWdlKQogICAgICAgICAgICAgICAgIG1fcGFnZS0+c2V0QXNS
dW5uaW5nVXNlclNjcmlwdHMoKTsKLSAgICAgICAgICAgIGlmIChtX3NjcmlwdCkKLSAgICAgICAg
ICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0
LnNvdXJjZSgpLCBzY3JpcHQudXJsKCkpLCB3b3JsZCk7CisgICAgICAgICAgICBtX3NjcmlwdC0+
ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZSgpLCBzY3JpcHQu
dXJsKCkpLCB3b3JsZCk7CiAgICAgICAgIH0KICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgJKHJldmlzaW9uIDIxNTgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVs
ZXIuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTY3JpcHRUeXBl
cy5oIgotI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAj
aW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKQEAgLTE0MywxNSArMTQzLDE5IEBAIHB1Ymxp
YzoKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKICAgICBGcmFtZVZpZXcqIHZpZXco
KSBjb25zdDsKIAotICAgIEVkaXRvciYgZWRpdG9yKCkgY29uc3Q7Ci0gICAgRXZlbnRIYW5kbGVy
JiBldmVudEhhbmRsZXIoKSBjb25zdDsKLSAgICBFdmVudEhhbmRsZXIqIGV2ZW50SGFuZGxlclB0
cigpIGNvbnN0OworICAgIEVkaXRvciYgZWRpdG9yKCkgeyByZXR1cm4gbV9lZGl0b3I7IH0KKyAg
ICBjb25zdCBFZGl0b3ImIGVkaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdG9yOyB9CisgICAg
RXZlbnRIYW5kbGVyJiBldmVudEhhbmRsZXIoKSB7IHJldHVybiBtX2V2ZW50SGFuZGxlcjsgfQor
ICAgIGNvbnN0IEV2ZW50SGFuZGxlciYgZXZlbnRIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gbV9l
dmVudEhhbmRsZXI7IH0KICAgICBGcmFtZUxvYWRlciYgbG9hZGVyKCkgY29uc3Q7CiAgICAgTmF2
aWdhdGlvblNjaGVkdWxlciYgbmF2aWdhdGlvblNjaGVkdWxlcigpIGNvbnN0OwotICAgIEZyYW1l
U2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25zdDsKKyAgICBGcmFtZVNlbGVjdGlvbiYgc2VsZWN0
aW9uKCkgeyByZXR1cm4gbV9zZWxlY3Rpb247IH0KKyAgICBjb25zdCBGcmFtZVNlbGVjdGlvbiYg
c2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb247IH0KICAgICBGcmFtZVRyZWUm
IHRyZWUoKSBjb25zdDsKLSAgICBDU1NBbmltYXRpb25Db250cm9sbGVyJiBhbmltYXRpb24oKSBj
b25zdDsKLSAgICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHQoKTsKKyAgICBDU1NBbmltYXRpb25D
b250cm9sbGVyJiBhbmltYXRpb24oKSB7IHJldHVybiBtX2FuaW1hdGlvbkNvbnRyb2xsZXI7IH0K
KyAgICBjb25zdCBDU1NBbmltYXRpb25Db250cm9sbGVyJiBhbmltYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2FuaW1hdGlvbkNvbnRyb2xsZXI7IH0KKyAgICBTY3JpcHRDb250cm9sbGVyJiBzY3Jp
cHQoKSB7IHJldHVybiBtX3NjcmlwdDsgfQorICAgIGNvbnN0IFNjcmlwdENvbnRyb2xsZXImIHNj
cmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAgICAgCiAgICAgV0VCQ09SRV9FWFBP
UlQgUmVuZGVyVmlldyogY29udGVudFJlbmRlcmVyKCkgY29uc3Q7IC8vIFJvb3Qgb2YgdGhlIHJl
bmRlciB0cmVlIGZvciB0aGUgZG9jdW1lbnQgY29udGFpbmVkIGluIHRoaXMgZnJhbWUuCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVuZGVyV2lkZ2V0KiBvd25lclJlbmRlcmVyKCkgY29uc3Q7IC8vIFJl
bmRlcmVyIGZvciB0aGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoaXMgZnJhbWUuCkBAIC0yODgs
MTAgKzI5MiwxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGcmFtZVZpZXc+IG1fdmlldzsKICAg
ICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jOwogCi0gICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFNj
cmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OwotICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxFZGl0
b3I+IG1fZWRpdG9yOwotICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxGcmFtZVNlbGVjdGlvbj4g
bV9zZWxlY3Rpb247Ci0gICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENTU0FuaW1hdGlvbkNvbnRy
b2xsZXI+IG1fYW5pbWF0aW9uQ29udHJvbGxlcjsKKyAgICBVbmlxdWVSZWY8U2NyaXB0Q29udHJv
bGxlcj4gbV9zY3JpcHQ7CisgICAgVW5pcXVlUmVmPEVkaXRvcj4gbV9lZGl0b3I7CisgICAgVW5p
cXVlUmVmPEZyYW1lU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsKKyAgICBVbmlxdWVSZWY8Q1NTQW5p
bWF0aW9uQ29udHJvbGxlcj4gbV9hbmltYXRpb25Db250cm9sbGVyOwogCiAjaWYgRU5BQkxFKERB
VEFfREVURUNUSU9OKQogICAgIFJldGFpblB0cjxOU0FycmF5PiBtX2RhdGFEZXRlY3Rpb25SZXN1
bHRzOwpAQCAtMzI0LDcgKzMyOCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RvY3VtZW50SXNC
ZWluZ1JlcGxhY2VkIHsgZmFsc2UgfTsKIAogcHJvdGVjdGVkOgotICAgIHN0ZDo6dW5pcXVlX3B0
cjxFdmVudEhhbmRsZXI+IG1fZXZlbnRIYW5kbGVyOworICAgIFVuaXF1ZVJlZjxFdmVudEhhbmRs
ZXI+IG1fZXZlbnRIYW5kbGVyOwogfTsKIAogaW5saW5lIHZvaWQgRnJhbWU6OmluaXQoKQpAQCAt
MzQ3LDMxICszNTEsMTEgQEAgaW5saW5lIEZyYW1lVmlldyogRnJhbWU6OnZpZXcoKSBjb25zdAog
ICAgIHJldHVybiBtX3ZpZXcuZ2V0KCk7CiB9CiAKLWlubGluZSBTY3JpcHRDb250cm9sbGVyJiBG
cmFtZTo6c2NyaXB0KCkKLXsKLSAgICByZXR1cm4gKm1fc2NyaXB0OwotfQotCiBpbmxpbmUgRG9j
dW1lbnQqIEZyYW1lOjpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZG9jLmdldCgp
OwogfQogCi1pbmxpbmUgRnJhbWVTZWxlY3Rpb24mIEZyYW1lOjpzZWxlY3Rpb24oKSBjb25zdAot
ewotICAgIHJldHVybiAqbV9zZWxlY3Rpb247Ci19Ci0KLWlubGluZSBFZGl0b3ImIEZyYW1lOjpl
ZGl0b3IoKSBjb25zdAotewotICAgIHJldHVybiAqbV9lZGl0b3I7Ci19Ci0KLWlubGluZSBDU1NB
bmltYXRpb25Db250cm9sbGVyJiBGcmFtZTo6YW5pbWF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gKm1fYW5pbWF0aW9uQ29udHJvbGxlcjsKLX0KLQogaW5saW5lIEhUTUxGcmFtZU93bmVyRWxl
bWVudCogRnJhbWU6Om93bmVyRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3duZXJF
bGVtZW50OwpAQCAtMzkyLDE2ICszNzYsNiBAQCBpbmxpbmUgdm9pZCBGcmFtZTo6ZGV0YWNoRnJv
bVBhZ2UoKQogICAgIG1fcGFnZSA9IG51bGxwdHI7CiB9CiAKLWlubGluZSBFdmVudEhhbmRsZXIm
IEZyYW1lOjpldmVudEhhbmRsZXIoKSBjb25zdAotewotICAgIHJldHVybiAqbV9ldmVudEhhbmRs
ZXI7Ci19Ci0KLWlubGluZSBFdmVudEhhbmRsZXIqIEZyYW1lOjpldmVudEhhbmRsZXJQdHIoKSBj
b25zdAotewotICAgIHJldHVybiBtX2V2ZW50SGFuZGxlci5nZXQoKTsKLX0KLQogaW5saW5lIE1h
aW5GcmFtZSYgRnJhbWU6Om1haW5GcmFtZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oIW1fbWFpbkZyYW1lV2FzRGVzdHJveWVkKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL01haW5GcmFtZS5jcHAJKHJldmlzaW9uIDIxNTgzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWFpbkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNiBAQCBpbmxp
bmUgTWFpbkZyYW1lOjpNYWluRnJhbWUoUGFnZSYgcGFnZSwgCiBNYWluRnJhbWU6On5NYWluRnJh
bWUoKQogewogICAgIG1fcmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVyID0gbnVsbHB0cjsKLSAg
ICBtX2V2ZW50SGFuZGxlciA9IG51bGxwdHI7CiAKICAgICBzZXRNYWluRnJhbWVXYXNEZXN0cm95
ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3Bw
CShyZXZpc2lvbiAyMTU4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJp
ZGdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksOSArNjksOSBAQCBJbnB1dEN1cnNvciYgVXNl
cklucHV0QnJpZGdlOjphY3RpdmVDdXJzCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQotYm9vbCBVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBjb25zdCBGcmFtZSogZnJhbWUsIElucHV0
U291cmNlKQorYm9vbCBVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBGcmFtZSYgZnJhbWUsIElucHV0U291
cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2VuZENvbnRleHRNZW51
RXZlbnQobW91c2VFdmVudCk7CisgICAgcmV0dXJuIGZyYW1lLmV2ZW50SGFuZGxlcigpLnNlbmRD
b250ZXh0TWVudUV2ZW50KG1vdXNlRXZlbnQpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgJKHJldmlzaW9uIDIxNTgzMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzIs
NyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBVc2VyIGlucHV0IEFQSXMuCiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVDb250ZXh0TWVu
dUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IEZyYW1lKiwgSW5wdXRTb3Vy
Y2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBGcmFtZSYs
IElucHV0U291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiwgSW5wdXRTb3VyY2Ugc291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjE1ODMyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDQtMjYgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb2Rlcm5pemUgRnJhbWUuaAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMzU3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkVkaXRvckNsaWVudDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Y29udGV4dE1lbnVBdFBvaW50SW5XaW5kb3cpOgorICAgICAgICAoV2ViS2l0Ojpo
YW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNTZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorCiAyMDE3LTA0LTI2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSB1c2VyIHNjcmlwdCBpbmplY3Rpb24gbW9y
ZSByb2J1c3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDIxNTgzMikK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBib29sIFdlYkVkaXRvckNs
aWVudDo6c21hcnRJbnNlcnREZWxldGVFCiAgICAgcmV0dXJuIG1fcGFnZS0+aXNTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQoKTsKIH0KICAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1NlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+
aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgJKHJldmlzaW9uIDIxNTgzMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIHNob3VsZERlbGV0ZVJhbmdlKFdl
YkNvcmU6OlJhbmdlKikgZmluYWw7CiAgICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQo
KSBmaW5hbDsKLSAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGZp
bmFsOworICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGZpbmFs
OwogICAgIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKSBmaW5hbDsKICAgICBi
b29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjE1ODMyKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTM1LDcgKzIxMzUsNyBAQCBXZWJDb250ZXh0TWVudSogV2ViUGFnZTo6Y29u
dGV4dE1lbnVBdFBvCiAgICAgCiAgICAgLy8gU2ltdWxhdGUgYSBtb3VzZSBjbGljayB0byBnZW5l
cmF0ZSB0aGUgY29ycmVjdCBtZW51LgogICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50
KHBvaW50LCBwb2ludCwgUmlnaHRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwg
MSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCksIFdlYkNvcmU6OkZv
cmNlQXRDbGljaywgV2ViQ29yZTo6Tm9UYXApOwotICAgIGJvb2wgaGFuZGxlZCA9IGNvcmVQYWdl
KCktPnVzZXJJbnB1dEJyaWRnZSgpLmhhbmRsZUNvbnRleHRNZW51RXZlbnQobW91c2VFdmVudCwg
JmNvcmVQYWdlKCktPm1haW5GcmFtZSgpKTsKKyAgICBib29sIGhhbmRsZWQgPSBjb3JlUGFnZSgp
LT51c2VySW5wdXRCcmlkZ2UoKS5oYW5kbGVDb250ZXh0TWVudUV2ZW50KG1vdXNlRXZlbnQsIGNv
cmVQYWdlKCktPm1haW5GcmFtZSgpKTsKICAgICBpZiAoIWhhbmRsZWQpCiAgICAgICAgIHJldHVy
biAwOwogCkBAIC0yMjYwLDcgKzIyNjAsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVDb250ZXh0TWVu
dUV2ZW50KGNvbnN0CiAgICAgaWYgKHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkKICAgICAg
ICAgZnJhbWUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUo
KTsKIAotICAgIGJvb2wgaGFuZGxlZCA9IHBhZ2UtPmNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRn
ZSgpLmhhbmRsZUNvbnRleHRNZW51RXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50LCBmcmFtZSk7Cisg
ICAgYm9vbCBoYW5kbGVkID0gcGFnZS0+Y29yZVBhZ2UoKS0+dXNlcklucHV0QnJpZGdlKCkuaGFu
ZGxlQ29udGV4dE1lbnVFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQsICpmcmFtZSk7CiAgICAgaWYg
KGhhbmRsZWQpCiAgICAgICAgIHBhZ2UtPmNvbnRleHRNZW51KCktPnNob3coKTsKIApAQCAtNTE4
Niw3ICs1MTg2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZQog
ICAgIH0KIH0KIAotYm9vbCBXZWJQYWdlOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQoKQorYm9vbCBXZWJQYWdlOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBj
b25zdAogewogICAgIHJldHVybiBtX3BhZ2UtPnNldHRpbmdzKCkuc2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMTU4MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNyArNzIwLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKICAgICB2
b2lkIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sKTsKIAotICAgIGJvb2wgaXNTZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CisgICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldFNlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQoYm9vbCk7CiAKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4
dChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYpOwpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMjE1ODQ2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDQtMjYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb2Rlcm5pemUgRnJhbWUuaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMzU3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCk6CisKIDIwMTctMDQtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzaG91
bGQgbm90IHN5bmNocm9ub3VzbHkgbG9hZCBwcm92aWRlZCBkYXRhCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNp
b24gMjE1ODMyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICBp
bnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBmaW5hbDsKIAogICAgIGJvb2wgc21hcnRJbnNl
cnREZWxldGVFbmFibGVkKCkgZmluYWw7Ci0gICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQoKSBmaW5hbDsKKyAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNl
RW5hYmxlZCgpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShXZWJD
b3JlOjpSYW5nZSopIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAyMTU4MzIpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI0Miw3ICsyNDIsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c21hcnRJ
bnNlcnREZWxldGVFCiAgICAgcmV0dXJuIHBhZ2UtPnNldHRpbmdzKCkuc21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKCk7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1NlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQoKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgUGFnZSogcGFnZSA9IFttX3dlYlZp
ZXcgcGFnZV07CiAgICAgaWYgKCFwYWdlKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24g
MjE1ODQ2KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTctMDQtMjYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb2Rlcm5pemUgRnJhbWUuaAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMzU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojppc1NlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorCiAyMDE3LTA0LTIwICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlp
QHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gRml4IGJ1aWxkIGJyZWFrIGFmdGVyIHVw
ZGF0aW5nIEFOR0xFCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDIxNTgzMikKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4Miw3ICszODIsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c21hcnRJbnNlcnRE
ZWxldGVFCiAgICAgcmV0dXJuIHBhZ2UtPnNldHRpbmdzKCkuc21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKCk7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1NlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQodm9pZCkKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1NlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQodm9pZCkgY29uc3QKIHsKICAgICBQYWdlKiBwYWdlID0gbV93ZWJW
aWV3LT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDIxNTgzMikK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRN
b3ZlUmFuZ2VBZnRlckRlbGV0ZShXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OlJhbmdlKikgZmlu
YWw7CiAKICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIGZpbmFsOwotICAgIGJv
b2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgZmluYWw7CisgICAgYm9vbCBp
c1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdCBmaW5hbDsKIAogICAgIHZv
aWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQg
cmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308358</attachid>
            <date>2017-04-27 00:33:10 -0700</date>
            <delta_ts>2017-04-27 08:52:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171357-20170427003305.patch</filename>
            <type>text/plain</type>
            <size>32580</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE3LTA0LTI3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IEZyYW1lLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MTM1NworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgRnJh
bWUuaCBoYXMgc2V2ZXJhbCBzdGQ6OnVuaXF1ZV9wdHJzIHRoYXQgYXJlIGNyZWF0ZWQgaW4gdGhl
IGNvbnN0cnVjdG9yLCBuZXZlciBudWxsLAorICAgICAgICBhbmQgZGVzdHJveWVkIGluIHRoZSBk
ZXN0cnVjdG9yLiAgVGhpcyBpcyB3aGF0IFdURjo6VW5pcXVlUmVmIGlzIGZvciwgYW5kIHVzaW5n
IFVuaXF1ZVJlZgorICAgICAgICBhbGxvd3MgdXMgdG8gbm90IGNoZWNrIGZvciBudWxsIHZhbHVl
cyBiZWNhdXNlIGEgVW5pcXVlUmVmIGNhbiBuZXZlciBiZSBudWxsLgorICAgICAgICBBbiBpbnRl
cmVzdGluZyBjYXNlIHdhcyB0aGUgRXZlbnRIYW5kbGVyLCB3aGljaCB3ZSBleHBsaWNpdGx5IHNl
dCB0byBudWxscHRyIGluIHRoZSBkZXN0cnVjdG9yCisgICAgICAgIG9mIE1haW5GcmFtZSwgYSBz
dWJjbGFzcyBvZiBGcmFtZS4gIFdlIGFkZGVkIHRoaXMgaW4gcjE5OTE4MSB0byBmaXggYSBjcmFz
aCB0ZXN0ZWQgYnkKKyAgICAgICAgZmFzdC9ldmVudHMvd2hlZWwtZXZlbnQtZGVzdHJveXMtZnJh
bWUuaHRtbCBhbmQgdGhpcyBpbXByb3ZlZCBsaWZldGltZSBhbHNvIGRvZXMgbm90IGNyYXNoCisg
ICAgICAgIG9yIGFzc2VydCBpbiB0aGF0IHRlc3QuCisKKyAgICAgICAgVXNpbmcgVW5pcXVlUmVm
IGFsc28gcmVxdWlyZXMgY29uc3QgY29ycmVjdG5lc3MsIHdoaWNoIHRoaXMgcGF0Y2ggYWRkcyB3
aGVuIG5lY2Vzc2FyeS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkaXNwYXRj
aFRvdWNoRXZlbnQpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpjYWxjdWxhdGVU
eXBpbmdTdHlsZUFmdGVyRGVsZXRlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZSk6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpjb250YWlucyk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y29weVR5cGluZ1N0eWxlKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVNlbGVjdGlvbjo6c2V0VHlwaW5nU3R5bGUpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6Y2xlYXIpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0Vmlldyk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjplZGl0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OmV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjphbmltYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWU6OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZXZlbnRIYW5k
bGVyUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL01haW5GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNYWluRnJhbWU6On5NYWluRnJhbWUpOgorICAgICAgICAqIHJlcGxheS9Vc2Vy
SW5wdXRCcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlcklucHV0QnJpZGdlOjpoYW5k
bGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6
CisKIDIwMTctMDQtMjYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZlcnRlZCByMjE1Nzc0LgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiAyMTU4NTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NTEsMTUgKzk1MSwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OnByZXNzKCkKICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGlzcGF0Y2hUb3VjaEV2
ZW50KCkKIHsKLSAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKICNpZiBFTkFCTEUoSU9TX1RPVUNI
X0VWRU5UUykKLSAgICBNYWluRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaGFuZGxlZCA9IGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS5kaXNwYXRjaFNpbXVsYXRlZFRvdWNoRXZlbnQoY2xpY2tQb2ludCgpKTsKKyAg
ICBpZiAoYXV0byogZnJhbWUgPSBtYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS5kaXNwYXRjaFNpbXVsYXRlZFRvdWNoRXZlbnQoY2xpY2tQb2ludCgpKTsK
ICNlbmRpZgotICAgIHJldHVybiBoYW5kbGVkOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogRnJh
bWUqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZyYW1lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24g
MjE1ODU4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZDo6Y2FsY3VsYXRlVHkKICAgICAvLyBJbiB0aGlzIGNhc2UgaWYgd2Ugc3RhcnQg
dHlwaW5nLCB0aGUgbmV3IGNoYXJhY3RlcnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgc3R5bGUgYXMg
dGhlIGp1c3QgZGVsZXRlZCBvbmVzLAogICAgIC8vIGJ1dCwgaWYgd2UgY2hhbmdlIHRoZSBzZWxl
Y3Rpb24sIGNvbWUgYmFjayBhbmQgc3RhcnQgdHlwaW5nIHRoYXQgc3R5bGUgc2hvdWxkIGJlIGxv
c3QuICBBbHNvIHNlZSAKICAgICAvLyBwcmVzZXJ2ZVR5cGluZ1N0eWxlKCkgYmVsb3cuCi0gICAg
ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRUeXBpbmdTdHlsZShtX3R5cGluZ1N0eWxlKTsKKyAgICBm
cmFtZSgpLnNlbGVjdGlvbigpLnNldFR5cGluZ1N0eWxlKG1fdHlwaW5nU3R5bGUuY29weVJlZigp
KTsKIH0KIAogdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpjbGVhclRyYW5zaWVudFN0YXRl
KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDIxNTg1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYx
LDcgKzM2MSw3IEBAIGJvb2wgRWRpdG9yOjpjYW5TbWFydENvcHlPckRlbGV0ZSgpCiAgICAgcmV0
dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSAmJiBt
X2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5OwogfQog
Ci1ib29sIEVkaXRvcjo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKK2Jvb2wg
RWRpdG9yOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdAogewogICAg
IHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkKCk7CiB9CkBAIC0zMDQxLDcgKzMwNDEsNyBAQCB2b2lkIEVkaXRvcjo6Y29tcHV0ZUFu
ZFNldFR5cGluZ1N0eWxlKEVkCiAgICAgICAgIGFwcGx5Q29tbWFuZChBcHBseVN0eWxlQ29tbWFu
ZDo6Y3JlYXRlKGRvY3VtZW50KCksIGJsb2NrU3R5bGUuZ2V0KCksIGVkaXRpbmdBY3Rpb24pKTsK
IAogICAgIC8vIFNldCB0aGUgcmVtYWluaW5nIHN0eWxlIGFzIHRoZSB0eXBpbmcgc3R5bGUuCi0g
ICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRUeXBpbmdTdHlsZSh0eXBpbmdTdHlsZSk7CisgICAg
bV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRUeXBpbmdTdHlsZShXVEZNb3ZlKHR5cGluZ1N0eWxlKSk7
CiB9CiAKIHZvaWQgRWRpdG9yOjpjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoU3R5bGVQcm9wZXJ0
aWVzJiBwcm9wZXJ0aWVzLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw3ICszMTIsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gc21hcnRJbnNlcnREZWxldGVFbmFibGVkIGFuZCBzZWxlY3RUcmFpbGluZ1doaXRlc3Bh
Y2VFbmFibGVkIGFyZSAKICAgICAvLyBtdXR1YWxseSBleGNsdXNpdmUsIG1lYW5pbmcgdGhhdCBl
bmFibGluZyBvbmUgd2lsbCBkaXNhYmxlIHRoZSBvdGhlci4KICAgICBib29sIHNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZCgpOwotICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKCk7CisgICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25z
dDsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0JpZGlTZWxlY3Rpb24oKSBjb25z
dDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHJl
dmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEzLDcgKzE4MTMsNyBAQCB2b2lkIEZyYW1lU2VsZWN0
aW9uOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlCiAgICAgfQogfQogCi1ib29sIEZyYW1lU2VsZWN0aW9u
Ojpjb250YWlucyhjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCitib29sIEZyYW1lU2VsZWN0aW9u
Ojpjb250YWlucyhjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgLy8gVHJl
YXQgYSBjb2xsYXBzZWQgc2VsZWN0aW9uIGxpa2Ugbm8gc2VsZWN0aW9uLgogICAgIGlmICghaXNS
YW5nZSgpKQpAQCAtMjIwMSwxMCArMjIwMSwxMCBAQCB2b2lkIERyYWdDYXJldENvbnRyb2xsZXI6
OnBhaW50RHJhZ0NhcmV0CiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBGcmFtZVNlbGVjdGlvbjo6Y29weVR5cGluZ1N0eWxlKCkgY29uc3QKK1JlZlB0cjxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBGcmFtZVNlbGVjdGlvbjo6Y29weVR5cGluZ1N0eWxlKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fdHlwaW5nU3R5bGUgfHwgIW1fdHlwaW5nU3R5bGUtPnN0eWxl
KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gbV90eXBpbmdTdHlsZS0+c3R5bGUoKS0+bXV0YWJsZUNvcHkoKTsKIH0KIApAQCAtMjQyOCw3
ICsyNDI4LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6ZXhwYW5kU2VsZWN0aW9uVG9FbAogICAg
IHNldFNlbGVjdGlvbihzZWxlY3Rpb24pOwogfQogCi1QYXNzUmVmUHRyPFJhbmdlPiBGcmFtZVNl
bGVjdGlvbjo6ZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3QKK1Jl
ZlB0cjxSYW5nZT4gRnJhbWVTZWxlY3Rpb246OmVsZW1lbnRSYW5nZUNvbnRhaW5pbmdDYXJldFNl
bGVjdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VsZWN0aW9uLmlzTm9uZSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0NjcsNyArMjQ2Nyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246OmV4cGFuZFNlbGVjdGlvblRvV28KICAgICAgICAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7
CiB9CiAKLVBhc3NSZWZQdHI8UmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjp3b3JkUmFuZ2VDb250YWlu
aW5nQ2FyZXRTZWxlY3Rpb24oKQorUmVmUHRyPFJhbmdlPiBGcmFtZVNlbGVjdGlvbjo6d29yZFJh
bmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkKIHsKICAgICByZXR1cm4gd29yZFNlbGVjdGlv
bkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihtX3NlbGVjdGlvbikudG9Ob3JtYWxpemVkUmFuZ2Uo
KTsKIH0KQEAgLTI2MTksMTIgKzI2MTksMTIgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2VsZWN0
aW9uQXRXb3JkU3RhcgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQdHI8UmFuZ2U+
IEZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50
KSBjb25zdAorUmVmUHRyPFJhbmdlPiBGcmFtZVNlbGVjdGlvbjo6cmFuZ2VCeU1vdmluZ0N1cnJl
bnRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3QKIHsKICAgICByZXR1cm4gcmFuZ2VCeUFsdGVy
aW5nQ3VycmVudFNlbGVjdGlvbihBbHRlcmF0aW9uTW92ZSwgYW1vdW50KTsKIH0KIAotUGFzc1Jl
ZlB0cjxSYW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhbmdlQnlFeHRlbmRpbmdDdXJyZW50U2VsZWN0
aW9uKGludCBhbW91bnQpIGNvbnN0CitSZWZQdHI8UmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjpyYW5n
ZUJ5RXh0ZW5kaW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdAogewogICAgIHJl
dHVybiByYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uKEFsdGVyYXRpb25FeHRlbmQsIGFt
b3VudCk7CiB9CkBAIC0yNzg1LDcgKzI3ODUsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjphY3R1
YWxTZWxlY3Rpb25BdFNlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxSYW5n
ZT4gRnJhbWVTZWxlY3Rpb246OnJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVy
YXRpb24gYWx0ZXJhdGlvbiwgaW50IGFtb3VudCkgY29uc3QKK1JlZlB0cjxSYW5nZT4gRnJhbWVT
ZWxlY3Rpb246OnJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVyYXRpb24gYWx0
ZXJhdGlvbiwgaW50IGFtb3VudCkgY29uc3QKIHsKICAgICBpZiAobV9zZWxlY3Rpb24uaXNOb25l
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uaAkocmV2aXNpb24gMjE1ODU4KQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgdXBkYXRlQXBwZWFyYW5jZUFmdGVyTGF5b3V0KCk7CiAgICAgdm9p
ZCBzZXROZWVkc1NlbGVjdGlvblVwZGF0ZSgpOwogCi0gICAgYm9vbCBjb250YWlucyhjb25zdCBM
YXlvdXRQb2ludCYpOworICAgIGJvb2wgY29udGFpbnMoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25z
dDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbW9kaWZ5KEVBbHRlcmF0aW9uLCBTZWxlY3Rp
b25EaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJp
Z2dlcmVkKTsKICAgICBlbnVtIFZlcnRpY2FsRGlyZWN0aW9uIHsgRGlyZWN0aW9uVXAsIERpcmVj
dGlvbkRvd24gfTsKQEAgLTIxNSw5ICsyMTUsOSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9T
KQogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXhwYW5kU2VsZWN0aW9uVG9FbGVt
ZW50Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1Jl
ZlB0cjxSYW5nZT4gZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFJhbmdlPiBlbGVtZW50UmFuZ2VDb250YWluaW5n
Q2FyZXRTZWxlY3Rpb24oKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4cGFuZFNl
bGVjdGlvblRvV29yZENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFBhc3NSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigp
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlQ29udGFpbmluZ0Nh
cmV0U2VsZWN0aW9uKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleHBhbmRTZWxlY3Rpb25U
b1N0YXJ0T2ZXb3JkQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgVUNoYXIgY2hhcmFjdGVySW5SZWxhdGlvblRvQ2FyZXRTZWxlY3Rpb24oaW50IGFtb3VudCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVUNoYXIgY2hhcmFjdGVyQmVmb3JlQ2FyZXRTZWxl
Y3Rpb24oKSBjb25zdDsKQEAgLTIyNyw4ICsyMjcsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBzZWxlY3Rpb25BdERvY3VtZW50U3RhcnQoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHNlbGVjdGlvbkF0U2VudGVuY2VTdGFydCgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2VsZWN0aW9uQXRXb3JkU3RhcnQoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlvbihp
bnQgYW1vdW50KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiBy
YW5nZUJ5RXh0ZW5kaW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IHJhbmdlQnlNb3ZpbmdDdXJyZW50U2VsZWN0aW9u
KGludCBhbW91bnQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gcmFu
Z2VCeUV4dGVuZGluZ0N1cnJlbnRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZWxlY3RSYW5nZU9uRWxlbWVudCh1bnNpZ25lZCBsb2NhdGlvbiwg
dW5zaWduZWQgbGVuZ3RoLCBOb2RlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckN1
cnJlbnRTZWxlY3Rpb24oKTsKICAgICB2b2lkIHNldENhcmV0QmxpbmtzKGJvb2wgY2FyZXRCbGlu
a3MgPSB0cnVlKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCBwdWJsaWM6CiAgICAgfQogcHJpdmF0ZToK
ICAgICBib29sIGFjdHVhbFNlbGVjdGlvbkF0U2VudGVuY2VTdGFydChjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VCeUFsdGVyaW5nQ3Vy
cmVudFNlbGVjdGlvbihFQWx0ZXJhdGlvbiwgaW50IGFtb3VudCkgY29uc3Q7CisgICAgUmVmUHRy
PFJhbmdlPiByYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uKEVBbHRlcmF0aW9uLCBpbnQg
YW1vdW50KSBjb25zdDsKIHB1YmxpYzoKICNlbmRpZgogCkBAIC0yNTMsOCArMjUzLDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0U2VsZWN0aW9uQnlNb3VzZUlmRGlmZmVyZW50KGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mLCBUZXh0R3JhbnVsYXJpdHksIEVuZFBvaW50c0FkanVzdG1lbnRNb2RlID0g
RG9Ob3RBZGpzdXRFbmRwb2ludHMpOwogCiAgICAgRWRpdGluZ1N0eWxlKiB0eXBpbmdTdHlsZSgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gY29weVR5cGluZ1N0eWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUeXBpbmdTdHlsZShQ
YXNzUmVmUHRyPEVkaXRpbmdTdHlsZT4pOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5VHlwaW5nU3R5bGUoKSBjb25zdDsKKyAgICB2b2lkIHNl
dFR5cGluZ1N0eWxlKFJlZlB0cjxFZGl0aW5nU3R5bGU+JiYgc3R5bGUpIHsgbV90eXBpbmdTdHls
ZSA9IFdURk1vdmUoc3R5bGUpOyB9CiAgICAgdm9pZCBjbGVhclR5cGluZ1N0eWxlKCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3Qgc2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlz
aWJsZUNvbnRlbnQgPSB0cnVlKSBjb25zdDsKQEAgLTM2NCwxMSArMzY0LDYgQEAgaW5saW5lIHZv
aWQgRnJhbWVTZWxlY3Rpb246OmNsZWFyVHlwaW5nUwogICAgIG1fdHlwaW5nU3R5bGUgPSBudWxs
cHRyOwogfQogCi1pbmxpbmUgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0VHlwaW5nU3R5bGUoUGFz
c1JlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlKQotewotICAgIG1fdHlwaW5nU3R5bGUgPSBzdHls
ZTsKLX0KLQogI2lmICEoUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykpCiAjaWYgSEFW
RShBQ0NFU1NJQklMSVRZKQogaW5saW5lIHZvaWQgRnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vz
c2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQm
KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9uIDIx
NTg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIHNo
b3VsZERlbGV0ZVJhbmdlKFJhbmdlKikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHRvZ2dsZUNv
bnRpbnVvdXNTcGVsbENoZWNraW5nKCkgZmluYWwgeyB9CiAgICAgYm9vbCBpc0dyYW1tYXJDaGVj
a2luZ0VuYWJsZWQoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMTU4NTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjcsMTAgKzYyNyw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyKERvY3VtZW50KiBuZXdEb2MKICAgICB9CiAKICAg
ICBtX2ZyYW1lLnNlbGVjdGlvbigpLnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOwotCi0gICAgLy8g
V2UgbWF5IGNhbGwgdGhpcyBjb2RlIGR1cmluZyBvYmplY3QgZGVzdHJ1Y3Rpb24sIHNvIG5lZWQg
dG8gbWFrZSBzdXJlIGV2ZW50SGFuZGxlciBpcyBwcmVzZW50LgotICAgIGlmIChhdXRvIGV2ZW50
SGFuZGxlciA9IG1fZnJhbWUuZXZlbnRIYW5kbGVyUHRyKCkpCi0gICAgICAgIGV2ZW50SGFuZGxl
ci0+Y2xlYXIoKTsKKyAgICBtX2ZyYW1lLmV2ZW50SGFuZGxlcigpLmNsZWFyKCk7CiAKICAgICBp
ZiAoY2xlYXJGcmFtZVZpZXcgJiYgbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIG1fZnJhbWUudmll
dygpLT5jbGVhcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCShyZXZpc2lv
biAyMTU4NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGREZWxldGVSYW5nZShSYW5nZSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKCkgPSAwOyAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVD
b250aW51b3VzU3BlbGxDaGVja2luZygpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkKCkgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAkocmV2aXNpb24gMjE1ODU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTE4LDcgKzExMTgsNyBAQCBEcmFnU291cmNlQWN0
aW9uIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhCiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQ
UE9SVCkKIAotSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50
KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0
VHlwZSBoaXRUeXBlLCBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nKQorSGl0VGVzdFJlc3VsdCBF
dmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2lu
dCwgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlLCBjb25zdCBMYXlv
dXRTaXplJiBwYWRkaW5nKSBjb25zdAogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUo
bV9mcmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24g
MjE1ODU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQ3LDkgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOwogICAgIHZvaWQgZGlzcGF0Y2hGYWtl
TW91c2VNb3ZlRXZlbnRTb29uSW5RdWFkKGNvbnN0IEZsb2F0UXVhZCYpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYsCi0gICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlw
ZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBI
aXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LAotICAgICAgICBj
b25zdCBMYXlvdXRTaXplJiBwYWRkaW5nID0gTGF5b3V0U2l6ZSgpKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50
JiwgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0
OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIGNvbnN0IExheW91dFNpemUmIHBhZGRp
bmcgPSBMYXlvdXRTaXplKCkpIGNvbnN0OwogCiAgICAgYm9vbCBtb3VzZVByZXNzZWQoKSBjb25z
dCB7IHJldHVybiBtX21vdXNlUHJlc3NlZDsgfQogICAgIE5vZGUqIG1vdXNlUHJlc3NOb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb3VzZVByZXNzTm9kZS5nZXQoKTsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAJKHJldmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMTAgKzE1NywxMCBAQCBGcmFtZTo6RnJhbWUoUGFn
ZSYgcGFnZSwgSFRNTEZyYW1lT3duZXJFCiAgICAgLCBtX2xvYWRlcigqdGhpcywgZnJhbWVMb2Fk
ZXJDbGllbnQpCiAgICAgLCBtX25hdmlnYXRpb25TY2hlZHVsZXIoKnRoaXMpCiAgICAgLCBtX293
bmVyRWxlbWVudChvd25lckVsZW1lbnQpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVl
PFNjcmlwdENvbnRyb2xsZXI+KCp0aGlzKSkKLSAgICAsIG1fZWRpdG9yKHN0ZDo6bWFrZV91bmlx
dWU8RWRpdG9yPigqdGhpcykpCi0gICAgLCBtX3NlbGVjdGlvbihzdGQ6Om1ha2VfdW5pcXVlPEZy
YW1lU2VsZWN0aW9uPih0aGlzKSkKLSAgICAsIG1fYW5pbWF0aW9uQ29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPENTU0FuaW1hdGlvbkNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0
KG1ha2VVbmlxdWVSZWY8U2NyaXB0Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9lZGl0b3Io
bWFrZVVuaXF1ZVJlZjxFZGl0b3I+KCp0aGlzKSkKKyAgICAsIG1fc2VsZWN0aW9uKG1ha2VVbmlx
dWVSZWY8RnJhbWVTZWxlY3Rpb24+KHRoaXMpKQorICAgICwgbV9hbmltYXRpb25Db250cm9sbGVy
KG1ha2VVbmlxdWVSZWY8Q1NTQW5pbWF0aW9uQ29udHJvbGxlcj4oKnRoaXMpKQogI2lmIFBMQVRG
T1JNKElPUykKICAgICAsIG1fb3ZlcmZsb3dBdXRvU2Nyb2xsVGltZXIoKnRoaXMsICZGcmFtZTo6
b3ZlcmZsb3dBdXRvU2Nyb2xsVGltZXJGaXJlZCkKICAgICAsIG1fc2VsZWN0aW9uQ2hhbmdlQ2Fs
bGJhY2tzRGlzYWJsZWQoZmFsc2UpCkBAIC0xNjgsNyArMTY4LDcgQEAgRnJhbWU6OkZyYW1lKFBh
Z2UmIHBhZ2UsIEhUTUxGcmFtZU93bmVyRQogICAgICwgbV9wYWdlWm9vbUZhY3RvcihwYXJlbnRQ
YWdlWm9vbUZhY3Rvcih0aGlzKSkKICAgICAsIG1fdGV4dFpvb21GYWN0b3IocGFyZW50VGV4dFpv
b21GYWN0b3IodGhpcykpCiAgICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3Vz
cGVuZGVkQ291bnQoMCkKLSAgICAsIG1fZXZlbnRIYW5kbGVyKHN0ZDo6bWFrZV91bmlxdWU8RXZl
bnRIYW5kbGVyPigqdGhpcykpCisgICAgLCBtX2V2ZW50SGFuZGxlcihtYWtlVW5pcXVlUmVmPEV2
ZW50SGFuZGxlcj4oKnRoaXMpKQogewogICAgIEF0b21pY1N0cmluZzo6aW5pdCgpOwogICAgIEhU
TUxOYW1lczo6aW5pdCgpOwpAQCAtMjUxLDkgKzI1MSw3IEBAIHZvaWQgRnJhbWU6OnNldFZpZXco
UmVmUHRyPEZyYW1lVmlldz4mJiAKICAgICBpZiAobV92aWV3KQogICAgICAgICBtX3ZpZXctPnVu
c2NoZWR1bGVSZWxheW91dCgpOwogICAgIAotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBkdXJp
bmcgZGVzdHJ1Y3Rpb24sIHNvIG5lZWQgdG8gZG8gYSBudWxsIGNoZWNrLgotICAgIGlmIChtX2V2
ZW50SGFuZGxlcikKLSAgICAgICAgbV9ldmVudEhhbmRsZXItPmNsZWFyKCk7CisgICAgbV9ldmVu
dEhhbmRsZXItPmNsZWFyKCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVCghbV9kb2MgfHwgIW1fZG9j
LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpOwogCkBAIC03MTQsOCArNzEyLDcgQEAgdm9pZCBGcmFt
ZTo6aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdAogICAgICAgICBpZiAoc2NyaXB0LmluamVj
dGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lICYmIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0
Y2hlc1BhdHRlcm5zKGRvY3VtZW50LT51cmwoKSwgc2NyaXB0LndoaXRlbGlzdCgpLCBzY3JpcHQu
YmxhY2tsaXN0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9wYWdlKQogICAgICAgICAgICAgICAg
IG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKLSAgICAgICAgICAgIGlmIChtX3Nj
cmlwdCkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0LnNvdXJjZSgpLCBzY3JpcHQudXJsKCkpLCB3b3JsZCk7CisgICAgICAg
ICAgICBtX3NjcmlwdC0+ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LnNv
dXJjZSgpLCBzY3JpcHQudXJsKCkpLCB3b3JsZCk7CiAgICAgICAgIH0KICAgICB9KTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIk5h
dmlnYXRpb25TY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUg
IlVzZXJTY3JpcHRUeXBlcy5oIgotI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKICNpZiBQ
TEFURk9STShJT1MpCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKQEAgLTE0MywxNSAr
MTQzLDE5IEBAIHB1YmxpYzoKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKICAgICBG
cmFtZVZpZXcqIHZpZXcoKSBjb25zdDsKIAotICAgIEVkaXRvciYgZWRpdG9yKCkgY29uc3Q7Ci0g
ICAgRXZlbnRIYW5kbGVyJiBldmVudEhhbmRsZXIoKSBjb25zdDsKLSAgICBFdmVudEhhbmRsZXIq
IGV2ZW50SGFuZGxlclB0cigpIGNvbnN0OworICAgIEVkaXRvciYgZWRpdG9yKCkgeyByZXR1cm4g
bV9lZGl0b3I7IH0KKyAgICBjb25zdCBFZGl0b3ImIGVkaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZWRpdG9yOyB9CisgICAgRXZlbnRIYW5kbGVyJiBldmVudEhhbmRsZXIoKSB7IHJldHVybiBtX2V2
ZW50SGFuZGxlcjsgfQorICAgIGNvbnN0IEV2ZW50SGFuZGxlciYgZXZlbnRIYW5kbGVyKCkgY29u
c3QgeyByZXR1cm4gbV9ldmVudEhhbmRsZXI7IH0KICAgICBGcmFtZUxvYWRlciYgbG9hZGVyKCkg
Y29uc3Q7CiAgICAgTmF2aWdhdGlvblNjaGVkdWxlciYgbmF2aWdhdGlvblNjaGVkdWxlcigpIGNv
bnN0OwotICAgIEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25zdDsKKyAgICBGcmFtZVNl
bGVjdGlvbiYgc2VsZWN0aW9uKCkgeyByZXR1cm4gbV9zZWxlY3Rpb247IH0KKyAgICBjb25zdCBG
cmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb247IH0K
ICAgICBGcmFtZVRyZWUmIHRyZWUoKSBjb25zdDsKLSAgICBDU1NBbmltYXRpb25Db250cm9sbGVy
JiBhbmltYXRpb24oKSBjb25zdDsKLSAgICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHQoKTsKKyAg
ICBDU1NBbmltYXRpb25Db250cm9sbGVyJiBhbmltYXRpb24oKSB7IHJldHVybiBtX2FuaW1hdGlv
bkNvbnRyb2xsZXI7IH0KKyAgICBjb25zdCBDU1NBbmltYXRpb25Db250cm9sbGVyJiBhbmltYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbkNvbnRyb2xsZXI7IH0KKyAgICBTY3JpcHRD
b250cm9sbGVyJiBzY3JpcHQoKSB7IHJldHVybiBtX3NjcmlwdDsgfQorICAgIGNvbnN0IFNjcmlw
dENvbnRyb2xsZXImIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAgICAgCiAg
ICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyVmlldyogY29udGVudFJlbmRlcmVyKCkgY29uc3Q7IC8v
IFJvb3Qgb2YgdGhlIHJlbmRlciB0cmVlIGZvciB0aGUgZG9jdW1lbnQgY29udGFpbmVkIGluIHRo
aXMgZnJhbWUuCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyV2lkZ2V0KiBvd25lclJlbmRlcmVy
KCkgY29uc3Q7IC8vIFJlbmRlcmVyIGZvciB0aGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoaXMg
ZnJhbWUuCkBAIC0yNDEsOCArMjQ1LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50IHByZWZlcnJlZEhlaWdodCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlTGF5b3V0KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTlNSZWN0IGNhcmV0UmVjdCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE5TUmVjdCByZWN0Rm9yU2Nyb2xsVG9WaXNpYmxl
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgTlNSZWN0IGNhcmV0UmVjdCgpOworICAgIFdF
QkNPUkVfRVhQT1JUIE5TUmVjdCByZWN0Rm9yU2Nyb2xsVG9WaXNpYmxlKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdW5zaWduZWQgZm9ybUVsZW1lbnRzQ2hhcmFjdGVyQ291bnQoKSBjb25zdDsKIAog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSBMZWdhY3kgV2ViS2l0LgpAQCAtMjg4LDEw
ICsyOTIsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBtX3ZpZXc7CiAgICAg
UmVmUHRyPERvY3VtZW50PiBtX2RvYzsKIAotICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRDb250cm9sbGVyPiBtX3NjcmlwdDsKLSAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RWRpdG9y
PiBtX2VkaXRvcjsKLSAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RnJhbWVTZWxlY3Rpb24+IG1f
c2VsZWN0aW9uOwotICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDU1NBbmltYXRpb25Db250cm9s
bGVyPiBtX2FuaW1hdGlvbkNvbnRyb2xsZXI7CisgICAgVW5pcXVlUmVmPFNjcmlwdENvbnRyb2xs
ZXI+IG1fc2NyaXB0OworICAgIFVuaXF1ZVJlZjxFZGl0b3I+IG1fZWRpdG9yOworICAgIFVuaXF1
ZVJlZjxGcmFtZVNlbGVjdGlvbj4gbV9zZWxlY3Rpb247CisgICAgVW5pcXVlUmVmPENTU0FuaW1h
dGlvbkNvbnRyb2xsZXI+IG1fYW5pbWF0aW9uQ29udHJvbGxlcjsKIAogI2lmIEVOQUJMRShEQVRB
X0RFVEVDVElPTikKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0
czsKQEAgLTMyNCw3ICszMjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kb2N1bWVudElzQmVp
bmdSZXBsYWNlZCB7IGZhbHNlIH07CiAKIHByb3RlY3RlZDoKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXZlbnRIYW5kbGVyPiBtX2V2ZW50SGFuZGxlcjsKKyAgICBVbmlxdWVSZWY8RXZlbnRIYW5kbGVy
PiBtX2V2ZW50SGFuZGxlcjsKIH07CiAKIGlubGluZSB2b2lkIEZyYW1lOjppbml0KCkKQEAgLTM0
NywzMSArMzUxLDExIEBAIGlubGluZSBGcmFtZVZpZXcqIEZyYW1lOjp2aWV3KCkgY29uc3QKICAg
ICByZXR1cm4gbV92aWV3LmdldCgpOwogfQogCi1pbmxpbmUgU2NyaXB0Q29udHJvbGxlciYgRnJh
bWU6OnNjcmlwdCgpCi17Ci0gICAgcmV0dXJuICptX3NjcmlwdDsKLX0KLQogaW5saW5lIERvY3Vt
ZW50KiBGcmFtZTo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2RvYy5nZXQoKTsK
IH0KIAotaW5saW5lIEZyYW1lU2VsZWN0aW9uJiBGcmFtZTo6c2VsZWN0aW9uKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gKm1fc2VsZWN0aW9uOwotfQotCi1pbmxpbmUgRWRpdG9yJiBGcmFtZTo6ZWRp
dG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKm1fZWRpdG9yOwotfQotCi1pbmxpbmUgQ1NTQW5p
bWF0aW9uQ29udHJvbGxlciYgRnJhbWU6OmFuaW1hdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
ICptX2FuaW1hdGlvbkNvbnRyb2xsZXI7Ci19Ci0KIGlubGluZSBIVE1MRnJhbWVPd25lckVsZW1l
bnQqIEZyYW1lOjpvd25lckVsZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX293bmVyRWxl
bWVudDsKQEAgLTM5MiwxNiArMzc2LDYgQEAgaW5saW5lIHZvaWQgRnJhbWU6OmRldGFjaEZyb21Q
YWdlKCkKICAgICBtX3BhZ2UgPSBudWxscHRyOwogfQogCi1pbmxpbmUgRXZlbnRIYW5kbGVyJiBG
cmFtZTo6ZXZlbnRIYW5kbGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKm1fZXZlbnRIYW5kbGVy
OwotfQotCi1pbmxpbmUgRXZlbnRIYW5kbGVyKiBGcmFtZTo6ZXZlbnRIYW5kbGVyUHRyKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9ldmVudEhhbmRsZXIuZ2V0KCk7Ci19Ci0KIGlubGluZSBNYWlu
RnJhbWUmIEZyYW1lOjptYWluRnJhbWUoKSBjb25zdAogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCFtX21haW5GcmFtZVdhc0Rlc3Ryb3llZCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL01haW5GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9NYWluRnJhbWUuY3BwCShyZXZpc2lvbiAyMTU4NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL01haW5GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDYgQEAgaW5saW5l
IE1haW5GcmFtZTo6TWFpbkZyYW1lKFBhZ2UmIHBhZ2UsIAogTWFpbkZyYW1lOjp+TWFpbkZyYW1l
KCkKIHsKICAgICBtX3JlY2VudFdoZWVsRXZlbnREZWx0YUZpbHRlciA9IG51bGxwdHI7Ci0gICAg
bV9ldmVudEhhbmRsZXIgPSBudWxscHRyOwogCiAgICAgc2V0TWFpbkZyYW1lV2FzRGVzdHJveWVk
KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQkocmV2aXNpb24gMjE1
ODU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIEZyYW1lOjp1cGRhdGVMYXlvdXQoKSBjb25zdAog
ICAgICAgICB2aWV3LT5hZGp1c3RWaWV3U2l6ZSgpOwogfQogCi1OU1JlY3QgRnJhbWU6OmNhcmV0
UmVjdCgpIGNvbnN0CitOU1JlY3QgRnJhbWU6OmNhcmV0UmVjdCgpCiB7CiAgICAgVmlzaWJsZVNl
bGVjdGlvbiB2aXNpYmxlU2VsZWN0aW9uID0gc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAg
aWYgKHZpc2libGVTZWxlY3Rpb24uaXNOb25lKCkpCkBAIC01MTgsNyArNTE4LDcgQEAgTlNSZWN0
IEZyYW1lOjpjYXJldFJlY3QoKSBjb25zdAogICAgIHJldHVybiB2aXNpYmxlU2VsZWN0aW9uLmlz
Q2FyZXQoKSA/IHNlbGVjdGlvbigpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSA6IFZpc2libGVQb3Np
dGlvbih2aXNpYmxlU2VsZWN0aW9uLmVuZCgpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiB9CiAK
LU5TUmVjdCBGcmFtZTo6cmVjdEZvclNjcm9sbFRvVmlzaWJsZSgpIGNvbnN0CitOU1JlY3QgRnJh
bWU6OnJlY3RGb3JTY3JvbGxUb1Zpc2libGUoKQogewogICAgIFZpc2libGVTZWxlY3Rpb24gc2Vs
ZWN0aW9uKHRoaXMtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAJKHJldmlzaW9uIDIxNTg1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OSw5ICs2OSw5IEBAIElucHV0Q3Vyc29yJiBVc2VySW5wdXRCcmlkZ2U6OmFjdGl2ZUN1cnMK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi1ib29sIFVzZXJJbnB1dEJyaWRn
ZTo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNl
RXZlbnQsIGNvbnN0IEZyYW1lKiBmcmFtZSwgSW5wdXRTb3VyY2UpCitib29sIFVzZXJJbnB1dEJy
aWRnZTo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1v
dXNlRXZlbnQsIEZyYW1lJiBmcmFtZSwgSW5wdXRTb3VyY2UpCiB7Ci0gICAgcmV0dXJuIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS5zZW5kQ29udGV4dE1lbnVFdmVudChtb3VzZUV2ZW50KTsKKyAgICBy
ZXR1cm4gZnJhbWUuZXZlbnRIYW5kbGVyKCkuc2VuZENvbnRleHRNZW51RXZlbnQobW91c2VFdmVu
dCk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJy
aWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlk
Z2UuaAkocmV2aXNpb24gMjE1ODU4KQorKysgU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1
dEJyaWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIFVzZXIgaW5wdXQgQVBJcy4KICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiwgY29uc3QgRnJhbWUqLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6
VXNlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVDb250ZXh0TWVudUV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIEZyYW1lJiwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJj
ZTo6VXNlcik7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZU1vdXNlUHJl
c3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJ
bnB1dFNvdXJjZTo6VXNlcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVNb3VzZVJl
bGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBJbnB1dFNvdXJjZSBzb3VyY2Ug
PSBJbnB1dFNvdXJjZTo6VXNlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU4NTgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAxNy0wNC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIE1vZGVybml6ZSBGcmFtZS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEzNTcKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5
IEVzdGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJh
aWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbnRleHRNZW51QXRQb2ludElu
V2luZG93KToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlQ29udGV4dE1lbnVFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAxNy0wNC0yNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkIHNob3VsZCBub3Qgc3luY2hyb25vdXNseSBsb2FkIHByb3ZpZGVk
IGRhdGEKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDIxNTg1OCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBib29sIFdlYkVkaXRvckNsaWVu
dDo6c21hcnRJbnNlcnREZWxldGVFCiAgICAgcmV0dXJuIG1fcGFnZS0+aXNTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoKTsKIH0KICAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1NlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQoKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJh
aWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+aXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgJKHJldmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQy
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIHNob3VsZERlbGV0ZVJhbmdlKFdlYkNv
cmU6OlJhbmdlKikgZmluYWw7CiAgICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSBm
aW5hbDsKLSAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGZpbmFs
OworICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGZpbmFsOwog
ICAgIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKSBmaW5hbDsKICAgICBib29s
IGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjE1ODU4KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTM1LDcgKzIxMzUsNyBAQCBXZWJDb250ZXh0TWVudSogV2ViUGFnZTo6Y29udGV4
dE1lbnVBdFBvCiAgICAgCiAgICAgLy8gU2ltdWxhdGUgYSBtb3VzZSBjbGljayB0byBnZW5lcmF0
ZSB0aGUgY29ycmVjdCBtZW51LgogICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHBv
aW50LCBwb2ludCwgUmlnaHRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgMSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCksIFdlYkNvcmU6OkZvcmNl
QXRDbGljaywgV2ViQ29yZTo6Tm9UYXApOwotICAgIGJvb2wgaGFuZGxlZCA9IGNvcmVQYWdlKCkt
PnVzZXJJbnB1dEJyaWRnZSgpLmhhbmRsZUNvbnRleHRNZW51RXZlbnQobW91c2VFdmVudCwgJmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpKTsKKyAgICBib29sIGhhbmRsZWQgPSBjb3JlUGFnZSgpLT51
c2VySW5wdXRCcmlkZ2UoKS5oYW5kbGVDb250ZXh0TWVudUV2ZW50KG1vdXNlRXZlbnQsIGNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpKTsKICAgICBpZiAoIWhhbmRsZWQpCiAgICAgICAgIHJldHVybiAw
OwogCkBAIC0yMjYwLDcgKzIyNjAsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVDb250ZXh0TWVudUV2
ZW50KGNvbnN0CiAgICAgaWYgKHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkKICAgICAgICAg
ZnJhbWUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKTsK
IAotICAgIGJvb2wgaGFuZGxlZCA9IHBhZ2UtPmNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgp
LmhhbmRsZUNvbnRleHRNZW51RXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50LCBmcmFtZSk7CisgICAg
Ym9vbCBoYW5kbGVkID0gcGFnZS0+Y29yZVBhZ2UoKS0+dXNlcklucHV0QnJpZGdlKCkuaGFuZGxl
Q29udGV4dE1lbnVFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQsICpmcmFtZSk7CiAgICAgaWYgKGhh
bmRsZWQpCiAgICAgICAgIHBhZ2UtPmNvbnRleHRNZW51KCktPnNob3coKTsKIApAQCAtNTE4Niw3
ICs1MTg2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZQogICAg
IH0KIH0KIAotYm9vbCBXZWJQYWdlOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQo
KQorYm9vbCBXZWJQYWdlOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25z
dAogewogICAgIHJldHVybiBtX3BhZ2UtPnNldHRpbmdzKCkuc2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMTU4NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNyArNzIwLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKICAgICB2b2lk
IHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sKTsKIAotICAgIGJvb2wgaXNTZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CisgICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQoYm9vbCk7CiAKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChX
ZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gMjE1ODU4KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDQtMjcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb2Rlcm5pemUgRnJhbWUuaAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMzU3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3Bh
Y2VFbmFibGVkKToKKwogMjAxNy0wNC0yNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNob3VsZCBub3Qg
c3luY2hyb25vdXNseSBsb2FkIHByb3ZpZGVkIGRhdGEKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAyMTU4
NTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIGludCBzcGVs
bENoZWNrZXJEb2N1bWVudFRhZygpIGZpbmFsOwogCiAgICAgYm9vbCBzbWFydEluc2VydERlbGV0
ZUVuYWJsZWQoKSBmaW5hbDsKLSAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCgpIGZpbmFsOworICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
KCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIHNob3VsZERlbGV0ZVJhbmdlKFdlYkNvcmU6OlJh
bmdlKikgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjQyLDcgKzI0Miw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzbWFydEluc2VydERl
bGV0ZUUKICAgICByZXR1cm4gcGFnZS0+c2V0dGluZ3MoKS5zbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQoKTsKIH0KIAotYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCgpCitib29sIFdlYkVkaXRvckNsaWVudDo6aXNTZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkKCkgY29uc3QKIHsKICAgICBQYWdlKiBwYWdlID0gW21fd2ViVmlldyBwYWdl
XTsKICAgICBpZiAoIXBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU4NTgp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNy0wNC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIE1vZGVybml6ZSBGcmFtZS5oCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEzNTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbmR5IEVzdGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3Bh
Y2VFbmFibGVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KwogMjAxNy0wNC0yMCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4K
IAogICAgICAgICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBicmVhayBhZnRlciB1cGRhdGluZyBBTkdM
RQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAyMTU4NTgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIs
NyArMzgyLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNtYXJ0SW5zZXJ0RGVsZXRlRQogICAg
IHJldHVybiBwYWdlLT5zZXR0aW5ncygpLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogfQog
Ci1ib29sIFdlYkVkaXRvckNsaWVudDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
KHZvaWQpCitib29sIFdlYkVkaXRvckNsaWVudDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkKHZvaWQpIGNvbnN0CiB7CiAgICAgUGFnZSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgp
OwogICAgIGlmICghcGFnZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAyMTU4NTgpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0
ZXJEZWxldGUoV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpSYW5nZSopIGZpbmFsOwogCiAgICAg
Ym9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSBmaW5hbDsKLSAgICBib29sIGlzU2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGZpbmFsOworICAgIGJvb2wgaXNTZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHJlZ2lzdGVy
VW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVk
b1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308394</attachid>
            <date>2017-04-27 08:52:41 -0700</date>
            <delta_ts>2017-04-27 08:56:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171357-20170427085235.patch</filename>
            <type>text/plain</type>
            <size>38047</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE3LTA0LTI3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IEZyYW1lLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MTM1NworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgRnJh
bWUuaCBoYXMgc2V2ZXJhbCBzdGQ6OnVuaXF1ZV9wdHJzIHRoYXQgYXJlIGNyZWF0ZWQgaW4gdGhl
IGNvbnN0cnVjdG9yLCBuZXZlciBudWxsLAorICAgICAgICBhbmQgZGVzdHJveWVkIGluIHRoZSBk
ZXN0cnVjdG9yLiAgVGhpcyBpcyB3aGF0IFdURjo6VW5pcXVlUmVmIGlzIGZvciwgYW5kIHVzaW5n
IFVuaXF1ZVJlZgorICAgICAgICBhbGxvd3MgdXMgdG8gbm90IGNoZWNrIGZvciBudWxsIHZhbHVl
cyBiZWNhdXNlIGEgVW5pcXVlUmVmIGNhbiBuZXZlciBiZSBudWxsLgorICAgICAgICBBbiBpbnRl
cmVzdGluZyBjYXNlIHdhcyB0aGUgRXZlbnRIYW5kbGVyLCB3aGljaCB3ZSBleHBsaWNpdGx5IHNl
dCB0byBudWxscHRyIGluIHRoZSBkZXN0cnVjdG9yCisgICAgICAgIG9mIE1haW5GcmFtZSwgYSBz
dWJjbGFzcyBvZiBGcmFtZS4gIFdlIGFkZGVkIHRoaXMgaW4gcjE5OTE4MSB0byBmaXggYSBjcmFz
aCB0ZXN0ZWQgYnkKKyAgICAgICAgZmFzdC9ldmVudHMvd2hlZWwtZXZlbnQtZGVzdHJveXMtZnJh
bWUuaHRtbCBhbmQgdGhpcyBpbXByb3ZlZCBsaWZldGltZSBhbHNvIGRvZXMgbm90IGNyYXNoCisg
ICAgICAgIG9yIGFzc2VydCBpbiB0aGF0IHRlc3QuCisKKyAgICAgICAgVXNpbmcgVW5pcXVlUmVm
IGFsc28gcmVxdWlyZXMgY29uc3QgY29ycmVjdG5lc3MsIHdoaWNoIHRoaXMgcGF0Y2ggYWRkcyB3
aGVuIG5lY2Vzc2FyeS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkaXNwYXRj
aFRvdWNoRXZlbnQpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpjYWxjdWxhdGVU
eXBpbmdTdHlsZUFmdGVyRGVsZXRlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZSk6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpjb250YWlucyk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y29weVR5cGluZ1N0eWxlKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVNlbGVjdGlvbjo6c2V0VHlwaW5nU3R5bGUpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6Y2xlYXIpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0Vmlldyk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjplZGl0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OmV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjphbmltYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWU6OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZXZlbnRIYW5k
bGVyUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL01haW5GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNYWluRnJhbWU6On5NYWluRnJhbWUpOgorICAgICAgICAqIHJlcGxheS9Vc2Vy
SW5wdXRCcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlcklucHV0QnJpZGdlOjpoYW5k
bGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6
CisKIDIwMTctMDQtMjYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZlcnRlZCByMjE1Nzc0LgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiAyMTU4NTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NTEsMTUgKzk1MSwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OnByZXNzKCkKICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGlzcGF0Y2hUb3VjaEV2
ZW50KCkKIHsKLSAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKICNpZiBFTkFCTEUoSU9TX1RPVUNI
X0VWRU5UUykKLSAgICBNYWluRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaGFuZGxlZCA9IGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS5kaXNwYXRjaFNpbXVsYXRlZFRvdWNoRXZlbnQoY2xpY2tQb2ludCgpKTsKKyAg
ICBpZiAoYXV0byogZnJhbWUgPSBtYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS5kaXNwYXRjaFNpbXVsYXRlZFRvdWNoRXZlbnQoY2xpY2tQb2ludCgpKTsK
ICNlbmRpZgotICAgIHJldHVybiBoYW5kbGVkOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogRnJh
bWUqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZyYW1lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24g
MjE1ODU4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZDo6Y2FsY3VsYXRlVHkKICAgICAvLyBJbiB0aGlzIGNhc2UgaWYgd2Ugc3RhcnQg
dHlwaW5nLCB0aGUgbmV3IGNoYXJhY3RlcnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgc3R5bGUgYXMg
dGhlIGp1c3QgZGVsZXRlZCBvbmVzLAogICAgIC8vIGJ1dCwgaWYgd2UgY2hhbmdlIHRoZSBzZWxl
Y3Rpb24sIGNvbWUgYmFjayBhbmQgc3RhcnQgdHlwaW5nIHRoYXQgc3R5bGUgc2hvdWxkIGJlIGxv
c3QuICBBbHNvIHNlZSAKICAgICAvLyBwcmVzZXJ2ZVR5cGluZ1N0eWxlKCkgYmVsb3cuCi0gICAg
ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRUeXBpbmdTdHlsZShtX3R5cGluZ1N0eWxlKTsKKyAgICBm
cmFtZSgpLnNlbGVjdGlvbigpLnNldFR5cGluZ1N0eWxlKG1fdHlwaW5nU3R5bGUuY29weVJlZigp
KTsKIH0KIAogdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpjbGVhclRyYW5zaWVudFN0YXRl
KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDIxNTg1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYx
LDcgKzM2MSw3IEBAIGJvb2wgRWRpdG9yOjpjYW5TbWFydENvcHlPckRlbGV0ZSgpCiAgICAgcmV0
dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSAmJiBt
X2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5OwogfQog
Ci1ib29sIEVkaXRvcjo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKK2Jvb2wg
RWRpdG9yOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdAogewogICAg
IHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkKCk7CiB9CkBAIC0zMDQxLDcgKzMwNDEsNyBAQCB2b2lkIEVkaXRvcjo6Y29tcHV0ZUFu
ZFNldFR5cGluZ1N0eWxlKEVkCiAgICAgICAgIGFwcGx5Q29tbWFuZChBcHBseVN0eWxlQ29tbWFu
ZDo6Y3JlYXRlKGRvY3VtZW50KCksIGJsb2NrU3R5bGUuZ2V0KCksIGVkaXRpbmdBY3Rpb24pKTsK
IAogICAgIC8vIFNldCB0aGUgcmVtYWluaW5nIHN0eWxlIGFzIHRoZSB0eXBpbmcgc3R5bGUuCi0g
ICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRUeXBpbmdTdHlsZSh0eXBpbmdTdHlsZSk7CisgICAg
bV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRUeXBpbmdTdHlsZShXVEZNb3ZlKHR5cGluZ1N0eWxlKSk7
CiB9CiAKIHZvaWQgRWRpdG9yOjpjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoU3R5bGVQcm9wZXJ0
aWVzJiBwcm9wZXJ0aWVzLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw3ICszMTIsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gc21hcnRJbnNlcnREZWxldGVFbmFibGVkIGFuZCBzZWxlY3RUcmFpbGluZ1doaXRlc3Bh
Y2VFbmFibGVkIGFyZSAKICAgICAvLyBtdXR1YWxseSBleGNsdXNpdmUsIG1lYW5pbmcgdGhhdCBl
bmFibGluZyBvbmUgd2lsbCBkaXNhYmxlIHRoZSBvdGhlci4KICAgICBib29sIHNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZCgpOwotICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKCk7CisgICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25z
dDsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0JpZGlTZWxlY3Rpb24oKSBjb25z
dDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHJl
dmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEzLDcgKzE4MTMsNyBAQCB2b2lkIEZyYW1lU2VsZWN0
aW9uOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlCiAgICAgfQogfQogCi1ib29sIEZyYW1lU2VsZWN0aW9u
Ojpjb250YWlucyhjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCitib29sIEZyYW1lU2VsZWN0aW9u
Ojpjb250YWlucyhjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgLy8gVHJl
YXQgYSBjb2xsYXBzZWQgc2VsZWN0aW9uIGxpa2Ugbm8gc2VsZWN0aW9uLgogICAgIGlmICghaXNS
YW5nZSgpKQpAQCAtMjIwMSwxMCArMjIwMSwxMCBAQCB2b2lkIERyYWdDYXJldENvbnRyb2xsZXI6
OnBhaW50RHJhZ0NhcmV0CiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBGcmFtZVNlbGVjdGlvbjo6Y29weVR5cGluZ1N0eWxlKCkgY29uc3QKK1JlZlB0cjxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBGcmFtZVNlbGVjdGlvbjo6Y29weVR5cGluZ1N0eWxlKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fdHlwaW5nU3R5bGUgfHwgIW1fdHlwaW5nU3R5bGUtPnN0eWxl
KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gbV90eXBpbmdTdHlsZS0+c3R5bGUoKS0+bXV0YWJsZUNvcHkoKTsKIH0KIApAQCAtMjQyOCw3
ICsyNDI4LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6ZXhwYW5kU2VsZWN0aW9uVG9FbAogICAg
IHNldFNlbGVjdGlvbihzZWxlY3Rpb24pOwogfQogCi1QYXNzUmVmUHRyPFJhbmdlPiBGcmFtZVNl
bGVjdGlvbjo6ZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3QKK1Jl
ZlB0cjxSYW5nZT4gRnJhbWVTZWxlY3Rpb246OmVsZW1lbnRSYW5nZUNvbnRhaW5pbmdDYXJldFNl
bGVjdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VsZWN0aW9uLmlzTm9uZSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0NjcsNyArMjQ2Nyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246OmV4cGFuZFNlbGVjdGlvblRvV28KICAgICAgICAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7
CiB9CiAKLVBhc3NSZWZQdHI8UmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjp3b3JkUmFuZ2VDb250YWlu
aW5nQ2FyZXRTZWxlY3Rpb24oKQorUmVmUHRyPFJhbmdlPiBGcmFtZVNlbGVjdGlvbjo6d29yZFJh
bmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkKIHsKICAgICByZXR1cm4gd29yZFNlbGVjdGlv
bkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihtX3NlbGVjdGlvbikudG9Ob3JtYWxpemVkUmFuZ2Uo
KTsKIH0KQEAgLTI2MTksMTIgKzI2MTksMTIgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2VsZWN0
aW9uQXRXb3JkU3RhcgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQdHI8UmFuZ2U+
IEZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50
KSBjb25zdAorUmVmUHRyPFJhbmdlPiBGcmFtZVNlbGVjdGlvbjo6cmFuZ2VCeU1vdmluZ0N1cnJl
bnRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3QKIHsKICAgICByZXR1cm4gcmFuZ2VCeUFsdGVy
aW5nQ3VycmVudFNlbGVjdGlvbihBbHRlcmF0aW9uTW92ZSwgYW1vdW50KTsKIH0KIAotUGFzc1Jl
ZlB0cjxSYW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhbmdlQnlFeHRlbmRpbmdDdXJyZW50U2VsZWN0
aW9uKGludCBhbW91bnQpIGNvbnN0CitSZWZQdHI8UmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjpyYW5n
ZUJ5RXh0ZW5kaW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdAogewogICAgIHJl
dHVybiByYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uKEFsdGVyYXRpb25FeHRlbmQsIGFt
b3VudCk7CiB9CkBAIC0yNzg1LDcgKzI3ODUsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjphY3R1
YWxTZWxlY3Rpb25BdFNlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxSYW5n
ZT4gRnJhbWVTZWxlY3Rpb246OnJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVy
YXRpb24gYWx0ZXJhdGlvbiwgaW50IGFtb3VudCkgY29uc3QKK1JlZlB0cjxSYW5nZT4gRnJhbWVT
ZWxlY3Rpb246OnJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVyYXRpb24gYWx0
ZXJhdGlvbiwgaW50IGFtb3VudCkgY29uc3QKIHsKICAgICBpZiAobV9zZWxlY3Rpb24uaXNOb25l
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uaAkocmV2aXNpb24gMjE1ODU4KQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgdXBkYXRlQXBwZWFyYW5jZUFmdGVyTGF5b3V0KCk7CiAgICAgdm9p
ZCBzZXROZWVkc1NlbGVjdGlvblVwZGF0ZSgpOwogCi0gICAgYm9vbCBjb250YWlucyhjb25zdCBM
YXlvdXRQb2ludCYpOworICAgIGJvb2wgY29udGFpbnMoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25z
dDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbW9kaWZ5KEVBbHRlcmF0aW9uLCBTZWxlY3Rp
b25EaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJp
Z2dlcmVkKTsKICAgICBlbnVtIFZlcnRpY2FsRGlyZWN0aW9uIHsgRGlyZWN0aW9uVXAsIERpcmVj
dGlvbkRvd24gfTsKQEAgLTIxNSw5ICsyMTUsOSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9T
KQogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXhwYW5kU2VsZWN0aW9uVG9FbGVt
ZW50Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1Jl
ZlB0cjxSYW5nZT4gZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFJhbmdlPiBlbGVtZW50UmFuZ2VDb250YWluaW5n
Q2FyZXRTZWxlY3Rpb24oKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4cGFuZFNl
bGVjdGlvblRvV29yZENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFBhc3NSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigp
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlQ29udGFpbmluZ0Nh
cmV0U2VsZWN0aW9uKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleHBhbmRTZWxlY3Rpb25U
b1N0YXJ0T2ZXb3JkQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgVUNoYXIgY2hhcmFjdGVySW5SZWxhdGlvblRvQ2FyZXRTZWxlY3Rpb24oaW50IGFtb3VudCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVUNoYXIgY2hhcmFjdGVyQmVmb3JlQ2FyZXRTZWxl
Y3Rpb24oKSBjb25zdDsKQEAgLTIyNyw4ICsyMjcsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBzZWxlY3Rpb25BdERvY3VtZW50U3RhcnQoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHNlbGVjdGlvbkF0U2VudGVuY2VTdGFydCgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2VsZWN0aW9uQXRXb3JkU3RhcnQoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlvbihp
bnQgYW1vdW50KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiBy
YW5nZUJ5RXh0ZW5kaW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IHJhbmdlQnlNb3ZpbmdDdXJyZW50U2VsZWN0aW9u
KGludCBhbW91bnQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gcmFu
Z2VCeUV4dGVuZGluZ0N1cnJlbnRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZWxlY3RSYW5nZU9uRWxlbWVudCh1bnNpZ25lZCBsb2NhdGlvbiwg
dW5zaWduZWQgbGVuZ3RoLCBOb2RlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckN1
cnJlbnRTZWxlY3Rpb24oKTsKICAgICB2b2lkIHNldENhcmV0QmxpbmtzKGJvb2wgY2FyZXRCbGlu
a3MgPSB0cnVlKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCBwdWJsaWM6CiAgICAgfQogcHJpdmF0ZToK
ICAgICBib29sIGFjdHVhbFNlbGVjdGlvbkF0U2VudGVuY2VTdGFydChjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VCeUFsdGVyaW5nQ3Vy
cmVudFNlbGVjdGlvbihFQWx0ZXJhdGlvbiwgaW50IGFtb3VudCkgY29uc3Q7CisgICAgUmVmUHRy
PFJhbmdlPiByYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uKEVBbHRlcmF0aW9uLCBpbnQg
YW1vdW50KSBjb25zdDsKIHB1YmxpYzoKICNlbmRpZgogCkBAIC0yNTMsOCArMjUzLDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0U2VsZWN0aW9uQnlNb3VzZUlmRGlmZmVyZW50KGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mLCBUZXh0R3JhbnVsYXJpdHksIEVuZFBvaW50c0FkanVzdG1lbnRNb2RlID0g
RG9Ob3RBZGpzdXRFbmRwb2ludHMpOwogCiAgICAgRWRpdGluZ1N0eWxlKiB0eXBpbmdTdHlsZSgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gY29weVR5cGluZ1N0eWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUeXBpbmdTdHlsZShQ
YXNzUmVmUHRyPEVkaXRpbmdTdHlsZT4pOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5VHlwaW5nU3R5bGUoKSBjb25zdDsKKyAgICB2b2lkIHNl
dFR5cGluZ1N0eWxlKFJlZlB0cjxFZGl0aW5nU3R5bGU+JiYgc3R5bGUpIHsgbV90eXBpbmdTdHls
ZSA9IFdURk1vdmUoc3R5bGUpOyB9CiAgICAgdm9pZCBjbGVhclR5cGluZ1N0eWxlKCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3Qgc2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlz
aWJsZUNvbnRlbnQgPSB0cnVlKSBjb25zdDsKQEAgLTM2NCwxMSArMzY0LDYgQEAgaW5saW5lIHZv
aWQgRnJhbWVTZWxlY3Rpb246OmNsZWFyVHlwaW5nUwogICAgIG1fdHlwaW5nU3R5bGUgPSBudWxs
cHRyOwogfQogCi1pbmxpbmUgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0VHlwaW5nU3R5bGUoUGFz
c1JlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlKQotewotICAgIG1fdHlwaW5nU3R5bGUgPSBzdHls
ZTsKLX0KLQogI2lmICEoUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykpCiAjaWYgSEFW
RShBQ0NFU1NJQklMSVRZKQogaW5saW5lIHZvaWQgRnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vz
c2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQm
KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9uIDIx
NTg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIHNo
b3VsZERlbGV0ZVJhbmdlKFJhbmdlKikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
Ym9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHRvZ2dsZUNv
bnRpbnVvdXNTcGVsbENoZWNraW5nKCkgZmluYWwgeyB9CiAgICAgYm9vbCBpc0dyYW1tYXJDaGVj
a2luZ0VuYWJsZWQoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMTU4NTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjcsMTAgKzYyNyw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyKERvY3VtZW50KiBuZXdEb2MKICAgICB9CiAKICAg
ICBtX2ZyYW1lLnNlbGVjdGlvbigpLnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOwotCi0gICAgLy8g
V2UgbWF5IGNhbGwgdGhpcyBjb2RlIGR1cmluZyBvYmplY3QgZGVzdHJ1Y3Rpb24sIHNvIG5lZWQg
dG8gbWFrZSBzdXJlIGV2ZW50SGFuZGxlciBpcyBwcmVzZW50LgotICAgIGlmIChhdXRvIGV2ZW50
SGFuZGxlciA9IG1fZnJhbWUuZXZlbnRIYW5kbGVyUHRyKCkpCi0gICAgICAgIGV2ZW50SGFuZGxl
ci0+Y2xlYXIoKTsKKyAgICBtX2ZyYW1lLmV2ZW50SGFuZGxlcigpLmNsZWFyKCk7CiAKICAgICBp
ZiAoY2xlYXJGcmFtZVZpZXcgJiYgbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIG1fZnJhbWUudmll
dygpLT5jbGVhcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCShyZXZpc2lv
biAyMTU4NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGREZWxldGVSYW5nZShSYW5nZSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKCkgPSAwOyAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVD
b250aW51b3VzU3BlbGxDaGVja2luZygpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkKCkgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAkocmV2aXNpb24gMjE1ODU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTE4LDcgKzExMTgsNyBAQCBEcmFnU291cmNlQWN0
aW9uIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhCiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQ
UE9SVCkKIAotSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50
KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0
VHlwZSBoaXRUeXBlLCBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nKQorSGl0VGVzdFJlc3VsdCBF
dmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2lu
dCwgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlLCBjb25zdCBMYXlv
dXRTaXplJiBwYWRkaW5nKSBjb25zdAogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUo
bV9mcmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24g
MjE1ODU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQ3LDkgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOwogICAgIHZvaWQgZGlzcGF0Y2hGYWtl
TW91c2VNb3ZlRXZlbnRTb29uSW5RdWFkKGNvbnN0IEZsb2F0UXVhZCYpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYsCi0gICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlw
ZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBI
aXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LAotICAgICAgICBj
b25zdCBMYXlvdXRTaXplJiBwYWRkaW5nID0gTGF5b3V0U2l6ZSgpKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50
JiwgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0
OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIGNvbnN0IExheW91dFNpemUmIHBhZGRp
bmcgPSBMYXlvdXRTaXplKCkpIGNvbnN0OwogCiAgICAgYm9vbCBtb3VzZVByZXNzZWQoKSBjb25z
dCB7IHJldHVybiBtX21vdXNlUHJlc3NlZDsgfQogICAgIE5vZGUqIG1vdXNlUHJlc3NOb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb3VzZVByZXNzTm9kZS5nZXQoKTsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAJKHJldmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMTAgKzE1NywxMCBAQCBGcmFtZTo6RnJhbWUoUGFn
ZSYgcGFnZSwgSFRNTEZyYW1lT3duZXJFCiAgICAgLCBtX2xvYWRlcigqdGhpcywgZnJhbWVMb2Fk
ZXJDbGllbnQpCiAgICAgLCBtX25hdmlnYXRpb25TY2hlZHVsZXIoKnRoaXMpCiAgICAgLCBtX293
bmVyRWxlbWVudChvd25lckVsZW1lbnQpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVl
PFNjcmlwdENvbnRyb2xsZXI+KCp0aGlzKSkKLSAgICAsIG1fZWRpdG9yKHN0ZDo6bWFrZV91bmlx
dWU8RWRpdG9yPigqdGhpcykpCi0gICAgLCBtX3NlbGVjdGlvbihzdGQ6Om1ha2VfdW5pcXVlPEZy
YW1lU2VsZWN0aW9uPih0aGlzKSkKLSAgICAsIG1fYW5pbWF0aW9uQ29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPENTU0FuaW1hdGlvbkNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0
KG1ha2VVbmlxdWVSZWY8U2NyaXB0Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9lZGl0b3Io
bWFrZVVuaXF1ZVJlZjxFZGl0b3I+KCp0aGlzKSkKKyAgICAsIG1fc2VsZWN0aW9uKG1ha2VVbmlx
dWVSZWY8RnJhbWVTZWxlY3Rpb24+KHRoaXMpKQorICAgICwgbV9hbmltYXRpb25Db250cm9sbGVy
KG1ha2VVbmlxdWVSZWY8Q1NTQW5pbWF0aW9uQ29udHJvbGxlcj4oKnRoaXMpKQogI2lmIFBMQVRG
T1JNKElPUykKICAgICAsIG1fb3ZlcmZsb3dBdXRvU2Nyb2xsVGltZXIoKnRoaXMsICZGcmFtZTo6
b3ZlcmZsb3dBdXRvU2Nyb2xsVGltZXJGaXJlZCkKICAgICAsIG1fc2VsZWN0aW9uQ2hhbmdlQ2Fs
bGJhY2tzRGlzYWJsZWQoZmFsc2UpCkBAIC0xNjgsNyArMTY4LDcgQEAgRnJhbWU6OkZyYW1lKFBh
Z2UmIHBhZ2UsIEhUTUxGcmFtZU93bmVyRQogICAgICwgbV9wYWdlWm9vbUZhY3RvcihwYXJlbnRQ
YWdlWm9vbUZhY3Rvcih0aGlzKSkKICAgICAsIG1fdGV4dFpvb21GYWN0b3IocGFyZW50VGV4dFpv
b21GYWN0b3IodGhpcykpCiAgICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3Vz
cGVuZGVkQ291bnQoMCkKLSAgICAsIG1fZXZlbnRIYW5kbGVyKHN0ZDo6bWFrZV91bmlxdWU8RXZl
bnRIYW5kbGVyPigqdGhpcykpCisgICAgLCBtX2V2ZW50SGFuZGxlcihtYWtlVW5pcXVlUmVmPEV2
ZW50SGFuZGxlcj4oKnRoaXMpKQogewogICAgIEF0b21pY1N0cmluZzo6aW5pdCgpOwogICAgIEhU
TUxOYW1lczo6aW5pdCgpOwpAQCAtMjUxLDkgKzI1MSw3IEBAIHZvaWQgRnJhbWU6OnNldFZpZXco
UmVmUHRyPEZyYW1lVmlldz4mJiAKICAgICBpZiAobV92aWV3KQogICAgICAgICBtX3ZpZXctPnVu
c2NoZWR1bGVSZWxheW91dCgpOwogICAgIAotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBkdXJp
bmcgZGVzdHJ1Y3Rpb24sIHNvIG5lZWQgdG8gZG8gYSBudWxsIGNoZWNrLgotICAgIGlmIChtX2V2
ZW50SGFuZGxlcikKLSAgICAgICAgbV9ldmVudEhhbmRsZXItPmNsZWFyKCk7CisgICAgbV9ldmVu
dEhhbmRsZXItPmNsZWFyKCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVCghbV9kb2MgfHwgIW1fZG9j
LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpOwogCkBAIC03MTQsOCArNzEyLDcgQEAgdm9pZCBGcmFt
ZTo6aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdAogICAgICAgICBpZiAoc2NyaXB0LmluamVj
dGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lICYmIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0
Y2hlc1BhdHRlcm5zKGRvY3VtZW50LT51cmwoKSwgc2NyaXB0LndoaXRlbGlzdCgpLCBzY3JpcHQu
YmxhY2tsaXN0KCkpKSB7CiAgICAgICAgICAgICBpZiAobV9wYWdlKQogICAgICAgICAgICAgICAg
IG1fcGFnZS0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKLSAgICAgICAgICAgIGlmIChtX3Nj
cmlwdCkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNv
dXJjZUNvZGUoc2NyaXB0LnNvdXJjZSgpLCBzY3JpcHQudXJsKCkpLCB3b3JsZCk7CisgICAgICAg
ICAgICBtX3NjcmlwdC0+ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LnNv
dXJjZSgpLCBzY3JpcHQudXJsKCkpLCB3b3JsZCk7CiAgICAgICAgIH0KICAgICB9KTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgIk5h
dmlnYXRpb25TY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUg
IlVzZXJTY3JpcHRUeXBlcy5oIgotI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKICNpZiBQ
TEFURk9STShJT1MpCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKQEAgLTE0MywxNSAr
MTQzLDE5IEBAIHB1YmxpYzoKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKICAgICBG
cmFtZVZpZXcqIHZpZXcoKSBjb25zdDsKIAotICAgIEVkaXRvciYgZWRpdG9yKCkgY29uc3Q7Ci0g
ICAgRXZlbnRIYW5kbGVyJiBldmVudEhhbmRsZXIoKSBjb25zdDsKLSAgICBFdmVudEhhbmRsZXIq
IGV2ZW50SGFuZGxlclB0cigpIGNvbnN0OworICAgIEVkaXRvciYgZWRpdG9yKCkgeyByZXR1cm4g
bV9lZGl0b3I7IH0KKyAgICBjb25zdCBFZGl0b3ImIGVkaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZWRpdG9yOyB9CisgICAgRXZlbnRIYW5kbGVyJiBldmVudEhhbmRsZXIoKSB7IHJldHVybiBtX2V2
ZW50SGFuZGxlcjsgfQorICAgIGNvbnN0IEV2ZW50SGFuZGxlciYgZXZlbnRIYW5kbGVyKCkgY29u
c3QgeyByZXR1cm4gbV9ldmVudEhhbmRsZXI7IH0KICAgICBGcmFtZUxvYWRlciYgbG9hZGVyKCkg
Y29uc3Q7CiAgICAgTmF2aWdhdGlvblNjaGVkdWxlciYgbmF2aWdhdGlvblNjaGVkdWxlcigpIGNv
bnN0OwotICAgIEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25zdDsKKyAgICBGcmFtZVNl
bGVjdGlvbiYgc2VsZWN0aW9uKCkgeyByZXR1cm4gbV9zZWxlY3Rpb247IH0KKyAgICBjb25zdCBG
cmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb247IH0K
ICAgICBGcmFtZVRyZWUmIHRyZWUoKSBjb25zdDsKLSAgICBDU1NBbmltYXRpb25Db250cm9sbGVy
JiBhbmltYXRpb24oKSBjb25zdDsKLSAgICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHQoKTsKKyAg
ICBDU1NBbmltYXRpb25Db250cm9sbGVyJiBhbmltYXRpb24oKSB7IHJldHVybiBtX2FuaW1hdGlv
bkNvbnRyb2xsZXI7IH0KKyAgICBjb25zdCBDU1NBbmltYXRpb25Db250cm9sbGVyJiBhbmltYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbkNvbnRyb2xsZXI7IH0KKyAgICBTY3JpcHRD
b250cm9sbGVyJiBzY3JpcHQoKSB7IHJldHVybiBtX3NjcmlwdDsgfQorICAgIGNvbnN0IFNjcmlw
dENvbnRyb2xsZXImIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAgICAgCiAg
ICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyVmlldyogY29udGVudFJlbmRlcmVyKCkgY29uc3Q7IC8v
IFJvb3Qgb2YgdGhlIHJlbmRlciB0cmVlIGZvciB0aGUgZG9jdW1lbnQgY29udGFpbmVkIGluIHRo
aXMgZnJhbWUuCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyV2lkZ2V0KiBvd25lclJlbmRlcmVy
KCkgY29uc3Q7IC8vIFJlbmRlcmVyIGZvciB0aGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoaXMg
ZnJhbWUuCkBAIC0yNDEsOCArMjQ1LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50IHByZWZlcnJlZEhlaWdodCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlTGF5b3V0KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTlNSZWN0IGNhcmV0UmVjdCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE5TUmVjdCByZWN0Rm9yU2Nyb2xsVG9WaXNpYmxl
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgTlNSZWN0IGNhcmV0UmVjdCgpOworICAgIFdF
QkNPUkVfRVhQT1JUIE5TUmVjdCByZWN0Rm9yU2Nyb2xsVG9WaXNpYmxlKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdW5zaWduZWQgZm9ybUVsZW1lbnRzQ2hhcmFjdGVyQ291bnQoKSBjb25zdDsKIAog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSBMZWdhY3kgV2ViS2l0LgpAQCAtMjg4LDEw
ICsyOTIsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBtX3ZpZXc7CiAgICAg
UmVmUHRyPERvY3VtZW50PiBtX2RvYzsKIAotICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRDb250cm9sbGVyPiBtX3NjcmlwdDsKLSAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RWRpdG9y
PiBtX2VkaXRvcjsKLSAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RnJhbWVTZWxlY3Rpb24+IG1f
c2VsZWN0aW9uOwotICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDU1NBbmltYXRpb25Db250cm9s
bGVyPiBtX2FuaW1hdGlvbkNvbnRyb2xsZXI7CisgICAgVW5pcXVlUmVmPFNjcmlwdENvbnRyb2xs
ZXI+IG1fc2NyaXB0OworICAgIFVuaXF1ZVJlZjxFZGl0b3I+IG1fZWRpdG9yOworICAgIFVuaXF1
ZVJlZjxGcmFtZVNlbGVjdGlvbj4gbV9zZWxlY3Rpb247CisgICAgVW5pcXVlUmVmPENTU0FuaW1h
dGlvbkNvbnRyb2xsZXI+IG1fYW5pbWF0aW9uQ29udHJvbGxlcjsKIAogI2lmIEVOQUJMRShEQVRB
X0RFVEVDVElPTikKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0
czsKQEAgLTMyNCw3ICszMjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kb2N1bWVudElzQmVp
bmdSZXBsYWNlZCB7IGZhbHNlIH07CiAKIHByb3RlY3RlZDoKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXZlbnRIYW5kbGVyPiBtX2V2ZW50SGFuZGxlcjsKKyAgICBVbmlxdWVSZWY8RXZlbnRIYW5kbGVy
PiBtX2V2ZW50SGFuZGxlcjsKIH07CiAKIGlubGluZSB2b2lkIEZyYW1lOjppbml0KCkKQEAgLTM0
NywzMSArMzUxLDExIEBAIGlubGluZSBGcmFtZVZpZXcqIEZyYW1lOjp2aWV3KCkgY29uc3QKICAg
ICByZXR1cm4gbV92aWV3LmdldCgpOwogfQogCi1pbmxpbmUgU2NyaXB0Q29udHJvbGxlciYgRnJh
bWU6OnNjcmlwdCgpCi17Ci0gICAgcmV0dXJuICptX3NjcmlwdDsKLX0KLQogaW5saW5lIERvY3Vt
ZW50KiBGcmFtZTo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2RvYy5nZXQoKTsK
IH0KIAotaW5saW5lIEZyYW1lU2VsZWN0aW9uJiBGcmFtZTo6c2VsZWN0aW9uKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gKm1fc2VsZWN0aW9uOwotfQotCi1pbmxpbmUgRWRpdG9yJiBGcmFtZTo6ZWRp
dG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKm1fZWRpdG9yOwotfQotCi1pbmxpbmUgQ1NTQW5p
bWF0aW9uQ29udHJvbGxlciYgRnJhbWU6OmFuaW1hdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
ICptX2FuaW1hdGlvbkNvbnRyb2xsZXI7Ci19Ci0KIGlubGluZSBIVE1MRnJhbWVPd25lckVsZW1l
bnQqIEZyYW1lOjpvd25lckVsZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX293bmVyRWxl
bWVudDsKQEAgLTM5MiwxNiArMzc2LDYgQEAgaW5saW5lIHZvaWQgRnJhbWU6OmRldGFjaEZyb21Q
YWdlKCkKICAgICBtX3BhZ2UgPSBudWxscHRyOwogfQogCi1pbmxpbmUgRXZlbnRIYW5kbGVyJiBG
cmFtZTo6ZXZlbnRIYW5kbGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKm1fZXZlbnRIYW5kbGVy
OwotfQotCi1pbmxpbmUgRXZlbnRIYW5kbGVyKiBGcmFtZTo6ZXZlbnRIYW5kbGVyUHRyKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9ldmVudEhhbmRsZXIuZ2V0KCk7Ci19Ci0KIGlubGluZSBNYWlu
RnJhbWUmIEZyYW1lOjptYWluRnJhbWUoKSBjb25zdAogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCFtX21haW5GcmFtZVdhc0Rlc3Ryb3llZCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL01haW5GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9NYWluRnJhbWUuY3BwCShyZXZpc2lvbiAyMTU4NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL01haW5GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDYgQEAgaW5saW5l
IE1haW5GcmFtZTo6TWFpbkZyYW1lKFBhZ2UmIHBhZ2UsIAogTWFpbkZyYW1lOjp+TWFpbkZyYW1l
KCkKIHsKICAgICBtX3JlY2VudFdoZWVsRXZlbnREZWx0YUZpbHRlciA9IG51bGxwdHI7Ci0gICAg
bV9ldmVudEhhbmRsZXIgPSBudWxscHRyOwogCiAgICAgc2V0TWFpbkZyYW1lV2FzRGVzdHJveWVk
KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQkocmV2aXNpb24gMjE1
ODU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIEZyYW1lOjp1cGRhdGVMYXlvdXQoKSBjb25zdAog
ICAgICAgICB2aWV3LT5hZGp1c3RWaWV3U2l6ZSgpOwogfQogCi1OU1JlY3QgRnJhbWU6OmNhcmV0
UmVjdCgpIGNvbnN0CitOU1JlY3QgRnJhbWU6OmNhcmV0UmVjdCgpCiB7CiAgICAgVmlzaWJsZVNl
bGVjdGlvbiB2aXNpYmxlU2VsZWN0aW9uID0gc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAg
aWYgKHZpc2libGVTZWxlY3Rpb24uaXNOb25lKCkpCkBAIC01MTgsNyArNTE4LDcgQEAgTlNSZWN0
IEZyYW1lOjpjYXJldFJlY3QoKSBjb25zdAogICAgIHJldHVybiB2aXNpYmxlU2VsZWN0aW9uLmlz
Q2FyZXQoKSA/IHNlbGVjdGlvbigpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSA6IFZpc2libGVQb3Np
dGlvbih2aXNpYmxlU2VsZWN0aW9uLmVuZCgpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiB9CiAK
LU5TUmVjdCBGcmFtZTo6cmVjdEZvclNjcm9sbFRvVmlzaWJsZSgpIGNvbnN0CitOU1JlY3QgRnJh
bWU6OnJlY3RGb3JTY3JvbGxUb1Zpc2libGUoKQogewogICAgIFZpc2libGVTZWxlY3Rpb24gc2Vs
ZWN0aW9uKHRoaXMtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAJKHJldmlzaW9uIDIxNTg1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OSw5ICs2OSw5IEBAIElucHV0Q3Vyc29yJiBVc2VySW5wdXRCcmlkZ2U6OmFjdGl2ZUN1cnMK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi1ib29sIFVzZXJJbnB1dEJyaWRn
ZTo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNl
RXZlbnQsIGNvbnN0IEZyYW1lKiBmcmFtZSwgSW5wdXRTb3VyY2UpCitib29sIFVzZXJJbnB1dEJy
aWRnZTo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1v
dXNlRXZlbnQsIEZyYW1lJiBmcmFtZSwgSW5wdXRTb3VyY2UpCiB7Ci0gICAgcmV0dXJuIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS5zZW5kQ29udGV4dE1lbnVFdmVudChtb3VzZUV2ZW50KTsKKyAgICBy
ZXR1cm4gZnJhbWUuZXZlbnRIYW5kbGVyKCkuc2VuZENvbnRleHRNZW51RXZlbnQobW91c2VFdmVu
dCk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJy
aWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlk
Z2UuaAkocmV2aXNpb24gMjE1ODU4KQorKysgU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1
dEJyaWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIFVzZXIgaW5wdXQgQVBJcy4KICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiwgY29uc3QgRnJhbWUqLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6
VXNlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVDb250ZXh0TWVudUV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIEZyYW1lJiwgSW5wdXRTb3VyY2UgPSBJbnB1dFNvdXJj
ZTo6VXNlcik7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZU1vdXNlUHJl
c3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJ
bnB1dFNvdXJjZTo6VXNlcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVNb3VzZVJl
bGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBJbnB1dFNvdXJjZSBzb3VyY2Ug
PSBJbnB1dFNvdXJjZTo6VXNlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU4NjcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBA
QAorMjAxNy0wNC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIE1vZGVybml6ZSBGcmFtZS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEzNTcKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5
IEVzdGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJh
aWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbnRleHRNZW51QXRQb2ludElu
V2luZG93KToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlQ29udGV4dE1lbnVFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnNlbGVjdFdpdGhHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0
UG9zaXRpb25BdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0UG9zaXRp
b25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJh
bmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vs
ZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludCk6CisKIDIwMTct
MDQtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIFJlbW90ZSBpbnNwZWN0b3Igc2hvdWxkIHN1cHBvcnQgaW5zcGVjdGluZyB0YXJn
ZXRzIHdpdGggcHJldmlvdXMgdmVyc2lvbiBvZiBiYWNrZW5kIGNvbW1hbmRzCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAyMTU4NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNtYXJ0SW5zZXJ0RGVs
ZXRlRQogICAgIHJldHVybiBtX3BhZ2UtPmlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CiB9
CiAgCi1ib29sIFdlYkVkaXRvckNsaWVudDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKCkKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhZ2UtPmlzU2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAy
MTU4NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShXZWJDb3JlOjpSYW5nZSopIGZpbmFs
OwogICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgZmluYWw7Ci0gICAgYm9vbCBp
c1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBmaW5hbDsKKyAgICBib29sIGlzU2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXND
b250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBmaW5hbDsKICAgICB2b2lkIHRvZ2dsZUNv
bnRpbnVvdXNTcGVsbENoZWNraW5nKCkgZmluYWw7CiAgICAgYm9vbCBpc0dyYW1tYXJDaGVja2lu
Z0VuYWJsZWQoKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIxNTg1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzNSw3ICsy
MTM1LDcgQEAgV2ViQ29udGV4dE1lbnUqIFdlYlBhZ2U6OmNvbnRleHRNZW51QXRQbwogICAgIAog
ICAgIC8vIFNpbXVsYXRlIGEgbW91c2UgY2xpY2sgdG8gZ2VuZXJhdGUgdGhlIGNvcnJlY3QgbWVu
dS4KICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQsIFJpZ2h0
QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDEsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBjdXJyZW50VGltZSgpLCBXZWJDb3JlOjpGb3JjZUF0Q2xpY2ssIFdlYkNvcmU6
Ok5vVGFwKTsKLSAgICBib29sIGhhbmRsZWQgPSBjb3JlUGFnZSgpLT51c2VySW5wdXRCcmlkZ2Uo
KS5oYW5kbGVDb250ZXh0TWVudUV2ZW50KG1vdXNlRXZlbnQsICZjb3JlUGFnZSgpLT5tYWluRnJh
bWUoKSk7CisgICAgYm9vbCBoYW5kbGVkID0gY29yZVBhZ2UoKS0+dXNlcklucHV0QnJpZGdlKCku
aGFuZGxlQ29udGV4dE1lbnVFdmVudChtb3VzZUV2ZW50LCBjb3JlUGFnZSgpLT5tYWluRnJhbWUo
KSk7CiAgICAgaWYgKCFoYW5kbGVkKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMjI2MCw3ICsy
MjYwLDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdAogICAgIGlm
IChyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAgIGZyYW1lID0gcmVzdWx0Lmlu
bmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAKLSAgICBib29sIGhhbmRs
ZWQgPSBwYWdlLT5jb3JlUGFnZSgpLT51c2VySW5wdXRCcmlkZ2UoKS5oYW5kbGVDb250ZXh0TWVu
dUV2ZW50KHBsYXRmb3JtTW91c2VFdmVudCwgZnJhbWUpOworICAgIGJvb2wgaGFuZGxlZCA9IHBh
Z2UtPmNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgpLmhhbmRsZUNvbnRleHRNZW51RXZlbnQo
cGxhdGZvcm1Nb3VzZUV2ZW50LCAqZnJhbWUpOwogICAgIGlmIChoYW5kbGVkKQogICAgICAgICBw
YWdlLT5jb250ZXh0TWVudSgpLT5zaG93KCk7CiAKQEAgLTUxODYsNyArNTE4Niw3IEBAIHZvaWQg
V2ViUGFnZTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGUKICAgICB9CiB9CiAKLWJvb2wgV2Vi
UGFnZTo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKK2Jvb2wgV2ViUGFnZTo6
aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wYWdlLT5zZXR0aW5ncygpLnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2
aXNpb24gMjE1ODU4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDcgKzcyMCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CiAgICAgdm9pZCBzZXRTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoYm9vbCk7CiAKLSAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNl
RW5hYmxlZCgpOworICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGJvb2wp
OwogCiAgICAgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoV2ViQ29yZTo6RnJhbWUqLCBj
b25zdCBTdHJpbmcmKTsKQEAgLTEwMTEsNyArMTAxMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZW5kVGFwSGlnaGxpZ2h0Rm9yTm9kZUlmTmVjZXNzYXJ5KHVpbnQ2NF90IHJlcXVlc3RJRCwgV2Vi
Q29yZTo6Tm9kZSopOwogICAgIHZvaWQgcmVzZXRUZXh0QXV0b3NpemluZygpOwogICAgIFdlYkNv
cmU6OlZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQo
Y29uc3QgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4g
cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoQXNzaXN0ZWROb2RlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlRm9y
R3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVk
Tm9kZSk7CiAgICAgYm9vbCBzaG91bGRTd2l0Y2hUb0Jsb2NrTW9kZUZvckhhbmRsZShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgaGFuZGxlUG9pbnQsIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uKTsK
ICAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHN3aXRjaFRvQmxvY2tTZWxlY3Rpb25BdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24pOwogI2lm
IEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMjE1ODU4KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBSZWZQdHI8UmFuZ2U+IFdlYlBhZ2U6
OnJhbmdlRm9yQmxvY2tBdFBvCiAKIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29u
c3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVy
ZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBjb25zdCBGcmFtZSYgZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGF1
dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3Vz
ZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSk7CiAKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpIHsKQEAgLTE5MTksNyArMTkxOSw3IEBA
IFZpc2libGVQb3NpdGlvbiBXZWJQYWdlOjp2aXNpYmxlUG9zaXRpb24KIAogdm9pZCBXZWJQYWdl
OjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQog
ewotICAgIGNvbnN0IEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlv
biA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlz
SW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKICAgICAKICAgICBpZiAocG9zaXRpb24uaXNO
b3ROdWxsKCkpCkBAIC0xOTI5LDcgKzE5MjksNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0
aW9uQXRQb2ludChjb25zCiAKIHZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5
V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdy
YW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgY29uc3QgRnJhbWUmIGZyYW1l
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBh
dXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1
c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUpOwogCiAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpKSB7CkBAIC0xOTU0LDcgKzE5NTQs
NyBAQCB2b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi1S
ZWZQdHI8UmFuZ2U+IFdlYlBhZ2U6OnJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFu
dWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSkKK1JlZlB0cjxSYW5n
ZT4gV2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoRnJhbWUmIGZyYW1lLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKQogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQs
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKIApAQCAtMTk4Niw3ICsxOTg2LDcgQEAg
c3RhdGljIGlubGluZSBib29sIHJlY3RJc1Rvb0JpZ0ZvclNlbGVjdAogCiB2b2lkIFdlYlBhZ2U6
OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgY29uc3QgRnJhbWUmIGZyYW1l
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBh
dXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50
KGZyYW1lLCBwb2ludCwgZ3JhbnVsYXJpdHksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2Rl
KTsKICAgICBpZiAoIWlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKSB7CiAgICAgICAgIG1f
YmxvY2tTZWxlY3Rpb25EZXNpcmVkU2l6ZS5zZXRXaWR0aChibG9ja1NlbGVjdGlvblN0YXJ0V2lk
dGgpOwpAQCAtMjAxOSw3ICsyMDE5LDcgQEAgdm9pZCBXZWJQYWdlOjpiZWdpblNlbGVjdGlvbklu
RGlyZWN0aW9uKAogCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3Jh
bnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCiB7Ci0gICAgY29uc3QgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1l
LCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwogICAgIFJlZlB0cjxSYW5n
ZT4gbmV3UmFuZ2UgPSByYW5nZUZvckdyYW51bGFyaXR5QXRQb2ludChmcmFtZSwgcG9pbnQsIGdy
YW51bGFyaXR5LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CiAgICAgCkBAIC0yMDQ4
LDcgKzIwNDgsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQCiAK
IHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBjb25zdCBGcmFtZSYgZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGF1dG8mIGZyYW1l
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9y
UG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CiAKICAg
ICBpZiAocG9zaXRpb24uaXNOdWxsKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIxNTg1OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE3LTA0LTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIEZyYW1lLmgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTM1NworCisgICAgICAgIFJl
dmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06
CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCk6CisKIDIwMTctMDQtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzaG91bGQgbm90IHN5bmNo
cm9ub3VzbHkgbG9hZCBwcm92aWRlZCBkYXRhCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMjE1ODU4KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgc3BlbGxDaGVj
a2VyRG9jdW1lbnRUYWcoKSBmaW5hbDsKIAogICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKCkgZmluYWw7Ci0gICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQo
KSBmaW5hbDsKKyAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGNv
bnN0IGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShXZWJDb3JlOjpSYW5nZSop
IGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAyMTU4NTgpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI0Miw3ICsyNDIsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c21hcnRJbnNlcnREZWxldGVF
CiAgICAgcmV0dXJuIHBhZ2UtPnNldHRpbmdzKCkuc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7
CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQoKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNl
RW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgUGFnZSogcGFnZSA9IFttX3dlYlZpZXcgcGFnZV07CiAg
ICAgaWYgKCFwYWdlKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjE1ODU4KQorKysg
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTctMDQtMjcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNb2Rlcm5pemUgRnJhbWUuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
eSBFc3Rlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIw
MTctMDQtMjAgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAg
ICAgICAgW1dpbkNhaXJvXSBGaXggYnVpbGQgYnJlYWsgYWZ0ZXIgdXBkYXRpbmcgQU5HTEUKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAkocmV2aXNpb24gMjE1ODU4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgyLDcgKzM4
Miw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzbWFydEluc2VydERlbGV0ZUUKICAgICByZXR1
cm4gcGFnZS0+c2V0dGluZ3MoKS5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKIH0KIAotYm9v
bCBXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCh2b2lk
KQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCh2b2lkKSBjb25zdAogewogICAgIFBhZ2UqIHBhZ2UgPSBtX3dlYlZpZXctPnBhZ2UoKTsKICAg
ICBpZiAoIXBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMjE1ODU4KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVs
ZXRlKFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6UmFuZ2UqKSBmaW5hbDsKIAogICAgIGJvb2wg
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgZmluYWw7Ci0gICAgYm9vbCBpc1NlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBmaW5hbDsKKyAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCByZWdpc3RlclVuZG9T
dGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVw
KFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>