<?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>192504</bug_id>
          
          <creation_ts>2018-12-07 11:09:47 -0800</creation_ts>
          <short_desc>Rename LayoutState to RenderLayoutState</short_desc>
          <delta_ts>2018-12-07 12:11:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1486062</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-12-07 11:09:47 -0800</bug_when>
    <thetext>It is hogging a too good of a name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486078</commentid>
    <comment_count>1</comment_count>
      <attachid>356823</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-12-07 11:15:10 -0800</bug_when>
    <thetext>Created attachment 356823
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486079</commentid>
    <comment_count>2</comment_count>
      <attachid>356823</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-07 11:16:57 -0800</bug_when>
    <thetext>Comment on attachment 356823
patch

A+ patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486106</commentid>
    <comment_count>3</comment_count>
      <attachid>356823</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-07 12:10:22 -0800</bug_when>
    <thetext>Comment on attachment 356823
patch

Clearing flags on attachment: 356823

Committed r238963: &lt;https://trac.webkit.org/changeset/238963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486107</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-07 12:10:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486108</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-07 12:11:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/46561253&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356823</attachid>
            <date>2018-12-07 11:15:10 -0800</date>
            <delta_ts>2018-12-07 12:10:22 -0800</delta_ts>
            <desc>patch</desc>
            <filename>rename-layoutstate.patch</filename>
            <type>text/plain</type>
            <size>81971</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzODk2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDE4LTEyLTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTGF5b3V0U3RhdGUg
dG8gUmVuZGVyTGF5b3V0U3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjUwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBuYW1lIGlzIGJldHRlciB1c2VkIGluIExGQy4KKworICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6bGF5b3V0U3RhdGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0
ZUZvclBhZ2luYXRpb25JZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRD
b250ZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvTGF5b3V0U3RhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjaGVja0ZvclBhZ2luYXRpb25Mb2dpY2FsSGVpZ2h0
Q2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFn
bWVudGVkRmxvdy5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNw
cDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpSZW5kZXJMYXlvdXRTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXlvdXRTdGF0ZTo6Y29tcHV0ZU9mZnNldHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OmNvbXB1dGVDbGlwUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXlvdXRTdGF0ZTo6Y29tcHV0ZVBhZ2luYXRpb25JbmZv
cm1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXlvdXRTdGF0ZTo6cGFnZUxvZ2lj
YWxPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OmNv
bXB1dGVMaW5lR3JpZFBhZ2luYXRpb25PcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5b3V0U3RhdGU6OnByb3BhZ2F0ZUxpbmVHcmlkSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXlvdXRTdGF0ZTo6ZXN0YWJsaXNoTGluZUdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5b3V0U3RhdGU6OmFkZExheW91dERlbHRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheW91dFN0YXRlOjpsYXlvdXREZWx0YU1hdGNoZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dFN0YXRlOjpjb21wdXRlT2Zmc2V0cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXRTdGF0ZTo6Y29tcHV0ZUNsaXBSZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dFN0YXRlOjpjb21wdXRlUGFnaW5hdGlvbkluZm9ybWF0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFN0YXRlOjpwYWdlTG9naWNhbE9mZnNldCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0ZTo6Y29tcHV0ZUxpbmVH
cmlkUGFnaW5hdGlvbk9yaWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRT
dGF0ZTo6cHJvcGFnYXRlTGluZUdyaWRJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dFN0YXRlOjplc3RhYmxpc2hMaW5lR3JpZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXRTdGF0ZTo6YWRkTGF5b3V0RGVsdGEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0U3RhdGU6OmxheW91dERlbHRhTWF0Y2hlcyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5b3V0U3RhdGU6OlJlbmRlckxheW91dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dFN0YXRlOjpMYXlvdXRTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXRTdGF0ZTo6aXNQYWdpbmF0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0U3RhdGU6OnBhZ2VMb2dpY2FsSGVpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dFN0YXRlOjpwYWdlTG9naWNhbEhlaWdodENoYW5nZWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGU6OmxpbmVHcmlkIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFN0YXRlOjpsaW5lR3JpZE9mZnNldCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0ZTo6bGluZUdyaWRQ
YWdpbmF0aW9uT3JpZ2luIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dFN0YXRlOjpwYWludE9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRTdGF0ZTo6bGF5b3V0T2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dFN0YXRlOjpwYWdlT2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dFN0YXRlOjpuZWVkc0Jsb2NrRGlyZWN0aW9uTG9jYXRpb25TZXRCZWZvcmVM
YXlvdXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGU6OnJl
bmRlcmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFN0YXRlOjpj
bGlwUmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0ZTo6
aXNDbGlwcGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFN0YXRl
OjpsYXlvdXREZWx0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUm9vdDo6bGF5b3V0KToKKwogMjAxOC0xMi0wNyAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZl
bGxAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzg5NDcu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjM4ODU5KQorKysgU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5MTcsNyArMTkxNyw2IEBAIHJlbmRlcmlu
Zy9JbmxpbmVJdGVyYXRvci5jcHAKIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAogcmVuZGVy
aW5nL0xheW91dERpc2FsbG93ZWRTY29wZS5jcHAKIHJlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIu
Y3BwCi1yZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwCiByZW5kZXJpbmcvTWFya2VkVGV4dC5jcHAK
IHJlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcAogcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRS
dWxlcy5jcHAKQEAgLTE5NTYsNiArMTk1NSw3IEBAIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAogcmVuZGVyaW5nL1Jl
bmRlckxheWVyRmlsdGVycy5jcHAKIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNw
cAorcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcAogcmVuZGVyaW5nL1JlbmRlckxpbmVC
b3hMaXN0LmNwcAogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKIHJlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM4ODU5KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04MDcs
NyArODA3LDcgQEAKIAkJMkQ4QjkyRkUyMDNEMTNFMTAwOUM4NjhGIC8qIFVuaWZpZWRTb3VyY2U1
MjkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1
Rjg1Q0YxRkEyMzg1MDAwNkRCNjNCIC8qIFVuaWZpZWRTb3VyY2U1MjkuY3BwICovOyB9OwogCQky
RDhCOTJGRjIwM0QxM0UxMDA5Qzg2OEYgLyogVW5pZmllZFNvdXJjZTUzMC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVGODVEMzFGQTIzODU5MDA2
REI2M0IgLyogVW5pZmllZFNvdXJjZTUzMC5jcHAgKi87IH07CiAJCTJEOEZFQkREMTQzRTNFRjcw
MDcyNTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4RkVCREIxNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3Nz
ZmFkZVZhbHVlLmggKi87IH07Ci0JCTJEOTA2NjA3MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5
MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkQ5MDY2MDcwQkUxNDFENDAwOTU2OTk4
IC8qIFJlbmRlckxheW91dFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRDkwNjYwNTBCRTE0MUQ0MDA5NTY5OTggLyogUmVuZGVyTGF5b3V0U3Rh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
RDkyQTc5QTIxMzRBRDc5MDBGNDkzRkQgLyogUXVpY2tMb29rU29mdExpbmsubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDM5MTdGRDFBOTFCMkY4MDA2
RTA0RjIgLyogUXVpY2tMb29rU29mdExpbmsubW0gKi87IH07CiAJCTJEOTJBNzlEMjEzNEFGOTUw
MEY0OTNGRCAvKiBVc2VyQWdlbnRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBM0FGOUQ4MzIwMzI1NjkxMDA2Q0FEMDYgLyogVXNlckFnZW50SU9T
Lm1tICovOyB9OwogCQkyRDkzQUVFMzE5REY1NjQxMDAyQTg2QzMgLyogU2VydmljZXNPdmVybGF5
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ5M0FFRTExOURGNTY0MTAwMkE4NkMzIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIu
aCAqLzsgfTsKQEAgLTY2NTMsOCArNjY1Myw4IEBACiAJCTJEODI4N0Y1MTZFNEEwMzgwMDg2QkQw
MCAvKiBIaXRUZXN0TG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGl0VGVzdExvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEOEZFQkRB
MTQzRTNFRjcwMDcyNTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEOEZFQkRCMTQzRTNFRjcwMDcyNTAyQiAvKiBDU1NDcm9zc2Zh
ZGVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NDcm9zc2ZhZGVW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDkwNjYwNDBCRTE0MUQ0MDA5
NTY5OTggLyogTGF5b3V0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IExheW91dFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ5
MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMYXlvdXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyRDkwNjYwNDBCRTE0MUQ0MDA5NTY5OTggLyogUmVuZGVyTGF5b3V0U3RhdGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckxheW91dFN0YXRlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ5MDY2MDUwQkUxNDFENDAwOTU2OTk4
IC8qIFJlbmRlckxheW91dFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJMYXlvdXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDkw
NjYwQzA2NjVEOTM3MDA2QjZGMUEgLyogRGF0YVRyYW5zZmVyTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YVRyYW5zZmVy
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJMkQ5M0FFRTExOURGNTY0MTAwMkE4NkMzIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZXNPdmVybGF5
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDkzQUVFMjE5REY1
NjQxMDAyQTg2QzMgLyogU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjUyMCw4ICsyNjUyMCw2IEBACiAJCQkJ
OUJEMUY2ODAxRjA0NjJCODAwMUM5Q0REIC8qIExheW91dERpc2FsbG93ZWRTY29wZS5oICovLAog
CQkJCUExMjBBQ0ExMTNGOTk4NDYwMEZFNEFDNyAvKiBMYXlvdXRSZXBhaW50ZXIuY3BwICovLAog
CQkJCUExMjBBQ0EwMTNGOTk4MzcwMEZFNEFDNyAvKiBMYXlvdXRSZXBhaW50ZXIuaCAqLywKLQkJ
CQkyRDkwNjYwNDBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuY3BwICovLAotCQkJCTJE
OTA2NjA1MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5oICovLAogCQkJCTlCQTI3M0Yz
MTcyMjA2QkIwMDk3Q0U0NyAvKiBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmggKi8sCiAJ
CQkJQ0UxODY2NDIxRjcyRTVCNDAwQTBDQUI2IC8qIE1hcmtlZFRleHQuY3BwICovLAogCQkJCUNF
MTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0LmggKi8sCkBAIC0yNjYwOCw2ICsy
NjYwNiw4IEBACiAJCQkJMEY1M0ZCODkyMTNCNzY4NDAwQzQwRDM0IC8qIFJlbmRlckxheWVyRmls
dGVycy5oICovLAogCQkJCTNDMjQ0RkU1QTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0LmNwcCAqLywKIAkJCQkzQzI0NEZFNEEzNzVBQzYzM0Y4OEJFNkYgLyogUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5oICovLAorCQkJCTJEOTA2NjA0MEJFMTQxRDQwMDk1Njk5OCAvKiBS
ZW5kZXJMYXlvdXRTdGF0ZS5jcHAgKi8sCisJCQkJMkQ5MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8q
IFJlbmRlckxheW91dFN0YXRlLmggKi8sCiAJCQkJQkMzM0ZCMUEwRjMwRUU4NTAwMkNERDdDIC8q
IFJlbmRlckxpbmVCb3hMaXN0LmNwcCAqLywKIAkJCQkwQkUwMzBBMTBGMzExMkZCMDAzQzFBNDYg
LyogUmVuZGVyTGluZUJveExpc3QuaCAqLywKIAkJCQlCQ0VBNDgyNDA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyTGluZUJyZWFrLmNwcCAqLywKQEAgLTI4MDA2LDggKzI4MDA2LDggQEAKIAkJCQlD
RDMxODYyMzE5OUYxRTJBMDAzMEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RFNTk1OTcxQkYyNkUyMTAwQTFDQkU4IC8qIENETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVGQTkwNENBMTc4RTYx
RjUwMDRDOEEyRCAvKiBDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5MUI4RjBCNTIxOTUzRDY1MDAwQzJCMDAgLyogQ2VydGlm
aWNhdGVJbmZvQmFzZS5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZFMzZGRDE1MTZDNzgyNjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTFCOEYwQjUyMTk1M0Q2NTAwMEMyQjAwIC8qIENlcnRpZmljYXRl
SW5mb0Jhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMzZGRDE1MTZDNzgyNjUwMEY4ODdDMSAv
KiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzY5REQxNTA1RjA3
NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNUZGRjEyQjAyNjc2MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDAyMTJCMDI2NzYwMEMxQTM1OSAvKiBDaGFubmVsU3BsaXR0ZXJOb2Rl
LmggaW4gSGVhZGVycyAqLywKQEAgLTMwMDEyLDcgKzMwMDEyLDcgQEAKIAkJCQlBMTI1MzhENDEz
RjlCNjBBMDAwMjQ3NTQgLyogTGF5b3V0UmVwYWludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
MTMxMENGMzIwQkE0QTM3MDA2NUE4RDAgLyogTGF5b3V0UmVwbGFjZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MURDMDU0MTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRTaXplLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkyRDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTJEOTA2NjA3MEJFMTQxRDQwMDk1Njk5OCAvKiBSZW5kZXJMYXlvdXRT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTEzMTBDRjIyMEJBNEEzMjAwNjVBOEQwIC8qIExh
eW91dFRyZWVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDFEQzA0ODE2NDgzNDhGMDAz
NzFFNUEgLyogTGF5b3V0VW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RFOEI1RUQxQTY5Nzc3
MzAwQjRCNjZBIC8qIExlZ2FjeUNETVByaXZhdGVDbGVhcktleS5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAJ
KHJldmlzaW9uIDIzODg1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDkgQEAKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJMYXlvdXREaXNhbGxvd2VkU2NvcGUuaCIKLSNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCisjaW5jbHVk
ZSAiUmVuZGVyTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRT
Y29wZS5oIgpAQCAtNTg0LDcgKzU4NCw3IEBAIGJvb2wgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6
bGF5b3V0RGVsdGEKIH0KICNlbmRpZgogCi1MYXlvdXRTdGF0ZSogRnJhbWVWaWV3TGF5b3V0Q29u
dGV4dDo6bGF5b3V0U3RhdGUoKSBjb25zdAorUmVuZGVyTGF5b3V0U3RhdGUqIEZyYW1lVmlld0xh
eW91dENvbnRleHQ6OmxheW91dFN0YXRlKCkgY29uc3QKIHsKICAgICBpZiAobV9sYXlvdXRTdGF0
ZVN0YWNrLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01OTYsMTQgKzU5
NiwxNCBAQCB2b2lkIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTCiAgICAgQVNT
RVJUKCFtX3BhaW50T2Zmc2V0Q2FjaGVEaXNhYmxlQ291bnQpOwogICAgIEFTU0VSVCghbGF5b3V0
U3RhdGUoKSk7CiAKLSAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8TGF5b3V0U3RhdGU+KHJvb3QpKTsKKyAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KHJvb3QpKTsKIH0KIAogYm9vbCBGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQo
UmVuZGVyQmxvY2tGbG93JiBsYXlvdXRSb290KQogewogICAgIGlmIChsYXlvdXRTdGF0ZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPExheW91dFN0YXRlPihsYXlvdXRSb290LCBMYXlvdXRTdGF0ZTo6SXNQYWdp
bmF0ZWQ6OlllcykpOworICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5b3V0U3RhdGU6Oklz
UGFnaW5hdGVkOjpZZXMpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKQEAgLTYxMyw3ICs2
MTMsNyBAQCBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTCiAgICAgYXV0
byogbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIGlmICghbGF5b3V0U3Rh
dGUgfHwgIW5lZWRzRnVsbFJlcGFpbnQoKSB8fCBsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQoKSB8
fCByZW5kZXJlci5lbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpCiAgICAgICAgIHx8IGxheW91dFN0
YXRlLT5saW5lR3JpZCgpIHx8IChyZW5kZXJlci5zdHlsZSgpLmxpbmVHcmlkKCkgIT0gUmVuZGVy
U3R5bGU6OmluaXRpYWxMaW5lR3JpZCgpICYmIHJlbmRlcmVyLmlzUmVuZGVyQmxvY2tGbG93KCkp
KSB7Ci0gICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxM
YXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNrLCByZW5kZXJlciwgb2Zmc2V0LCBwYWdlSGVp
Z2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOworICAgICAgICBtX2xheW91dFN0YXRlU3RhY2suYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KG1fbGF5b3V0U3RhdGVTdGFj
aywgcmVuZGVyZXIsIG9mZnNldCwgcGFnZUhlaWdodCwgcGFnZUhlaWdodENoYW5nZWQpKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oCShyZXZpc2lvbiAyMzg4
NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDExIEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVW
aWV3OwogY2xhc3MgTGF5b3V0U2NvcGU7CiBjbGFzcyBMYXlvdXRTaXplOwotY2xhc3MgTGF5b3V0
U3RhdGU7CiBjbGFzcyBSZW5kZXJCbG9ja0Zsb3c7CiBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBS
ZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJFbGVtZW50OworY2xhc3MgUmVuZGVyTGF5b3V0U3Rh
dGU7CiBjbGFzcyBSZW5kZXJWaWV3OwogICAgIAogY2xhc3MgRnJhbWVWaWV3TGF5b3V0Q29udGV4
dCB7CkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmx1c2hBc3luY2hyb25v
dXNUYXNrcygpOwogCi0gICAgTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlKCkgY29uc3Q7CisgICAg
UmVuZGVyTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlKCkgY29uc3Q7CiAgICAgLy8gUmV0dXJucyB0
cnVlIGlmIGxheW91dFN0YXRlIHNob3VsZCBiZSB1c2VkIGZvciBpdHMgY2FjaGVkIG9mZnNldCBh
bmQgY2xpcC4KICAgICBib29sIGlzUGFpbnRPZmZzZXRDYWNoZUVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiAhbV9wYWludE9mZnNldENhY2hlRGlzYWJsZUNvdW50ICYmIGxheW91dFN0YXRlKCk7IH0K
ICNpZm5kZWYgTkRFQlVHCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogI2lmICFBU1NFUlRf
RElTQUJMRUQKICAgICBib29sIGxheW91dERlbHRhTWF0Y2hlcyhjb25zdCBMYXlvdXRTaXplJiBk
ZWx0YSk7CiAjZW5kaWYKLSAgICB1c2luZyBMYXlvdXRTdGF0ZVN0YWNrID0gVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxMYXlvdXRTdGF0ZT4+OworICAgIHVzaW5nIExheW91dFN0YXRlU3RhY2sgPSBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJlbmRlckxheW91dFN0YXRlPj47CiAKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIExheW91dFNjb3BlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xheW91dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5b3V0U3RhdGUuY3BwCShyZXZpc2lvbiAyMzg4NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwCShub25leGlzdGVudCkKQEAgLTEsMzQ4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCi0KLSNpbmNsdWRlICJS
ZW5kZXJGcmFnbWVudGVkRmxvdy5oIgotI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgotI2luY2x1
ZGUgIlJlbmRlckxheWVyLmgiCi0jaW5jbHVkZSAiUmVuZGVyTXVsdGlDb2x1bW5GbG93LmgiCi0j
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBJc1BhZ2luYXRlZCBpc1BhZ2luYXRlZCkKLSAgICA6IG1fY2xpcHBlZChmYWxz
ZSkKLSAgICAsIG1faXNQYWdpbmF0ZWQoaXNQYWdpbmF0ZWQgPT0gSXNQYWdpbmF0ZWQ6OlllcykK
LSAgICAsIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKGZhbHNlKQotI2lmICFBU1NFUlRfRElT
QUJMRUQKLSAgICAsIG1fbGF5b3V0RGVsdGFYU2F0dXJhdGVkKGZhbHNlKQotICAgICwgbV9sYXlv
dXREZWx0YVlTYXR1cmF0ZWQoZmFsc2UpCi0jZW5kaWYKLSNpZm5kZWYgTkRFQlVHCi0gICAgLCBt
X3JlbmRlcmVyKCZyZW5kZXJlcikKLSNlbmRpZgotewotICAgIGlmIChSZW5kZXJFbGVtZW50KiBj
b250YWluZXIgPSByZW5kZXJlci5jb250YWluZXIoKSkgewotICAgICAgICBGbG9hdFBvaW50IGFi
c0NvbnRlbnRQb2ludCA9IGNvbnRhaW5lci0+bG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSwg
VXNlVHJhbnNmb3Jtcyk7Ci0gICAgICAgIG1fcGFpbnRPZmZzZXQgPSBMYXlvdXRTaXplKGFic0Nv
bnRlbnRQb2ludC54KCksIGFic0NvbnRlbnRQb2ludC55KCkpOwotCi0gICAgICAgIGlmIChjb250
YWluZXItPmhhc092ZXJmbG93Q2xpcCgpKSB7Ci0gICAgICAgICAgICBtX2NsaXBwZWQgPSB0cnVl
OwotICAgICAgICAgICAgYXV0byYgY29udGFpbmVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94Pigq
Y29udGFpbmVyKTsKLSAgICAgICAgICAgIG1fY2xpcFJlY3QgPSBMYXlvdXRSZWN0KHRvTGF5b3V0
UG9pbnQobV9wYWludE9mZnNldCksIGNvbnRhaW5lckJveC5jYWNoZWRTaXplRm9yT3ZlcmZsb3dD
bGlwKCkpOwotICAgICAgICAgICAgbV9wYWludE9mZnNldCAtPSB0b0xheW91dFNpemUoY29udGFp
bmVyQm94LnNjcm9sbFBvc2l0aW9uKCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChtX2lz
UGFnaW5hdGVkKSB7Ci0gICAgICAgIC8vIFRoaXMgaXMganVzdCBhIGZsYWcgZm9yIGtub3duIHBh
Z2UgaGVpZ2h0IChzZWUgUmVuZGVyQmxvY2tGbG93OjpjaGVja0ZvclBhZ2luYXRpb25Mb2dpY2Fs
SGVpZ2h0Q2hhbmdlKS4KLSAgICAgICAgbV9wYWdlTG9naWNhbEhlaWdodCA9IDE7Ci0gICAgfQot
fQotCi1MYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoY29uc3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4
dDo6TGF5b3V0U3RhdGVTdGFjayYgbGF5b3V0U3RhdGVTdGFjaywgUmVuZGVyQm94JiByZW5kZXJl
ciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0LCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0
LCBib29sIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCkKLSAgICA6IG1fY2xpcHBlZChmYWxzZSkK
LSAgICAsIG1faXNQYWdpbmF0ZWQoZmFsc2UpCi0gICAgLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hh
bmdlZChmYWxzZSkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgLCBtX2xheW91dERlbHRhWFNh
dHVyYXRlZChmYWxzZSkKLSAgICAsIG1fbGF5b3V0RGVsdGFZU2F0dXJhdGVkKGZhbHNlKQotI2Vu
ZGlmCi0jaWZuZGVmIE5ERUJVRwotICAgICwgbV9yZW5kZXJlcigmcmVuZGVyZXIpCi0jZW5kaWYK
LXsKLSAgICBpZiAoIWxheW91dFN0YXRlU3RhY2suaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8m
IGFuY2VzdG9yID0gKmxheW91dFN0YXRlU3RhY2subGFzdCgpLmdldCgpOwotICAgICAgICBjb21w
dXRlT2Zmc2V0cyhhbmNlc3RvciwgcmVuZGVyZXIsIG9mZnNldCk7Ci0gICAgICAgIGNvbXB1dGVD
bGlwUmVjdChhbmNlc3RvciwgcmVuZGVyZXIpOwotICAgIH0KLSAgICBjb21wdXRlUGFnaW5hdGlv
bkluZm9ybWF0aW9uKGxheW91dFN0YXRlU3RhY2ssIHJlbmRlcmVyLCBwYWdlTG9naWNhbEhlaWdo
dCwgcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKTsKLX0KLQotdm9pZCBMYXlvdXRTdGF0ZTo6Y29t
cHV0ZU9mZnNldHMoY29uc3QgTGF5b3V0U3RhdGUmIGFuY2VzdG9yLCBSZW5kZXJCb3gmIHJlbmRl
cmVyLCBMYXlvdXRTaXplIG9mZnNldCkKLXsKLSAgICBib29sIGZpeGVkID0gcmVuZGVyZXIuaXNG
aXhlZFBvc2l0aW9uZWQoKTsKLSAgICBpZiAoZml4ZWQpIHsKLSAgICAgICAgRmxvYXRQb2ludCBm
aXhlZE9mZnNldCA9IHJlbmRlcmVyLnZpZXcoKS5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgp
LCBJc0ZpeGVkKTsKLSAgICAgICAgbV9wYWludE9mZnNldCA9IExheW91dFNpemUoZml4ZWRPZmZz
ZXQueCgpLCBmaXhlZE9mZnNldC55KCkpICsgb2Zmc2V0OwotICAgIH0gZWxzZQotICAgICAgICBt
X3BhaW50T2Zmc2V0ID0gYW5jZXN0b3IucGFpbnRPZmZzZXQoKSArIG9mZnNldDsKLQotICAgIGlm
IChyZW5kZXJlci5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhZml4ZWQpIHsKLSAgICAgICAg
aWYgKGF1dG8qIGNvbnRhaW5lciA9IHJlbmRlcmVyLmNvbnRhaW5lcigpKSB7Ci0gICAgICAgICAg
ICBpZiAoY29udGFpbmVyLT5pc0luRmxvd1Bvc2l0aW9uZWQoKSAmJiBpczxSZW5kZXJJbmxpbmU+
KCpjb250YWluZXIpKQotICAgICAgICAgICAgICAgIG1fcGFpbnRPZmZzZXQgKz0gZG93bmNhc3Q8
UmVuZGVySW5saW5lPigqY29udGFpbmVyKS5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbmVkSW5saW5l
KCZyZW5kZXJlcik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtX2xheW91dE9mZnNldCA9IG1f
cGFpbnRPZmZzZXQ7Ci0KLSAgICBpZiAocmVuZGVyZXIuaXNJbkZsb3dQb3NpdGlvbmVkKCkgJiYg
cmVuZGVyZXIuaGFzTGF5ZXIoKSkKLSAgICAgICAgbV9wYWludE9mZnNldCArPSByZW5kZXJlci5s
YXllcigpLT5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbigpOwotCi0gICAgaWYgKHJlbmRlcmVyLmhh
c092ZXJmbG93Q2xpcCgpKQotICAgICAgICBtX3BhaW50T2Zmc2V0IC09IHRvTGF5b3V0U2l6ZShy
ZW5kZXJlci5zY3JvbGxQb3NpdGlvbigpKTsKLQotICAgIG1fbGF5b3V0RGVsdGEgPSBhbmNlc3Rv
ci5sYXlvdXREZWx0YSgpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBtX2xheW91dERlbHRh
WFNhdHVyYXRlZCA9IGFuY2VzdG9yLm1fbGF5b3V0RGVsdGFYU2F0dXJhdGVkOwotICAgIG1fbGF5
b3V0RGVsdGFZU2F0dXJhdGVkID0gYW5jZXN0b3IubV9sYXlvdXREZWx0YVlTYXR1cmF0ZWQ7Ci0j
ZW5kaWYKLX0KLQotdm9pZCBMYXlvdXRTdGF0ZTo6Y29tcHV0ZUNsaXBSZWN0KGNvbnN0IExheW91
dFN0YXRlJiBhbmNlc3RvciwgUmVuZGVyQm94JiByZW5kZXJlcikKLXsKLSAgICBtX2NsaXBwZWQg
PSAhcmVuZGVyZXIuaXNGaXhlZFBvc2l0aW9uZWQoKSAmJiBhbmNlc3Rvci5pc0NsaXBwZWQoKTsK
LSAgICBpZiAobV9jbGlwcGVkKQotICAgICAgICBtX2NsaXBSZWN0ID0gYW5jZXN0b3IuY2xpcFJl
Y3QoKTsKLSAgICBpZiAoIXJlbmRlcmVyLmhhc092ZXJmbG93Q2xpcCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvIHBhaW50T2Zmc2V0Rm9yQ2xpcFJlY3QgPSB0b0xheW91dFBvaW50KG1f
cGFpbnRPZmZzZXQgKyB0b0xheW91dFNpemUocmVuZGVyZXIuc2Nyb2xsUG9zaXRpb24oKSkpOwot
ICAgIExheW91dFJlY3QgY2xpcFJlY3QocGFpbnRPZmZzZXRGb3JDbGlwUmVjdCArIHJlbmRlcmVy
LnZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0RGVsdGEoKSwgcmVuZGVy
ZXIuY2FjaGVkU2l6ZUZvck92ZXJmbG93Q2xpcCgpKTsKLSAgICBpZiAobV9jbGlwcGVkKQotICAg
ICAgICBtX2NsaXBSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7Ci0gICAgZWxzZQotICAgICAgICBt
X2NsaXBSZWN0ID0gY2xpcFJlY3Q7Ci0gICAgbV9jbGlwcGVkID0gdHJ1ZTsKLSAgICAvLyBGSVhN
RTogPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDQzPiBBcHBseSBj
b250cm9sIGNsaXAgaWYgcHJlc2VudC4KLX0KLQotdm9pZCBMYXlvdXRTdGF0ZTo6Y29tcHV0ZVBh
Z2luYXRpb25JbmZvcm1hdGlvbihjb25zdCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpMYXlvdXRT
dGF0ZVN0YWNrJiBsYXlvdXRTdGF0ZVN0YWNrLCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBMYXlvdXRV
bml0IHBhZ2VMb2dpY2FsSGVpZ2h0LCBib29sIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCkKLXsK
LSAgICBhdXRvKiBhbmNlc3RvciA9IGxheW91dFN0YXRlU3RhY2suaXNFbXB0eSgpID8gbnVsbHB0
ciA6IGxheW91dFN0YXRlU3RhY2subGFzdCgpLmdldCgpOwotICAgIC8vIElmIHdlIGVzdGFibGlz
aCBhIG5ldyBwYWdlIGhlaWdodCwgdGhlbiBjYWNoZSB0aGUgb2Zmc2V0IHRvIHRoZSB0b3Agb2Yg
dGhlIGZpcnN0IHBhZ2UuCi0gICAgLy8gV2UgY2FuIGNvbXBhcmUgdGhpcyBsYXRlciBvbiB0byBm
aWd1cmUgb3V0IHdoYXQgcGFydCBvZiB0aGUgcGFnZSB3ZSdyZSBhY3R1YWxseSBvbi4KLSAgICBp
ZiAocGFnZUxvZ2ljYWxIZWlnaHQgfHwgcmVuZGVyZXIuaXNSZW5kZXJGcmFnbWVudGVkRmxvdygp
KSB7Ci0gICAgICAgIG1fcGFnZUxvZ2ljYWxIZWlnaHQgPSBwYWdlTG9naWNhbEhlaWdodDsKLSAg
ICAgICAgYm9vbCBpc0ZsaXBwZWQgPSByZW5kZXJlci5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKCk7Ci0gICAgICAgIG1fcGFnZU9mZnNldCA9IExheW91dFNpemUobV9sYXlvdXRP
ZmZzZXQud2lkdGgoKSArICghaXNGbGlwcGVkID8gcmVuZGVyZXIuYm9yZGVyTGVmdCgpICsgcmVu
ZGVyZXIucGFkZGluZ0xlZnQoKSA6IHJlbmRlcmVyLmJvcmRlclJpZ2h0KCkgKyByZW5kZXJlci5w
YWRkaW5nUmlnaHQoKSksIG1fbGF5b3V0T2Zmc2V0LmhlaWdodCgpICsgKCFpc0ZsaXBwZWQgPyBy
ZW5kZXJlci5ib3JkZXJUb3AoKSArIHJlbmRlcmVyLnBhZGRpbmdUb3AoKSA6IHJlbmRlcmVyLmJv
cmRlckJvdHRvbSgpICsgcmVuZGVyZXIucGFkZGluZ0JvdHRvbSgpKSk7Ci0gICAgICAgIG1fcGFn
ZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkID0gcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkOwotICAgICAg
ICBtX2lzUGFnaW5hdGVkID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKGFuY2VzdG9yKSB7Ci0gICAg
ICAgIC8vIElmIHdlIGRvbid0IGVzdGFibGlzaCBhIG5ldyBwYWdlIGhlaWdodCwgdGhlbiBwcm9w
YWdhdGUgdGhlIG9sZCBwYWdlIGhlaWdodCBhbmQgb2Zmc2V0IGRvd24uCi0gICAgICAgIG1fcGFn
ZUxvZ2ljYWxIZWlnaHQgPSBhbmNlc3Rvci0+cGFnZUxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAg
bV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQgPSBhbmNlc3Rvci0+cGFnZUxvZ2ljYWxIZWlnaHRD
aGFuZ2VkKCk7Ci0gICAgICAgIG1fcGFnZU9mZnNldCA9IGFuY2VzdG9yLT5wYWdlT2Zmc2V0KCk7
Ci0KLSAgICAgICAgLy8gRGlzYWJsZSBwYWdpbmF0aW9uIGZvciBvYmplY3RzIHdlIGRvbid0IHN1
cHBvcnQuIEZvciBub3cgdGhpcyBpbmNsdWRlcyBvdmVyZmxvdzpzY3JvbGwvYXV0bywgaW5saW5l
IGJsb2NrcyBhbmQgd3JpdGluZyBtb2RlIHJvb3RzLgotICAgICAgICBpZiAocmVuZGVyZXIuaXNV
bnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uKCkpIHsKLSAgICAgICAgICAgIG1fcGFnZUxvZ2ljYWxI
ZWlnaHQgPSAwOwotICAgICAgICAgICAgbV9pc1BhZ2luYXRlZCA9IGZhbHNlOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIG1faXNQYWdpbmF0ZWQgPSBtX3BhZ2VMb2dpY2FsSGVpZ2h0IHx8
IHJlbmRlcmVyLmVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCk7Ci0gICAgfQotCi0gICAgLy8gUHJv
cGFnYXRlIGxpbmUgZ3JpZCBpbmZvcm1hdGlvbi4KLSAgICBpZiAoYW5jZXN0b3IpCi0gICAgICAg
IHByb3BhZ2F0ZUxpbmVHcmlkSW5mbygqYW5jZXN0b3IsIHJlbmRlcmVyKTsKLQotICAgIGlmIChs
aW5lR3JpZCgpICYmIChsaW5lR3JpZCgpLT5zdHlsZSgpLndyaXRpbmdNb2RlKCkgPT0gcmVuZGVy
ZXIuc3R5bGUoKS53cml0aW5nTW9kZSgpKSAmJiBpczxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+KHJl
bmRlcmVyKSkKLSAgICAgICAgY29tcHV0ZUxpbmVHcmlkUGFnaW5hdGlvbk9yaWdpbihkb3duY2Fz
dDxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+KHJlbmRlcmVyKSk7Ci0KLSAgICAvLyBJZiB3ZSBoYXZl
IGEgbmV3IGdyaWQgdG8gdHJhY2ssIHRoZW4gYWRkIGl0IHRvIG91ciBzZXQuCi0gICAgaWYgKHJl
bmRlcmVyLnN0eWxlKCkubGluZUdyaWQoKSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVHcmlk
KCkgJiYgaXM8UmVuZGVyQmxvY2tGbG93PihyZW5kZXJlcikpCi0gICAgICAgIGVzdGFibGlzaExp
bmVHcmlkKGxheW91dFN0YXRlU3RhY2ssIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4ocmVuZGVy
ZXIpKTsKLX0KLQotTGF5b3V0VW5pdCBMYXlvdXRTdGF0ZTo6cGFnZUxvZ2ljYWxPZmZzZXQoUmVu
ZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBjaGlsZExvZ2ljYWxPZmZzZXQpIGNvbnN0Ci17Ci0g
ICAgaWYgKGNoaWxkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4g
bV9sYXlvdXRPZmZzZXQuaGVpZ2h0KCkgKyBjaGlsZExvZ2ljYWxPZmZzZXQgLSBtX3BhZ2VPZmZz
ZXQuaGVpZ2h0KCk7Ci0gICAgcmV0dXJuIG1fbGF5b3V0T2Zmc2V0LndpZHRoKCkgKyBjaGlsZExv
Z2ljYWxPZmZzZXQgLSBtX3BhZ2VPZmZzZXQud2lkdGgoKTsKLX0KLQotdm9pZCBMYXlvdXRTdGF0
ZTo6Y29tcHV0ZUxpbmVHcmlkUGFnaW5hdGlvbk9yaWdpbihjb25zdCBSZW5kZXJNdWx0aUNvbHVt
bkZsb3cmIG11bHRpY29sKQotewotICAgIGlmICghaXNQYWdpbmF0ZWQoKSB8fCAhcGFnZUxvZ2lj
YWxIZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtdWx0aWNvbC5wcm9ncmVz
c2lvbklzSW5saW5lKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBXZSBuZWVkIHRvIGNhY2hl
IGEgbGluZSBncmlkIHBhZ2luYXRpb24gb3JpZ2luIHNvIHRoYXQgd2UgdW5kZXJzdGFuZCBob3cg
dG8gcmVzZXQgdGhlIGxpbmUgZ3JpZAotICAgIC8vIGF0IHRoZSB0b3Agb2YgZWFjaCBjb2x1bW4u
Ci0gICAgLy8gR2V0IHRoZSBjdXJyZW50IGxpbmUgZ3JpZCBhbmQgb2Zmc2V0LgotICAgIEFTU0VS
VChtX2xpbmVHcmlkKTsKLSAgICAvLyBHZXQgdGhlIGh5cG90aGV0aWNhbCBsaW5lIGJveCB1c2Vk
IHRvIGVzdGFibGlzaCB0aGUgZ3JpZC4KLSAgICBhdXRvKiBsaW5lR3JpZEJveCA9IG1fbGluZUdy
aWQtPmxpbmVHcmlkQm94KCk7Ci0gICAgaWYgKCFsaW5lR3JpZEJveCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gTm93IGRldGVybWluZSBvdXIgcG9zaXRpb24gb24gdGhlIGdyaWQuIE91ciBi
YXNlbGluZSBuZWVkcyB0byBiZSBhZGp1c3RlZCB0byB0aGUgbmVhcmVzdCBiYXNlbGluZSBtdWx0
aXBsZQotICAgIC8vIGFzIGVzdGFibGlzaGVkIGJ5IHRoZSBsaW5lIGJveC4KLSAgICAvLyBGSVhN
RTogTmVlZCB0byBoYW5kbGUgY3JhenkgbGluZS1ib3gtY29udGFpbiB2YWx1ZXMgdGhhdCBjYXVz
ZSB0aGUgcm9vdCBsaW5lIGJveCB0byBub3QgYmUgY29uc2lkZXJlZC4gSSBhc3N1bWUKLSAgICAv
LyB0aGUgZ3JpZCBzaG91bGQgaG9ub3IgbGluZS1ib3gtY29udGFpbi4KLSAgICBMYXlvdXRVbml0
IGdyaWRMaW5lSGVpZ2h0ID0gbGluZUdyaWRCb3gtPmxpbmVCb3R0b21XaXRoTGVhZGluZygpIC0g
bGluZUdyaWRCb3gtPmxpbmVUb3BXaXRoTGVhZGluZygpOwotICAgIGlmICghZ3JpZExpbmVIZWln
aHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUg
PSBtX2xpbmVHcmlkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwotICAgIExheW91dFVuaXQg
bGluZUdyaWRCbG9ja09mZnNldCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gbV9saW5lR3Jp
ZE9mZnNldC5oZWlnaHQoKSA6IG1fbGluZUdyaWRPZmZzZXQud2lkdGgoKTsKLSAgICBMYXlvdXRV
bml0IGZpcnN0TGluZVRvcFdpdGhMZWFkaW5nID0gbGluZUdyaWRCbG9ja09mZnNldCArIGxpbmVH
cmlkQm94LT5saW5lVG9wV2l0aExlYWRpbmcoKTsKLSAgICBMYXlvdXRVbml0IHBhZ2VMb2dpY2Fs
VG9wID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPyBtX3BhZ2VPZmZzZXQuaGVpZ2h0KCkgOiBt
X3BhZ2VPZmZzZXQud2lkdGgoKTsKLSAgICBpZiAocGFnZUxvZ2ljYWxUb3AgPD0gZmlyc3RMaW5l
VG9wV2l0aExlYWRpbmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFNoaWZ0IHRvIHRoZSBu
ZXh0IGhpZ2hlc3QgbGluZSBncmlkIG11bHRpcGxlIHBhc3QgdGhlIHBhZ2UgbG9naWNhbCB0b3Au
IENhY2hlIHRoZSBkZWx0YQotICAgIC8vIGJldHdlZW4gdGhpcyBuZXcgdmFsdWUgYW5kIHRoZSBw
YWdlIGxvZ2ljYWwgdG9wIGFzIHRoZSBwYWdpbmF0aW9uIG9yaWdpbi4KLSAgICBMYXlvdXRVbml0
IHJlbWFpbmRlciA9IHJvdW5kVG9JbnQocGFnZUxvZ2ljYWxUb3AgLSBmaXJzdExpbmVUb3BXaXRo
TGVhZGluZykgJSByb3VuZFRvSW50KGdyaWRMaW5lSGVpZ2h0KTsKLSAgICBMYXlvdXRVbml0IHBh
Z2luYXRpb25EZWx0YSA9IGdyaWRMaW5lSGVpZ2h0IC0gcmVtYWluZGVyOwotICAgIGlmIChpc0hv
cml6b250YWxXcml0aW5nTW9kZSkKLSAgICAgICAgbV9saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4u
c2V0SGVpZ2h0KHBhZ2luYXRpb25EZWx0YSk7Ci0gICAgZWxzZQotICAgICAgICBtX2xpbmVHcmlk
UGFnaW5hdGlvbk9yaWdpbi5zZXRXaWR0aChwYWdpbmF0aW9uRGVsdGEpOwotfQotCi12b2lkIExh
eW91dFN0YXRlOjpwcm9wYWdhdGVMaW5lR3JpZEluZm8oY29uc3QgTGF5b3V0U3RhdGUmIGFuY2Vz
dG9yLCBSZW5kZXJCb3gmIHJlbmRlcmVyKQotewotICAgIC8vIERpc2FibGUgbGluZSBncmlkcyBm
b3Igb2JqZWN0cyB3ZSBkb24ndCBzdXBwb3J0LiBGb3Igbm93IHRoaXMgaW5jbHVkZXMgb3ZlcmZs
b3c6c2Nyb2xsL2F1dG8sIGlubGluZSBibG9ja3MgYW5kCi0gICAgLy8gd3JpdGluZyBtb2RlIHJv
b3RzLgotICAgIGlmIChyZW5kZXJlci5pc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9saW5lR3JpZCA9IG1ha2VXZWFrUHRyKGFuY2VzdG9yLmxp
bmVHcmlkKCkpOwotICAgIG1fbGluZUdyaWRPZmZzZXQgPSBhbmNlc3Rvci5saW5lR3JpZE9mZnNl
dCgpOwotICAgIG1fbGluZUdyaWRQYWdpbmF0aW9uT3JpZ2luID0gYW5jZXN0b3IubGluZUdyaWRQ
YWdpbmF0aW9uT3JpZ2luKCk7Ci19Ci0KLXZvaWQgTGF5b3V0U3RhdGU6OmVzdGFibGlzaExpbmVH
cmlkKGNvbnN0IEZyYW1lVmlld0xheW91dENvbnRleHQ6OkxheW91dFN0YXRlU3RhY2smIGxheW91
dFN0YXRlU3RhY2ssIFJlbmRlckJsb2NrRmxvdyYgcmVuZGVyZXIpCi17Ci0gICAgLy8gRmlyc3Qg
Y2hlY2sgdG8gc2VlIGlmIHRoaXMgZ3JpZCBoYXMgYmVlbiBlc3RhYmxpc2hlZCBhbHJlYWR5Lgot
ICAgIGlmIChtX2xpbmVHcmlkKSB7Ci0gICAgICAgIGlmIChtX2xpbmVHcmlkLT5zdHlsZSgpLmxp
bmVHcmlkKCkgPT0gcmVuZGVyZXIuc3R5bGUoKS5saW5lR3JpZCgpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBhdXRvKiBjdXJyZW50R3JpZCA9IG1fbGluZUdyaWQuZ2V0KCk7Ci0gICAg
ICAgIGZvciAoaW50IGkgPSBsYXlvdXRTdGF0ZVN0YWNrLnNpemUoKSAtIDE7IGkgPD0gMDsgLS1p
KSB7Ci0gICAgICAgICAgICBhdXRvJiBjdXJyZW50U3RhdGUgPSAqbGF5b3V0U3RhdGVTdGFja1tp
XS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUubV9saW5lR3JpZCA9PSBjdXJy
ZW50R3JpZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGN1cnJlbnRH
cmlkID0gY3VycmVudFN0YXRlLmxpbmVHcmlkKCk7Ci0gICAgICAgICAgICBpZiAoIWN1cnJlbnRH
cmlkKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRHcmlk
LT5zdHlsZSgpLmxpbmVHcmlkKCkgPT0gcmVuZGVyZXIuc3R5bGUoKS5saW5lR3JpZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgbV9saW5lR3JpZCA9IG1ha2VXZWFrUHRyKGN1cnJlbnRHcmlkKTsKLSAg
ICAgICAgICAgICAgICBtX2xpbmVHcmlkT2Zmc2V0ID0gY3VycmVudFN0YXRlLm1fbGluZUdyaWRP
ZmZzZXQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotICAgIAotICAgIC8vIFdlIGRpZG4ndCBmaW5kIGFuIGFscmVhZHktZXN0YWJsaXNo
ZWQgZ3JpZCB3aXRoIHRoaXMgaWRlbnRpZmllci4gT3VyIHJlbmRlciBvYmplY3QgZXN0YWJsaXNo
ZXMgdGhlIGdyaWQuCi0gICAgbV9saW5lR3JpZCA9IG1ha2VXZWFrUHRyKHJlbmRlcmVyKTsKLSAg
ICBtX2xpbmVHcmlkT2Zmc2V0ID0gbV9sYXlvdXRPZmZzZXQ7Ci19Ci0KLXZvaWQgTGF5b3V0U3Rh
dGU6OmFkZExheW91dERlbHRhKExheW91dFNpemUgZGVsdGEpCi17Ci0gICAgbV9sYXlvdXREZWx0
YSArPSBkZWx0YTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgbV9sYXlvdXREZWx0YVhTYXR1
cmF0ZWQgfD0gbV9sYXlvdXREZWx0YS53aWR0aCgpID09IExheW91dFVuaXQ6Om1heCgpIHx8IG1f
bGF5b3V0RGVsdGEud2lkdGgoKSA9PSBMYXlvdXRVbml0OjptaW4oKTsKLSAgICBtX2xheW91dERl
bHRhWVNhdHVyYXRlZCB8PSBtX2xheW91dERlbHRhLmhlaWdodCgpID09IExheW91dFVuaXQ6Om1h
eCgpIHx8IG1fbGF5b3V0RGVsdGEuaGVpZ2h0KCkgPT0gTGF5b3V0VW5pdDo6bWluKCk7Ci0jZW5k
aWYKLX0KLQotI2lmICFBU1NFUlRfRElTQUJMRUQKLWJvb2wgTGF5b3V0U3RhdGU6OmxheW91dERl
bHRhTWF0Y2hlcyhMYXlvdXRTaXplIGRlbHRhKSBjb25zdAotewotICAgIHJldHVybiAoZGVsdGEu
d2lkdGgoKSA9PSBtX2xheW91dERlbHRhLndpZHRoKCkgfHwgbV9sYXlvdXREZWx0YVhTYXR1cmF0
ZWQpICYmIChkZWx0YS5oZWlnaHQoKSA9PSBtX2xheW91dERlbHRhLmhlaWdodCgpIHx8IG1fbGF5
b3V0RGVsdGFZU2F0dXJhdGVkKTsKLX0KLSNlbmRpZgotCi1MYXlvdXRTdGF0ZU1haW50YWluZXI6
OkxheW91dFN0YXRlTWFpbnRhaW5lcihSZW5kZXJCb3gmIHJvb3QsIExheW91dFNpemUgb2Zmc2V0
LCBib29sIGRpc2FibGVQYWludE9mZnNldENhY2hlLCBMYXlvdXRVbml0IHBhZ2VIZWlnaHQsIGJv
b2wgcGFnZUhlaWdodENoYW5nZWQpCi0gICAgOiBtX2NvbnRleHQocm9vdC52aWV3KCkuZnJhbWVW
aWV3KCkubGF5b3V0Q29udGV4dCgpKQotICAgICwgbV9wYWludE9mZnNldENhY2hlSXNEaXNhYmxl
ZChkaXNhYmxlUGFpbnRPZmZzZXRDYWNoZSkKLXsKLSAgICBtX2RpZFB1c2hMYXlvdXRTdGF0ZSA9
IG1fY29udGV4dC5wdXNoTGF5b3V0U3RhdGUocm9vdCwgb2Zmc2V0LCBwYWdlSGVpZ2h0LCBwYWdl
SGVpZ2h0Q2hhbmdlZCk7Ci0gICAgaWYgKG1fZGlkUHVzaExheW91dFN0YXRlICYmIG1fcGFpbnRP
ZmZzZXRDYWNoZUlzRGlzYWJsZWQpCi0gICAgICAgIG1fY29udGV4dC5kaXNhYmxlUGFpbnRPZmZz
ZXRDYWNoZSgpOwotfQotCi1MYXlvdXRTdGF0ZU1haW50YWluZXI6On5MYXlvdXRTdGF0ZU1haW50
YWluZXIoKQotewotICAgIGlmICghbV9kaWRQdXNoTGF5b3V0U3RhdGUpCi0gICAgICAgIHJldHVy
bjsKLSAgICBtX2NvbnRleHQucG9wTGF5b3V0U3RhdGUoKTsKLSAgICBpZiAobV9wYWludE9mZnNl
dENhY2hlSXNEaXNhYmxlZCkKLSAgICAgICAgbV9jb250ZXh0LmVuYWJsZVBhaW50T2Zmc2V0Q2Fj
aGUoKTsKLX0KLQotTGF5b3V0U3RhdGVEaXNhYmxlcjo6TGF5b3V0U3RhdGVEaXNhYmxlcihGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0JiBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi17
Ci0gICAgbV9jb250ZXh0LmRpc2FibGVQYWludE9mZnNldENhY2hlKCk7Ci19Ci0KLUxheW91dFN0
YXRlRGlzYWJsZXI6On5MYXlvdXRTdGF0ZURpc2FibGVyKCkKLXsKLSAgICBtX2NvbnRleHQuZW5h
YmxlUGFpbnRPZmZzZXRDYWNoZSgpOwotfQotCi1zdGF0aWMgYm9vbCBzaG91bGREaXNhYmxlUGFp
bnRPZmZzZXRDYWNoZUZvclN1YnRyZWUoUmVuZGVyRWxlbWVudCYgc3VidHJlZUxheW91dFJvb3Qp
Ci17Ci0gICAgZm9yIChhdXRvKiByZW5kZXJlciA9ICZzdWJ0cmVlTGF5b3V0Um9vdDsgcmVuZGVy
ZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPmNvbnRhaW5lcigpKSB7Ci0gICAgICAgIGlmIChyZW5k
ZXJlci0+aGFzVHJhbnNmb3JtKCkgfHwgcmVuZGVyZXItPmhhc1JlZmxlY3Rpb24oKSkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN1YnRy
ZWVMYXlvdXRTdGF0ZU1haW50YWluZXI6OlN1YnRyZWVMYXlvdXRTdGF0ZU1haW50YWluZXIoUmVu
ZGVyRWxlbWVudCogc3VidHJlZUxheW91dFJvb3QpCi17Ci0gICAgaWYgKHN1YnRyZWVMYXlvdXRS
b290KSB7Ci0gICAgICAgIG1fY29udGV4dCA9ICZzdWJ0cmVlTGF5b3V0Um9vdC0+dmlldygpLmZy
YW1lVmlldygpLmxheW91dENvbnRleHQoKTsKLSAgICAgICAgbV9jb250ZXh0LT5wdXNoTGF5b3V0
U3RhdGUoKnN1YnRyZWVMYXlvdXRSb290KTsKLSAgICAgICAgaWYgKHNob3VsZERpc2FibGVQYWlu
dE9mZnNldENhY2hlRm9yU3VidHJlZSgqc3VidHJlZUxheW91dFJvb3QpKSB7Ci0gICAgICAgICAg
ICBtX2NvbnRleHQtPmRpc2FibGVQYWludE9mZnNldENhY2hlKCk7Ci0gICAgICAgICAgICBtX2Rp
ZERpc2FibGVQYWludE9mZnNldENhY2hlID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
U3VidHJlZUxheW91dFN0YXRlTWFpbnRhaW5lcjo6flN1YnRyZWVMYXlvdXRTdGF0ZU1haW50YWlu
ZXIoKQotewotICAgIGlmIChtX2NvbnRleHQpIHsKLSAgICAgICAgbV9jb250ZXh0LT5wb3BMYXlv
dXRTdGF0ZSgpOwotICAgICAgICBpZiAobV9kaWREaXNhYmxlUGFpbnRPZmZzZXRDYWNoZSkKLSAg
ICAgICAgICAgIG1fY29udGV4dC0+ZW5hYmxlUGFpbnRPZmZzZXRDYWNoZSgpOwotICAgIH0KLX0K
LQotUGFnaW5hdGVkTGF5b3V0U3RhdGVNYWludGFpbmVyOjpQYWdpbmF0ZWRMYXlvdXRTdGF0ZU1h
aW50YWluZXIoUmVuZGVyQmxvY2tGbG93JiBmbG93KQotICAgIDogbV9jb250ZXh0KGZsb3cudmll
dygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKSkKLSAgICAsIG1fcHVzaGVkKG1fY29udGV4
dC5wdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQoZmxvdykpCi17Ci19Ci0KLVBh
Z2luYXRlZExheW91dFN0YXRlTWFpbnRhaW5lcjo6flBhZ2luYXRlZExheW91dFN0YXRlTWFpbnRh
aW5lcigpCi17Ci0gICAgaWYgKG1fcHVzaGVkKQotICAgICAgICBtX2NvbnRleHQucG9wTGF5b3V0
U3RhdGUoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91
dFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0
YXRlLmgJKHJldmlzaW9uIDIzODg1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlv
dXRTdGF0ZS5oCShub25leGlzdGVudCkKQEAgLTEsMTc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oIgotI2luY2x1ZGUgIkxheW91dFJlY3Qu
aCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBSZW5kZXJCbG9ja0Zsb3c7Ci1jbGFzcyBSZW5kZXJCb3g7Ci1jbGFzcyBSZW5kZXJF
bGVtZW50OwotY2xhc3MgUmVuZGVyRnJhZ21lbnRlZEZsb3c7Ci1jbGFzcyBSZW5kZXJNdWx0aUNv
bHVtbkZsb3c7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7Ci0KLWNsYXNzIExheW91dFN0YXRlIHsKLSAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXlvdXRTdGF0ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotCi1wdWJsaWM6Ci0gICAgTGF5b3V0U3RhdGUoKQotICAgICAgICA6IG1fY2xpcHBlZChm
YWxzZSkKLSAgICAgICAgLCBtX2lzUGFnaW5hdGVkKGZhbHNlKQotICAgICAgICAsIG1fcGFnZUxv
Z2ljYWxIZWlnaHRDaGFuZ2VkKGZhbHNlKQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAg
LCBtX2xheW91dERlbHRhWFNhdHVyYXRlZChmYWxzZSkKLSAgICAgICAgLCBtX2xheW91dERlbHRh
WVNhdHVyYXRlZChmYWxzZSkKLSNlbmRpZgotICAgIHsKLSAgICB9Ci0gICAgTGF5b3V0U3RhdGUo
Y29uc3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6TGF5b3V0U3RhdGVTdGFjayYsIFJlbmRlckJv
eCYsIGNvbnN0IExheW91dFNpemUmIG9mZnNldCwgTGF5b3V0VW5pdCBwYWdlSGVpZ2h0LCBib29s
IHBhZ2VIZWlnaHRDaGFuZ2VkKTsKLSAgICBlbnVtIGNsYXNzIElzUGFnaW5hdGVkIHsgTm8sIFll
cyB9OwotICAgIGV4cGxpY2l0IExheW91dFN0YXRlKFJlbmRlckVsZW1lbnQmLCBJc1BhZ2luYXRl
ZCA9IElzUGFnaW5hdGVkOjpObyk7Ci0KLSAgICBib29sIGlzUGFnaW5hdGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1BhZ2luYXRlZDsgfQotCi0gICAgLy8gVGhlIHBhZ2UgbG9naWNhbCBvZmZzZXQg
aXMgdGhlIG9iamVjdCdzIG9mZnNldCBmcm9tIHRoZSB0b3Agb2YgdGhlIHBhZ2UgaW4gdGhlIHBh
Z2UgcHJvZ3Jlc3Npb24KLSAgICAvLyBkaXJlY3Rpb24gKHNvIGFuIHgtb2Zmc2V0IGluIHZlcnRp
Y2FsIHRleHQgYW5kIGEgeS1vZmZzZXQgZm9yIGhvcml6b250YWwgdGV4dCkuCi0gICAgTGF5b3V0
VW5pdCBwYWdlTG9naWNhbE9mZnNldChSZW5kZXJCb3gqLCBMYXlvdXRVbml0IGNoaWxkTG9naWNh
bE9mZnNldCkgY29uc3Q7Ci0gICAgCi0gICAgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUxvZ2ljYWxIZWlnaHQ7IH0KLSAgICBib29sIHBhZ2VMb2dp
Y2FsSGVpZ2h0Q2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFu
Z2VkOyB9Ci0KLSAgICBSZW5kZXJCbG9ja0Zsb3cqIGxpbmVHcmlkKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lR3JpZC5nZXQoKTsgfQotICAgIExheW91dFNpemUgbGluZUdyaWRPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX2xpbmVHcmlkT2Zmc2V0OyB9Ci0gICAgTGF5b3V0U2l6ZSBsaW5lR3JpZFBh
Z2luYXRpb25PcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2xpbmVHcmlkUGFnaW5hdGlvbk9yaWdp
bjsgfQotCi0gICAgTGF5b3V0U2l6ZSBwYWludE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFp
bnRPZmZzZXQ7IH0KLSAgICBMYXlvdXRTaXplIGxheW91dE9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5b3V0T2Zmc2V0OyB9Ci0KLSAgICBMYXlvdXRTaXplIHBhZ2VPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VPZmZzZXQ7IH0KLQotICAgIGJvb2wgbmVlZHNCbG9ja0RpcmVjdGlvbkxv
Y2F0aW9uU2V0QmVmb3JlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9saW5lR3JpZCB8fCAobV9p
c1BhZ2luYXRlZCAmJiBtX3BhZ2VMb2dpY2FsSGVpZ2h0KTsgfQotCi0jaWZuZGVmIE5ERUJVRwot
ICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsg
fQotI2VuZGlmCi0gICAgTGF5b3V0UmVjdCBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
cFJlY3Q7IH0KLSAgICBib29sIGlzQ2xpcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcHBlZDsg
fQotCi0gICAgdm9pZCBhZGRMYXlvdXREZWx0YShMYXlvdXRTaXplKTsKLSAgICBMYXlvdXRTaXpl
IGxheW91dERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXREZWx0YTsgfQotI2lmICFBU1NF
UlRfRElTQUJMRUQKLSAgICBib29sIGxheW91dERlbHRhTWF0Y2hlcyhMYXlvdXRTaXplKSBjb25z
dDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIHZvaWQgY29tcHV0ZU9mZnNldHMoY29uc3QgTGF5
b3V0U3RhdGUmIGFuY2VzdG9yLCBSZW5kZXJCb3gmLCBMYXlvdXRTaXplIG9mZnNldCk7Ci0gICAg
dm9pZCBjb21wdXRlQ2xpcFJlY3QoY29uc3QgTGF5b3V0U3RhdGUmIGFuY2VzdG9yLCBSZW5kZXJC
b3gmKTsKLSAgICAvLyBGSVhNRTogd2Via2l0Lm9yZy9iLzE3OTQ0MCB0aGVzZSBmdW5jdGlvbnMg
c2hvdWxkIGJlIHBhcnQgb2YgdGhlIHBhZ2luYXRpb24gY29kZS9GcmFtZVZpZXdMYXlvdXRDb250
ZXh0LgotICAgIHZvaWQgY29tcHV0ZVBhZ2luYXRpb25JbmZvcm1hdGlvbihjb25zdCBGcmFtZVZp
ZXdMYXlvdXRDb250ZXh0OjpMYXlvdXRTdGF0ZVN0YWNrJiwgUmVuZGVyQm94JiwgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbEhlaWdodCwgYm9vbCBwYWdlTG9naWNhbEhlaWdodENoYW5nZWQpOwotICAg
IHZvaWQgcHJvcGFnYXRlTGluZUdyaWRJbmZvKGNvbnN0IExheW91dFN0YXRlJiBhbmNlc3Rvciwg
UmVuZGVyQm94Jik7Ci0gICAgdm9pZCBlc3RhYmxpc2hMaW5lR3JpZChjb25zdCBGcmFtZVZpZXdM
YXlvdXRDb250ZXh0OjpMYXlvdXRTdGF0ZVN0YWNrJiwgUmVuZGVyQmxvY2tGbG93Jik7Ci0gICAg
dm9pZCBjb21wdXRlTGluZUdyaWRQYWdpbmF0aW9uT3JpZ2luKGNvbnN0IFJlbmRlck11bHRpQ29s
dW1uRmxvdyYpOwotCi0gICAgLy8gRG8gbm90IGFkZCBhbnl0aGluZyBhcGFydCBmcm9tIGJpdGZp
ZWxkcy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAxNzMK
LSAgICBib29sIG1fY2xpcHBlZCA6IDE7Ci0gICAgYm9vbCBtX2lzUGFnaW5hdGVkIDogMTsKLSAg
ICAvLyBJZiBvdXIgcGFnZSBoZWlnaHQgaGFzIGNoYW5nZWQsIHRoaXMgd2lsbCBmb3JjZSBhbGwg
YmxvY2tzIHRvIHJlbGF5b3V0LgotICAgIGJvb2wgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQg
OiAxOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBib29sIG1fbGF5b3V0RGVsdGFYU2F0dXJh
dGVkIDogMTsKLSAgICBib29sIG1fbGF5b3V0RGVsdGFZU2F0dXJhdGVkIDogMTsKLSNlbmRpZgot
ICAgIC8vIFRoZSBjdXJyZW50IGxpbmUgZ3JpZCB0aGF0IHdlJ3JlIHNuYXBwaW5nIHRvIGFuZCB0
aGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBvZiB0aGUgZ3JpZC4KLSAgICBXZWFrUHRyPFJlbmRlckJs
b2NrRmxvdz4gbV9saW5lR3JpZDsKLQotICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVu
IHRoZSBsYXlvdXQgY2xpcCByZWN0IGFuZCB0aGUgcGFpbnQgY2xpcCByZWN0IHdoaWNoIG1heSBi
ZSBsYXJnZXIsCi0gICAgLy8gZS5nLiwgYmVjYXVzZSBvZiBjb21wb3NpdGVkIHNjcm9sbGluZy4K
LSAgICBMYXlvdXRSZWN0IG1fY2xpcFJlY3Q7Ci0gICAgCi0gICAgLy8geC95IG9mZnNldCBmcm9t
IGxheW91dCByb290LiBJbmNsdWRlcyBpbi1mbG93IHBvc2l0aW9uaW5nIGFuZCBzY3JvbGwgb2Zm
c2V0cy4KLSAgICBMYXlvdXRTaXplIG1fcGFpbnRPZmZzZXQ7Ci0gICAgLy8geC95IG9mZnNldCBm
cm9tIGxheW91dCByb290LiBEb2VzIG5vdCBpbmNsdWRlIGluLWZsb3cgcG9zaXRpb25pbmcgb3Ig
c2Nyb2xsIG9mZnNldHMuCi0gICAgTGF5b3V0U2l6ZSBtX2xheW91dE9mZnNldDsKLSAgICAvLyBU
cmFuc2llbnQgb2Zmc2V0IGZyb20gdGhlIGZpbmFsIHBvc2l0aW9uIG9mIHRoZSBvYmplY3QKLSAg
ICAvLyB1c2VkIHRvIGVuc3VyZSB0aGF0IHJlcGFpbnRzIGhhcHBlbiBpbiB0aGUgY29ycmVjdCBw
bGFjZS4KLSAgICAvLyBUaGlzIGlzIGEgdG90YWwgZGVsdGEgYWNjdW11bGF0ZWQgZnJvbSB0aGUg
cm9vdC4gCi0gICAgTGF5b3V0U2l6ZSBtX2xheW91dERlbHRhOwotCi0gICAgLy8gVGhlIGN1cnJl
bnQgcGFnZSBoZWlnaHQgZm9yIHRoZSBwYWdpbmF0aW9uIG1vZGVsIHRoYXQgZW5jbG9zZXMgdXMu
Ci0gICAgTGF5b3V0VW5pdCBtX3BhZ2VMb2dpY2FsSGVpZ2h0OwotICAgIC8vIFRoZSBvZmZzZXQg
b2YgdGhlIHN0YXJ0IG9mIHRoZSBmaXJzdCBwYWdlIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBw
YWdpbmF0aW9uIG1vZGVsLgotICAgIExheW91dFNpemUgbV9wYWdlT2Zmc2V0OwotICAgIExheW91
dFNpemUgbV9saW5lR3JpZE9mZnNldDsKLSAgICBMYXlvdXRTaXplIG1fbGluZUdyaWRQYWdpbmF0
aW9uT3JpZ2luOwotI2lmbmRlZiBOREVCVUcKLSAgICBSZW5kZXJFbGVtZW50KiBtX3JlbmRlcmVy
IHsgbnVsbHB0ciB9OwotI2VuZGlmCi19OwotCi0vLyBTdGFjay1iYXNlZCBjbGFzcyB0byBhc3Np
c3Qgd2l0aCBMYXlvdXRTdGF0ZSBwdXNoL3BvcAotY2xhc3MgTGF5b3V0U3RhdGVNYWludGFpbmVy
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXlvdXRTdGF0ZU1haW50YWluZXIpOwotcHVi
bGljOgotICAgIGV4cGxpY2l0IExheW91dFN0YXRlTWFpbnRhaW5lcihSZW5kZXJCb3gmLCBMYXlv
dXRTaXplIG9mZnNldCwgYm9vbCBkaXNhYmxlU3RhdGUgPSBmYWxzZSwgTGF5b3V0VW5pdCBwYWdl
SGVpZ2h0ID0gMF9sdSwgYm9vbCBwYWdlSGVpZ2h0Q2hhbmdlZCA9IGZhbHNlKTsKLSAgICB+TGF5
b3V0U3RhdGVNYWludGFpbmVyKCk7Ci0KLXByaXZhdGU6Ci0gICAgRnJhbWVWaWV3TGF5b3V0Q29u
dGV4dCYgbV9jb250ZXh0OwotICAgIGJvb2wgbV9wYWludE9mZnNldENhY2hlSXNEaXNhYmxlZCB7
IGZhbHNlIH07Ci0gICAgYm9vbCBtX2RpZFB1c2hMYXlvdXRTdGF0ZSB7IGZhbHNlIH07Ci19Owot
Ci1jbGFzcyBTdWJ0cmVlTGF5b3V0U3RhdGVNYWludGFpbmVyIHsKLXB1YmxpYzoKLSAgICBTdWJ0
cmVlTGF5b3V0U3RhdGVNYWludGFpbmVyKFJlbmRlckVsZW1lbnQqIHN1YnRyZWVMYXlvdXRSb290
KTsKLSAgICB+U3VidHJlZUxheW91dFN0YXRlTWFpbnRhaW5lcigpOwotCi1wcml2YXRlOgotICAg
IEZyYW1lVmlld0xheW91dENvbnRleHQqIG1fY29udGV4dCB7IG51bGxwdHIgfTsKLSAgICBib29s
IG1fZGlkRGlzYWJsZVBhaW50T2Zmc2V0Q2FjaGUgeyBmYWxzZSB9OwotfTsKLQotY2xhc3MgTGF5
b3V0U3RhdGVEaXNhYmxlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5b3V0U3RhdGVE
aXNhYmxlcik7Ci1wdWJsaWM6Ci0gICAgTGF5b3V0U3RhdGVEaXNhYmxlcihGcmFtZVZpZXdMYXlv
dXRDb250ZXh0Jik7Ci0gICAgfkxheW91dFN0YXRlRGlzYWJsZXIoKTsKLQotcHJpdmF0ZToKLSAg
ICBGcmFtZVZpZXdMYXlvdXRDb250ZXh0JiBtX2NvbnRleHQ7Ci19OwotCi1jbGFzcyBQYWdpbmF0
ZWRMYXlvdXRTdGF0ZU1haW50YWluZXIgewotcHVibGljOgotICAgIFBhZ2luYXRlZExheW91dFN0
YXRlTWFpbnRhaW5lcihSZW5kZXJCbG9ja0Zsb3cmKTsKLSAgICB+UGFnaW5hdGVkTGF5b3V0U3Rh
dGVNYWludGFpbmVyKCk7Ci0KLXByaXZhdGU6Ci0gICAgRnJhbWVWaWV3TGF5b3V0Q29udGV4dCYg
bV9jb250ZXh0OwotICAgIGJvb2wgbV9wdXNoZWQgeyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xheW91dFN0YXRlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0x
ICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDIzODg1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRl
ICJSZW5kZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAi
UmVuZGVyTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTWVudUxpc3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCShyZXZpc2lv
biAyMzg4NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIExheW91dFN0YXRlOwogY2xhc3MgTGluZUxheW91dFN0YXRlOwogY2xhc3MgTG9naWNhbFNl
bGVjdGlvbk9mZnNldENhY2hlczsKIGNsYXNzIFJlbmRlcklubGluZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCShyZXZpc2lvbiAyMzg4NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDEzIEBACiAjaW5jbHVkZSAiSGl0VGVzdExvY2F0aW9uLmgi
CiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRlci5o
IgotI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxleGlibGVCb3guaCIK
ICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgog
I2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5b3V0U3RhdGUuaCIK
ICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5o
IgogI2luY2x1ZGUgIlJlbmRlck1hcnF1ZWUuaCIKQEAgLTM4NDIsNyArMzg0Miw3IEBAIHZvaWQg
UmVuZGVyQmxvY2tGbG93OjpjaGVja0ZvclBhZ2luYXRpb24KICAgICAgICAgUmVuZGVyRnJhZ21l
bnRlZEZsb3cmIGZyYWdtZW50ZWRGbG93ID0gZG93bmNhc3Q8UmVuZGVyRnJhZ21lbnRlZEZsb3c+
KCp0aGlzKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgdG8gYWx3YXlzIG1h
a2Ugc3VyZSB3ZSBoYXZlIGEgcGFnZSBsb2dpY2FsIGhlaWdodCwgaWYgc2FpZCBoZWlnaHQKLSAg
ICAgICAgLy8gaXMga25vd24uIFRoZSBwYWdlIGxvZ2ljYWwgaGVpZ2h0IHRoaW5nIGluIExheW91
dFN0YXRlIGlzIG1lYW5pbmdsZXNzIGZvciBmbG93CisgICAgICAgIC8vIGlzIGtub3duLiBUaGUg
cGFnZSBsb2dpY2FsIGhlaWdodCB0aGluZyBpbiBSZW5kZXJMYXlvdXRTdGF0ZSBpcyBtZWFuaW5n
bGVzcyBmb3IgZmxvdwogICAgICAgICAvLyB0aHJlYWQtYmFzZWQgcGFnaW5hdGlvbiAocGFnZSBo
ZWlnaHQgaXNuJ3QgbmVjZXNzYXJpbHkgdW5pZm9ybSB0aHJvdWdob3V0IHRoZSBmbG93CiAgICAg
ICAgIC8vIHRocmVhZCksIGJ1dCBhcyBsb25nIGFzIGl0IGlzIHVzZWQgdW5pdmVyc2FsbHkgYXMg
YSBtZWFucyB0byBkZXRlcm1pbmUgd2hldGhlciBwYWdlCiAgICAgICAgIC8vIGhlaWdodCBpcyBr
bm93biBvciBub3QsIHdlIG5lZWQgdGhpcy4gUGFnZSBoZWlnaHQgaXMgdW5rbm93biB3aGVuIGNv
bHVtbiBiYWxhbmNpbmcgaXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCShyZXZpc2lvbiAyMzg4NTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCi0j
aW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJMaW5lTGF5b3V0U3RhdGUuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRnJhZ21lbnRDb250YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJGcmFnbWVudGVk
Rmxvdy5oIgorI2luY2x1ZGUgIlJlbmRlckxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
TGluZUJyZWFrLmgiCiAjaW5jbHVkZSAiUmVuZGVyUnVieUJhc2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJSdWJ5VGV4dC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJ
KHJldmlzaW9uIDIzODg1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAiSFRNTFRleHRB
cmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmxp
bmVFbGVtZW50Qm94LmgiCi0jaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94RnJhZ21lbnRJ
bmZvLmgiCkBAIC02MSw2ICs2MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySXRlcmF0b3IuaCIKICNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5o
IgorI2luY2x1ZGUgIlJlbmRlckxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTXVsdGlD
b2x1bW5GbG93LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGhlbWUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcAkocmV2aXNpb24gMjM4ODU5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NyArNDIsNiBAQAogI2luY2x1ZGUgIkhUTUxQYXJhbUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
UGx1Z0luRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJM
YXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJN
b3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTAsNiArNDksNyBAQAogI2luY2x1
ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQ
bHVnaW5WaWV3QmFzZS5oIgorI2luY2x1ZGUgIlJlbmRlckxheW91dFN0YXRlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVk
Rmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YWdtZW50ZWRGbG93LmNwcAkocmV2aXNpb24gMjM4ODU5KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKLSNpbmNsdWRlICJMYXlvdXRT
dGF0ZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQT0RJbnRlcnZhbFRyZWUuaCIK
ICNpbmNsdWRlICJSZW5kZXJCb3hGcmFnbWVudEluZm8uaCIKQEAgLTQxLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1
ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRlckxheW91dFN0YXRl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVT
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAJKHJldmlzaW9uIDIzODg1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIs
OSBAQAogI2luY2x1ZGUgIkdyaWRQb3NpdGlvbnNSZXNvbHZlci5oIgogI2luY2x1ZGUgIkdyaWRU
cmFja1NpemluZ0FsZ29yaXRobS5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgotI2lu
Y2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ2hpbGRJdGVyYXRvci5oIgog
I2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5b3V0U3RhdGUuaCIK
ICNpbmNsdWRlICJSZW5kZXJUcmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
ICNpbmNsdWRlIDxjc3RkbGliPgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCShyZXZpc2lvbiAyMzg4NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUsMTEgQEAKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
SW5saW5lRWxlbWVudEJveC5oIgotI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJlbmRlckZyYWdtZW50
ZWRGbG93LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCIKKyNp
bmNsdWRlICJSZW5kZXJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZp
c2lvbiAyMzg4NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1
bHQuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4
dEJveC5oIgotI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2su
aCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJh
Z21lbnRlZEZsb3cuaCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJHZW9tZXRy
eU1hcC5oIgogI2luY2x1ZGUgIlJlbmRlckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5
ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbmRlckxp
bmVCcmVhay5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJUYWJsZS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
b3V0U3RhdGUuY3BwCShyZXZpc2lvbiAyMzg4NTkpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MYXlvdXRTdGF0ZS5jcHA6MjM4ODU5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheW91dFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKKworI2luY2x1ZGUgIlJl
bmRlckZyYWdtZW50ZWRGbG93LmgiCisjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCisjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJNdWx0aUNvbHVtbkZsb3cuaCIKKyNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIElzUGFnaW5hdGVkIGlzUGFnaW5hdGVkKQorICAgIDogbV9jbGlwcGVkKGZhbHNl
KQorICAgICwgbV9pc1BhZ2luYXRlZChpc1BhZ2luYXRlZCA9PSBJc1BhZ2luYXRlZDo6WWVzKQor
ICAgICwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQoZmFsc2UpCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgICwgbV9sYXlvdXREZWx0YVhTYXR1cmF0ZWQoZmFsc2UpCisgICAgLCBtX2xheW91
dERlbHRhWVNhdHVyYXRlZChmYWxzZSkKKyNlbmRpZgorI2lmbmRlZiBOREVCVUcKKyAgICAsIG1f
cmVuZGVyZXIoJnJlbmRlcmVyKQorI2VuZGlmCit7CisgICAgaWYgKFJlbmRlckVsZW1lbnQqIGNv
bnRhaW5lciA9IHJlbmRlcmVyLmNvbnRhaW5lcigpKSB7CisgICAgICAgIEZsb2F0UG9pbnQgYWJz
Q29udGVudFBvaW50ID0gY29udGFpbmVyLT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCBV
c2VUcmFuc2Zvcm1zKTsKKyAgICAgICAgbV9wYWludE9mZnNldCA9IExheW91dFNpemUoYWJzQ29u
dGVudFBvaW50LngoKSwgYWJzQ29udGVudFBvaW50LnkoKSk7CisKKyAgICAgICAgaWYgKGNvbnRh
aW5lci0+aGFzT3ZlcmZsb3dDbGlwKCkpIHsKKyAgICAgICAgICAgIG1fY2xpcHBlZCA9IHRydWU7
CisgICAgICAgICAgICBhdXRvJiBjb250YWluZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpj
b250YWluZXIpOworICAgICAgICAgICAgbV9jbGlwUmVjdCA9IExheW91dFJlY3QodG9MYXlvdXRQ
b2ludChtX3BhaW50T2Zmc2V0KSwgY29udGFpbmVyQm94LmNhY2hlZFNpemVGb3JPdmVyZmxvd0Ns
aXAoKSk7CisgICAgICAgICAgICBtX3BhaW50T2Zmc2V0IC09IHRvTGF5b3V0U2l6ZShjb250YWlu
ZXJCb3guc2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1faXNQ
YWdpbmF0ZWQpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBqdXN0IGEgZmxhZyBmb3Iga25vd24gcGFn
ZSBoZWlnaHQgKHNlZSBSZW5kZXJCbG9ja0Zsb3c6OmNoZWNrRm9yUGFnaW5hdGlvbkxvZ2ljYWxI
ZWlnaHRDaGFuZ2UpLgorICAgICAgICBtX3BhZ2VMb2dpY2FsSGVpZ2h0ID0gMTsKKyAgICB9Cit9
CisKK0xheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShjb25zdCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0
OjpMYXlvdXRTdGF0ZVN0YWNrJiBsYXlvdXRTdGF0ZVN0YWNrLCBSZW5kZXJCb3gmIHJlbmRlcmVy
LCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQsIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQs
IGJvb2wgcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKQorICAgIDogbV9jbGlwcGVkKGZhbHNlKQor
ICAgICwgbV9pc1BhZ2luYXRlZChmYWxzZSkKKyAgICAsIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFu
Z2VkKGZhbHNlKQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAsIG1fbGF5b3V0RGVsdGFYU2F0
dXJhdGVkKGZhbHNlKQorICAgICwgbV9sYXlvdXREZWx0YVlTYXR1cmF0ZWQoZmFsc2UpCisjZW5k
aWYKKyNpZm5kZWYgTkRFQlVHCisgICAgLCBtX3JlbmRlcmVyKCZyZW5kZXJlcikKKyNlbmRpZgor
eworICAgIGlmICghbGF5b3V0U3RhdGVTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byYg
YW5jZXN0b3IgPSAqbGF5b3V0U3RhdGVTdGFjay5sYXN0KCkuZ2V0KCk7CisgICAgICAgIGNvbXB1
dGVPZmZzZXRzKGFuY2VzdG9yLCByZW5kZXJlciwgb2Zmc2V0KTsKKyAgICAgICAgY29tcHV0ZUNs
aXBSZWN0KGFuY2VzdG9yLCByZW5kZXJlcik7CisgICAgfQorICAgIGNvbXB1dGVQYWdpbmF0aW9u
SW5mb3JtYXRpb24obGF5b3V0U3RhdGVTdGFjaywgcmVuZGVyZXIsIHBhZ2VMb2dpY2FsSGVpZ2h0
LCBwYWdlTG9naWNhbEhlaWdodENoYW5nZWQpOworfQorCit2b2lkIExheW91dFN0YXRlOjpjb21w
dXRlT2Zmc2V0cyhjb25zdCBMYXlvdXRTdGF0ZSYgYW5jZXN0b3IsIFJlbmRlckJveCYgcmVuZGVy
ZXIsIExheW91dFNpemUgb2Zmc2V0KQoreworICAgIGJvb2wgZml4ZWQgPSByZW5kZXJlci5pc0Zp
eGVkUG9zaXRpb25lZCgpOworICAgIGlmIChmaXhlZCkgeworICAgICAgICBGbG9hdFBvaW50IGZp
eGVkT2Zmc2V0ID0gcmVuZGVyZXIudmlldygpLmxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KCks
IElzRml4ZWQpOworICAgICAgICBtX3BhaW50T2Zmc2V0ID0gTGF5b3V0U2l6ZShmaXhlZE9mZnNl
dC54KCksIGZpeGVkT2Zmc2V0LnkoKSkgKyBvZmZzZXQ7CisgICAgfSBlbHNlCisgICAgICAgIG1f
cGFpbnRPZmZzZXQgPSBhbmNlc3Rvci5wYWludE9mZnNldCgpICsgb2Zmc2V0OworCisgICAgaWYg
KHJlbmRlcmVyLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFmaXhlZCkgeworICAgICAgICBp
ZiAoYXV0byogY29udGFpbmVyID0gcmVuZGVyZXIuY29udGFpbmVyKCkpIHsKKyAgICAgICAgICAg
IGlmIChjb250YWluZXItPmlzSW5GbG93UG9zaXRpb25lZCgpICYmIGlzPFJlbmRlcklubGluZT4o
KmNvbnRhaW5lcikpCisgICAgICAgICAgICAgICAgbV9wYWludE9mZnNldCArPSBkb3duY2FzdDxS
ZW5kZXJJbmxpbmU+KCpjb250YWluZXIpLm9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRJbmxpbmUo
JnJlbmRlcmVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fbGF5b3V0T2Zmc2V0ID0gbV9w
YWludE9mZnNldDsKKworICAgIGlmIChyZW5kZXJlci5pc0luRmxvd1Bvc2l0aW9uZWQoKSAmJiBy
ZW5kZXJlci5oYXNMYXllcigpKQorICAgICAgICBtX3BhaW50T2Zmc2V0ICs9IHJlbmRlcmVyLmxh
eWVyKCktPm9mZnNldEZvckluRmxvd1Bvc2l0aW9uKCk7CisKKyAgICBpZiAocmVuZGVyZXIuaGFz
T3ZlcmZsb3dDbGlwKCkpCisgICAgICAgIG1fcGFpbnRPZmZzZXQgLT0gdG9MYXlvdXRTaXplKHJl
bmRlcmVyLnNjcm9sbFBvc2l0aW9uKCkpOworCisgICAgbV9sYXlvdXREZWx0YSA9IGFuY2VzdG9y
LmxheW91dERlbHRhKCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIG1fbGF5b3V0RGVsdGFY
U2F0dXJhdGVkID0gYW5jZXN0b3IubV9sYXlvdXREZWx0YVhTYXR1cmF0ZWQ7CisgICAgbV9sYXlv
dXREZWx0YVlTYXR1cmF0ZWQgPSBhbmNlc3Rvci5tX2xheW91dERlbHRhWVNhdHVyYXRlZDsKKyNl
bmRpZgorfQorCit2b2lkIExheW91dFN0YXRlOjpjb21wdXRlQ2xpcFJlY3QoY29uc3QgTGF5b3V0
U3RhdGUmIGFuY2VzdG9yLCBSZW5kZXJCb3gmIHJlbmRlcmVyKQoreworICAgIG1fY2xpcHBlZCA9
ICFyZW5kZXJlci5pc0ZpeGVkUG9zaXRpb25lZCgpICYmIGFuY2VzdG9yLmlzQ2xpcHBlZCgpOwor
ICAgIGlmIChtX2NsaXBwZWQpCisgICAgICAgIG1fY2xpcFJlY3QgPSBhbmNlc3Rvci5jbGlwUmVj
dCgpOworICAgIGlmICghcmVuZGVyZXIuaGFzT3ZlcmZsb3dDbGlwKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gcGFpbnRPZmZzZXRGb3JDbGlwUmVjdCA9IHRvTGF5b3V0UG9pbnQobV9w
YWludE9mZnNldCArIHRvTGF5b3V0U2l6ZShyZW5kZXJlci5zY3JvbGxQb3NpdGlvbigpKSk7Cisg
ICAgTGF5b3V0UmVjdCBjbGlwUmVjdChwYWludE9mZnNldEZvckNsaXBSZWN0ICsgcmVuZGVyZXIu
dmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5sYXlvdXREZWx0YSgpLCByZW5kZXJl
ci5jYWNoZWRTaXplRm9yT3ZlcmZsb3dDbGlwKCkpOworICAgIGlmIChtX2NsaXBwZWQpCisgICAg
ICAgIG1fY2xpcFJlY3QuaW50ZXJzZWN0KGNsaXBSZWN0KTsKKyAgICBlbHNlCisgICAgICAgIG1f
Y2xpcFJlY3QgPSBjbGlwUmVjdDsKKyAgICBtX2NsaXBwZWQgPSB0cnVlOworICAgIC8vIEZJWE1F
OiA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NDM+IEFwcGx5IGNv
bnRyb2wgY2xpcCBpZiBwcmVzZW50LgorfQorCit2b2lkIExheW91dFN0YXRlOjpjb21wdXRlUGFn
aW5hdGlvbkluZm9ybWF0aW9uKGNvbnN0IEZyYW1lVmlld0xheW91dENvbnRleHQ6OkxheW91dFN0
YXRlU3RhY2smIGxheW91dFN0YXRlU3RhY2ssIFJlbmRlckJveCYgcmVuZGVyZXIsIExheW91dFVu
aXQgcGFnZUxvZ2ljYWxIZWlnaHQsIGJvb2wgcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKQorewor
ICAgIGF1dG8qIGFuY2VzdG9yID0gbGF5b3V0U3RhdGVTdGFjay5pc0VtcHR5KCkgPyBudWxscHRy
IDogbGF5b3V0U3RhdGVTdGFjay5sYXN0KCkuZ2V0KCk7CisgICAgLy8gSWYgd2UgZXN0YWJsaXNo
IGEgbmV3IHBhZ2UgaGVpZ2h0LCB0aGVuIGNhY2hlIHRoZSBvZmZzZXQgdG8gdGhlIHRvcCBvZiB0
aGUgZmlyc3QgcGFnZS4KKyAgICAvLyBXZSBjYW4gY29tcGFyZSB0aGlzIGxhdGVyIG9uIHRvIGZp
Z3VyZSBvdXQgd2hhdCBwYXJ0IG9mIHRoZSBwYWdlIHdlJ3JlIGFjdHVhbGx5IG9uLgorICAgIGlm
IChwYWdlTG9naWNhbEhlaWdodCB8fCByZW5kZXJlci5pc1JlbmRlckZyYWdtZW50ZWRGbG93KCkp
IHsKKyAgICAgICAgbV9wYWdlTG9naWNhbEhlaWdodCA9IHBhZ2VMb2dpY2FsSGVpZ2h0OworICAg
ICAgICBib29sIGlzRmxpcHBlZCA9IHJlbmRlcmVyLnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3Jp
dGluZ01vZGUoKTsKKyAgICAgICAgbV9wYWdlT2Zmc2V0ID0gTGF5b3V0U2l6ZShtX2xheW91dE9m
ZnNldC53aWR0aCgpICsgKCFpc0ZsaXBwZWQgPyByZW5kZXJlci5ib3JkZXJMZWZ0KCkgKyByZW5k
ZXJlci5wYWRkaW5nTGVmdCgpIDogcmVuZGVyZXIuYm9yZGVyUmlnaHQoKSArIHJlbmRlcmVyLnBh
ZGRpbmdSaWdodCgpKSwgbV9sYXlvdXRPZmZzZXQuaGVpZ2h0KCkgKyAoIWlzRmxpcHBlZCA/IHJl
bmRlcmVyLmJvcmRlclRvcCgpICsgcmVuZGVyZXIucGFkZGluZ1RvcCgpIDogcmVuZGVyZXIuYm9y
ZGVyQm90dG9tKCkgKyByZW5kZXJlci5wYWRkaW5nQm90dG9tKCkpKTsKKyAgICAgICAgbV9wYWdl
TG9naWNhbEhlaWdodENoYW5nZWQgPSBwYWdlTG9naWNhbEhlaWdodENoYW5nZWQ7CisgICAgICAg
IG1faXNQYWdpbmF0ZWQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoYW5jZXN0b3IpIHsKKyAgICAg
ICAgLy8gSWYgd2UgZG9uJ3QgZXN0YWJsaXNoIGEgbmV3IHBhZ2UgaGVpZ2h0LCB0aGVuIHByb3Bh
Z2F0ZSB0aGUgb2xkIHBhZ2UgaGVpZ2h0IGFuZCBvZmZzZXQgZG93bi4KKyAgICAgICAgbV9wYWdl
TG9naWNhbEhlaWdodCA9IGFuY2VzdG9yLT5wYWdlTG9naWNhbEhlaWdodCgpOworICAgICAgICBt
X3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCA9IGFuY2VzdG9yLT5wYWdlTG9naWNhbEhlaWdodENo
YW5nZWQoKTsKKyAgICAgICAgbV9wYWdlT2Zmc2V0ID0gYW5jZXN0b3ItPnBhZ2VPZmZzZXQoKTsK
KworICAgICAgICAvLyBEaXNhYmxlIHBhZ2luYXRpb24gZm9yIG9iamVjdHMgd2UgZG9uJ3Qgc3Vw
cG9ydC4gRm9yIG5vdyB0aGlzIGluY2x1ZGVzIG92ZXJmbG93OnNjcm9sbC9hdXRvLCBpbmxpbmUg
YmxvY2tzIGFuZCB3cml0aW5nIG1vZGUgcm9vdHMuCisgICAgICAgIGlmIChyZW5kZXJlci5pc1Vu
c3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSkgeworICAgICAgICAgICAgbV9wYWdlTG9naWNhbEhl
aWdodCA9IDA7CisgICAgICAgICAgICBtX2lzUGFnaW5hdGVkID0gZmFsc2U7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgbV9pc1BhZ2luYXRlZCA9IG1fcGFnZUxvZ2ljYWxIZWlnaHQgfHwg
cmVuZGVyZXIuZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKTsKKyAgICB9CisKKyAgICAvLyBQcm9w
YWdhdGUgbGluZSBncmlkIGluZm9ybWF0aW9uLgorICAgIGlmIChhbmNlc3RvcikKKyAgICAgICAg
cHJvcGFnYXRlTGluZUdyaWRJbmZvKCphbmNlc3RvciwgcmVuZGVyZXIpOworCisgICAgaWYgKGxp
bmVHcmlkKCkgJiYgKGxpbmVHcmlkKCktPnN0eWxlKCkud3JpdGluZ01vZGUoKSA9PSByZW5kZXJl
ci5zdHlsZSgpLndyaXRpbmdNb2RlKCkpICYmIGlzPFJlbmRlck11bHRpQ29sdW1uRmxvdz4ocmVu
ZGVyZXIpKQorICAgICAgICBjb21wdXRlTGluZUdyaWRQYWdpbmF0aW9uT3JpZ2luKGRvd25jYXN0
PFJlbmRlck11bHRpQ29sdW1uRmxvdz4ocmVuZGVyZXIpKTsKKworICAgIC8vIElmIHdlIGhhdmUg
YSBuZXcgZ3JpZCB0byB0cmFjaywgdGhlbiBhZGQgaXQgdG8gb3VyIHNldC4KKyAgICBpZiAocmVu
ZGVyZXIuc3R5bGUoKS5saW5lR3JpZCgpICE9IFJlbmRlclN0eWxlOjppbml0aWFsTGluZUdyaWQo
KSAmJiBpczxSZW5kZXJCbG9ja0Zsb3c+KHJlbmRlcmVyKSkKKyAgICAgICAgZXN0YWJsaXNoTGlu
ZUdyaWQobGF5b3V0U3RhdGVTdGFjaywgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihyZW5kZXJl
cikpOworfQorCitMYXlvdXRVbml0IExheW91dFN0YXRlOjpwYWdlTG9naWNhbE9mZnNldChSZW5k
ZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGNoaWxkTG9naWNhbE9mZnNldCkgY29uc3QKK3sKKyAg
ICBpZiAoY2hpbGQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHJldHVybiBt
X2xheW91dE9mZnNldC5oZWlnaHQoKSArIGNoaWxkTG9naWNhbE9mZnNldCAtIG1fcGFnZU9mZnNl
dC5oZWlnaHQoKTsKKyAgICByZXR1cm4gbV9sYXlvdXRPZmZzZXQud2lkdGgoKSArIGNoaWxkTG9n
aWNhbE9mZnNldCAtIG1fcGFnZU9mZnNldC53aWR0aCgpOworfQorCit2b2lkIExheW91dFN0YXRl
Ojpjb21wdXRlTGluZUdyaWRQYWdpbmF0aW9uT3JpZ2luKGNvbnN0IFJlbmRlck11bHRpQ29sdW1u
RmxvdyYgbXVsdGljb2wpCit7CisgICAgaWYgKCFpc1BhZ2luYXRlZCgpIHx8ICFwYWdlTG9naWNh
bEhlaWdodCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW11bHRpY29sLnByb2dyZXNz
aW9uSXNJbmxpbmUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFdlIG5lZWQgdG8gY2FjaGUg
YSBsaW5lIGdyaWQgcGFnaW5hdGlvbiBvcmlnaW4gc28gdGhhdCB3ZSB1bmRlcnN0YW5kIGhvdyB0
byByZXNldCB0aGUgbGluZSBncmlkCisgICAgLy8gYXQgdGhlIHRvcCBvZiBlYWNoIGNvbHVtbi4K
KyAgICAvLyBHZXQgdGhlIGN1cnJlbnQgbGluZSBncmlkIGFuZCBvZmZzZXQuCisgICAgQVNTRVJU
KG1fbGluZUdyaWQpOworICAgIC8vIEdldCB0aGUgaHlwb3RoZXRpY2FsIGxpbmUgYm94IHVzZWQg
dG8gZXN0YWJsaXNoIHRoZSBncmlkLgorICAgIGF1dG8qIGxpbmVHcmlkQm94ID0gbV9saW5lR3Jp
ZC0+bGluZUdyaWRCb3goKTsKKyAgICBpZiAoIWxpbmVHcmlkQm94KQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBOb3cgZGV0ZXJtaW5lIG91ciBwb3NpdGlvbiBvbiB0aGUgZ3JpZC4gT3VyIGJh
c2VsaW5lIG5lZWRzIHRvIGJlIGFkanVzdGVkIHRvIHRoZSBuZWFyZXN0IGJhc2VsaW5lIG11bHRp
cGxlCisgICAgLy8gYXMgZXN0YWJsaXNoZWQgYnkgdGhlIGxpbmUgYm94LgorICAgIC8vIEZJWE1F
OiBOZWVkIHRvIGhhbmRsZSBjcmF6eSBsaW5lLWJveC1jb250YWluIHZhbHVlcyB0aGF0IGNhdXNl
IHRoZSByb290IGxpbmUgYm94IHRvIG5vdCBiZSBjb25zaWRlcmVkLiBJIGFzc3VtZQorICAgIC8v
IHRoZSBncmlkIHNob3VsZCBob25vciBsaW5lLWJveC1jb250YWluLgorICAgIExheW91dFVuaXQg
Z3JpZExpbmVIZWlnaHQgPSBsaW5lR3JpZEJveC0+bGluZUJvdHRvbVdpdGhMZWFkaW5nKCkgLSBs
aW5lR3JpZEJveC0+bGluZVRvcFdpdGhMZWFkaW5nKCk7CisgICAgaWYgKCFncmlkTGluZUhlaWdo
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9kZSA9
IG1fbGluZUdyaWQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CisgICAgTGF5b3V0VW5pdCBs
aW5lR3JpZEJsb2NrT2Zmc2V0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPyBtX2xpbmVHcmlk
T2Zmc2V0LmhlaWdodCgpIDogbV9saW5lR3JpZE9mZnNldC53aWR0aCgpOworICAgIExheW91dFVu
aXQgZmlyc3RMaW5lVG9wV2l0aExlYWRpbmcgPSBsaW5lR3JpZEJsb2NrT2Zmc2V0ICsgbGluZUdy
aWRCb3gtPmxpbmVUb3BXaXRoTGVhZGluZygpOworICAgIExheW91dFVuaXQgcGFnZUxvZ2ljYWxU
b3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IG1fcGFnZU9mZnNldC5oZWlnaHQoKSA6IG1f
cGFnZU9mZnNldC53aWR0aCgpOworICAgIGlmIChwYWdlTG9naWNhbFRvcCA8PSBmaXJzdExpbmVU
b3BXaXRoTGVhZGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU2hpZnQgdG8gdGhlIG5l
eHQgaGlnaGVzdCBsaW5lIGdyaWQgbXVsdGlwbGUgcGFzdCB0aGUgcGFnZSBsb2dpY2FsIHRvcC4g
Q2FjaGUgdGhlIGRlbHRhCisgICAgLy8gYmV0d2VlbiB0aGlzIG5ldyB2YWx1ZSBhbmQgdGhlIHBh
Z2UgbG9naWNhbCB0b3AgYXMgdGhlIHBhZ2luYXRpb24gb3JpZ2luLgorICAgIExheW91dFVuaXQg
cmVtYWluZGVyID0gcm91bmRUb0ludChwYWdlTG9naWNhbFRvcCAtIGZpcnN0TGluZVRvcFdpdGhM
ZWFkaW5nKSAlIHJvdW5kVG9JbnQoZ3JpZExpbmVIZWlnaHQpOworICAgIExheW91dFVuaXQgcGFn
aW5hdGlvbkRlbHRhID0gZ3JpZExpbmVIZWlnaHQgLSByZW1haW5kZXI7CisgICAgaWYgKGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKQorICAgICAgICBtX2xpbmVHcmlkUGFnaW5hdGlvbk9yaWdpbi5z
ZXRIZWlnaHQocGFnaW5hdGlvbkRlbHRhKTsKKyAgICBlbHNlCisgICAgICAgIG1fbGluZUdyaWRQ
YWdpbmF0aW9uT3JpZ2luLnNldFdpZHRoKHBhZ2luYXRpb25EZWx0YSk7Cit9CisKK3ZvaWQgTGF5
b3V0U3RhdGU6OnByb3BhZ2F0ZUxpbmVHcmlkSW5mbyhjb25zdCBMYXlvdXRTdGF0ZSYgYW5jZXN0
b3IsIFJlbmRlckJveCYgcmVuZGVyZXIpCit7CisgICAgLy8gRGlzYWJsZSBsaW5lIGdyaWRzIGZv
ciBvYmplY3RzIHdlIGRvbid0IHN1cHBvcnQuIEZvciBub3cgdGhpcyBpbmNsdWRlcyBvdmVyZmxv
dzpzY3JvbGwvYXV0bywgaW5saW5lIGJsb2NrcyBhbmQKKyAgICAvLyB3cml0aW5nIG1vZGUgcm9v
dHMuCisgICAgaWYgKHJlbmRlcmVyLmlzVW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2xpbmVHcmlkID0gbWFrZVdlYWtQdHIoYW5jZXN0b3IubGlu
ZUdyaWQoKSk7CisgICAgbV9saW5lR3JpZE9mZnNldCA9IGFuY2VzdG9yLmxpbmVHcmlkT2Zmc2V0
KCk7CisgICAgbV9saW5lR3JpZFBhZ2luYXRpb25PcmlnaW4gPSBhbmNlc3Rvci5saW5lR3JpZFBh
Z2luYXRpb25PcmlnaW4oKTsKK30KKwordm9pZCBMYXlvdXRTdGF0ZTo6ZXN0YWJsaXNoTGluZUdy
aWQoY29uc3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6TGF5b3V0U3RhdGVTdGFjayYgbGF5b3V0
U3RhdGVTdGFjaywgUmVuZGVyQmxvY2tGbG93JiByZW5kZXJlcikKK3sKKyAgICAvLyBGaXJzdCBj
aGVjayB0byBzZWUgaWYgdGhpcyBncmlkIGhhcyBiZWVuIGVzdGFibGlzaGVkIGFscmVhZHkuCisg
ICAgaWYgKG1fbGluZUdyaWQpIHsKKyAgICAgICAgaWYgKG1fbGluZUdyaWQtPnN0eWxlKCkubGlu
ZUdyaWQoKSA9PSByZW5kZXJlci5zdHlsZSgpLmxpbmVHcmlkKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGF1dG8qIGN1cnJlbnRHcmlkID0gbV9saW5lR3JpZC5nZXQoKTsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IGxheW91dFN0YXRlU3RhY2suc2l6ZSgpIC0gMTsgaSA8PSAwOyAtLWkp
IHsKKyAgICAgICAgICAgIGF1dG8mIGN1cnJlbnRTdGF0ZSA9ICpsYXlvdXRTdGF0ZVN0YWNrW2ld
LmdldCgpOworICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZS5tX2xpbmVHcmlkID09IGN1cnJl
bnRHcmlkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY3VycmVudEdy
aWQgPSBjdXJyZW50U3RhdGUubGluZUdyaWQoKTsKKyAgICAgICAgICAgIGlmICghY3VycmVudEdy
aWQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoY3VycmVudEdyaWQt
PnN0eWxlKCkubGluZUdyaWQoKSA9PSByZW5kZXJlci5zdHlsZSgpLmxpbmVHcmlkKCkpIHsKKyAg
ICAgICAgICAgICAgICBtX2xpbmVHcmlkID0gbWFrZVdlYWtQdHIoY3VycmVudEdyaWQpOworICAg
ICAgICAgICAgICAgIG1fbGluZUdyaWRPZmZzZXQgPSBjdXJyZW50U3RhdGUubV9saW5lR3JpZE9m
ZnNldDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgCisgICAgLy8gV2UgZGlkbid0IGZpbmQgYW4gYWxyZWFkeS1lc3RhYmxpc2hl
ZCBncmlkIHdpdGggdGhpcyBpZGVudGlmaWVyLiBPdXIgcmVuZGVyIG9iamVjdCBlc3RhYmxpc2hl
cyB0aGUgZ3JpZC4KKyAgICBtX2xpbmVHcmlkID0gbWFrZVdlYWtQdHIocmVuZGVyZXIpOworICAg
IG1fbGluZUdyaWRPZmZzZXQgPSBtX2xheW91dE9mZnNldDsKK30KKwordm9pZCBMYXlvdXRTdGF0
ZTo6YWRkTGF5b3V0RGVsdGEoTGF5b3V0U2l6ZSBkZWx0YSkKK3sKKyAgICBtX2xheW91dERlbHRh
ICs9IGRlbHRhOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBtX2xheW91dERlbHRhWFNhdHVy
YXRlZCB8PSBtX2xheW91dERlbHRhLndpZHRoKCkgPT0gTGF5b3V0VW5pdDo6bWF4KCkgfHwgbV9s
YXlvdXREZWx0YS53aWR0aCgpID09IExheW91dFVuaXQ6Om1pbigpOworICAgIG1fbGF5b3V0RGVs
dGFZU2F0dXJhdGVkIHw9IG1fbGF5b3V0RGVsdGEuaGVpZ2h0KCkgPT0gTGF5b3V0VW5pdDo6bWF4
KCkgfHwgbV9sYXlvdXREZWx0YS5oZWlnaHQoKSA9PSBMYXlvdXRVbml0OjptaW4oKTsKKyNlbmRp
ZgorfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorYm9vbCBMYXlvdXRTdGF0ZTo6bGF5b3V0RGVs
dGFNYXRjaGVzKExheW91dFNpemUgZGVsdGEpIGNvbnN0Cit7CisgICAgcmV0dXJuIChkZWx0YS53
aWR0aCgpID09IG1fbGF5b3V0RGVsdGEud2lkdGgoKSB8fCBtX2xheW91dERlbHRhWFNhdHVyYXRl
ZCkgJiYgKGRlbHRhLmhlaWdodCgpID09IG1fbGF5b3V0RGVsdGEuaGVpZ2h0KCkgfHwgbV9sYXlv
dXREZWx0YVlTYXR1cmF0ZWQpOworfQorI2VuZGlmCisKK0xheW91dFN0YXRlTWFpbnRhaW5lcjo6
TGF5b3V0U3RhdGVNYWludGFpbmVyKFJlbmRlckJveCYgcm9vdCwgTGF5b3V0U2l6ZSBvZmZzZXQs
IGJvb2wgZGlzYWJsZVBhaW50T2Zmc2V0Q2FjaGUsIExheW91dFVuaXQgcGFnZUhlaWdodCwgYm9v
bCBwYWdlSGVpZ2h0Q2hhbmdlZCkKKyAgICA6IG1fY29udGV4dChyb290LnZpZXcoKS5mcmFtZVZp
ZXcoKS5sYXlvdXRDb250ZXh0KCkpCisgICAgLCBtX3BhaW50T2Zmc2V0Q2FjaGVJc0Rpc2FibGVk
KGRpc2FibGVQYWludE9mZnNldENhY2hlKQoreworICAgIG1fZGlkUHVzaExheW91dFN0YXRlID0g
bV9jb250ZXh0LnB1c2hMYXlvdXRTdGF0ZShyb290LCBvZmZzZXQsIHBhZ2VIZWlnaHQsIHBhZ2VI
ZWlnaHRDaGFuZ2VkKTsKKyAgICBpZiAobV9kaWRQdXNoTGF5b3V0U3RhdGUgJiYgbV9wYWludE9m
ZnNldENhY2hlSXNEaXNhYmxlZCkKKyAgICAgICAgbV9jb250ZXh0LmRpc2FibGVQYWludE9mZnNl
dENhY2hlKCk7Cit9CisKK0xheW91dFN0YXRlTWFpbnRhaW5lcjo6fkxheW91dFN0YXRlTWFpbnRh
aW5lcigpCit7CisgICAgaWYgKCFtX2RpZFB1c2hMYXlvdXRTdGF0ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fY29udGV4dC5wb3BMYXlvdXRTdGF0ZSgpOworICAgIGlmIChtX3BhaW50T2Zmc2V0
Q2FjaGVJc0Rpc2FibGVkKQorICAgICAgICBtX2NvbnRleHQuZW5hYmxlUGFpbnRPZmZzZXRDYWNo
ZSgpOworfQorCitMYXlvdXRTdGF0ZURpc2FibGVyOjpMYXlvdXRTdGF0ZURpc2FibGVyKEZyYW1l
Vmlld0xheW91dENvbnRleHQmIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKK3sK
KyAgICBtX2NvbnRleHQuZGlzYWJsZVBhaW50T2Zmc2V0Q2FjaGUoKTsKK30KKworTGF5b3V0U3Rh
dGVEaXNhYmxlcjo6fkxheW91dFN0YXRlRGlzYWJsZXIoKQoreworICAgIG1fY29udGV4dC5lbmFi
bGVQYWludE9mZnNldENhY2hlKCk7Cit9CisKK3N0YXRpYyBib29sIHNob3VsZERpc2FibGVQYWlu
dE9mZnNldENhY2hlRm9yU3VidHJlZShSZW5kZXJFbGVtZW50JiBzdWJ0cmVlTGF5b3V0Um9vdCkK
K3sKKyAgICBmb3IgKGF1dG8qIHJlbmRlcmVyID0gJnN1YnRyZWVMYXlvdXRSb290OyByZW5kZXJl
cjsgcmVuZGVyZXIgPSByZW5kZXJlci0+Y29udGFpbmVyKCkpIHsKKyAgICAgICAgaWYgKHJlbmRl
cmVyLT5oYXNUcmFuc2Zvcm0oKSB8fCByZW5kZXJlci0+aGFzUmVmbGVjdGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworU3VidHJl
ZUxheW91dFN0YXRlTWFpbnRhaW5lcjo6U3VidHJlZUxheW91dFN0YXRlTWFpbnRhaW5lcihSZW5k
ZXJFbGVtZW50KiBzdWJ0cmVlTGF5b3V0Um9vdCkKK3sKKyAgICBpZiAoc3VidHJlZUxheW91dFJv
b3QpIHsKKyAgICAgICAgbV9jb250ZXh0ID0gJnN1YnRyZWVMYXlvdXRSb290LT52aWV3KCkuZnJh
bWVWaWV3KCkubGF5b3V0Q29udGV4dCgpOworICAgICAgICBtX2NvbnRleHQtPnB1c2hMYXlvdXRT
dGF0ZSgqc3VidHJlZUxheW91dFJvb3QpOworICAgICAgICBpZiAoc2hvdWxkRGlzYWJsZVBhaW50
T2Zmc2V0Q2FjaGVGb3JTdWJ0cmVlKCpzdWJ0cmVlTGF5b3V0Um9vdCkpIHsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+ZGlzYWJsZVBhaW50T2Zmc2V0Q2FjaGUoKTsKKyAgICAgICAgICAgIG1fZGlk
RGlzYWJsZVBhaW50T2Zmc2V0Q2FjaGUgPSB0cnVlOworICAgICAgICB9CisgICAgfQorfQorCitT
dWJ0cmVlTGF5b3V0U3RhdGVNYWludGFpbmVyOjp+U3VidHJlZUxheW91dFN0YXRlTWFpbnRhaW5l
cigpCit7CisgICAgaWYgKG1fY29udGV4dCkgeworICAgICAgICBtX2NvbnRleHQtPnBvcExheW91
dFN0YXRlKCk7CisgICAgICAgIGlmIChtX2RpZERpc2FibGVQYWludE9mZnNldENhY2hlKQorICAg
ICAgICAgICAgbV9jb250ZXh0LT5lbmFibGVQYWludE9mZnNldENhY2hlKCk7CisgICAgfQorfQor
CitQYWdpbmF0ZWRMYXlvdXRTdGF0ZU1haW50YWluZXI6OlBhZ2luYXRlZExheW91dFN0YXRlTWFp
bnRhaW5lcihSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCisgICAgOiBtX2NvbnRleHQoZmxvdy52aWV3
KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpKQorICAgICwgbV9wdXNoZWQobV9jb250ZXh0
LnB1c2hMYXlvdXRTdGF0ZUZvclBhZ2luYXRpb25JZk5lZWRlZChmbG93KSkKK3sKK30KKworUGFn
aW5hdGVkTGF5b3V0U3RhdGVNYWludGFpbmVyOjp+UGFnaW5hdGVkTGF5b3V0U3RhdGVNYWludGFp
bmVyKCkKK3sKKyAgICBpZiAobV9wdXNoZWQpCisgICAgICAgIG1fY29udGV4dC5wb3BMYXlvdXRT
dGF0ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5jcHAKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheW91dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5b3V0U3RhdGUuY3BwCShyZXZpc2lvbiAyMzg4NTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxheW91
dFN0YXRlLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5b3V0U3RhdGUuaCIKIAogI2luY2x1ZGUgIlJl
bmRlckZyYWdtZW50ZWRGbG93LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCkBAIC0zNSw3
ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTGF5b3V0U3RhdGU6OkxheW91dFN0
YXRlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBJc1BhZ2luYXRlZCBpc1BhZ2luYXRlZCkKK1Jl
bmRlckxheW91dFN0YXRlOjpSZW5kZXJMYXlvdXRTdGF0ZShSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgSXNQYWdpbmF0ZWQgaXNQYWdpbmF0ZWQpCiAgICAgOiBtX2NsaXBwZWQoZmFsc2UpCiAgICAg
LCBtX2lzUGFnaW5hdGVkKGlzUGFnaW5hdGVkID09IElzUGFnaW5hdGVkOjpZZXMpCiAgICAgLCBt
X3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZChmYWxzZSkKQEAgLTY0LDcgKzY0LDcgQEAgTGF5b3V0
U3RhdGU6OkxheW91dFN0YXRlKFJlbmRlckVsZW1lbnQmIAogICAgIH0KIH0KIAotTGF5b3V0U3Rh
dGU6OkxheW91dFN0YXRlKGNvbnN0IEZyYW1lVmlld0xheW91dENvbnRleHQ6OkxheW91dFN0YXRl
U3RhY2smIGxheW91dFN0YXRlU3RhY2ssIFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IExheW91
dFNpemUmIG9mZnNldCwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCwgYm9vbCBwYWdlTG9n
aWNhbEhlaWdodENoYW5nZWQpCitSZW5kZXJMYXlvdXRTdGF0ZTo6UmVuZGVyTGF5b3V0U3RhdGUo
Y29uc3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6TGF5b3V0U3RhdGVTdGFjayYgbGF5b3V0U3Rh
dGVTdGFjaywgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0LCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0LCBib29sIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdl
ZCkKICAgICA6IG1fY2xpcHBlZChmYWxzZSkKICAgICAsIG1faXNQYWdpbmF0ZWQoZmFsc2UpCiAg
ICAgLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZChmYWxzZSkKQEAgLTg0LDcgKzg0LDcgQEAg
TGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKGNvbnN0IEZyYW1lVmlldwogICAgIGNvbXB1dGVQYWdp
bmF0aW9uSW5mb3JtYXRpb24obGF5b3V0U3RhdGVTdGFjaywgcmVuZGVyZXIsIHBhZ2VMb2dpY2Fs
SGVpZ2h0LCBwYWdlTG9naWNhbEhlaWdodENoYW5nZWQpOwogfQogCi12b2lkIExheW91dFN0YXRl
Ojpjb21wdXRlT2Zmc2V0cyhjb25zdCBMYXlvdXRTdGF0ZSYgYW5jZXN0b3IsIFJlbmRlckJveCYg
cmVuZGVyZXIsIExheW91dFNpemUgb2Zmc2V0KQordm9pZCBSZW5kZXJMYXlvdXRTdGF0ZTo6Y29t
cHV0ZU9mZnNldHMoY29uc3QgUmVuZGVyTGF5b3V0U3RhdGUmIGFuY2VzdG9yLCBSZW5kZXJCb3gm
IHJlbmRlcmVyLCBMYXlvdXRTaXplIG9mZnNldCkKIHsKICAgICBib29sIGZpeGVkID0gcmVuZGVy
ZXIuaXNGaXhlZFBvc2l0aW9uZWQoKTsKICAgICBpZiAoZml4ZWQpIHsKQEAgLTExNSw3ICsxMTUs
NyBAQCB2b2lkIExheW91dFN0YXRlOjpjb21wdXRlT2Zmc2V0cyhjb25zdCBMCiAjZW5kaWYKIH0K
IAotdm9pZCBMYXlvdXRTdGF0ZTo6Y29tcHV0ZUNsaXBSZWN0KGNvbnN0IExheW91dFN0YXRlJiBh
bmNlc3RvciwgUmVuZGVyQm94JiByZW5kZXJlcikKK3ZvaWQgUmVuZGVyTGF5b3V0U3RhdGU6OmNv
bXB1dGVDbGlwUmVjdChjb25zdCBSZW5kZXJMYXlvdXRTdGF0ZSYgYW5jZXN0b3IsIFJlbmRlckJv
eCYgcmVuZGVyZXIpCiB7CiAgICAgbV9jbGlwcGVkID0gIXJlbmRlcmVyLmlzRml4ZWRQb3NpdGlv
bmVkKCkgJiYgYW5jZXN0b3IuaXNDbGlwcGVkKCk7CiAgICAgaWYgKG1fY2xpcHBlZCkKQEAgLTEz
Myw3ICsxMzMsNyBAQCB2b2lkIExheW91dFN0YXRlOjpjb21wdXRlQ2xpcFJlY3QoY29uc3QgCiAg
ICAgLy8gRklYTUU6IDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ0
Mz4gQXBwbHkgY29udHJvbCBjbGlwIGlmIHByZXNlbnQuCiB9CiAKLXZvaWQgTGF5b3V0U3RhdGU6
OmNvbXB1dGVQYWdpbmF0aW9uSW5mb3JtYXRpb24oY29uc3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4
dDo6TGF5b3V0U3RhdGVTdGFjayYgbGF5b3V0U3RhdGVTdGFjaywgUmVuZGVyQm94JiByZW5kZXJl
ciwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCwgYm9vbCBwYWdlTG9naWNhbEhlaWdodENo
YW5nZWQpCit2b2lkIFJlbmRlckxheW91dFN0YXRlOjpjb21wdXRlUGFnaW5hdGlvbkluZm9ybWF0
aW9uKGNvbnN0IEZyYW1lVmlld0xheW91dENvbnRleHQ6OkxheW91dFN0YXRlU3RhY2smIGxheW91
dFN0YXRlU3RhY2ssIFJlbmRlckJveCYgcmVuZGVyZXIsIExheW91dFVuaXQgcGFnZUxvZ2ljYWxI
ZWlnaHQsIGJvb2wgcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKQogewogICAgIGF1dG8qIGFuY2Vz
dG9yID0gbGF5b3V0U3RhdGVTdGFjay5pc0VtcHR5KCkgPyBudWxscHRyIDogbGF5b3V0U3RhdGVT
dGFjay5sYXN0KCkuZ2V0KCk7CiAgICAgLy8gSWYgd2UgZXN0YWJsaXNoIGEgbmV3IHBhZ2UgaGVp
Z2h0LCB0aGVuIGNhY2hlIHRoZSBvZmZzZXQgdG8gdGhlIHRvcCBvZiB0aGUgZmlyc3QgcGFnZS4K
QEAgLTE3MCwxNCArMTcwLDE0IEBAIHZvaWQgTGF5b3V0U3RhdGU6OmNvbXB1dGVQYWdpbmF0aW9u
SW5mb3IKICAgICAgICAgZXN0YWJsaXNoTGluZUdyaWQobGF5b3V0U3RhdGVTdGFjaywgZG93bmNh
c3Q8UmVuZGVyQmxvY2tGbG93PihyZW5kZXJlcikpOwogfQogCi1MYXlvdXRVbml0IExheW91dFN0
YXRlOjpwYWdlTG9naWNhbE9mZnNldChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGNoaWxk
TG9naWNhbE9mZnNldCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyTGF5b3V0U3RhdGU6OnBhZ2VM
b2dpY2FsT2Zmc2V0KFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQgY2hpbGRMb2dpY2FsT2Zm
c2V0KSBjb25zdAogewogICAgIGlmIChjaGlsZC0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkK
ICAgICAgICAgcmV0dXJuIG1fbGF5b3V0T2Zmc2V0LmhlaWdodCgpICsgY2hpbGRMb2dpY2FsT2Zm
c2V0IC0gbV9wYWdlT2Zmc2V0LmhlaWdodCgpOwogICAgIHJldHVybiBtX2xheW91dE9mZnNldC53
aWR0aCgpICsgY2hpbGRMb2dpY2FsT2Zmc2V0IC0gbV9wYWdlT2Zmc2V0LndpZHRoKCk7CiB9CiAK
LXZvaWQgTGF5b3V0U3RhdGU6OmNvbXB1dGVMaW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oY29uc3Qg
UmVuZGVyTXVsdGlDb2x1bW5GbG93JiBtdWx0aWNvbCkKK3ZvaWQgUmVuZGVyTGF5b3V0U3RhdGU6
OmNvbXB1dGVMaW5lR3JpZFBhZ2luYXRpb25PcmlnaW4oY29uc3QgUmVuZGVyTXVsdGlDb2x1bW5G
bG93JiBtdWx0aWNvbCkKIHsKICAgICBpZiAoIWlzUGFnaW5hdGVkKCkgfHwgIXBhZ2VMb2dpY2Fs
SGVpZ2h0KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIExheW91
dFN0YXRlOjpjb21wdXRlTGluZUdyaWRQYWdpbmF0CiAgICAgICAgIG1fbGluZUdyaWRQYWdpbmF0
aW9uT3JpZ2luLnNldFdpZHRoKHBhZ2luYXRpb25EZWx0YSk7CiB9CiAKLXZvaWQgTGF5b3V0U3Rh
dGU6OnByb3BhZ2F0ZUxpbmVHcmlkSW5mbyhjb25zdCBMYXlvdXRTdGF0ZSYgYW5jZXN0b3IsIFJl
bmRlckJveCYgcmVuZGVyZXIpCit2b2lkIFJlbmRlckxheW91dFN0YXRlOjpwcm9wYWdhdGVMaW5l
R3JpZEluZm8oY29uc3QgUmVuZGVyTGF5b3V0U3RhdGUmIGFuY2VzdG9yLCBSZW5kZXJCb3gmIHJl
bmRlcmVyKQogewogICAgIC8vIERpc2FibGUgbGluZSBncmlkcyBmb3Igb2JqZWN0cyB3ZSBkb24n
dCBzdXBwb3J0LiBGb3Igbm93IHRoaXMgaW5jbHVkZXMgb3ZlcmZsb3c6c2Nyb2xsL2F1dG8sIGlu
bGluZSBibG9ja3MgYW5kCiAgICAgLy8gd3JpdGluZyBtb2RlIHJvb3RzLgpAQCAtMjMwLDcgKzIz
MCw3IEBAIHZvaWQgTGF5b3V0U3RhdGU6OnByb3BhZ2F0ZUxpbmVHcmlkSW5mbygKICAgICBtX2xp
bmVHcmlkUGFnaW5hdGlvbk9yaWdpbiA9IGFuY2VzdG9yLmxpbmVHcmlkUGFnaW5hdGlvbk9yaWdp
bigpOwogfQogCi12b2lkIExheW91dFN0YXRlOjplc3RhYmxpc2hMaW5lR3JpZChjb25zdCBGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0OjpMYXlvdXRTdGF0ZVN0YWNrJiBsYXlvdXRTdGF0ZVN0YWNrLCBS
ZW5kZXJCbG9ja0Zsb3cmIHJlbmRlcmVyKQordm9pZCBSZW5kZXJMYXlvdXRTdGF0ZTo6ZXN0YWJs
aXNoTGluZUdyaWQoY29uc3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6TGF5b3V0U3RhdGVTdGFj
ayYgbGF5b3V0U3RhdGVTdGFjaywgUmVuZGVyQmxvY2tGbG93JiByZW5kZXJlcikKIHsKICAgICAv
LyBGaXJzdCBjaGVjayB0byBzZWUgaWYgdGhpcyBncmlkIGhhcyBiZWVuIGVzdGFibGlzaGVkIGFs
cmVhZHkuCiAgICAgaWYgKG1fbGluZUdyaWQpIHsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIExh
eW91dFN0YXRlOjplc3RhYmxpc2hMaW5lR3JpZChjb25zCiAgICAgbV9saW5lR3JpZE9mZnNldCA9
IG1fbGF5b3V0T2Zmc2V0OwogfQogCi12b2lkIExheW91dFN0YXRlOjphZGRMYXlvdXREZWx0YShM
YXlvdXRTaXplIGRlbHRhKQordm9pZCBSZW5kZXJMYXlvdXRTdGF0ZTo6YWRkTGF5b3V0RGVsdGEo
TGF5b3V0U2l6ZSBkZWx0YSkKIHsKICAgICBtX2xheW91dERlbHRhICs9IGRlbHRhOwogI2lmICFB
U1NFUlRfRElTQUJMRUQKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIExheW91dFN0YXRlOjphZGRM
YXlvdXREZWx0YShMYXlvdXRTCiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECi1ib29sIExheW91
dFN0YXRlOjpsYXlvdXREZWx0YU1hdGNoZXMoTGF5b3V0U2l6ZSBkZWx0YSkgY29uc3QKK2Jvb2wg
UmVuZGVyTGF5b3V0U3RhdGU6OmxheW91dERlbHRhTWF0Y2hlcyhMYXlvdXRTaXplIGRlbHRhKSBj
b25zdAogewogICAgIHJldHVybiAoZGVsdGEud2lkdGgoKSA9PSBtX2xheW91dERlbHRhLndpZHRo
KCkgfHwgbV9sYXlvdXREZWx0YVhTYXR1cmF0ZWQpICYmIChkZWx0YS5oZWlnaHQoKSA9PSBtX2xh
eW91dERlbHRhLmhlaWdodCgpIHx8IG1fbGF5b3V0RGVsdGFZU2F0dXJhdGVkKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5oCShyZXZpc2lv
biAyMzg4NTkpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oOjIz
ODg1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZy
YW1lVmlld0xheW91dENvbnRleHQuaCIKKyNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVu
ZGVyQmxvY2tGbG93OworY2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVuZGVyRWxlbWVudDsKK2Ns
YXNzIFJlbmRlckZyYWdtZW50ZWRGbG93OworY2xhc3MgUmVuZGVyTXVsdGlDb2x1bW5GbG93Owor
Y2xhc3MgUmVuZGVyT2JqZWN0OworCitjbGFzcyBMYXlvdXRTdGF0ZSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoTGF5b3V0U3RhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVi
bGljOgorICAgIExheW91dFN0YXRlKCkKKyAgICAgICAgOiBtX2NsaXBwZWQoZmFsc2UpCisgICAg
ICAgICwgbV9pc1BhZ2luYXRlZChmYWxzZSkKKyAgICAgICAgLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0
Q2hhbmdlZChmYWxzZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgICwgbV9sYXlvdXRE
ZWx0YVhTYXR1cmF0ZWQoZmFsc2UpCisgICAgICAgICwgbV9sYXlvdXREZWx0YVlTYXR1cmF0ZWQo
ZmFsc2UpCisjZW5kaWYKKyAgICB7CisgICAgfQorICAgIExheW91dFN0YXRlKGNvbnN0IEZyYW1l
Vmlld0xheW91dENvbnRleHQ6OkxheW91dFN0YXRlU3RhY2smLCBSZW5kZXJCb3gmLCBjb25zdCBM
YXlvdXRTaXplJiBvZmZzZXQsIExheW91dFVuaXQgcGFnZUhlaWdodCwgYm9vbCBwYWdlSGVpZ2h0
Q2hhbmdlZCk7CisgICAgZW51bSBjbGFzcyBJc1BhZ2luYXRlZCB7IE5vLCBZZXMgfTsKKyAgICBl
eHBsaWNpdCBMYXlvdXRTdGF0ZShSZW5kZXJFbGVtZW50JiwgSXNQYWdpbmF0ZWQgPSBJc1BhZ2lu
YXRlZDo6Tm8pOworCisgICAgYm9vbCBpc1BhZ2luYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQ
YWdpbmF0ZWQ7IH0KKworICAgIC8vIFRoZSBwYWdlIGxvZ2ljYWwgb2Zmc2V0IGlzIHRoZSBvYmpl
Y3QncyBvZmZzZXQgZnJvbSB0aGUgdG9wIG9mIHRoZSBwYWdlIGluIHRoZSBwYWdlIHByb2dyZXNz
aW9uCisgICAgLy8gZGlyZWN0aW9uIChzbyBhbiB4LW9mZnNldCBpbiB2ZXJ0aWNhbCB0ZXh0IGFu
ZCBhIHktb2Zmc2V0IGZvciBob3Jpem9udGFsIHRleHQpLgorICAgIExheW91dFVuaXQgcGFnZUxv
Z2ljYWxPZmZzZXQoUmVuZGVyQm94KiwgTGF5b3V0VW5pdCBjaGlsZExvZ2ljYWxPZmZzZXQpIGNv
bnN0OworICAgIAorICAgIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VMb2dpY2FsSGVpZ2h0OyB9CisgICAgYm9vbCBwYWdlTG9naWNhbEhlaWdodENo
YW5nZWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZDsgfQorCisg
ICAgUmVuZGVyQmxvY2tGbG93KiBsaW5lR3JpZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUdyaWQu
Z2V0KCk7IH0KKyAgICBMYXlvdXRTaXplIGxpbmVHcmlkT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9saW5lR3JpZE9mZnNldDsgfQorICAgIExheW91dFNpemUgbGluZUdyaWRQYWdpbmF0aW9uT3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9saW5lR3JpZFBhZ2luYXRpb25PcmlnaW47IH0KKworICAg
IExheW91dFNpemUgcGFpbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3BhaW50T2Zmc2V0OyB9
CisgICAgTGF5b3V0U2l6ZSBsYXlvdXRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xheW91dE9m
ZnNldDsgfQorCisgICAgTGF5b3V0U2l6ZSBwYWdlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlT2Zmc2V0OyB9CisKKyAgICBib29sIG5lZWRzQmxvY2tEaXJlY3Rpb25Mb2NhdGlvblNldEJl
Zm9yZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUdyaWQgfHwgKG1faXNQYWdpbmF0ZWQg
JiYgbV9wYWdlTG9naWNhbEhlaWdodCk7IH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBSZW5kZXJF
bGVtZW50KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KKyNlbmRpZgor
ICAgIExheW91dFJlY3QgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NsaXBSZWN0OyB9Cisg
ICAgYm9vbCBpc0NsaXBwZWQoKSBjb25zdCB7IHJldHVybiBtX2NsaXBwZWQ7IH0KKworICAgIHZv
aWQgYWRkTGF5b3V0RGVsdGEoTGF5b3V0U2l6ZSk7CisgICAgTGF5b3V0U2l6ZSBsYXlvdXREZWx0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0RGVsdGE7IH0KKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CisgICAgYm9vbCBsYXlvdXREZWx0YU1hdGNoZXMoTGF5b3V0U2l6ZSkgY29uc3Q7CisjZW5kaWYK
KworcHJpdmF0ZToKKyAgICB2b2lkIGNvbXB1dGVPZmZzZXRzKGNvbnN0IExheW91dFN0YXRlJiBh
bmNlc3RvciwgUmVuZGVyQm94JiwgTGF5b3V0U2l6ZSBvZmZzZXQpOworICAgIHZvaWQgY29tcHV0
ZUNsaXBSZWN0KGNvbnN0IExheW91dFN0YXRlJiBhbmNlc3RvciwgUmVuZGVyQm94Jik7CisgICAg
Ly8gRklYTUU6IHdlYmtpdC5vcmcvYi8xNzk0NDAgdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBw
YXJ0IG9mIHRoZSBwYWdpbmF0aW9uIGNvZGUvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC4KKyAgICB2
b2lkIGNvbXB1dGVQYWdpbmF0aW9uSW5mb3JtYXRpb24oY29uc3QgRnJhbWVWaWV3TGF5b3V0Q29u
dGV4dDo6TGF5b3V0U3RhdGVTdGFjayYsIFJlbmRlckJveCYsIExheW91dFVuaXQgcGFnZUxvZ2lj
YWxIZWlnaHQsIGJvb2wgcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKTsKKyAgICB2b2lkIHByb3Bh
Z2F0ZUxpbmVHcmlkSW5mbyhjb25zdCBMYXlvdXRTdGF0ZSYgYW5jZXN0b3IsIFJlbmRlckJveCYp
OworICAgIHZvaWQgZXN0YWJsaXNoTGluZUdyaWQoY29uc3QgRnJhbWVWaWV3TGF5b3V0Q29udGV4
dDo6TGF5b3V0U3RhdGVTdGFjayYsIFJlbmRlckJsb2NrRmxvdyYpOworICAgIHZvaWQgY29tcHV0
ZUxpbmVHcmlkUGFnaW5hdGlvbk9yaWdpbihjb25zdCBSZW5kZXJNdWx0aUNvbHVtbkZsb3cmKTsK
KworICAgIC8vIERvIG5vdCBhZGQgYW55dGhpbmcgYXBhcnQgZnJvbSBiaXRmaWVsZHMuIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTczCisgICAgYm9vbCBt
X2NsaXBwZWQgOiAxOworICAgIGJvb2wgbV9pc1BhZ2luYXRlZCA6IDE7CisgICAgLy8gSWYgb3Vy
IHBhZ2UgaGVpZ2h0IGhhcyBjaGFuZ2VkLCB0aGlzIHdpbGwgZm9yY2UgYWxsIGJsb2NrcyB0byBy
ZWxheW91dC4KKyAgICBib29sIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkIDogMTsKKyNpZiAh
QVNTRVJUX0RJU0FCTEVECisgICAgYm9vbCBtX2xheW91dERlbHRhWFNhdHVyYXRlZCA6IDE7Cisg
ICAgYm9vbCBtX2xheW91dERlbHRhWVNhdHVyYXRlZCA6IDE7CisjZW5kaWYKKyAgICAvLyBUaGUg
Y3VycmVudCBsaW5lIGdyaWQgdGhhdCB3ZSdyZSBzbmFwcGluZyB0byBhbmQgdGhlIG9mZnNldCBv
ZiB0aGUgc3RhcnQgb2YgdGhlIGdyaWQuCisgICAgV2Vha1B0cjxSZW5kZXJCbG9ja0Zsb3c+IG1f
bGluZUdyaWQ7CisKKyAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgbGF5b3V0
IGNsaXAgcmVjdCBhbmQgdGhlIHBhaW50IGNsaXAgcmVjdCB3aGljaCBtYXkgYmUgbGFyZ2VyLAor
ICAgIC8vIGUuZy4sIGJlY2F1c2Ugb2YgY29tcG9zaXRlZCBzY3JvbGxpbmcuCisgICAgTGF5b3V0
UmVjdCBtX2NsaXBSZWN0OworICAgIAorICAgIC8vIHgveSBvZmZzZXQgZnJvbSBsYXlvdXQgcm9v
dC4gSW5jbHVkZXMgaW4tZmxvdyBwb3NpdGlvbmluZyBhbmQgc2Nyb2xsIG9mZnNldHMuCisgICAg
TGF5b3V0U2l6ZSBtX3BhaW50T2Zmc2V0OworICAgIC8vIHgveSBvZmZzZXQgZnJvbSBsYXlvdXQg
cm9vdC4gRG9lcyBub3QgaW5jbHVkZSBpbi1mbG93IHBvc2l0aW9uaW5nIG9yIHNjcm9sbCBvZmZz
ZXRzLgorICAgIExheW91dFNpemUgbV9sYXlvdXRPZmZzZXQ7CisgICAgLy8gVHJhbnNpZW50IG9m
ZnNldCBmcm9tIHRoZSBmaW5hbCBwb3NpdGlvbiBvZiB0aGUgb2JqZWN0CisgICAgLy8gdXNlZCB0
byBlbnN1cmUgdGhhdCByZXBhaW50cyBoYXBwZW4gaW4gdGhlIGNvcnJlY3QgcGxhY2UuCisgICAg
Ly8gVGhpcyBpcyBhIHRvdGFsIGRlbHRhIGFjY3VtdWxhdGVkIGZyb20gdGhlIHJvb3QuIAorICAg
IExheW91dFNpemUgbV9sYXlvdXREZWx0YTsKKworICAgIC8vIFRoZSBjdXJyZW50IHBhZ2UgaGVp
Z2h0IGZvciB0aGUgcGFnaW5hdGlvbiBtb2RlbCB0aGF0IGVuY2xvc2VzIHVzLgorICAgIExheW91
dFVuaXQgbV9wYWdlTG9naWNhbEhlaWdodDsKKyAgICAvLyBUaGUgb2Zmc2V0IG9mIHRoZSBzdGFy
dCBvZiB0aGUgZmlyc3QgcGFnZSBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgcGFnaW5hdGlvbiBt
b2RlbC4KKyAgICBMYXlvdXRTaXplIG1fcGFnZU9mZnNldDsKKyAgICBMYXlvdXRTaXplIG1fbGlu
ZUdyaWRPZmZzZXQ7CisgICAgTGF5b3V0U2l6ZSBtX2xpbmVHcmlkUGFnaW5hdGlvbk9yaWdpbjsK
KyNpZm5kZWYgTkRFQlVHCisgICAgUmVuZGVyRWxlbWVudCogbV9yZW5kZXJlciB7IG51bGxwdHIg
fTsKKyNlbmRpZgorfTsKKworLy8gU3RhY2stYmFzZWQgY2xhc3MgdG8gYXNzaXN0IHdpdGggTGF5
b3V0U3RhdGUgcHVzaC9wb3AKK2NsYXNzIExheW91dFN0YXRlTWFpbnRhaW5lciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTGF5b3V0U3RhdGVNYWludGFpbmVyKTsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBMYXlvdXRTdGF0ZU1haW50YWluZXIoUmVuZGVyQm94JiwgTGF5b3V0U2l6ZSBvZmZz
ZXQsIGJvb2wgZGlzYWJsZVN0YXRlID0gZmFsc2UsIExheW91dFVuaXQgcGFnZUhlaWdodCA9IDBf
bHUsIGJvb2wgcGFnZUhlaWdodENoYW5nZWQgPSBmYWxzZSk7CisgICAgfkxheW91dFN0YXRlTWFp
bnRhaW5lcigpOworCitwcml2YXRlOgorICAgIEZyYW1lVmlld0xheW91dENvbnRleHQmIG1fY29u
dGV4dDsKKyAgICBib29sIG1fcGFpbnRPZmZzZXRDYWNoZUlzRGlzYWJsZWQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9kaWRQdXNoTGF5b3V0U3RhdGUgeyBmYWxzZSB9OworfTsKKworY2xhc3MgU3Vi
dHJlZUxheW91dFN0YXRlTWFpbnRhaW5lciB7CitwdWJsaWM6CisgICAgU3VidHJlZUxheW91dFN0
YXRlTWFpbnRhaW5lcihSZW5kZXJFbGVtZW50KiBzdWJ0cmVlTGF5b3V0Um9vdCk7CisgICAgflN1
YnRyZWVMYXlvdXRTdGF0ZU1haW50YWluZXIoKTsKKworcHJpdmF0ZToKKyAgICBGcmFtZVZpZXdM
YXlvdXRDb250ZXh0KiBtX2NvbnRleHQgeyBudWxscHRyIH07CisgICAgYm9vbCBtX2RpZERpc2Fi
bGVQYWludE9mZnNldENhY2hlIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIExheW91dFN0YXRlRGlz
YWJsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheW91dFN0YXRlRGlzYWJsZXIpOwor
cHVibGljOgorICAgIExheW91dFN0YXRlRGlzYWJsZXIoRnJhbWVWaWV3TGF5b3V0Q29udGV4dCYp
OworICAgIH5MYXlvdXRTdGF0ZURpc2FibGVyKCk7CisKK3ByaXZhdGU6CisgICAgRnJhbWVWaWV3
TGF5b3V0Q29udGV4dCYgbV9jb250ZXh0OworfTsKKworY2xhc3MgUGFnaW5hdGVkTGF5b3V0U3Rh
dGVNYWludGFpbmVyIHsKK3B1YmxpYzoKKyAgICBQYWdpbmF0ZWRMYXlvdXRTdGF0ZU1haW50YWlu
ZXIoUmVuZGVyQmxvY2tGbG93Jik7CisgICAgflBhZ2luYXRlZExheW91dFN0YXRlTWFpbnRhaW5l
cigpOworCitwcml2YXRlOgorICAgIEZyYW1lVmlld0xheW91dENvbnRleHQmIG1fY29udGV4dDsK
KyAgICBib29sIG1fcHVzaGVkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXlvdXRTdGF0ZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAj
IworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5oCShyZXZpc2lvbiAyMzg4NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDExIEBAIGNsYXNzIFJlbmRlckZyYWdtZW50ZWRGbG93Owog
Y2xhc3MgUmVuZGVyTXVsdGlDb2x1bW5GbG93OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogCi1jbGFz
cyBMYXlvdXRTdGF0ZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5b3V0U3RhdGUpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIFJlbmRlckxheW91dFN0YXRlIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZW5kZXJMYXlvdXRTdGF0ZSk7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgTGF5b3V0U3RhdGUoKQorICAgIFJlbmRlckxheW91dFN0
YXRlKCkKICAgICAgICAgOiBtX2NsaXBwZWQoZmFsc2UpCiAgICAgICAgICwgbV9pc1BhZ2luYXRl
ZChmYWxzZSkKICAgICAgICAgLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZChmYWxzZSkKQEAg
LTUyLDkgKzUyLDkgQEAgcHVibGljOgogI2VuZGlmCiAgICAgewogICAgIH0KLSAgICBMYXlvdXRT
dGF0ZShjb25zdCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpMYXlvdXRTdGF0ZVN0YWNrJiwgUmVu
ZGVyQm94JiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0LCBMYXlvdXRVbml0IHBhZ2VIZWlnaHQs
IGJvb2wgcGFnZUhlaWdodENoYW5nZWQpOworICAgIFJlbmRlckxheW91dFN0YXRlKGNvbnN0IEZy
YW1lVmlld0xheW91dENvbnRleHQ6OkxheW91dFN0YXRlU3RhY2smLCBSZW5kZXJCb3gmLCBjb25z
dCBMYXlvdXRTaXplJiBvZmZzZXQsIExheW91dFVuaXQgcGFnZUhlaWdodCwgYm9vbCBwYWdlSGVp
Z2h0Q2hhbmdlZCk7CiAgICAgZW51bSBjbGFzcyBJc1BhZ2luYXRlZCB7IE5vLCBZZXMgfTsKLSAg
ICBleHBsaWNpdCBMYXlvdXRTdGF0ZShSZW5kZXJFbGVtZW50JiwgSXNQYWdpbmF0ZWQgPSBJc1Bh
Z2luYXRlZDo6Tm8pOworICAgIGV4cGxpY2l0IFJlbmRlckxheW91dFN0YXRlKFJlbmRlckVsZW1l
bnQmLCBJc1BhZ2luYXRlZCA9IElzUGFnaW5hdGVkOjpObyk7CiAKICAgICBib29sIGlzUGFnaW5h
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhZ2luYXRlZDsgfQogCkBAIC04OSwxMSArODksMTEg
QEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjb21wdXRlT2Zmc2V0cyhj
b25zdCBMYXlvdXRTdGF0ZSYgYW5jZXN0b3IsIFJlbmRlckJveCYsIExheW91dFNpemUgb2Zmc2V0
KTsKLSAgICB2b2lkIGNvbXB1dGVDbGlwUmVjdChjb25zdCBMYXlvdXRTdGF0ZSYgYW5jZXN0b3Is
IFJlbmRlckJveCYpOworICAgIHZvaWQgY29tcHV0ZU9mZnNldHMoY29uc3QgUmVuZGVyTGF5b3V0
U3RhdGUmIGFuY2VzdG9yLCBSZW5kZXJCb3gmLCBMYXlvdXRTaXplIG9mZnNldCk7CisgICAgdm9p
ZCBjb21wdXRlQ2xpcFJlY3QoY29uc3QgUmVuZGVyTGF5b3V0U3RhdGUmIGFuY2VzdG9yLCBSZW5k
ZXJCb3gmKTsKICAgICAvLyBGSVhNRTogd2Via2l0Lm9yZy9iLzE3OTQ0MCB0aGVzZSBmdW5jdGlv
bnMgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIHBhZ2luYXRpb24gY29kZS9GcmFtZVZpZXdMYXlvdXRD
b250ZXh0LgogICAgIHZvaWQgY29tcHV0ZVBhZ2luYXRpb25JbmZvcm1hdGlvbihjb25zdCBGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0OjpMYXlvdXRTdGF0ZVN0YWNrJiwgUmVuZGVyQm94JiwgTGF5b3V0
VW5pdCBwYWdlTG9naWNhbEhlaWdodCwgYm9vbCBwYWdlTG9naWNhbEhlaWdodENoYW5nZWQpOwot
ICAgIHZvaWQgcHJvcGFnYXRlTGluZUdyaWRJbmZvKGNvbnN0IExheW91dFN0YXRlJiBhbmNlc3Rv
ciwgUmVuZGVyQm94Jik7CisgICAgdm9pZCBwcm9wYWdhdGVMaW5lR3JpZEluZm8oY29uc3QgUmVu
ZGVyTGF5b3V0U3RhdGUmIGFuY2VzdG9yLCBSZW5kZXJCb3gmKTsKICAgICB2b2lkIGVzdGFibGlz
aExpbmVHcmlkKGNvbnN0IEZyYW1lVmlld0xheW91dENvbnRleHQ6OkxheW91dFN0YXRlU3RhY2sm
LCBSZW5kZXJCbG9ja0Zsb3cmKTsKICAgICB2b2lkIGNvbXB1dGVMaW5lR3JpZFBhZ2luYXRpb25P
cmlnaW4oY29uc3QgUmVuZGVyTXVsdGlDb2x1bW5GbG93Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHJldmlzaW9uIDIzODg1OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYsMTEgKzQ2LDExIEBACiAjaW5jbHVkZSAiSFRNTE9wdEdyb3VwRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgot
I2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJlbmRl
ckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5k
ZXJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGhlbWUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjM4ODU5KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogI2lmIEVOQUJMRShWSURFTykKICNpbmNsdWRlICJS
ZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogCi0jaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIK
ICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgorI2luY2x1ZGUgIlJlbmRlckxheW91
dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCShyZXZpc2lv
biAyMzg4NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5G
bG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIlJlbmRl
ck11bHRpQ29sdW1uRmxvdy5oIgogCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1
ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVySXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJSZW5kZXJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbmRlck11bHRpQ29sdW1uU2V0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCIKICNpbmNs
dWRlICJSZW5kZXJUcmVlQnVpbGRlci5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuY3BwCShyZXZpc2lvbiAyMzg4NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMiArMzUsMTIgQEAK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAj
aW5jbHVkZSAiTGF5b3V0UmVwYWludGVyLmgiCi0jaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNp
bmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVu
ZGVySXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRl
ckxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDYXB0aW9uLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDb2wuaCIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAkocmV2aXNpb24g
MjM4ODU5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1
ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCisjaW5jbHVkZSAiUmVu
ZGVyTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRl
ICJSZW5kZXJUcmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZp
c2lvbiAyMzg4NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSArMjgsOSBAQAogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgotI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQ2hpbGRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlJlbmRlckxheW91dFN0YXRl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVD
b2wuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAJKHJldmlzaW9uIDIzODg1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4
ICsyOSw4IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2luY2x1ZGUgIlJlbmRlclZUVEN1
ZS5oIgogCi0jaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUu
aCIKKyNpbmNsdWRlICJSZW5kZXJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVHZW5lcmljLmgiCiAjaW5jbHVkZSAiVlRUQ3VlLmgi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShyZXZpc2lvbiAy
Mzg4NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZVF1YWxpdHlDb250
cm9sbGVyLmgiCi0jaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVy
c2FsLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckRlc2NlbmRhbnRJdGVy
YXRvci5oIgpAQCAtNDMsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJN
dWx0aUNvbHVtbkZsb3cuaCIKICNpbmNsdWRlICJSZW5kZXJNdWx0aUNvbHVtblNldC5oIgogI2lu
Y2x1ZGUgIlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgiCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHJldmlzaW9uIDIzODg1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDgg
KzMzLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VRdWFsaXR5Q29udHJv
bGxlcjsKLWNsYXNzIExheW91dFN0YXRlOwogY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOwor
Y2xhc3MgUmVuZGVyTGF5b3V0U3RhdGU7CiBjbGFzcyBSZW5kZXJRdW90ZTsKIAogY2xhc3MgUmVu
ZGVyVmlldyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewpAQCAtMjEwLDcgKzIxMCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRSZXBhaW50KGNvbnN0IExheW91dFJlY3QmKSBj
b25zdDsKICAgICB2b2lkIGZsdXNoQWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uKCkgY29uc3Q7CiAK
LSAgICB2b2lkIGxheW91dENvbnRlbnQoY29uc3QgTGF5b3V0U3RhdGUmKTsKKyAgICB2b2lkIGxh
eW91dENvbnRlbnQoY29uc3QgUmVuZGVyTGF5b3V0U3RhdGUmKTsKIAogICAgIGJvb2wgaXNTY3Jv
bGxhYmxlT3JSdWJiZXJiYW5kYWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiAyMzg4NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDExICsyOSwxMSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCi0j
aW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0
Q2FjaGVzLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJhZ21l
bnRlZEZsb3cuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJM
YXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbmRlclJ1YnlCYXNlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyUnVieVJ1bi5oIgogI2luY2x1ZGUgIlJlbmRlclJ1YnlUZXh0LmgiCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlzaW9uIDIz
ODg1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCwxMCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJMYXlvdXRSZXBh
aW50ZXIuaCIKLSNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5j
bHVkZSAiUmVuZGVyTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5o
IgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFJlbmRlclNW
R1Jvb3Q6OmxheW91dCgpCiAKICAgICBtX3Jlc291cmNlc05lZWRpbmdUb0ludmFsaWRhdGVDbGll
bnRzLmNsZWFyKCk7CiAKLSAgICAvLyBBcmJpdHJhcnkgYWZmaW5lIHRyYW5zZm9ybXMgYXJlIGlu
Y29tcGF0aWJsZSB3aXRoIExheW91dFN0YXRlLgorICAgIC8vIEFyYml0cmFyeSBhZmZpbmUgdHJh
bnNmb3JtcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggUmVuZGVyTGF5b3V0U3RhdGUuCiAgICAgTGF5
b3V0U3RhdGVEaXNhYmxlciBsYXlvdXRTdGF0ZURpc2FibGVyKHZpZXcoKS5mcmFtZVZpZXcoKS5s
YXlvdXRDb250ZXh0KCkpOwogCiAgICAgYm9vbCBuZWVkc0xheW91dCA9IHNlbGZOZWVkc0xheW91
dCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>