<?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>176627</bug_id>
          
          <creation_ts>2017-09-08 13:31:27 -0700</creation_ts>
          <short_desc>Replace JS builtin implementation of the FetchResponse constructor with a C++ one</short_desc>
          <delta_ts>2017-09-27 12:35:23 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1346921</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-08 13:31:27 -0700</bug_when>
    <thetext>Replace JS builtin implementation of the FetchResponse constructor with a C++ one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346923</commentid>
    <comment_count>1</comment_count>
      <attachid>320292</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-08 13:34:01 -0700</bug_when>
    <thetext>Created attachment 320292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346972</commentid>
    <comment_count>2</comment_count>
      <attachid>320308</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-08 14:52:16 -0700</bug_when>
    <thetext>Created attachment 320308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347015</commentid>
    <comment_count>3</comment_count>
      <attachid>320319</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-08 17:42:47 -0700</bug_when>
    <thetext>Created attachment 320319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347024</commentid>
    <comment_count>4</comment_count>
      <attachid>320319</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-08 17:56:41 -0700</bug_when>
    <thetext>Comment on attachment 320319
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:53
&gt; +    // 1. If initâs status member is not in the range 200 to 599, inclusive, then throw a RangeError.

non-ascii apostrophes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347045</commentid>
    <comment_count>5</comment_count>
      <attachid>320319</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-08 20:33:03 -0700</bug_when>
    <thetext>Comment on attachment 320319
Patch

Clearing flags on attachment: 320319

Committed r221806: &lt;http://trac.webkit.org/changeset/221806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347046</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-08 20:33:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353505</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:35:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693544&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320292</attachid>
            <date>2017-09-08 13:34:01 -0700</date>
            <delta_ts>2017-09-08 14:52:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176627-20170908133400.patch</filename>
            <type>text/plain</type>
            <size>24349</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTc5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBKUyBidWlsdGluIGltcGxl
bWVudGF0aW9uIG9mIHRoZSBGZXRjaFJlc3BvbnNlIGNvbnN0cnVjdG9yIHdpdGggYSBDKysgb25l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY2MjcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVz
IHRoZSBsYXN0IG9mIHRoZSBGZXRjaCByZWxhdGVkIEpTIGJ1aWx0aW4gY29kZS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eVNvdXJjZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoSGVhZGVyczo6ZmFzdEhhcyBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hJbnRlcm5hbHMuanM6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTnVsbEJvZHlTdGF0dXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVz
cG9uc2U6OnNldFN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3Bv
bnNlOjppbml0aWFsaXplV2l0aCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjcmVhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGw6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNy0wOS0wOCAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjIyMTc3My4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjE3OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzg5
Nyw4ICszODk3LDYgQEAgYWRkX2RlcGVuZGVuY2llcyhXZWJDb3JlVGVzdFN1cHBvcnRCaW5kaQog
IyBXZWJDb3JlIEpTIEJ1aWx0aW5zCiAKIHNldChXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMKLSAg
ICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpzCi0gICAgJHtX
RUJDT1JFX0RJUn0vTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCiAgICAgJHtXRUJDT1JF
X0RJUn0vTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWEuanMKICAgICAke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmpzCiAgICAg
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkludGVy
bmFscy5qcwpJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyMjE3
OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDU0LDggKzE0NTQsNiBAQCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIDogQ29t
bWFuZExpCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAogV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VT
ID0gXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcyBcCi0g
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWEuanMgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5qcyBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxz
LmpzIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwJ
KHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogICAgIEludGVyZmFjZU5h
bWU9Qm9keSwKICAgICBOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgRmV0Y2hCb2R5IHsK
LSAgICAvLyBGSU1YRTogQWRkIG1pc3NpbmcgYm9keSBhdHRyaWJ1dGUuCiAgICAgW0ltcGxlbWVu
dGVkQXM9cmVhZGFibGVTdHJlYW0sIENhbGxXaXRoPVNjcmlwdFN0YXRlXSByZWFkb25seSBhdHRy
aWJ1dGUgUmVhZGFibGVTdHJlYW0/IGJvZHk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gYm9keVVzZWQ7CiAgICAgW05ld09iamVjdF0gUHJvbWlzZTxBcnJheUJ1ZmZlcj4gYXJyYXlC
dWZmZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmgJKHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NiBAQCBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKIAogY2xhc3MgRmV0Y2hCb2R5Q29uc3VtZXIgewog
cHVibGljOgotICAgIC8vIFR5cGUgaXMgdXNlZCBpbiBGZXRjaFJlc3BvbnNlLmpzIGFuZCBzaG91
bGQgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBpdC4KICAgICBlbnVtIGNsYXNzIFR5cGUgeyBO
b25lLCBBcnJheUJ1ZmZlciwgQmxvYiwgSlNPTiwgVGV4dCB9OwogCiAgICAgRmV0Y2hCb2R5Q29u
c3VtZXIoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5jcHAJKHJldmlzaW9uIDIyMTc5
NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCB2b2lkIEZldGNoQm9keVNvdXJjZTo6Y2xv
c2UoKQogICAgIGNvbnRyb2xsZXIoKS5jbG9zZSgpOwogICAgIGNsZWFuKCk7CiB9CisKIHZvaWQg
RmV0Y2hCb2R5U291cmNlOjplcnJvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGNvbnRy
b2xsZXIoKS5lcnJvcih2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoSGVhZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hIZWFkZXJzLmgJKHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZmlsdGVyQW5kRmlsbChjb25zdCBIVFRQSGVhZGVyTWFwJiwg
R3VhcmQpOwogCiAgICAgU3RyaW5nIGZhc3RHZXQoSFRUUEhlYWRlck5hbWUgbmFtZSkgY29uc3Qg
eyByZXR1cm4gbV9oZWFkZXJzLmdldChuYW1lKTsgfQorICAgIGJvb2wgZmFzdEhhcyhIVFRQSGVh
ZGVyTmFtZSBuYW1lKSBjb25zdCB7IHJldHVybiBtX2hlYWRlcnMuY29udGFpbnMobmFtZSk7IH0K
ICAgICB2b2lkIGZhc3RTZXQoSFRUUEhlYWRlck5hbWUgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkgeyBtX2hlYWRlcnMuc2V0KG5hbWUsIHZhbHVlKTsgfQogCiAgICAgY2xhc3MgSXRlcmF0b3Ig
ewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlk
bAkocmV2aXNpb24gMjIxNzk0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEhlYWRlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw2IEBAIHR5cGVkZWYgKHNl
cXVlbmNlPHNlcXVlbmNlPEJ5dGVTdHJpbmc+PiAKICAgICBJbnRlcmZhY2VOYW1lPUhlYWRlcnMs
CiAgICAgQ29uc3RydWN0b3Iob3B0aW9uYWwgSGVhZGVyc0luaXQgaW5pdCksCiAgICAgQ29uc3Ry
dWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKLSAgICBQcml2YXRlSWRlbnRpZmllciwKLSAgICBQdWJs
aWNJZGVudGlmaWVyLAogXSBpbnRlcmZhY2UgRmV0Y2hIZWFkZXJzIHsKICAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgYXBwZW5kKEJ5dGVTdHJpbmcgbmFtZSwgQnl0ZVN0cmluZyB2YWx1ZSk7
CiAgICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXJlbW92ZV0gdm9pZCBkZWxl
dGUoQnl0ZVN0cmluZyBuYW1lKTsKQEAgLTQ1LDcgKzQzLDQgQEAgdHlwZWRlZiAoc2VxdWVuY2U8
c2VxdWVuY2U8Qnl0ZVN0cmluZz4+IAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXQo
Qnl0ZVN0cmluZyBuYW1lLCBCeXRlU3RyaW5nIHZhbHVlKTsKIAogICAgIGl0ZXJhYmxlPEJ5dGVT
dHJpbmcsIEJ5dGVTdHJpbmc+OwotCi0gICAgW0ltcGxlbWVudGVkQXM9YXBwZW5kLCBNYXlUaHJv
d0V4Y2VwdGlvbiwgUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgYXBwZW5kRnJvbUpTKEJ5dGVTdHJp
bmcgbmFtZSwgQnl0ZVN0cmluZyB2YWx1ZSk7Ci0gICAgW0ltcGxlbWVudGVkQXM9ZmlsbCwgUHJp
dmF0ZUlkZW50aWZpZXJdIHZvaWQgZmlsbEZyb21KUyhGZXRjaEhlYWRlcnM/IGhlYWRlcnMpOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFs
cy5qcwkocmV2aXNpb24gMjIxNzk0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEludGVybmFscy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0vLyBAaW50ZXJuYWwKLQotZnVuY3Rpb24gZmlsbEZldGNoSGVhZGVy
cyhoZWFkZXJzLCBoZWFkZXJzSW5pdCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAo
aGVhZGVyc0luaXQgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICho
ZWFkZXJzSW5pdCBpbnN0YW5jZW9mIEBIZWFkZXJzKSB7Ci0gICAgICAgIEBIZWFkZXJzLnByb3Rv
dHlwZS5AZmlsbEZyb21KUy5AY2FsbChoZWFkZXJzLCBoZWFkZXJzSW5pdCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoQGlzQXJyYXkoaGVhZGVyc0luaXQpKSB7Ci0gICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVyc0luaXQubGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
ICAgIGxldCBoZWFkZXIgPSBoZWFkZXJzSW5pdFtpXTsKLSAgICAgICAgICAgIGlmIChoZWFkZXIu
bGVuZ3RoICE9PSAyKQotICAgICAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiaGVhZGVyc0lu
aXQgc2VxdWVuY2UgaXRlbXMgc2hvdWxkIGNvbnRhaW4gdHdvIHZhbHVlcyIpOwotICAgICAgICAg
ICAgQEhlYWRlcnMucHJvdG90eXBlLkBhcHBlbmRGcm9tSlMuQGNhbGwoaGVhZGVycywgaGVhZGVy
WzBdLCBoZWFkZXJbMV0pOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0K
LQotICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyho
ZWFkZXJzSW5pdCk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIGxldCBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKLSAgICAgICAg
QEhlYWRlcnMucHJvdG90eXBlLkBhcHBlbmRGcm9tSlMuQGNhbGwoaGVhZGVycywgbmFtZSwgaGVh
ZGVyc0luaXRbbmFtZV0pOwotICAgIH0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAkocmV2aXNpb24gMjIxNzk0KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNiArNDIsODEgQEAgc3RhdGljIGlubGluZSBib29sIGlzUmVkaXJlY3RTdGF0dXMoaW50
IAogICAgIHJldHVybiBzdGF0dXMgPT0gMzAxIHx8IHN0YXR1cyA9PSAzMDIgfHwgc3RhdHVzID09
IDMwMyB8fCBzdGF0dXMgPT0gMzA3IHx8IHN0YXR1cyA9PSAzMDg7CiB9CiAKKy8vIGh0dHBzOi8v
ZmV0Y2guc3BlYy53aGF0d2cub3JnLyNudWxsLWJvZHktc3RhdHVzCitzdGF0aWMgaW5saW5lIGJv
b2wgaXNOdWxsQm9keVN0YXR1cyhpbnQgc3RhdHVzKQoreworICAgIHJldHVybiBzdGF0dXMgPT0g
MTAxIHx8IHN0YXR1cyA9PSAyMDQgfHwgc3RhdHVzID09IDIwNSB8fCBzdGF0dXMgPT0gMzA0Owor
fQorCitFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZldGNoUmVzcG9uc2U6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9k
eTo6SW5pdD4mJiBib2R5LCBJbml0JiYgaW5pdCkKK3sKKyAgICAvLyAxLiBJZiBpbml04oCZcyBz
dGF0dXMgbWVtYmVyIGlzIG5vdCBpbiB0aGUgcmFuZ2UgMjAwIHRvIDU5OSwgaW5jbHVzaXZlLCB0
aGVuIHRocm93IGEgUmFuZ2VFcnJvci4KKyAgICBpZiAoaW5pdC5zdGF0dXMgPCAyMDAgIHx8IGlu
aXQuc3RhdHVzID4gNTk5KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwg
QVNDSUlMaXRlcmFsKCJTdGF0dXMgbXVzdCBiZSBiZXR3ZWVuIDIwMCBhbmQgNTk5IikgfTsKKwor
ICAgIC8vIDIuIElmIGluaXTigJlzIHN0YXR1c1RleHQgbWVtYmVyIGRvZXMgbm90IG1hdGNoIHRo
ZSByZWFzb24tcGhyYXNlIHRva2VuIHByb2R1Y3Rpb24sIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3Iu
CisgICAgaWYgKCFpc1ZhbGlkUmVhc29uUGhyYXNlKGluaXQuc3RhdHVzVGV4dCkpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiU3RhdHVzIHRleHQg
bXVzdCBiZSBhIHZhbGlkIHJlYXNvbi1waHJhc2UuIikgfTsKKworICAgIC8vIDMuIExldCByIGJl
IGEgbmV3IFJlc3BvbnNlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggYSBuZXcgcmVzcG9uc2UuCisg
ICAgLy8gTk9URTogQ3JlYXRpb24gb2YgdGhlIFJlc3BvbnNlIG9iamVjdCBpcyBkZWxheWVkIHVu
dGlsIGFsbCBwb3RlbnRpYWwgZXhjZXB0aW9uYWwgY2FzZXMgYXJlIGhhbmRsZWQuCisgICAgCisg
ICAgLy8gNC4gU2V0IHLigJlzIGhlYWRlcnMgdG8gYSBuZXcgSGVhZGVycyBvYmplY3QsIHdob3Nl
IGhlYWRlciBsaXN0IGlzIHLigJlzIHJlc3BvbnNl4oCZcyBoZWFkZXIgbGlzdCwgYW5kIGd1YXJk
IGlzICJyZXNwb25zZSIuCisgICAgYXV0byBoZWFkZXJzID0gRmV0Y2hIZWFkZXJzOjpjcmVhdGUo
RmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UpOworCisgICAgLy8gNS4gU2V0IHLigJlzIHJl
c3BvbnNl4oCZcyBzdGF0dXMgdG8gaW5pdOKAmXMgc3RhdHVzIG1lbWJlci4KKyAgICBhdXRvIHN0
YXR1cyA9IGluaXQuc3RhdHVzOworICAgIAorICAgIC8vIDYuIFNldCBy4oCZcyByZXNwb25zZeKA
mXMgc3RhdHVzIG1lc3NhZ2UgdG8gaW5pdOKAmXMgc3RhdHVzVGV4dCBtZW1iZXIuCisgICAgYXV0
byBzdGF0dXNUZXh0ID0gaW5pdC5zdGF0dXNUZXh0OworICAgIAorICAgIC8vIDcuIElmIGluaXTi
gJlzIGhlYWRlcnMgbWVtYmVyIGlzIHByZXNlbnQsIHRoZW4gZmlsbCBy4oCZcyBoZWFkZXJzIHdp
dGggaW5pdOKAmXMgaGVhZGVycyBtZW1iZXIuCisgICAgaWYgKGluaXQuaGVhZGVycykgeworICAg
ICAgICBhdXRvIHJlc3VsdCA9IGhlYWRlcnMtPmZpbGwoKmluaXQuaGVhZGVycyk7CisgICAgICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4g
ZXh0cmFjdGVkQm9keTsKKworICAgIC8vIDguIElmIGJvZHkgaXMgbm9uLW51bGwsIHJ1biB0aGVz
ZSBzdWJzdGVwczoKKyAgICBpZiAoYm9keSkgeworICAgICAgICAvLyA4LjEgSWYgaW5pdOKAmXMg
c3RhdHVzIG1lbWJlciBpcyBhIG51bGwgYm9keSBzdGF0dXMsIHRoZW4gdGhyb3cgYSBUeXBlRXJy
b3IuCisgICAgICAgIC8vICAgICAoTk9URTogMTAxIGlzIGluY2x1ZGVkIGluIG51bGwgYm9keSBz
dGF0dXMgZHVlIHRvIGl0cyB1c2UgZWxzZXdoZXJlLiBJdCBkb2VzIG5vdCBhZmZlY3QgdGhpcyBz
dGVwLikKKyAgICAgICAgaWYgKGlzTnVsbEJvZHlTdGF0dXMoaW5pdC5zdGF0dXMpKQorICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZXNwb25z
ZSBjYW5ub3QgaGF2ZSBhIGJvZHkgd2l0aCB0aGUgZ2l2ZW4gc3RhdHVzLiIpIH07CisKKyAgICAg
ICAgLy8gOC4yIExldCBDb250ZW50LVR5cGUgYmUgbnVsbC4KKyAgICAgICAgU3RyaW5nIGNvbnRl
bnRUeXBlOworCisgICAgICAgIC8vIDguMyBTZXQgcuKAmXMgcmVzcG9uc2XigJlzIGJvZHkgYW5k
IENvbnRlbnQtVHlwZSB0byB0aGUgcmVzdWx0IG9mIGV4dHJhY3RpbmcgYm9keS4KKyAgICAgICAg
ZXh0cmFjdGVkQm9keSA9IEZldGNoQm9keTo6ZXh0cmFjdChjb250ZXh0LCBXVEZNb3ZlKCpib2R5
KSwgY29udGVudFR5cGUpOworCisgICAgICAgIC8vIDguNCBJZiBDb250ZW50LVR5cGUgaXMgbm9u
LW51bGwgYW5kIHLigJlzIHJlc3BvbnNl4oCZcyBoZWFkZXIgbGlzdCBkb2VzIG5vdCBjb250YWlu
IGBDb250ZW50LVR5cGVgLCB0aGVuIGFwcGVuZAorICAgICAgICAvLyAgICAgYENvbnRlbnQtVHlw
ZWAvQ29udGVudC1UeXBlIHRvIHLigJlzIHJlc3BvbnNl4oCZcyBoZWFkZXIgbGlzdC4KKyAgICAg
ICAgaWYgKCFjb250ZW50VHlwZS5pc051bGwoKSAmJiAhaGVhZGVycy0+ZmFzdEhhcyhIVFRQSGVh
ZGVyTmFtZTo6Q29udGVudFR5cGUpKQorICAgICAgICAgICAgaGVhZGVycy0+ZmFzdFNldChIVFRQ
SGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlKTsKKyAgICB9CisKKyAgICAvLyA5
LiBTZXQgcuKAmXMgTUlNRSB0eXBlIHRvIHRoZSByZXN1bHQgb2YgZXh0cmFjdGluZyBhIE1JTUUg
dHlwZSBmcm9tIHLigJlzIHJlc3BvbnNl4oCZcyBoZWFkZXIgbGlzdC4KKyAgICBhdXRvIGNvbnRl
bnRUeXBlID0gaGVhZGVycy0+ZmFzdEdldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpOwor
CisgICAgLy8gMTAuIFNldCBy4oCZcyByZXNwb25zZeKAmXMgSFRUUFMgc3RhdGUgdG8gY3VycmVu
dCBzZXR0aW5ncyBvYmplY3TigJlzIEhUVFBTIHN0YXRlLgorICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQuCisKKyAgICAvLyAxMS4gUmVzb2x2ZSBy4oCZcyB0cmFpbGVyIHByb21pc2Ugd2l0aCBhIG5l
dyBIZWFkZXJzIG9iamVjdCB3aG9zZSBndWFyZCBpcyAiaW1tdXRhYmxlIi4KKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50LgorICAgIAorICAgIC8vIDEyLiBSZXR1cm4gci4KKyAgICBhdXRvIHIgPSBh
ZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgV1RGTW92ZShleHRyYWN0ZWRCb2R5
KSwgV1RGTW92ZShoZWFkZXJzKSwgeyB9KSk7CisKKyAgICByLT5tX2NvbnRlbnRUeXBlID0gY29u
dGVudFR5cGU7CisgICAgci0+bV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOwor
ICAgIHItPm1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoc3RhdHVzVGV4dCk7CisKKyAgICBy
ZXR1cm4gV1RGTW92ZShyKTsKK30KKwogUmVmPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6
OmVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgYXV0byByZXNw
b25zZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCB7IH0sIEZldGNoSGVh
ZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIHsgfSkpOwpAQCAt
NjMsMjIgKzEzOCw2IEBAIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gRmV0Y2hSZXMK
ICAgICByZXR1cm4gV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKTsKIH0KIAotRXhjZXB0aW9uT3I8
dm9pZD4gRmV0Y2hSZXNwb25zZTo6c2V0U3RhdHVzKGludCBzdGF0dXMsIGNvbnN0IFN0cmluZyYg
c3RhdHVzVGV4dCkKLXsKLSAgICBpZiAoIWlzVmFsaWRSZWFzb25QaHJhc2Uoc3RhdHVzVGV4dCkp
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKLSAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNDb2RlKHN0YXR1cyk7Ci0gICAgbV9yZXNwb25zZS5zZXRIVFRQU3RhdHVz
VGV4dChzdGF0dXNUZXh0KTsKLSAgICByZXR1cm4geyB9OwotfQotCi12b2lkIEZldGNoUmVzcG9u
c2U6OmluaXRpYWxpemVXaXRoKEZldGNoQm9keTo6SW5pdCYmIGJvZHkpCi17Ci0gICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgZXh0cmFjdEJvZHkoKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgV1RGTW92ZShib2R5KSk7Ci0gICAgdXBkYXRlQ29udGVudFR5cGUoKTsK
LX0KLQogRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFk
ZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKICAgICA6IEZldGNo
Qm9keU93bmVyKGNvbnRleHQsIFdURk1vdmUoYm9keSksIFdURk1vdmUoaGVhZGVycykpCiAgICAg
LCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQpAQCAtMjY3LDE1ICszMjYsMjAgQEAgdm9p
ZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keVdoZW5Mb2FkZQogCiB2b2lkIEZldGNoUmVzcG9u
c2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmIGRhdGEpCiB7Ci0gICAgV1RGOjpzd2l0Y2hP
bihkYXRhLCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKLSAgICAgICAgaWYgKGlz
Qm9keU51bGwoKSkKLSAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKLSAgICAgICAgYm9keSgpLnNl
dEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCi0gICAgICAgICAg
ICBzZXRCb2R5KHsgfSk7Ci0gICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92
ZShidWZmZXIpKTsKLSAgICB9LCBbXShzdGQ6Om51bGxwdHJfdCYpIHsgfSk7CisgICAgV1RGOjpz
d2l0Y2hPbihkYXRhLAorICAgICAgICBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
KyAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCisgICAgICAgICAgICAgICAgc2V0Qm9keSh7
IH0pOworICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkp
OworICAgICAgICB9LAorICAgICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
eworICAgICAgICAgICAgaWYgKGlzQm9keU51bGwoKSkKKyAgICAgICAgICAgICAgICBzZXRCb2R5
KHsgfSk7CisgICAgICAgICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgICAgIH0sCisgICAgICAgIFtdKHN0ZDo6bnVsbHB0cl90JikgeworICAgICAg
ICB9CisgICAgKTsKIH0KIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCShyZXZpc2lvbiAyMjE3OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsMTIgKzUzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgc3RkOjpvcHRpb25h
bDxGZXRjaEhlYWRlcnM6OkluaXQ+IGhlYWRlcnM7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8
RmV0Y2hSZXNwb25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBzdGQ6Om51bGxvcHQs
IEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlKSwgUmVz
b3VyY2VSZXNwb25zZSgpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJl
ZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CisKKyAgICBzdGF0aWMgRXhj
ZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmLCBJbml0JiYpOwogICAgIHN0YXRp
YyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IHJlZGlyZWN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IHN0YXR1cyk7CiAKLSAgICBz
dGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJz
PiYmIGhlYWRlcnMsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIFdURk1vdmUoYm9keSksIFdURk1vdmUoaGVh
ZGVycyksIFdURk1vdmUocmVzcG9uc2UpKSk7IH0KLQogICAgIHVzaW5nIE5vdGlmaWNhdGlvbkNh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPEZldGNoUmVzcG9uc2UmPiYm
KT47CiAgICAgc3RhdGljIHZvaWQgZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZldGNo
UmVxdWVzdCYsIE5vdGlmaWNhdGlvbkNhbGxiYWNrJiYpOwogCkBAIC02OCw5ICs2OCw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZpbmlzaENvbnN1bWluZ1N0cmVhbShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKICNlbmRpZgogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0U3RhdHVzKGludCBzdGF0
dXMsIGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCk7Ci0gICAgdm9pZCBpbml0aWFsaXplV2l0aChG
ZXRjaEJvZHk6OkluaXQmJik7Ci0KICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3BvbnNlLnR5cGUoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3Q7CiAgICAgYm9v
bCByZWRpcmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5pc1JlZGlyZWN0ZWQoKTsg
fQpAQCAtMTQzLDQgKzE0MCw5IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9yZXNw
b25zZVVSTDsKIH07CiAKK2lubGluZSBSZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8RmV0
Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9u
c2UoY29udGV4dCwgV1RGTW92ZShib2R5KSwgV1RGTW92ZShoZWFkZXJzKSwgV1RGTW92ZShyZXNw
b25zZSkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCShyZXZpc2lvbiAyMjE3OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTIgQEAgZGljdGlvbmFyeSBGZXRjaFJlc3BvbnNlSW5p
dCB7CiAKIFsKICAgICBBY3RpdmVET01PYmplY3QsCisgICAgQ29uc3RydWN0b3Iob3B0aW9uYWwg
Qm9keUluaXQ/IGJvZHkgPSBudWxsLCBvcHRpb25hbCBGZXRjaFJlc3BvbnNlSW5pdCBpbml0KSwK
ICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgQ29u
c3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKICAgICBFbmFibGVkQXRSdW50aW1lPUZldGNoQVBJ
LAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEludGVyZmFjZU5hbWU9UmVzcG9u
c2UsCi0gICAgSlNCdWlsdGluQ29uc3RydWN0b3IsCi0gICAgLy8gQ29uc3RydWN0b3Iob3B0aW9u
YWwgQm9keUluaXQ/IGJvZHkgPSBudWxsLCBvcHRpb25hbCBGZXRjaFJlc3BvbnNlSW5pdCBpbml0
KQogXSBpbnRlcmZhY2UgRmV0Y2hSZXNwb25zZSB7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIE5ld09iamVjdF0gc3RhdGljIEZldGNoUmVzcG9uc2UgZXJyb3IoKTsKICAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb24sIE5l
d09iamVjdF0gc3RhdGljIEZldGNoUmVzcG9uc2UgcmVkaXJlY3QoVVNWU3RyaW5nIHVybCwgb3B0
aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsKQEAgLTYxLDkgKzYxLDYgQEAgZGlj
dGlvbmFyeSBGZXRjaFJlc3BvbnNlSW5pdCB7CiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFBy
b21pc2U8SGVhZGVycz4gdHJhaWxlcjsKIAogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBGZXRjaFJlc3BvbnNlIGNsb25l
KCk7Ci0KLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIFByaXZhdGVJZGVudGlmaWVyXSB2b2lkIHNl
dFN0YXR1cyh1bnNpZ25lZCBzaG9ydCBzdGF0dXMsIERPTVN0cmluZyBzdGF0dXNUZXh0KTsKLSAg
ICBbUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgaW5pdGlhbGl6ZVdpdGgoQm9keUluaXQgYm9keSk7
CiB9OwogCiBGZXRjaFJlc3BvbnNlIGltcGxlbWVudHMgRmV0Y2hCb2R5OwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcwkocmV2aXNpb24gMjIx
Nzk0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCShu
b25leGlzdGVudCkKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBD
YW5vbiBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBD
QU5PTiBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1
bmN0aW9uIGluaXRpYWxpemVGZXRjaFJlc3BvbnNlKGJvZHksIGluaXQpCi17Ci0gICAgInVzZSBz
dHJpY3QiOwotCi0gICAgaWYgKGluaXQgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIGluaXQgPSB7
IH07Ci0gICAgZWxzZSBpZiAoIUBpc09iamVjdChpbml0KSkKLSAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJSZXNwb25zZSBpbml0IG11c3QgYmUgYW4gb2JqZWN0Iik7Ci0KLSAgICBsZXQgc3RhdHVz
ID0gKGluaXQuc3RhdHVzICE9PSBAdW5kZWZpbmVkKSA/IEB0b051bWJlcihpbml0LnN0YXR1cykg
OiAyMDA7Ci0gICAgaWYgKHN0YXR1cyA8IDIwMCAgfHwgc3RhdHVzID4gNTk5KQotICAgICAgICBA
dGhyb3dSYW5nZUVycm9yKCJTdGF0dXMgbXVzdCBiZSBiZXR3ZWVuIDIwMCBhbmQgNTk5Iik7Ci0K
LSAgICBsZXQgc3RhdHVzVGV4dCA9IChpbml0LnN0YXR1c1RleHQgIT09IEB1bmRlZmluZWQpID8g
aW5pdC5zdGF0dXNUZXh0IDogIk9LIjsKLQotICAgIHRoaXMuQHNldFN0YXR1cyhzdGF0dXMsIHN0
YXR1c1RleHQpOwotCi0gICAgaWYgKGluaXQuaGVhZGVycyAhPT0gQHVuZGVmaW5lZCkKLSAgICAg
ICAgQGZpbGxGZXRjaEhlYWRlcnModGhpcy5oZWFkZXJzLCBpbml0LmhlYWRlcnMpOwotCi0gICAg
aWYgKGJvZHkgIT09IEB1bmRlZmluZWQgJiYgYm9keSAhPT0gbnVsbCkgewotICAgICAgICBpZiAo
c3RhdHVzID09PSAxMDEgfHwgc3RhdHVzID09PSAyMDQgfHwgc3RhdHVzID09PSAyMDUgfHwgc3Rh
dHVzID09PSAzMDQpCi0gICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlc3BvbnNlIGNhbm5v
dCBoYXZlIGEgYm9keSB3aXRoIHRoZSBnaXZlbiBzdGF0dXMiKTsKLQotICAgICAgICB0aGlzLkBp
bml0aWFsaXplV2l0aChib2R5KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpczsKLX0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTQxNyw3ICs5NDE3LDYgQEAKIAkJNDEz
MDE1RDYxQzdCNTcwNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTMwMTVENjFDN0I1NzA0MDAwOTFDNkYgLyogRmV0Y2hCb2R5U291cmNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoQm9keVNvdXJjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwMTVENzFDN0I1NzA0MDAwOTFDNkUgLyogRmV0Y2hS
ZXNwb25zZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmV0Y2hSZXNwb25zZS5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxMzAxNUQ4MUM3QjU3MDQwMDA5MUM2RSAvKiBG
ZXRjaFJlc3BvbnNlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
RmV0Y2hSZXNwb25zZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzODBDMjAx
RjM0MzY4QTAwMTU1RkRBIC8qIERPTUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTUNh
Y2hlLmNwcDsgcGF0aCA9IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CiAJCTQxMzgwQzIxMUYzNDM2OEQwMDE1NUZEQSAvKiBDYWNoZVN0b3Jh
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ2FjaGVTdG9yYWdlLmNwcDsgcGF0aCA9IE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owog
CQk0MTM4MEMyMjFGMzQzNjkwMDAxNTVGREEgLyogQ2FjaGVTdG9yYWdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IENhY2hlU3RvcmFnZS5oOyBwYXRoID0gTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuaDsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtOTUzNCw3ICs5NTMzLDYgQEAKIAkJNDFD
QUQ3MUQxRUEwOTA1NzAwMTc4MTY0IC8qIFZpZGVvVG9vbEJveEVuY29kZXJGYWN0b3J5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFZpZGVvVG9vbEJveEVuY29kZXJGYWN0b3J5
Lmg7IHBhdGggPSBsaWJ3ZWJydGMvVmlkZW9Ub29sQm94RW5jb2RlckZhY3RvcnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNo
Qm9keUNvbnN1bWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZl
dGNoQm9keUNvbnN1bWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDRjhC
RTUxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQxQ0Y4QkU2MUQ0NjIyMkMwMDcwN0RDOSAvKiBGZXRjaEludGVybmFscy5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEZldGNoSW50ZXJuYWxz
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQwMTVDODBGNEI1QzcxMDA0QTY2
MkYgLyogQ29udGVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
dGVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1QzkwRjRCNUM3
MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENvbnRlbnRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFEMTI5QzkxRjNEMEVFMzAwRDE1RTQ3IC8qIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODEyNiw3ICsxODEyNCw2IEBA
CiAJCQkJNDFGNTRGODIxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5jcHAgKi8sCiAJ
CQkJNDFGNTRGODMxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5oICovLAogCQkJCTQx
RjU0Rjg0MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuaWRsICovLAotCQkJCTQxQ0Y4
QkU2MUQ0NjIyMkMwMDcwN0RDOSAvKiBGZXRjaEludGVybmFscy5qcyAqLywKIAkJCQk0MTQ3RTJC
NDFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hMb2FkZXIuY3BwICovLAogCQkJCTQxNDdFMkI1MUM4
OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5oICovLAogCQkJCTQxNDdFMkI2MUM4OTkxMjYw
MEE3RTcxNSAvKiBGZXRjaExvYWRlckNsaWVudC5oICovLApAQCAtMTgxNDgsNyArMTgxNDUsNiBA
QAogCQkJCTQxMzAxNUQ1MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmNwcCAqLywK
IAkJCQk0MTMwMTVENjFDN0I1NzA0MDAwOTFDNkUgLyogRmV0Y2hSZXNwb25zZS5oICovLAogCQkJ
CTQxMzAxNUQ3MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmlkbCAqLywKLQkJCQk0
MTMwMTVEODFDN0I1NzA0MDAwOTFDNkUgLyogRmV0Y2hSZXNwb25zZS5qcyAqLywKIAkJCQk0MThD
Mzk1NzFDOERENjk2MDA1MUM4QTMgLyogV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5jcHAgKi8sCiAJ
CQkJNDE4QzM5NTgxQzhERDY5NjAwNTFDOEEzIC8qIFdvcmtlckdsb2JhbFNjb3BlRmV0Y2guaCAq
LywKIAkJCQk0MThDMzk1OTFDOERENjk2MDA1MUM4QTMgLyogV29ya2VyR2xvYmFsU2NvcGVGZXRj
aC5pZGwgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320308</attachid>
            <date>2017-09-08 14:52:16 -0700</date>
            <delta_ts>2017-09-08 17:42:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176627-20170908145153.patch</filename>
            <type>text/plain</type>
            <size>29896</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTc5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBKUyBidWlsdGluIGltcGxl
bWVudGF0aW9uIG9mIHRoZSBGZXRjaFJlc3BvbnNlIGNvbnN0cnVjdG9yIHdpdGggYSBDKysgb25l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY2MjcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVz
IHRoZSBsYXN0IG9mIHRoZSBGZXRjaCByZWxhdGVkIEpTIGJ1aWx0aW4gY29kZS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eVNvdXJjZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoSGVhZGVyczo6ZmFzdEhhcyBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hJbnRlcm5hbHMuanM6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTnVsbEJvZHlTdGF0dXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVz
cG9uc2U6OnNldFN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3Bv
bnNlOjppbml0aWFsaXplV2l0aCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjcmVhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGw6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNy0wOS0wOCAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjIyMTc3My4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjE3OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzg5
Nyw4ICszODk3LDYgQEAgYWRkX2RlcGVuZGVuY2llcyhXZWJDb3JlVGVzdFN1cHBvcnRCaW5kaQog
IyBXZWJDb3JlIEpTIEJ1aWx0aW5zCiAKIHNldChXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMKLSAg
ICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpzCi0gICAgJHtX
RUJDT1JFX0RJUn0vTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCiAgICAgJHtXRUJDT1JF
X0RJUn0vTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWEuanMKICAgICAke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmpzCiAgICAg
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkludGVy
bmFscy5qcwpJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyMjE3
OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDU0LDggKzE0NTQsNiBAQCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIDogQ29t
bWFuZExpCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAogV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VT
ID0gXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcyBcCi0g
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWEuanMgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5qcyBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxz
LmpzIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwJ
KHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogICAgIEludGVyZmFjZU5h
bWU9Qm9keSwKICAgICBOb0ludGVyZmFjZU9iamVjdAogXSBpbnRlcmZhY2UgRmV0Y2hCb2R5IHsK
LSAgICAvLyBGSU1YRTogQWRkIG1pc3NpbmcgYm9keSBhdHRyaWJ1dGUuCiAgICAgW0ltcGxlbWVu
dGVkQXM9cmVhZGFibGVTdHJlYW0sIENhbGxXaXRoPVNjcmlwdFN0YXRlXSByZWFkb25seSBhdHRy
aWJ1dGUgUmVhZGFibGVTdHJlYW0/IGJvZHk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gYm9keVVzZWQ7CiAgICAgW05ld09iamVjdF0gUHJvbWlzZTxBcnJheUJ1ZmZlcj4gYXJyYXlC
dWZmZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmgJKHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NiBAQCBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKIAogY2xhc3MgRmV0Y2hCb2R5Q29uc3VtZXIgewog
cHVibGljOgotICAgIC8vIFR5cGUgaXMgdXNlZCBpbiBGZXRjaFJlc3BvbnNlLmpzIGFuZCBzaG91
bGQgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBpdC4KICAgICBlbnVtIGNsYXNzIFR5cGUgeyBO
b25lLCBBcnJheUJ1ZmZlciwgQmxvYiwgSlNPTiwgVGV4dCB9OwogCiAgICAgRmV0Y2hCb2R5Q29u
c3VtZXIoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5jcHAJKHJldmlzaW9uIDIyMTc5
NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCB2b2lkIEZldGNoQm9keVNvdXJjZTo6Y2xv
c2UoKQogICAgIGNvbnRyb2xsZXIoKS5jbG9zZSgpOwogICAgIGNsZWFuKCk7CiB9CisKIHZvaWQg
RmV0Y2hCb2R5U291cmNlOjplcnJvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGNvbnRy
b2xsZXIoKS5lcnJvcih2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoSGVhZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hIZWFkZXJzLmgJKHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZmlsdGVyQW5kRmlsbChjb25zdCBIVFRQSGVhZGVyTWFwJiwg
R3VhcmQpOwogCiAgICAgU3RyaW5nIGZhc3RHZXQoSFRUUEhlYWRlck5hbWUgbmFtZSkgY29uc3Qg
eyByZXR1cm4gbV9oZWFkZXJzLmdldChuYW1lKTsgfQorICAgIGJvb2wgZmFzdEhhcyhIVFRQSGVh
ZGVyTmFtZSBuYW1lKSBjb25zdCB7IHJldHVybiBtX2hlYWRlcnMuY29udGFpbnMobmFtZSk7IH0K
ICAgICB2b2lkIGZhc3RTZXQoSFRUUEhlYWRlck5hbWUgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkgeyBtX2hlYWRlcnMuc2V0KG5hbWUsIHZhbHVlKTsgfQogCiAgICAgY2xhc3MgSXRlcmF0b3Ig
ewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlk
bAkocmV2aXNpb24gMjIxNzk0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEhlYWRlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw2IEBAIHR5cGVkZWYgKHNl
cXVlbmNlPHNlcXVlbmNlPEJ5dGVTdHJpbmc+PiAKICAgICBJbnRlcmZhY2VOYW1lPUhlYWRlcnMs
CiAgICAgQ29uc3RydWN0b3Iob3B0aW9uYWwgSGVhZGVyc0luaXQgaW5pdCksCiAgICAgQ29uc3Ry
dWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKLSAgICBQcml2YXRlSWRlbnRpZmllciwKLSAgICBQdWJs
aWNJZGVudGlmaWVyLAogXSBpbnRlcmZhY2UgRmV0Y2hIZWFkZXJzIHsKICAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgYXBwZW5kKEJ5dGVTdHJpbmcgbmFtZSwgQnl0ZVN0cmluZyB2YWx1ZSk7
CiAgICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPXJlbW92ZV0gdm9pZCBkZWxl
dGUoQnl0ZVN0cmluZyBuYW1lKTsKQEAgLTQ1LDcgKzQzLDQgQEAgdHlwZWRlZiAoc2VxdWVuY2U8
c2VxdWVuY2U8Qnl0ZVN0cmluZz4+IAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXQo
Qnl0ZVN0cmluZyBuYW1lLCBCeXRlU3RyaW5nIHZhbHVlKTsKIAogICAgIGl0ZXJhYmxlPEJ5dGVT
dHJpbmcsIEJ5dGVTdHJpbmc+OwotCi0gICAgW0ltcGxlbWVudGVkQXM9YXBwZW5kLCBNYXlUaHJv
d0V4Y2VwdGlvbiwgUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgYXBwZW5kRnJvbUpTKEJ5dGVTdHJp
bmcgbmFtZSwgQnl0ZVN0cmluZyB2YWx1ZSk7Ci0gICAgW0ltcGxlbWVudGVkQXM9ZmlsbCwgUHJp
dmF0ZUlkZW50aWZpZXJdIHZvaWQgZmlsbEZyb21KUyhGZXRjaEhlYWRlcnM/IGhlYWRlcnMpOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFs
cy5qcwkocmV2aXNpb24gMjIxNzk0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEludGVybmFscy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0vLyBAaW50ZXJuYWwKLQotZnVuY3Rpb24gZmlsbEZldGNoSGVhZGVy
cyhoZWFkZXJzLCBoZWFkZXJzSW5pdCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAo
aGVhZGVyc0luaXQgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICho
ZWFkZXJzSW5pdCBpbnN0YW5jZW9mIEBIZWFkZXJzKSB7Ci0gICAgICAgIEBIZWFkZXJzLnByb3Rv
dHlwZS5AZmlsbEZyb21KUy5AY2FsbChoZWFkZXJzLCBoZWFkZXJzSW5pdCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoQGlzQXJyYXkoaGVhZGVyc0luaXQpKSB7Ci0gICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVyc0luaXQubGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
ICAgIGxldCBoZWFkZXIgPSBoZWFkZXJzSW5pdFtpXTsKLSAgICAgICAgICAgIGlmIChoZWFkZXIu
bGVuZ3RoICE9PSAyKQotICAgICAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiaGVhZGVyc0lu
aXQgc2VxdWVuY2UgaXRlbXMgc2hvdWxkIGNvbnRhaW4gdHdvIHZhbHVlcyIpOwotICAgICAgICAg
ICAgQEhlYWRlcnMucHJvdG90eXBlLkBhcHBlbmRGcm9tSlMuQGNhbGwoaGVhZGVycywgaGVhZGVy
WzBdLCBoZWFkZXJbMV0pOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0K
LQotICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlOYW1lcyho
ZWFkZXJzSW5pdCk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIGxldCBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKLSAgICAgICAg
QEhlYWRlcnMucHJvdG90eXBlLkBhcHBlbmRGcm9tSlMuQGNhbGwoaGVhZGVycywgbmFtZSwgaGVh
ZGVyc0luaXRbbmFtZV0pOwotICAgIH0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAkocmV2aXNpb24gMjIxNzk0KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNiArNDIsODEgQEAgc3RhdGljIGlubGluZSBib29sIGlzUmVkaXJlY3RTdGF0dXMoaW50
IAogICAgIHJldHVybiBzdGF0dXMgPT0gMzAxIHx8IHN0YXR1cyA9PSAzMDIgfHwgc3RhdHVzID09
IDMwMyB8fCBzdGF0dXMgPT0gMzA3IHx8IHN0YXR1cyA9PSAzMDg7CiB9CiAKKy8vIGh0dHBzOi8v
ZmV0Y2guc3BlYy53aGF0d2cub3JnLyNudWxsLWJvZHktc3RhdHVzCitzdGF0aWMgaW5saW5lIGJv
b2wgaXNOdWxsQm9keVN0YXR1cyhpbnQgc3RhdHVzKQoreworICAgIHJldHVybiBzdGF0dXMgPT0g
MTAxIHx8IHN0YXR1cyA9PSAyMDQgfHwgc3RhdHVzID09IDIwNSB8fCBzdGF0dXMgPT0gMzA0Owor
fQorCitFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IEZldGNoUmVzcG9uc2U6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9k
eTo6SW5pdD4mJiBib2R5LCBJbml0JiYgaW5pdCkKK3sKKyAgICAvLyAxLiBJZiBpbml04oCZcyBz
dGF0dXMgbWVtYmVyIGlzIG5vdCBpbiB0aGUgcmFuZ2UgMjAwIHRvIDU5OSwgaW5jbHVzaXZlLCB0
aGVuIHRocm93IGEgUmFuZ2VFcnJvci4KKyAgICBpZiAoaW5pdC5zdGF0dXMgPCAyMDAgIHx8IGlu
aXQuc3RhdHVzID4gNTk5KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwg
QVNDSUlMaXRlcmFsKCJTdGF0dXMgbXVzdCBiZSBiZXR3ZWVuIDIwMCBhbmQgNTk5IikgfTsKKwor
ICAgIC8vIDIuIElmIGluaXTigJlzIHN0YXR1c1RleHQgbWVtYmVyIGRvZXMgbm90IG1hdGNoIHRo
ZSByZWFzb24tcGhyYXNlIHRva2VuIHByb2R1Y3Rpb24sIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3Iu
CisgICAgaWYgKCFpc1ZhbGlkUmVhc29uUGhyYXNlKGluaXQuc3RhdHVzVGV4dCkpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiU3RhdHVzIHRleHQg
bXVzdCBiZSBhIHZhbGlkIHJlYXNvbi1waHJhc2UuIikgfTsKKworICAgIC8vIDMuIExldCByIGJl
IGEgbmV3IFJlc3BvbnNlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggYSBuZXcgcmVzcG9uc2UuCisg
ICAgLy8gTk9URTogQ3JlYXRpb24gb2YgdGhlIFJlc3BvbnNlIG9iamVjdCBpcyBkZWxheWVkIHVu
dGlsIGFsbCBwb3RlbnRpYWwgZXhjZXB0aW9uYWwgY2FzZXMgYXJlIGhhbmRsZWQuCisgICAgCisg
ICAgLy8gNC4gU2V0IHLigJlzIGhlYWRlcnMgdG8gYSBuZXcgSGVhZGVycyBvYmplY3QsIHdob3Nl
IGhlYWRlciBsaXN0IGlzIHLigJlzIHJlc3BvbnNl4oCZcyBoZWFkZXIgbGlzdCwgYW5kIGd1YXJk
IGlzICJyZXNwb25zZSIuCisgICAgYXV0byBoZWFkZXJzID0gRmV0Y2hIZWFkZXJzOjpjcmVhdGUo
RmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UpOworCisgICAgLy8gNS4gU2V0IHLigJlzIHJl
c3BvbnNl4oCZcyBzdGF0dXMgdG8gaW5pdOKAmXMgc3RhdHVzIG1lbWJlci4KKyAgICBhdXRvIHN0
YXR1cyA9IGluaXQuc3RhdHVzOworICAgIAorICAgIC8vIDYuIFNldCBy4oCZcyByZXNwb25zZeKA
mXMgc3RhdHVzIG1lc3NhZ2UgdG8gaW5pdOKAmXMgc3RhdHVzVGV4dCBtZW1iZXIuCisgICAgYXV0
byBzdGF0dXNUZXh0ID0gaW5pdC5zdGF0dXNUZXh0OworICAgIAorICAgIC8vIDcuIElmIGluaXTi
gJlzIGhlYWRlcnMgbWVtYmVyIGlzIHByZXNlbnQsIHRoZW4gZmlsbCBy4oCZcyBoZWFkZXJzIHdp
dGggaW5pdOKAmXMgaGVhZGVycyBtZW1iZXIuCisgICAgaWYgKGluaXQuaGVhZGVycykgeworICAg
ICAgICBhdXRvIHJlc3VsdCA9IGhlYWRlcnMtPmZpbGwoKmluaXQuaGVhZGVycyk7CisgICAgICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4g
ZXh0cmFjdGVkQm9keTsKKworICAgIC8vIDguIElmIGJvZHkgaXMgbm9uLW51bGwsIHJ1biB0aGVz
ZSBzdWJzdGVwczoKKyAgICBpZiAoYm9keSkgeworICAgICAgICAvLyA4LjEgSWYgaW5pdOKAmXMg
c3RhdHVzIG1lbWJlciBpcyBhIG51bGwgYm9keSBzdGF0dXMsIHRoZW4gdGhyb3cgYSBUeXBlRXJy
b3IuCisgICAgICAgIC8vICAgICAoTk9URTogMTAxIGlzIGluY2x1ZGVkIGluIG51bGwgYm9keSBz
dGF0dXMgZHVlIHRvIGl0cyB1c2UgZWxzZXdoZXJlLiBJdCBkb2VzIG5vdCBhZmZlY3QgdGhpcyBz
dGVwLikKKyAgICAgICAgaWYgKGlzTnVsbEJvZHlTdGF0dXMoaW5pdC5zdGF0dXMpKQorICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZXNwb25z
ZSBjYW5ub3QgaGF2ZSBhIGJvZHkgd2l0aCB0aGUgZ2l2ZW4gc3RhdHVzLiIpIH07CisKKyAgICAg
ICAgLy8gOC4yIExldCBDb250ZW50LVR5cGUgYmUgbnVsbC4KKyAgICAgICAgU3RyaW5nIGNvbnRl
bnRUeXBlOworCisgICAgICAgIC8vIDguMyBTZXQgcuKAmXMgcmVzcG9uc2XigJlzIGJvZHkgYW5k
IENvbnRlbnQtVHlwZSB0byB0aGUgcmVzdWx0IG9mIGV4dHJhY3RpbmcgYm9keS4KKyAgICAgICAg
ZXh0cmFjdGVkQm9keSA9IEZldGNoQm9keTo6ZXh0cmFjdChjb250ZXh0LCBXVEZNb3ZlKCpib2R5
KSwgY29udGVudFR5cGUpOworCisgICAgICAgIC8vIDguNCBJZiBDb250ZW50LVR5cGUgaXMgbm9u
LW51bGwgYW5kIHLigJlzIHJlc3BvbnNl4oCZcyBoZWFkZXIgbGlzdCBkb2VzIG5vdCBjb250YWlu
IGBDb250ZW50LVR5cGVgLCB0aGVuIGFwcGVuZAorICAgICAgICAvLyAgICAgYENvbnRlbnQtVHlw
ZWAvQ29udGVudC1UeXBlIHRvIHLigJlzIHJlc3BvbnNl4oCZcyBoZWFkZXIgbGlzdC4KKyAgICAg
ICAgaWYgKCFjb250ZW50VHlwZS5pc051bGwoKSAmJiAhaGVhZGVycy0+ZmFzdEhhcyhIVFRQSGVh
ZGVyTmFtZTo6Q29udGVudFR5cGUpKQorICAgICAgICAgICAgaGVhZGVycy0+ZmFzdFNldChIVFRQ
SGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlKTsKKyAgICB9CisKKyAgICAvLyA5
LiBTZXQgcuKAmXMgTUlNRSB0eXBlIHRvIHRoZSByZXN1bHQgb2YgZXh0cmFjdGluZyBhIE1JTUUg
dHlwZSBmcm9tIHLigJlzIHJlc3BvbnNl4oCZcyBoZWFkZXIgbGlzdC4KKyAgICBhdXRvIGNvbnRl
bnRUeXBlID0gaGVhZGVycy0+ZmFzdEdldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpOwor
CisgICAgLy8gMTAuIFNldCBy4oCZcyByZXNwb25zZeKAmXMgSFRUUFMgc3RhdGUgdG8gY3VycmVu
dCBzZXR0aW5ncyBvYmplY3TigJlzIEhUVFBTIHN0YXRlLgorICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQuCisKKyAgICAvLyAxMS4gUmVzb2x2ZSBy4oCZcyB0cmFpbGVyIHByb21pc2Ugd2l0aCBhIG5l
dyBIZWFkZXJzIG9iamVjdCB3aG9zZSBndWFyZCBpcyAiaW1tdXRhYmxlIi4KKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50LgorICAgIAorICAgIC8vIDEyLiBSZXR1cm4gci4KKyAgICBhdXRvIHIgPSBh
ZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgV1RGTW92ZShleHRyYWN0ZWRCb2R5
KSwgV1RGTW92ZShoZWFkZXJzKSwgeyB9KSk7CisKKyAgICByLT5tX2NvbnRlbnRUeXBlID0gY29u
dGVudFR5cGU7CisgICAgci0+bV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOwor
ICAgIHItPm1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoc3RhdHVzVGV4dCk7CisKKyAgICBy
ZXR1cm4gV1RGTW92ZShyKTsKK30KKwogUmVmPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6
OmVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgYXV0byByZXNw
b25zZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCB7IH0sIEZldGNoSGVh
ZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIHsgfSkpOwpAQCAt
NjMsMjIgKzEzOCw2IEBAIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gRmV0Y2hSZXMK
ICAgICByZXR1cm4gV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKTsKIH0KIAotRXhjZXB0aW9uT3I8
dm9pZD4gRmV0Y2hSZXNwb25zZTo6c2V0U3RhdHVzKGludCBzdGF0dXMsIGNvbnN0IFN0cmluZyYg
c3RhdHVzVGV4dCkKLXsKLSAgICBpZiAoIWlzVmFsaWRSZWFzb25QaHJhc2Uoc3RhdHVzVGV4dCkp
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKLSAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNDb2RlKHN0YXR1cyk7Ci0gICAgbV9yZXNwb25zZS5zZXRIVFRQU3RhdHVz
VGV4dChzdGF0dXNUZXh0KTsKLSAgICByZXR1cm4geyB9OwotfQotCi12b2lkIEZldGNoUmVzcG9u
c2U6OmluaXRpYWxpemVXaXRoKEZldGNoQm9keTo6SW5pdCYmIGJvZHkpCi17Ci0gICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgZXh0cmFjdEJvZHkoKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgV1RGTW92ZShib2R5KSk7Ci0gICAgdXBkYXRlQ29udGVudFR5cGUoKTsK
LX0KLQogRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFk
ZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKICAgICA6IEZldGNo
Qm9keU93bmVyKGNvbnRleHQsIFdURk1vdmUoYm9keSksIFdURk1vdmUoaGVhZGVycykpCiAgICAg
LCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQpAQCAtMjY3LDE1ICszMjYsMjAgQEAgdm9p
ZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keVdoZW5Mb2FkZQogCiB2b2lkIEZldGNoUmVzcG9u
c2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmIGRhdGEpCiB7Ci0gICAgV1RGOjpzd2l0Y2hP
bihkYXRhLCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKLSAgICAgICAgaWYgKGlz
Qm9keU51bGwoKSkKLSAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKLSAgICAgICAgYm9keSgpLnNl
dEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCi0gICAgICAgICAg
ICBzZXRCb2R5KHsgfSk7Ci0gICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92
ZShidWZmZXIpKTsKLSAgICB9LCBbXShzdGQ6Om51bGxwdHJfdCYpIHsgfSk7CisgICAgV1RGOjpz
d2l0Y2hPbihkYXRhLAorICAgICAgICBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
KyAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCisgICAgICAgICAgICAgICAgc2V0Qm9keSh7
IH0pOworICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkp
OworICAgICAgICB9LAorICAgICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
eworICAgICAgICAgICAgaWYgKGlzQm9keU51bGwoKSkKKyAgICAgICAgICAgICAgICBzZXRCb2R5
KHsgfSk7CisgICAgICAgICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgICAgIH0sCisgICAgICAgIFtdKHN0ZDo6bnVsbHB0cl90JikgeworICAgICAg
ICB9CisgICAgKTsKIH0KIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCShyZXZpc2lvbiAyMjE3OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsMTIgKzUzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgc3RkOjpvcHRpb25h
bDxGZXRjaEhlYWRlcnM6OkluaXQ+IGhlYWRlcnM7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8
RmV0Y2hSZXNwb25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBzdGQ6Om51bGxvcHQs
IEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlKSwgUmVz
b3VyY2VSZXNwb25zZSgpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJl
ZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CisKKyAgICBzdGF0aWMgRXhj
ZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYmLCBJbml0JiYpOwogICAgIHN0YXRp
YyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IHJlZGlyZWN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IHN0YXR1cyk7CiAKLSAgICBz
dGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJz
PiYmIGhlYWRlcnMsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIFdURk1vdmUoYm9keSksIFdURk1vdmUoaGVh
ZGVycyksIFdURk1vdmUocmVzcG9uc2UpKSk7IH0KLQogICAgIHVzaW5nIE5vdGlmaWNhdGlvbkNh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPEZldGNoUmVzcG9uc2UmPiYm
KT47CiAgICAgc3RhdGljIHZvaWQgZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZldGNo
UmVxdWVzdCYsIE5vdGlmaWNhdGlvbkNhbGxiYWNrJiYpOwogCkBAIC02OCw5ICs2OCw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZpbmlzaENvbnN1bWluZ1N0cmVhbShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKICNlbmRpZgogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0U3RhdHVzKGludCBzdGF0
dXMsIGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCk7Ci0gICAgdm9pZCBpbml0aWFsaXplV2l0aChG
ZXRjaEJvZHk6OkluaXQmJik7Ci0KICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3BvbnNlLnR5cGUoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3Q7CiAgICAgYm9v
bCByZWRpcmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5pc1JlZGlyZWN0ZWQoKTsg
fQpAQCAtMTQzLDQgKzE0MCw5IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9yZXNw
b25zZVVSTDsKIH07CiAKK2lubGluZSBSZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8RmV0
Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9u
c2UoY29udGV4dCwgV1RGTW92ZShib2R5KSwgV1RGTW92ZShoZWFkZXJzKSwgV1RGTW92ZShyZXNw
b25zZSkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCShyZXZpc2lvbiAyMjE3OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTIgQEAgZGljdGlvbmFyeSBGZXRjaFJlc3BvbnNlSW5p
dCB7CiAKIFsKICAgICBBY3RpdmVET01PYmplY3QsCisgICAgQ29uc3RydWN0b3Iob3B0aW9uYWwg
Qm9keUluaXQ/IGJvZHkgPSBudWxsLCBvcHRpb25hbCBGZXRjaFJlc3BvbnNlSW5pdCBpbml0KSwK
ICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgQ29u
c3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKICAgICBFbmFibGVkQXRSdW50aW1lPUZldGNoQVBJ
LAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEludGVyZmFjZU5hbWU9UmVzcG9u
c2UsCi0gICAgSlNCdWlsdGluQ29uc3RydWN0b3IsCi0gICAgLy8gQ29uc3RydWN0b3Iob3B0aW9u
YWwgQm9keUluaXQ/IGJvZHkgPSBudWxsLCBvcHRpb25hbCBGZXRjaFJlc3BvbnNlSW5pdCBpbml0
KQogXSBpbnRlcmZhY2UgRmV0Y2hSZXNwb25zZSB7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIE5ld09iamVjdF0gc3RhdGljIEZldGNoUmVzcG9uc2UgZXJyb3IoKTsKICAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb24sIE5l
d09iamVjdF0gc3RhdGljIEZldGNoUmVzcG9uc2UgcmVkaXJlY3QoVVNWU3RyaW5nIHVybCwgb3B0
aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsKQEAgLTYxLDkgKzYxLDYgQEAgZGlj
dGlvbmFyeSBGZXRjaFJlc3BvbnNlSW5pdCB7CiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFBy
b21pc2U8SGVhZGVycz4gdHJhaWxlcjsKIAogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBGZXRjaFJlc3BvbnNlIGNsb25l
KCk7Ci0KLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIFByaXZhdGVJZGVudGlmaWVyXSB2b2lkIHNl
dFN0YXR1cyh1bnNpZ25lZCBzaG9ydCBzdGF0dXMsIERPTVN0cmluZyBzdGF0dXNUZXh0KTsKLSAg
ICBbUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgaW5pdGlhbGl6ZVdpdGgoQm9keUluaXQgYm9keSk7
CiB9OwogCiBGZXRjaFJlc3BvbnNlIGltcGxlbWVudHMgRmV0Y2hCb2R5OwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcwkocmV2aXNpb24gMjIx
Nzk0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCShu
b25leGlzdGVudCkKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBD
YW5vbiBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBD
QU5PTiBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1
bmN0aW9uIGluaXRpYWxpemVGZXRjaFJlc3BvbnNlKGJvZHksIGluaXQpCi17Ci0gICAgInVzZSBz
dHJpY3QiOwotCi0gICAgaWYgKGluaXQgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIGluaXQgPSB7
IH07Ci0gICAgZWxzZSBpZiAoIUBpc09iamVjdChpbml0KSkKLSAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJSZXNwb25zZSBpbml0IG11c3QgYmUgYW4gb2JqZWN0Iik7Ci0KLSAgICBsZXQgc3RhdHVz
ID0gKGluaXQuc3RhdHVzICE9PSBAdW5kZWZpbmVkKSA/IEB0b051bWJlcihpbml0LnN0YXR1cykg
OiAyMDA7Ci0gICAgaWYgKHN0YXR1cyA8IDIwMCAgfHwgc3RhdHVzID4gNTk5KQotICAgICAgICBA
dGhyb3dSYW5nZUVycm9yKCJTdGF0dXMgbXVzdCBiZSBiZXR3ZWVuIDIwMCBhbmQgNTk5Iik7Ci0K
LSAgICBsZXQgc3RhdHVzVGV4dCA9IChpbml0LnN0YXR1c1RleHQgIT09IEB1bmRlZmluZWQpID8g
aW5pdC5zdGF0dXNUZXh0IDogIk9LIjsKLQotICAgIHRoaXMuQHNldFN0YXR1cyhzdGF0dXMsIHN0
YXR1c1RleHQpOwotCi0gICAgaWYgKGluaXQuaGVhZGVycyAhPT0gQHVuZGVmaW5lZCkKLSAgICAg
ICAgQGZpbGxGZXRjaEhlYWRlcnModGhpcy5oZWFkZXJzLCBpbml0LmhlYWRlcnMpOwotCi0gICAg
aWYgKGJvZHkgIT09IEB1bmRlZmluZWQgJiYgYm9keSAhPT0gbnVsbCkgewotICAgICAgICBpZiAo
c3RhdHVzID09PSAxMDEgfHwgc3RhdHVzID09PSAyMDQgfHwgc3RhdHVzID09PSAyMDUgfHwgc3Rh
dHVzID09PSAzMDQpCi0gICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlc3BvbnNlIGNhbm5v
dCBoYXZlIGEgYm9keSB3aXRoIHRoZSBnaXZlbiBzdGF0dXMiKTsKLQotICAgICAgICB0aGlzLkBp
bml0aWFsaXplV2l0aChib2R5KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhpczsKLX0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTcxOCw3ICsxNzE4LDYgQEAKIAkJNDE2
RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3
RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsgfTsKIAkJNDE2RTZGRTgxQkJEMTJE
RjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3
NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEz
RjY1IC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0REEgLyog
SlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwMjMgLyogRmV0
Y2hJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEI5IC8qIEZldGNoSW50ZXJuYWxzQnVp
bHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwMzMgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJC
MzExMEQwMEI3NjRDOSAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBB
NjA0MyAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjcz
RjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAw
MEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRF
OSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0MTcsNyArOTQxNiw2IEBACiAJCTQx
MzAxNUQ2MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDEzMDE1RDYxQzdCNTcwNDAwMDkxQzZGIC8qIEZldGNoQm9keVNvdXJjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEJvZHlTb3VyY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDE1RDcxQzdCNTcwNDAwMDkxQzZFIC8qIEZldGNo
UmVzcG9uc2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZldGNoUmVzcG9uc2UuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTMwMTVEODFDN0I1NzA0MDAwOTFDNkUgLyog
RmV0Y2hSZXNwb25zZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IEZldGNoUmVzcG9uc2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzgwQzIw
MUYzNDM2OEEwMDE1NUZEQSAvKiBET01DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBET01D
YWNoZS5jcHA7IHBhdGggPSBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OwogCQk0MTM4MEMyMTFGMzQzNjhEMDAxNTVGREEgLyogQ2FjaGVTdG9y
YWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENhY2hlU3RvcmFnZS5jcHA7IHBhdGggPSBNb2R1
bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJNDEzODBDMjIxRjM0MzY5MDAwMTU1RkRBIC8qIENhY2hlU3RvcmFnZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDYWNoZVN0b3JhZ2UuaDsgcGF0aCA9IE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmg7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTk1MzQsNyArOTUzMiw2IEBACiAJCTQx
Q0FENzFEMUVBMDkwNTcwMDE3ODE2NCAvKiBWaWRlb1Rvb2xCb3hFbmNvZGVyRmFjdG9yeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBWaWRlb1Rvb2xCb3hFbmNvZGVyRmFjdG9y
eS5oOyBwYXRoID0gbGlid2VicnRjL1ZpZGVvVG9vbEJveEVuY29kZXJGYWN0b3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQ0Y4QkU0MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRj
aEJvZHlDb25zdW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
ZXRjaEJvZHlDb25zdW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQ0Y4
QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MUNGOEJFNjFENDYyMjJDMDA3MDdEQzkgLyogRmV0Y2hJbnRlcm5hbHMu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBGZXRjaEludGVybmFs
cy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1QzgwRjRCNUM3MTAwNEE2
NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDAxNUM5MEY0QjVD
NzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb250ZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRDEyOUM5MUYzRDBFRTMwMEQxNUU0NyAvKiBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI2MzgsNyArMTI2MzUsNiBA
QAogCQk5OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0YWJsZVN0cmVhbUJ1
aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkExQkNBRDA3
RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OTA4QjBGQjFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ckJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNDUgLyogRmV0Y2hJbnRlcm5hbHNCdWlsdGlucy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGZXRjaEludGVybmFsc0J1
aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkQxQkNBRDA3
RDAwRUQwRjU1IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEZEMUJDQUQwN0QwMEVEMEY2NiAvKiBKU0RPTUJp
bmRpbmdJbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMjY1OCw3ICsxMjY1NCw2IEBACiAJCTlBQjFGMzdFMThFMjQ4OUEw
MDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUFCMUYzN0YxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5h
bHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZUJ5
dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0QjkgLyogRmV0Y2hJbnRlcm5hbHNCdWlsdGlucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEludGVybmFsc0J1aWx0aW5zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRDOSAv
KiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRE
OSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTI2LDcgKzE4MTIxLDYgQEAKIAkJCQk0MUY1NEY4
MjFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmNwcCAqLywKIAkJCQk0MUY1NEY4MzFD
NTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmggKi8sCiAJCQkJNDFGNTRGODQxQzUwQzRG
NjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5pZGwgKi8sCi0JCQkJNDFDRjhCRTYxRDQ2MjIyQzAw
NzA3REM5IC8qIEZldGNoSW50ZXJuYWxzLmpzICovLAogCQkJCTQxNDdFMkI0MUM4OTkxMjYwMEE3
RTcxNSAvKiBGZXRjaExvYWRlci5jcHAgKi8sCiAJCQkJNDE0N0UyQjUxQzg5OTEyNjAwQTdFNzE1
IC8qIEZldGNoTG9hZGVyLmggKi8sCiAJCQkJNDE0N0UyQjYxQzg5OTEyNjAwQTdFNzE1IC8qIEZl
dGNoTG9hZGVyQ2xpZW50LmggKi8sCkBAIC0xODE0OCw3ICsxODE0Miw2IEBACiAJCQkJNDEzMDE1
RDUxQzdCNTcwNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9uc2UuY3BwICovLAogCQkJCTQxMzAxNUQ2
MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmggKi8sCiAJCQkJNDEzMDE1RDcxQzdC
NTcwNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9uc2UuaWRsICovLAotCQkJCTQxMzAxNUQ4MUM3QjU3
MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmpzICovLAogCQkJCTQxOEMzOTU3MUM4REQ2OTYw
MDUxQzhBMyAvKiBXb3JrZXJHbG9iYWxTY29wZUZldGNoLmNwcCAqLywKIAkJCQk0MThDMzk1ODFD
OERENjk2MDA1MUM4QTMgLyogV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5oICovLAogCQkJCTQxOEMz
OTU5MUM4REQ2OTYwMDUxQzhBMyAvKiBXb3JrZXJHbG9iYWxTY29wZUZldGNoLmlkbCAqLywKQEAg
LTE5MjA0LDggKzE5MTk3LDYgQEAKIAkJCQk5NzBCNzI4OTE0NEZGQUM2MDBGMDBBMzcgLyogRXZl
bnRJbnRlcmZhY2VzLmggKi8sCiAJCQkJOTdBQTNDQTMxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50
VGFyZ2V0SGVhZGVycy5oICovLAogCQkJCTk3QUEzQ0E0MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVu
dFRhcmdldEludGVyZmFjZXMuaCAqLywKLQkJCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNDUgLyog
RmV0Y2hJbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8sCi0JCQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2
NEI5IC8qIEZldGNoSW50ZXJuYWxzQnVpbHRpbnMuaCAqLywKIAkJCQlBMTdDODEyMDBGMkE1Q0Y3
MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLywKIAkJCQlBMTdDODEyMTBGMkE1
Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggKi8sCiAJCQkJQjU2MkRCNUUxN0Qz
Q0Q1NjAwMTBBRjk2IC8qIEhUTUxFbGVtZW50VHlwZUhlbHBlcnMuaCAqLywKQEAgLTI3NzExLDcg
KzI3NzAyLDYgQEAKIAkJCQk4NDczMEQ4OTEyNDhGMEIzMDBEM0E5QzkgLyogRkVTcGVjdWxhckxp
Z2h0aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5Qzk5NzFGNTlCOTYzMDA5RDc0MDMgLyog
RmV0Y2hCb2R5U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUQxMjlEQjFGM0QxNDM4MDBE
MTVFNDcgLyogRmV0Y2hIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTZFNkZFODFCQkQx
MkRGMDAwQTYwMjMgLyogRmV0Y2hJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFBRDc1M0ExQ0VGNkJEMTAwQTMxNDg2IC8qIEZldGNoT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0NFMTkxNEQxRjJBOUFGQjAwMjcyRjc4IC8qIEZldGNoUmVmZXJyZXJQb2xpY3ku
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5MTVBMUYyQTlCMzQwMDI3MkY3OCAvKiBGZXRjaFJl
cXVlc3RDYWNoZS5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320319</attachid>
            <date>2017-09-08 17:42:47 -0700</date>
            <delta_ts>2017-09-08 20:33:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176627-20170908174247.patch</filename>
            <type>text/plain</type>
            <size>31456</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTc5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE3LTA5LTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBKUyBidWlsdGluIGltcGxl
bWVudGF0aW9uIG9mIHRoZSBGZXRjaFJlc3BvbnNlIGNvbnN0cnVjdG9yIHdpdGggYSBDKysgb25l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY2MjcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVz
IHRoZSBsYXN0IG9mIHRoZSBGZXRjaCByZWxhdGVkIEpTIGJ1aWx0aW4gY29kZS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanM6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmpzOiBSZW1vdmVkLgorICAgICAgICAKKyAgICAgICAgICAgIFJl
bW92ZSBGZXRjaEludGVybmFscy5qcyBhbmQgRmV0Y2hSZXNwb25zZS5qcy4KKworCisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuaDoKKworICAgICAgICAgICAgUmVtb3ZlIG5vIGxvbmdlciBjb3Jy
ZWN0IEZJWE1Fcy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNlLmNw
cDoKKworICAgICAgICAgICAgQWRkIG1pc3NpbmcgbmV3bGluZSBiZXR3ZWVuIGZ1bmN0aW9ucy4K
KworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsOgorCisgICAgICAgICAgICBSZW1vdmUgYnVp
bHRpbiByZWxhdGVkIG9wZXJhdGlvbnMgYW5kIGV4dGVuZGVkIGF0dHJpYnV0ZXMuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hIZWFkZXJzOjpmYXN0SGFzIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
SGVhZGVycy5jcHA6CisKKyAgICAgICAgICAgIEFkZGVkIGZhc3RIYXMgdG8gYWxsb3cgY2hlY2tp
bmcgZm9yIGEgaGVhZGVyIHVzaW5nIGEgSFRUUEhlYWRlck5hbWUuIFJlbW92ZQorICAgICAgICAg
ICAgbm93IHVudXNlZCBmaWx0ZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNOdWxsQm9keVN0YXR1cyk6
CisKKyAgICAgICAgICAgIEFkZGVkIGhlbHBlciBwcmVkaWNhdGUgZm9yICdudWxsIGJvZHkgc3Rh
dHVzJyBjb25jZXB0LgorCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjcmVhdGUp
OgorCisgICAgICAgICAgICBBZGQgc3BlYyBkZWZpbmVkIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0
aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YSk6CisK
KyAgICAgICAgICAgIFJlZm9ybWF0dGVkIHRvIG1hdGNoIG1vcmUgY29tbW9uIFdURjo6c3dpdGNo
T24gc3R5bGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldFN0YXR1cyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjppbml0aWFsaXplV2l0
aCk6IERlbGV0ZWQuCisKKyAgICAgICAgICAgIFJlbW92ZWQgbm93IHVudXNlZCBmdW5jdGlvbnMu
CisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OmNyZWF0ZSk6CisKKyAgICAgICAgICAgIE1vdmUgaW5saW5l
IGNyZWF0ZSBvdXQgb2YgdGhlIGNsYXNzIGRlZmluaXRpb24gdG8gbWFrZSB0aGluZ3MgYSBiaXQg
bGVzcyBjcm93ZGVkLgorCiAyMDE3LTA5LTA4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIxNzczLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zODk3LDggKzM4OTcsNiBAQCBh
ZGRfZGVwZW5kZW5jaWVzKFdlYkNvcmVUZXN0U3VwcG9ydEJpbmRpCiAjIFdlYkNvcmUgSlMgQnVp
bHRpbnMKIAogc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUwotICAgICR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMKLSAgICAke1dFQkNPUkVfRElSfS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMKICAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uanMKICAgICAke1dFQkNPUkVfRElSfS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzLmpzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE0NTQsOCArMTQ1
NCw2IEBAIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggOiBDb21tYW5kTGkKICMgV2ViQ29y
ZSBKUyBCdWlsdGlucwogCiBXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpzIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYS5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmpzIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHMuanMgXApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmlkbAkocmV2aXNpb24gMjIxNzk0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAgICAgSW50ZXJmYWNlTmFtZT1Cb2R5LAogICAgIE5v
SW50ZXJmYWNlT2JqZWN0CiBdIGludGVyZmFjZSBGZXRjaEJvZHkgewotICAgIC8vIEZJTVhFOiBB
ZGQgbWlzc2luZyBib2R5IGF0dHJpYnV0ZS4KICAgICBbSW1wbGVtZW50ZWRBcz1yZWFkYWJsZVN0
cmVhbSwgQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0
cmVhbT8gYm9keTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBib2R5VXNlZDsKICAg
ICBbTmV3T2JqZWN0XSBQcm9taXNlPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlcigpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAko
cmV2aXNpb24gMjIxNzk0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIGNsYXNzIFJlYWRh
YmxlU3RyZWFtOwogCiBjbGFzcyBGZXRjaEJvZHlDb25zdW1lciB7CiBwdWJsaWM6Ci0gICAgLy8g
VHlwZSBpcyB1c2VkIGluIEZldGNoUmVzcG9uc2UuanMgYW5kIHNob3VsZCBiZSBrZXB0IHN5bmNo
cm9uaXplZCB3aXRoIGl0LgogICAgIGVudW0gY2xhc3MgVHlwZSB7IE5vbmUsIEFycmF5QnVmZmVy
LCBCbG9iLCBKU09OLCBUZXh0IH07CiAKICAgICBGZXRjaEJvZHlDb25zdW1lcihUeXBlIHR5cGUp
IDogbV90eXBlKHR5cGUpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5U291cmNlLmNwcAkocmV2aXNpb24gMjIxNzk0KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OSw2ICs2OSw3IEBAIHZvaWQgRmV0Y2hCb2R5U291cmNlOjpjbG9zZSgpCiAgICAgY29udHJv
bGxlcigpLmNsb3NlKCk7CiAgICAgY2xlYW4oKTsKIH0KKwogdm9pZCBGZXRjaEJvZHlTb3VyY2U6
OmVycm9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgY29udHJvbGxlcigpLmVycm9yKHZh
bHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVy
cy5jcHAJKHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hIZWFkZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDE0ICsxNjksNiBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBGZXRjaEhlYWRlcnM6OnNldChjb25zCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotdm9pZCBGZXRjaEhlYWRlcnM6OmZpbGwoY29uc3QgRmV0Y2hIZWFkZXJzKiBoZWFkZXJzKQot
ewotICAgIEFTU0VSVChtX2d1YXJkICE9IEd1YXJkOjpJbW11dGFibGUpOwotICAgIGlmICghaGVh
ZGVycykKLSAgICAgICAgcmV0dXJuOwotICAgIGZpbHRlckFuZEZpbGwoaGVhZGVycy0+bV9oZWFk
ZXJzLCBtX2d1YXJkKTsKLX0KLQogdm9pZCBGZXRjaEhlYWRlcnM6OmZpbHRlckFuZEZpbGwoY29u
c3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgR3VhcmQgZ3VhcmQpCiB7CiAgICAgZm9yIChhdXRv
JiBoZWFkZXIgOiBoZWFkZXJzKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoSGVhZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hIZWFkZXJzLmgJKHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDExICs2MSwx
MCBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBmaWxsKGNvbnN0IEluaXQmKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBmaWxsKGNvbnN0IEZldGNoSGVhZGVycyYpOwotCi0gICAg
dm9pZCBmaWxsKGNvbnN0IEZldGNoSGVhZGVycyopOwogICAgIHZvaWQgZmlsdGVyQW5kRmlsbChj
b25zdCBIVFRQSGVhZGVyTWFwJiwgR3VhcmQpOwogCiAgICAgU3RyaW5nIGZhc3RHZXQoSFRUUEhl
YWRlck5hbWUgbmFtZSkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXJzLmdldChuYW1lKTsgfQorICAg
IGJvb2wgZmFzdEhhcyhIVFRQSGVhZGVyTmFtZSBuYW1lKSBjb25zdCB7IHJldHVybiBtX2hlYWRl
cnMuY29udGFpbnMobmFtZSk7IH0KICAgICB2b2lkIGZhc3RTZXQoSFRUUEhlYWRlck5hbWUgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBtX2hlYWRlcnMuc2V0KG5hbWUsIHZhbHVlKTsgfQog
CiAgICAgY2xhc3MgSXRlcmF0b3IgewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEhlYWRlcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hIZWFkZXJzLmlkbAkocmV2aXNpb24gMjIxNzk0KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4
ICszNSw2IEBAIHR5cGVkZWYgKHNlcXVlbmNlPHNlcXVlbmNlPEJ5dGVTdHJpbmc+PiAKICAgICBJ
bnRlcmZhY2VOYW1lPUhlYWRlcnMsCiAgICAgQ29uc3RydWN0b3Iob3B0aW9uYWwgSGVhZGVyc0lu
aXQgaW5pdCksCiAgICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKLSAgICBQcml2YXRl
SWRlbnRpZmllciwKLSAgICBQdWJsaWNJZGVudGlmaWVyLAogXSBpbnRlcmZhY2UgRmV0Y2hIZWFk
ZXJzIHsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYXBwZW5kKEJ5dGVTdHJpbmcgbmFt
ZSwgQnl0ZVN0cmluZyB2YWx1ZSk7CiAgICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRl
ZEFzPXJlbW92ZV0gdm9pZCBkZWxldGUoQnl0ZVN0cmluZyBuYW1lKTsKQEAgLTQ1LDcgKzQzLDQg
QEAgdHlwZWRlZiAoc2VxdWVuY2U8c2VxdWVuY2U8Qnl0ZVN0cmluZz4+IAogICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gdm9pZCBzZXQoQnl0ZVN0cmluZyBuYW1lLCBCeXRlU3RyaW5nIHZhbHVlKTsK
IAogICAgIGl0ZXJhYmxlPEJ5dGVTdHJpbmcsIEJ5dGVTdHJpbmc+OwotCi0gICAgW0ltcGxlbWVu
dGVkQXM9YXBwZW5kLCBNYXlUaHJvd0V4Y2VwdGlvbiwgUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQg
YXBwZW5kRnJvbUpTKEJ5dGVTdHJpbmcgbmFtZSwgQnl0ZVN0cmluZyB2YWx1ZSk7Ci0gICAgW0lt
cGxlbWVudGVkQXM9ZmlsbCwgUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgZmlsbEZyb21KUyhGZXRj
aEhlYWRlcnM/IGhlYWRlcnMpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hJbnRlcm5hbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEludGVybmFscy5qcwkocmV2aXNpb24gMjIxNzk0KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcwkobm9uZXhpc3RlbnQpCkBAIC0x
LDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBAaW50ZXJuYWwKLQotZnVu
Y3Rpb24gZmlsbEZldGNoSGVhZGVycyhoZWFkZXJzLCBoZWFkZXJzSW5pdCkKLXsKLSAgICAidXNl
IHN0cmljdCI7Ci0KLSAgICBpZiAoaGVhZGVyc0luaXQgPT09IEB1bmRlZmluZWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChoZWFkZXJzSW5pdCBpbnN0YW5jZW9mIEBIZWFkZXJzKSB7Ci0g
ICAgICAgIEBIZWFkZXJzLnByb3RvdHlwZS5AZmlsbEZyb21KUy5AY2FsbChoZWFkZXJzLCBoZWFk
ZXJzSW5pdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoQGlzQXJyYXkoaGVh
ZGVyc0luaXQpKSB7Ci0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVyc0luaXQubGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgICAgIGxldCBoZWFkZXIgPSBoZWFkZXJzSW5pdFtpXTsKLSAg
ICAgICAgICAgIGlmIChoZWFkZXIubGVuZ3RoICE9PSAyKQotICAgICAgICAgICAgICAgIEB0aHJv
d1R5cGVFcnJvcigiaGVhZGVyc0luaXQgc2VxdWVuY2UgaXRlbXMgc2hvdWxkIGNvbnRhaW4gdHdv
IHZhbHVlcyIpOwotICAgICAgICAgICAgQEhlYWRlcnMucHJvdG90eXBlLkBhcHBlbmRGcm9tSlMu
QGNhbGwoaGVhZGVycywgaGVhZGVyWzBdLCBoZWFkZXJbMV0pOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0aGlzOwotICAgIH0KLQotICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gQE9iamVjdC5A
Z2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzSW5pdCk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBwcm9wZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGxldCBuYW1lID0gcHJvcGVy
dHlOYW1lc1tpXTsKLSAgICAgICAgQEhlYWRlcnMucHJvdG90eXBlLkBhcHBlbmRGcm9tSlMuQGNh
bGwoaGVhZGVycywgbmFtZSwgaGVhZGVyc0luaXRbbmFtZV0pOwotICAgIH0KLX0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAkocmV2aXNp
b24gMjIxNzk0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsODEgQEAgc3RhdGljIGlubGluZSBib29s
IGlzUmVkaXJlY3RTdGF0dXMoaW50IAogICAgIHJldHVybiBzdGF0dXMgPT0gMzAxIHx8IHN0YXR1
cyA9PSAzMDIgfHwgc3RhdHVzID09IDMwMyB8fCBzdGF0dXMgPT0gMzA3IHx8IHN0YXR1cyA9PSAz
MDg7CiB9CiAKKy8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNudWxsLWJvZHktc3Rh
dHVzCitzdGF0aWMgaW5saW5lIGJvb2wgaXNOdWxsQm9keVN0YXR1cyhpbnQgc3RhdHVzKQorewor
ICAgIHJldHVybiBzdGF0dXMgPT0gMTAxIHx8IHN0YXR1cyA9PSAyMDQgfHwgc3RhdHVzID09IDIw
NSB8fCBzdGF0dXMgPT0gMzA0OworfQorCitFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+
IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBz
dGQ6Om9wdGlvbmFsPEZldGNoQm9keTo6SW5pdD4mJiBib2R5LCBJbml0JiYgaW5pdCkKK3sKKyAg
ICAvLyAxLiBJZiBpbml04oCZcyBzdGF0dXMgbWVtYmVyIGlzIG5vdCBpbiB0aGUgcmFuZ2UgMjAw
IHRvIDU5OSwgaW5jbHVzaXZlLCB0aGVuIHRocm93IGEgUmFuZ2VFcnJvci4KKyAgICBpZiAoaW5p
dC5zdGF0dXMgPCAyMDAgIHx8IGluaXQuc3RhdHVzID4gNTk5KQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgUmFuZ2VFcnJvciwgQVNDSUlMaXRlcmFsKCJTdGF0dXMgbXVzdCBiZSBiZXR3ZWVu
IDIwMCBhbmQgNTk5IikgfTsKKworICAgIC8vIDIuIElmIGluaXTigJlzIHN0YXR1c1RleHQgbWVt
YmVyIGRvZXMgbm90IG1hdGNoIHRoZSByZWFzb24tcGhyYXNlIHRva2VuIHByb2R1Y3Rpb24sIHRo
ZW4gdGhyb3cgYSBUeXBlRXJyb3IuCisgICAgaWYgKCFpc1ZhbGlkUmVhc29uUGhyYXNlKGluaXQu
c3RhdHVzVGV4dCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiU3RhdHVzIHRleHQgbXVzdCBiZSBhIHZhbGlkIHJlYXNvbi1waHJhc2UuIikgfTsK
KworICAgIC8vIDMuIExldCByIGJlIGEgbmV3IFJlc3BvbnNlIG9iamVjdCBhc3NvY2lhdGVkIHdp
dGggYSBuZXcgcmVzcG9uc2UuCisgICAgLy8gTk9URTogQ3JlYXRpb24gb2YgdGhlIFJlc3BvbnNl
IG9iamVjdCBpcyBkZWxheWVkIHVudGlsIGFsbCBwb3RlbnRpYWwgZXhjZXB0aW9uYWwgY2FzZXMg
YXJlIGhhbmRsZWQuCisgICAgCisgICAgLy8gNC4gU2V0IHLigJlzIGhlYWRlcnMgdG8gYSBuZXcg
SGVhZGVycyBvYmplY3QsIHdob3NlIGhlYWRlciBsaXN0IGlzIHLigJlzIHJlc3BvbnNl4oCZcyBo
ZWFkZXIgbGlzdCwgYW5kIGd1YXJkIGlzICJyZXNwb25zZSIuCisgICAgYXV0byBoZWFkZXJzID0g
RmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UpOworCisg
ICAgLy8gNS4gU2V0IHLigJlzIHJlc3BvbnNl4oCZcyBzdGF0dXMgdG8gaW5pdOKAmXMgc3RhdHVz
IG1lbWJlci4KKyAgICBhdXRvIHN0YXR1cyA9IGluaXQuc3RhdHVzOworICAgIAorICAgIC8vIDYu
IFNldCBy4oCZcyByZXNwb25zZeKAmXMgc3RhdHVzIG1lc3NhZ2UgdG8gaW5pdOKAmXMgc3RhdHVz
VGV4dCBtZW1iZXIuCisgICAgYXV0byBzdGF0dXNUZXh0ID0gaW5pdC5zdGF0dXNUZXh0OworICAg
IAorICAgIC8vIDcuIElmIGluaXTigJlzIGhlYWRlcnMgbWVtYmVyIGlzIHByZXNlbnQsIHRoZW4g
ZmlsbCBy4oCZcyBoZWFkZXJzIHdpdGggaW5pdOKAmXMgaGVhZGVycyBtZW1iZXIuCisgICAgaWYg
KGluaXQuaGVhZGVycykgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGhlYWRlcnMtPmZpbGwoKmlu
aXQuaGVhZGVycyk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICB9CisKKyAgICBzdGQ6
Om9wdGlvbmFsPEZldGNoQm9keT4gZXh0cmFjdGVkQm9keTsKKworICAgIC8vIDguIElmIGJvZHkg
aXMgbm9uLW51bGwsIHJ1biB0aGVzZSBzdWJzdGVwczoKKyAgICBpZiAoYm9keSkgeworICAgICAg
ICAvLyA4LjEgSWYgaW5pdOKAmXMgc3RhdHVzIG1lbWJlciBpcyBhIG51bGwgYm9keSBzdGF0dXMs
IHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuCisgICAgICAgIC8vICAgICAoTk9URTogMTAxIGlzIGlu
Y2x1ZGVkIGluIG51bGwgYm9keSBzdGF0dXMgZHVlIHRvIGl0cyB1c2UgZWxzZXdoZXJlLiBJdCBk
b2VzIG5vdCBhZmZlY3QgdGhpcyBzdGVwLikKKyAgICAgICAgaWYgKGlzTnVsbEJvZHlTdGF0dXMo
aW5pdC5zdGF0dXMpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJSZXNwb25zZSBjYW5ub3QgaGF2ZSBhIGJvZHkgd2l0aCB0aGUgZ2l2ZW4g
c3RhdHVzLiIpIH07CisKKyAgICAgICAgLy8gOC4yIExldCBDb250ZW50LVR5cGUgYmUgbnVsbC4K
KyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOworCisgICAgICAgIC8vIDguMyBTZXQgcuKAmXMg
cmVzcG9uc2XigJlzIGJvZHkgYW5kIENvbnRlbnQtVHlwZSB0byB0aGUgcmVzdWx0IG9mIGV4dHJh
Y3RpbmcgYm9keS4KKyAgICAgICAgZXh0cmFjdGVkQm9keSA9IEZldGNoQm9keTo6ZXh0cmFjdChj
b250ZXh0LCBXVEZNb3ZlKCpib2R5KSwgY29udGVudFR5cGUpOworCisgICAgICAgIC8vIDguNCBJ
ZiBDb250ZW50LVR5cGUgaXMgbm9uLW51bGwgYW5kIHLigJlzIHJlc3BvbnNl4oCZcyBoZWFkZXIg
bGlzdCBkb2VzIG5vdCBjb250YWluIGBDb250ZW50LVR5cGVgLCB0aGVuIGFwcGVuZAorICAgICAg
ICAvLyAgICAgYENvbnRlbnQtVHlwZWAvQ29udGVudC1UeXBlIHRvIHLigJlzIHJlc3BvbnNl4oCZ
cyBoZWFkZXIgbGlzdC4KKyAgICAgICAgaWYgKCFjb250ZW50VHlwZS5pc051bGwoKSAmJiAhaGVh
ZGVycy0+ZmFzdEhhcyhIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKQorICAgICAgICAgICAg
aGVhZGVycy0+ZmFzdFNldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBl
KTsKKyAgICB9CisKKyAgICAvLyA5LiBTZXQgcuKAmXMgTUlNRSB0eXBlIHRvIHRoZSByZXN1bHQg
b2YgZXh0cmFjdGluZyBhIE1JTUUgdHlwZSBmcm9tIHLigJlzIHJlc3BvbnNl4oCZcyBoZWFkZXIg
bGlzdC4KKyAgICBhdXRvIGNvbnRlbnRUeXBlID0gaGVhZGVycy0+ZmFzdEdldChIVFRQSGVhZGVy
TmFtZTo6Q29udGVudFR5cGUpOworCisgICAgLy8gMTAuIFNldCBy4oCZcyByZXNwb25zZeKAmXMg
SFRUUFMgc3RhdGUgdG8gY3VycmVudCBzZXR0aW5ncyBvYmplY3TigJlzIEhUVFBTIHN0YXRlLgor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisKKyAgICAvLyAxMS4gUmVzb2x2ZSBy4oCZcyB0cmFp
bGVyIHByb21pc2Ugd2l0aCBhIG5ldyBIZWFkZXJzIG9iamVjdCB3aG9zZSBndWFyZCBpcyAiaW1t
dXRhYmxlIi4KKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIAorICAgIC8vIDEyLiBSZXR1
cm4gci4KKyAgICBhdXRvIHIgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwg
V1RGTW92ZShleHRyYWN0ZWRCb2R5KSwgV1RGTW92ZShoZWFkZXJzKSwgeyB9KSk7CisKKyAgICBy
LT5tX2NvbnRlbnRUeXBlID0gY29udGVudFR5cGU7CisgICAgci0+bV9yZXNwb25zZS5zZXRIVFRQ
U3RhdHVzQ29kZShzdGF0dXMpOworICAgIHItPm1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQo
c3RhdHVzVGV4dCk7CisKKyAgICByZXR1cm4gV1RGTW92ZShyKTsKK30KKwogUmVmPEZldGNoUmVz
cG9uc2U+IEZldGNoUmVzcG9uc2U6OmVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpCiB7CiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShj
b250ZXh0LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6Oklt
bXV0YWJsZSksIHsgfSkpOwpAQCAtNjMsMjIgKzEzOCw2IEBAIEV4Y2VwdGlvbk9yPFJlZjxGZXRj
aFJlc3BvbnNlPj4gRmV0Y2hSZXMKICAgICByZXR1cm4gV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNl
KTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRmV0Y2hSZXNwb25zZTo6c2V0U3RhdHVzKGludCBz
dGF0dXMsIGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCkKLXsKLSAgICBpZiAoIWlzVmFsaWRSZWFz
b25QaHJhc2Uoc3RhdHVzVGV4dCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJy
b3IgfTsKLSAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKHN0YXR1cyk7Ci0gICAgbV9y
ZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNUZXh0KTsKLSAgICByZXR1cm4geyB9Owot
fQotCi12b2lkIEZldGNoUmVzcG9uc2U6OmluaXRpYWxpemVXaXRoKEZldGNoQm9keTo6SW5pdCYm
IGJvZHkpCi17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgZXh0
cmFjdEJvZHkoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShib2R5KSk7Ci0gICAg
dXBkYXRlQ29udGVudFR5cGUoKTsKLX0KLQogRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4m
JiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSkKICAgICA6IEZldGNoQm9keU93bmVyKGNvbnRleHQsIFdURk1vdmUoYm9keSksIFdU
Rk1vdmUoaGVhZGVycykpCiAgICAgLCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQpAQCAt
MjY3LDE1ICszMjYsMjAgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keVdoZW5Mb2Fk
ZQogCiB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmIGRhdGEp
CiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihkYXRhLCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURh
dGEpIHsKLSAgICAgICAgaWYgKGlzQm9keU51bGwoKSkKLSAgICAgICAgICAgIHNldEJvZHkoeyB9
KTsKLSAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwotICAg
IH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGlmIChpc0Jv
ZHlOdWxsKCkpCi0gICAgICAgICAgICBzZXRCb2R5KHsgfSk7Ci0gICAgICAgIGJvZHkoKS5jb25z
dW1lcigpLnNldERhdGEoV1RGTW92ZShidWZmZXIpKTsKLSAgICB9LCBbXShzdGQ6Om51bGxwdHJf
dCYpIHsgfSk7CisgICAgV1RGOjpzd2l0Y2hPbihkYXRhLAorICAgICAgICBbdGhpc10oUmVmPEZv
cm1EYXRhPiYgZm9ybURhdGEpIHsKKyAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCisgICAg
ICAgICAgICAgICAgc2V0Qm9keSh7IH0pOworICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURh
dGEoV1RGTW92ZShmb3JtRGF0YSkpOworICAgICAgICB9LAorICAgICAgICBbdGhpc10oUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICAgICAgaWYgKGlzQm9keU51bGwoKSkKKyAg
ICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CisgICAgICAgICAgICBib2R5KCkuY29uc3VtZXIo
KS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIH0sCisgICAgICAgIFtdKHN0ZDo6
bnVsbHB0cl90JikgeworICAgICAgICB9CisgICAgKTsKIH0KIAogI2lmIEVOQUJMRShTVFJFQU1T
X0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oCShyZXZpc2lvbiAyMjE3OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTIgKzUzLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgc3RkOjpvcHRpb25hbDxGZXRjaEhlYWRlcnM6OkluaXQ+IGhlYWRlcnM7CiAgICAg
fTsKIAotICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShj
b250ZXh0LCBzdGQ6Om51bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6
R3VhcmQ6OlJlc3BvbnNlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7IH0KKyAgICBzdGF0aWMgUmVm
PEZldGNoUmVzcG9uc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRp
b25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2Um
Jik7CisKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5OjpJbml0PiYm
LCBJbml0JiYpOwogICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25z
ZT4+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwg
aW50IHN0YXR1cyk7CiAKLSAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBi
b2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIFdURk1v
dmUoYm9keSksIFdURk1vdmUoaGVhZGVycyksIFdURk1vdmUocmVzcG9uc2UpKSk7IH0KLQogICAg
IHVzaW5nIE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlv
bk9yPEZldGNoUmVzcG9uc2UmPiYmKT47CiAgICAgc3RhdGljIHZvaWQgZmV0Y2goU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIEZldGNoUmVxdWVzdCYsIE5vdGlmaWNhdGlvbkNhbGxiYWNrJiYpOwog
CkBAIC02OCw5ICs2OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpbmlzaENvbnN1bWluZ1N0cmVh
bShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICNlbmRpZgogCi0gICAgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0U3RhdHVzKGludCBzdGF0dXMsIGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCk7Ci0gICAg
dm9pZCBpbml0aWFsaXplV2l0aChGZXRjaEJvZHk6OkluaXQmJik7Ci0KICAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLnR5cGUoKTsgfQogICAgIGNvbnN0IFN0cmluZyYg
dXJsKCkgY29uc3Q7CiAgICAgYm9vbCByZWRpcmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZS5pc1JlZGlyZWN0ZWQoKTsgfQpAQCAtMTQzLDQgKzE0MCw5IEBAIHByaXZhdGU6CiAgICAg
bXV0YWJsZSBTdHJpbmcgbV9yZXNwb25zZVVSTDsKIH07CiAKK2lubGluZSBSZWY8RmV0Y2hSZXNw
b25zZT4gRmV0Y2hSZXNwb25zZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYg
aGVhZGVycywgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgV1RGTW92ZShib2R5KSwgV1RGTW92ZSho
ZWFkZXJzKSwgV1RGTW92ZShyZXNwb25zZSkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aWRsCShyZXZpc2lvbiAyMjE3OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTIgQEAgZGljdGlv
bmFyeSBGZXRjaFJlc3BvbnNlSW5pdCB7CiAKIFsKICAgICBBY3RpdmVET01PYmplY3QsCisgICAg
Q29uc3RydWN0b3Iob3B0aW9uYWwgQm9keUluaXQ/IGJvZHkgPSBudWxsLCBvcHRpb25hbCBGZXRj
aFJlc3BvbnNlSW5pdCBpbml0KSwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsCisgICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKICAgICBFbmFi
bGVkQXRSdW50aW1lPUZldGNoQVBJLAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAg
IEludGVyZmFjZU5hbWU9UmVzcG9uc2UsCi0gICAgSlNCdWlsdGluQ29uc3RydWN0b3IsCi0gICAg
Ly8gQ29uc3RydWN0b3Iob3B0aW9uYWwgQm9keUluaXQ/IGJvZHkgPSBudWxsLCBvcHRpb25hbCBG
ZXRjaFJlc3BvbnNlSW5pdCBpbml0KQogXSBpbnRlcmZhY2UgRmV0Y2hSZXNwb25zZSB7CiAgICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5ld09iamVjdF0gc3RhdGljIEZldGNo
UmVzcG9uc2UgZXJyb3IoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
TWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gc3RhdGljIEZldGNoUmVzcG9uc2UgcmVkaXJl
Y3QoVVNWU3RyaW5nIHVybCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RhdHVzID0gMzAyKTsK
QEAgLTYxLDkgKzYxLDYgQEAgZGljdGlvbmFyeSBGZXRjaFJlc3BvbnNlSW5pdCB7CiAgICAgLy8g
cmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8SGVhZGVycz4gdHJhaWxlcjsKIAogICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0
XSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7Ci0KLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIFByaXZh
dGVJZGVudGlmaWVyXSB2b2lkIHNldFN0YXR1cyh1bnNpZ25lZCBzaG9ydCBzdGF0dXMsIERPTVN0
cmluZyBzdGF0dXNUZXh0KTsKLSAgICBbUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgaW5pdGlhbGl6
ZVdpdGgoQm9keUluaXQgYm9keSk7CiB9OwogCiBGZXRjaFJlc3BvbnNlIGltcGxlbWVudHMgRmV0
Y2hCb2R5OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5qcwkocmV2aXNpb24gMjIxNzk0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmpzCShub25leGlzdGVudCkKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBDYW5vbiBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQ0FOT04gSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIGluaXRpYWxpemVGZXRjaFJlc3BvbnNlKGJvZHks
IGluaXQpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKGluaXQgPT09IEB1bmRlZmlu
ZWQpCi0gICAgICAgIGluaXQgPSB7IH07Ci0gICAgZWxzZSBpZiAoIUBpc09iamVjdChpbml0KSkK
LSAgICAgICAgQHRocm93VHlwZUVycm9yKCJSZXNwb25zZSBpbml0IG11c3QgYmUgYW4gb2JqZWN0
Iik7Ci0KLSAgICBsZXQgc3RhdHVzID0gKGluaXQuc3RhdHVzICE9PSBAdW5kZWZpbmVkKSA/IEB0
b051bWJlcihpbml0LnN0YXR1cykgOiAyMDA7Ci0gICAgaWYgKHN0YXR1cyA8IDIwMCAgfHwgc3Rh
dHVzID4gNTk5KQotICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJTdGF0dXMgbXVzdCBiZSBiZXR3
ZWVuIDIwMCBhbmQgNTk5Iik7Ci0KLSAgICBsZXQgc3RhdHVzVGV4dCA9IChpbml0LnN0YXR1c1Rl
eHQgIT09IEB1bmRlZmluZWQpID8gaW5pdC5zdGF0dXNUZXh0IDogIk9LIjsKLQotICAgIHRoaXMu
QHNldFN0YXR1cyhzdGF0dXMsIHN0YXR1c1RleHQpOwotCi0gICAgaWYgKGluaXQuaGVhZGVycyAh
PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgQGZpbGxGZXRjaEhlYWRlcnModGhpcy5oZWFkZXJzLCBp
bml0LmhlYWRlcnMpOwotCi0gICAgaWYgKGJvZHkgIT09IEB1bmRlZmluZWQgJiYgYm9keSAhPT0g
bnVsbCkgewotICAgICAgICBpZiAoc3RhdHVzID09PSAxMDEgfHwgc3RhdHVzID09PSAyMDQgfHwg
c3RhdHVzID09PSAyMDUgfHwgc3RhdHVzID09PSAzMDQpCi0gICAgICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoIlJlc3BvbnNlIGNhbm5vdCBoYXZlIGEgYm9keSB3aXRoIHRoZSBnaXZlbiBzdGF0dXMi
KTsKLQotICAgICAgICB0aGlzLkBpbml0aWFsaXplV2l0aChib2R5KTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdGhpczsKLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMTc5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTcx
OCw3ICsxNzE4LDYgQEAKIAkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9y
dGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsg
fTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxz
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0
aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDE2RTZGRTgxQkJEMTJERjAwMEEzRjY1IC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgw
NjFCQjMxMTBEMDBCNzY0REEgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFNkZFODFC
QkQxMkRGMDAwQTYwMjMgLyogRmV0Y2hJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEI5
IC8qIEZldGNoSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwMzMgLyogU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRDOSAvKiBTdHJlYW1JbnRlcm5hbHNCdWls
dGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxNkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUIwM0Q4MDYxQkIzMTEwRDAwQjczRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
MDNEODA2MUJCMzExMEQwMEI3NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0
MTcsNyArOTQxNiw2IEBACiAJCTQxMzAxNUQ2MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3Bv
bnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoUmVzcG9uc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDE1RDYxQzdCNTcwNDAwMDkxQzZGIC8q
IEZldGNoQm9keVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRj
aEJvZHlTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDE1RDcxQzdC
NTcwNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9uc2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEZldGNoUmVzcG9uc2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTMwMTVE
ODFDN0I1NzA0MDAwOTFDNkUgLyogRmV0Y2hSZXNwb25zZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuamF2YXNjcmlwdDsgcGF0aCA9IEZldGNoUmVzcG9uc2UuanM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxMzgwQzIwMUYzNDM2OEEwMDE1NUZEQSAvKiBET01DYWNoZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBET01DYWNoZS5jcHA7IHBhdGggPSBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MTM4MEMyMTFGMzQzNjhE
MDAxNTVGREEgLyogQ2FjaGVTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENhY2hlU3Rv
cmFnZS5jcHA7IHBhdGggPSBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNDEzODBDMjIxRjM0MzY5MDAwMTU1RkRBIC8qIENhY2hl
U3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDYWNoZVN0b3JhZ2UuaDsgcGF0aCA9IE1vZHVsZXMv
Y2FjaGUvQ2FjaGVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTk1
MzQsNyArOTUzMiw2IEBACiAJCTQxQ0FENzFEMUVBMDkwNTcwMDE3ODE2NCAvKiBWaWRlb1Rvb2xC
b3hFbmNvZGVyRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBWaWRl
b1Rvb2xCb3hFbmNvZGVyRmFjdG9yeS5oOyBwYXRoID0gbGlid2VicnRjL1ZpZGVvVG9vbEJveEVu
Y29kZXJGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQ0Y4QkU0MUQ0
NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25z
dW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUNGOEJFNjFENDYyMjJDMDA3MDdE
QzkgLyogRmV0Y2hJbnRlcm5hbHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBGZXRjaEludGVybmFscy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50VHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDEyOUM5MUYzRDBFRTMwMEQxNUU0NyAvKiBDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTI2MzgsNyArMTI2MzUsNiBAQAogCQk5OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNzUgLyogV3Jp
dGFibGVTdHJlYW1CdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTkwOEIwRkExQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXJCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGQjFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNDUgLyogRmV0
Y2hJbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGZXRjaEludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjU1IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUludGVybmFs
c0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkQxQkNB
RDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEZEMUJDQUQw
N0QwMEVEMEY2NiAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlu
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjY1OCw3ICsxMjY1NCw2IEBA
CiAJCTlBQjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUFCMUYzN0YxOEUyNDg5QTAw
NTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3M0Y2NCAvKiBSZWFk
YWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0QjkgLyogRmV0Y2hJ
bnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRj
aEludGVybmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNE
ODA2MUJCMzExMEQwMEI3NjRDOSAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVh
ZGFibGVTdHJlYW1CdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlC
MDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTI2LDcgKzE4
MTIxLDYgQEAKIAkJCQk0MUY1NEY4MjFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmNw
cCAqLywKIAkJCQk0MUY1NEY4MzFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmggKi8s
CiAJCQkJNDFGNTRGODQxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5pZGwgKi8sCi0J
CQkJNDFDRjhCRTYxRDQ2MjIyQzAwNzA3REM5IC8qIEZldGNoSW50ZXJuYWxzLmpzICovLAogCQkJ
CTQxNDdFMkI0MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5jcHAgKi8sCiAJCQkJNDE0
N0UyQjUxQzg5OTEyNjAwQTdFNzE1IC8qIEZldGNoTG9hZGVyLmggKi8sCiAJCQkJNDE0N0UyQjYx
Qzg5OTEyNjAwQTdFNzE1IC8qIEZldGNoTG9hZGVyQ2xpZW50LmggKi8sCkBAIC0xODE0OCw3ICsx
ODE0Miw2IEBACiAJCQkJNDEzMDE1RDUxQzdCNTcwNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9uc2Uu
Y3BwICovLAogCQkJCTQxMzAxNUQ2MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmgg
Ki8sCiAJCQkJNDEzMDE1RDcxQzdCNTcwNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9uc2UuaWRsICov
LAotCQkJCTQxMzAxNUQ4MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmpzICovLAog
CQkJCTQxOEMzOTU3MUM4REQ2OTYwMDUxQzhBMyAvKiBXb3JrZXJHbG9iYWxTY29wZUZldGNoLmNw
cCAqLywKIAkJCQk0MThDMzk1ODFDOERENjk2MDA1MUM4QTMgLyogV29ya2VyR2xvYmFsU2NvcGVG
ZXRjaC5oICovLAogCQkJCTQxOEMzOTU5MUM4REQ2OTYwMDUxQzhBMyAvKiBXb3JrZXJHbG9iYWxT
Y29wZUZldGNoLmlkbCAqLywKQEAgLTE5MjA0LDggKzE5MTk3LDYgQEAKIAkJCQk5NzBCNzI4OTE0
NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggKi8sCiAJCQkJOTdBQTNDQTMxNDUy
MzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oICovLAogCQkJCTk3QUEzQ0E0MTQ1
MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCAqLywKLQkJCQk5OTA4QjBG
RDFCQ0FEMDdEMDBFRDBGNDUgLyogRmV0Y2hJbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8sCi0JCQkJ
OUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEI5IC8qIEZldGNoSW50ZXJuYWxzQnVpbHRpbnMuaCAqLywK
IAkJCQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAq
LywKIAkJCQlBMTdDODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5Lmgg
Ki8sCiAJCQkJQjU2MkRCNUUxN0QzQ0Q1NjAwMTBBRjk2IC8qIEhUTUxFbGVtZW50VHlwZUhlbHBl
cnMuaCAqLywKQEAgLTI3NzExLDcgKzI3NzAyLDYgQEAKIAkJCQk4NDczMEQ4OTEyNDhGMEIzMDBE
M0E5QzkgLyogRkVTcGVjdWxhckxpZ2h0aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5Qzk5
NzFGNTlCOTYzMDA5RDc0MDMgLyogRmV0Y2hCb2R5U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MUQxMjlEQjFGM0QxNDM4MDBEMTVFNDcgLyogRmV0Y2hIZWFkZXJzLmggaW4gSGVhZGVycyAq
LywKLQkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwMjMgLyogRmV0Y2hJbnRlcm5hbHNCdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBRDc1M0ExQ0VGNkJEMTAwQTMxNDg2IC8qIEZldGNo
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkxNEQxRjJBOUFGQjAwMjcyRjc4IC8q
IEZldGNoUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5MTVBMUYyQTlC
MzQwMDI3MkY3OCAvKiBGZXRjaFJlcXVlc3RDYWNoZS5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>