<?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>160435</bug_id>
          
          <creation_ts>2016-08-01 17:33:12 -0700</creation_ts>
          <short_desc>Freeze another bunch of Objective-C binding files</short_desc>
          <delta_ts>2016-08-03 02:18:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1216322</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-01 17:33:12 -0700</bug_when>
    <thetext>Freeze another bunch of Objective-C binding files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216323</commentid>
    <comment_count>1</comment_count>
      <attachid>285056</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-01 17:35:00 -0700</bug_when>
    <thetext>Created attachment 285056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216324</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-01 17:37:19 -0700</bug_when>
    <thetext>Attachment 285056 did not pass style-queue:


ERROR: Source/WebCore/bindings/objc/DOMRange.h:26:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMRange.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMRange.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMRange.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMRange.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMRange.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMRange.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMRange.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMRange.h:44:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMStyleSheet.mm:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMRange.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMRange.mm:36:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMTreeWalker.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMTreeWalker.mm:37:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathResult.h:32:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathResult.h:33:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathResult.h:34:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathResult.h:35:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathResult.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathResult.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathResult.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathResult.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathResult.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathResult.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMMediaList.mm:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathResult.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathResult.mm:38:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeIterator.mm:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:31:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:32:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:33:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:34:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:35:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:44:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:45:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeFilter.h:46:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathExpression.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMXPathExpression.mm:38:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMStyleSheetList.mm:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 48 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216525</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-02 10:43:47 -0700</bug_when>
    <thetext>Committed r204031: &lt;http://trac.webkit.org/changeset/204031&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216859</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-08-03 02:15:06 -0700</bug_when>
    <thetext>It broke the Apple Mac cmake build:

Public API change. There are missing public properties and/or methods from the &quot;DOMHTMLOptionsCollection&quot; class.
- (void)remove:(unsigned)index;
Died at /Volumes/Data/slave/elcapitan-cmake-debug/build/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm line 388.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216860</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-08-03 02:18:21 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; It broke the Apple Mac cmake build:
&gt; 
&gt; Public API change. There are missing public properties and/or methods from
&gt; the &quot;DOMHTMLOptionsCollection&quot; class.
&gt; - (void)remove:(unsigned)index;
&gt; Died at
&gt; /Volumes/Data/slave/elcapitan-cmake-debug/build/Source/WebCore/bindings/
&gt; scripts/CodeGeneratorObjC.pm line 388.

It seems https://trac.webkit.org/changeset/204040 wasn&apos;t enough to fix the build.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285056</attachid>
            <date>2016-08-01 17:35:00 -0700</date>
            <delta_ts>2016-08-01 20:38:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160435-20160801173340.patch</filename>
            <type>text/plain</type>
            <size>114660</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU0ZDBhZjk2ZDYyYzM3
ZGVhNzMyYmVhODMzZDQxMjQ4OWExYTEzNC4uNmIyMWYwNjBlZGQ2ZTkwYWQwNDlmYTEzZWU4ZTgx
NTc1NDdlZjcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE2LTA4LTAxICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgRnJlZXplIGFub3Ro
ZXIgYnVuY2ggb2YgT2JqZWN0aXZlLUMgYmluZGluZyBmaWxlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDM1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmll
dy5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5tbToK
KyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlld0ludGVybmFsLmg6IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NTWVkaWFMaXN0Lmg6IEFkZGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL29iamMvRE9NTWVkaWFMaXN0Lm1tOiBBZGRlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTU1lZGlhTGlzdEludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL29iamMvRE9NTm9kZUZpbHRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpj
L0RPTU5vZGVJdGVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTU5v
ZGVJdGVyYXRvci5tbTogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Ob2RlSXRl
cmF0b3JJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVJhbmdl
Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NUmFuZ2UubW06IEFkZGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NUmFuZ2VJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9vYmpjL0RPTVN0eWxlU2hlZXQuaDogQWRkZWQuCisgICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9ET01TdHlsZVNoZWV0Lm1tOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9v
YmpjL0RPTVN0eWxlU2hlZXRJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9v
YmpjL0RPTVN0eWxlU2hlZXRMaXN0Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMv
RE9NU3R5bGVTaGVldExpc3QubW06IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9N
U3R5bGVTaGVldExpc3RJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpj
L0RPTVRyZWVXYWxrZXIuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01UcmVl
V2Fsa2VyLm1tOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVRyZWVXYWxrZXJJ
bnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVhQYXRoRXhwcmVz
c2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVhQYXRoRXhwcmVzc2lv
bi5tbTogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01YUGF0aEV4cHJlc3Npb25J
bnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVhQYXRoTlNSZXNv
bHZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVhQYXRoUmVzdWx0Lmg6
IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NWFBhdGhSZXN1bHQubW06IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NWFBhdGhSZXN1bHRJbnRlcm5hbC5oOiBBZGRl
ZC4KKworMjAxNi0wOC0wMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CiAgICAgICAgIEJ1aWxkIGZpeC4KIAogICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDc2NDBmZWU3MTQ0
MGFjNTlhYzFiNTQyNTJlYmE5MjBlZjg5ODY4NmEuLjk4MTA4NDFkZDkyM2E5MjFhZGNhZWQ2NGVm
ZTRjMWNkN2UyZDE3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjU2LDE0
ICsyNTYsMTEgQEAgSlNfQU5EX09CSkNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkv
Y3NzL0RPTUNTU05hbWVzcGFjZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0ZvbnRGYWNlLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9jc3MvRm9udEZhY2VTZXQuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L2Nzcy9NZWRpYUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9NZWRpYVF1ZXJ5TGlzdC5p
ZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL2Nzcy9SR0JDb2xvci5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL1JlY3Qu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9TdHlsZU1lZGlhLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9jc3MvU3R5bGVTaGVldC5pZGwgXAotICAgICQoV2ViQ29yZSkvY3NzL1N0eWxlU2hlZXRMaXN0
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nz
cy9DU1NLZXlmcmFtZXNSdWxlLmlkbCBcCkBAIC0zMTgsOCArMzE1LDYgQEAgSlNfQU5EX09CSkNf
QklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rp
b24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9OYW1lZE5vZGVNYXAuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2RvbS9Ob2RlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9kb20vTm9kZUZpbHRlci5pZGwg
XAotICAgICQoV2ViQ29yZSkvZG9tL05vZGVJdGVyYXRvci5pZGwgXAogICAgICQoV2ViQ29yZSkv
ZG9tL05vZGVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vTm9uRWxlbWVudFBhcmVudE5v
ZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9Ob25Eb2N1bWVudFR5cGVDaGlsZE5vZGUuaWRs
IFwKQEAgLTMzMCw3ICszMjUsNiBAQCBKU19BTkRfT0JKQ19CSU5ESU5HX0lETFMgPSBcCiAgICAg
JChXZWJDb3JlKS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9kb20vUHJvZ3Jlc3NFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1Byb2dyZXNzRXZl
bnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2RvbS9SYW5nZS5pZGwgXAogICAgICQoV2ViQ29yZSkv
ZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9k
b20vU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9t
L1NoYWRvd1Jvb3QuaWRsIFwKQEAgLTQ3NSwxNiArNDY5LDE3IEBAIEpTX0FORF9PQkpDX0JJTkRJ
TkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5pZGwgXAog
ICAgICQoV2ViQ29yZSkveG1sL1hNTFNlcmlhbGl6ZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL3ht
bC9YUGF0aEV2YWx1YXRvci5pZGwgXAotICAgICQoV2ViQ29yZSkveG1sL1hQYXRoRXhjZXB0aW9u
LmlkbCBcCi0gICAgJChXZWJDb3JlKS94bWwvWFBhdGhFeHByZXNzaW9uLmlkbCBcCi0gICAgJChX
ZWJDb3JlKS94bWwvWFBhdGhOU1Jlc29sdmVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS94bWwvWFBh
dGhSZXN1bHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL3htbC9YU0xUUHJvY2Vzc29yLmlkbCBcCiAg
ICAgSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwKICMKIAogSlNfT05MWV9CSU5ESU5HX0lE
TFMgPSBcCisJJChXZWJDb3JlKS9jc3MvTWVkaWFMaXN0LmlkbCBcCisJJChXZWJDb3JlKS9jc3Mv
U3R5bGVTaGVldC5pZGwgXAorCSQoV2ViQ29yZSkvY3NzL1N0eWxlU2hlZXRMaXN0LmlkbCBcCisJ
JChXZWJDb3JlKS9kb20vTm9kZUZpbHRlci5pZGwgXAorCSQoV2ViQ29yZSkvZG9tL05vZGVJdGVy
YXRvci5pZGwgXAorCSQoV2ViQ29yZSkvZG9tL1JhbmdlLmlkbCBcCiAJJChXZWJDb3JlKS9maWxl
YXBpL0Jsb2IuaWRsIFwKIAkkKFdlYkNvcmUpL2ZpbGVhcGkvRmlsZS5pZGwgXAogCSQoV2ViQ29y
ZSkvZmlsZWFwaS9GaWxlRXJyb3IuaWRsIFwKQEAgLTcxOSw3ICs3MTQsMTIgQEAgSlNfT05MWV9C
SU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9zdmcvU1ZHVmlld0VsZW1lbnQuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL3N2Zy9TVkdWaWV3U3BlYy5pZGwgXAogICAgICQoV2ViQ29yZSkvc3Zn
L1NWR1pvb21BbmRQYW4uaWRsIFwKLSAgICAkKFdlYkNvcmUpL3N2Zy9TVkdab29tRXZlbnQuaWRs
CisgICAgJChXZWJDb3JlKS9zdmcvU1ZHWm9vbUV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS94
bWwvWFBhdGhFdmFsdWF0b3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL3htbC9YUGF0aEV4Y2VwdGlv
bi5pZGwgXAorICAgICQoV2ViQ29yZSkveG1sL1hQYXRoRXhwcmVzc2lvbi5pZGwgXAorICAgICQo
V2ViQ29yZSkveG1sL1hQYXRoTlNSZXNvbHZlci5pZGwgXAorICAgICQoV2ViQ29yZSkveG1sL1hQ
YXRoUmVzdWx0LmlkbCBcCiAjCiAKIFBZVEhPTiA9IHB5dGhvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE5MTE3ZDIxNjEyYmZj
ZDk3NWMxOGFjN2Q4NDAxYzliNzAwNjNkYTQuLmVmODJkNzcyMmUyZjkzNzk5ZjYxM2FjNmRkMjk3
MDQyMTI3NWNmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTU3MSw4ICs1NzEsNiBAQAogCQkwRkVBM0U4ODE5MUIzQkQ3MDAw
RjFCNTUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTNFODYxOTFCM0JENzAwMEYxQjU1
IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkVGMjBDRTFCRDRBMjQxMDAxMjhFNUQg
LyogTGVuZ3RoU2l6ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkVGMjBDRDFCRDRBMjQxMDAxMjhFNUQgLyogTGVuZ3RoU2l6ZS5jcHAgKi87IH07
CiAJCTBGRUYyMEQwMUJENEE2NEYwMDEyOEU1RCAvKiBSZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVGMjBDRjFC
RDRBNjRGMDAxMjhFNUQgLyogUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwICovOyB9OwotCQkwRkY1
MDI1QjEwMkJBOTAxMDA2NkYzOUEgLyogRE9NU3R5bGVNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNTAyNTkxMDJCQTkwMTAwNjZGMzlBIC8q
IERPTVN0eWxlTWVkaWEuaCAqLzsgfTsKLQkJMEZGNTAyNUMxMDJCQTkwMTAwNjZGMzlBIC8qIERP
TVN0eWxlTWVkaWEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkY1MDI1QTEwMkJBOTAxMDA2NkYzOUEgLyogRE9NU3R5bGVNZWRpYS5tbSAqLzsgfTsK
IAkJMEZGNTAyNjMxMDJCQTkyQzAwNjZGMzlBIC8qIERPTVN0eWxlTWVkaWFJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNTAyNjIxMDJC
QTkyQjAwNjZGMzlBIC8qIERPTVN0eWxlTWVkaWFJbnRlcm5hbC5oICovOyB9OwogCQkwRkY1MDI2
OTEwMkJBOTQzMDA2NkYzOUEgLyogSlNTdHlsZU1lZGlhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjUwMjY3MTAyQkE5NDMwMDY2RjM5QSAvKiBK
U1N0eWxlTWVkaWEuY3BwICovOyB9OwogCQkwRkY1MDI2QTEwMkJBOTQzMDA2NkYzOUEgLyogSlNT
dHlsZU1lZGlhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkY1MDI2ODEwMkJBOTQzMDA2NkYzOUEgLyogSlNTdHlsZU1lZGlhLmggKi87IH07CkBAIC05
ODMsNiArOTgxLDExIEBACiAJCTFBQ0U1M0VCMEE4RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxp
emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNF
NTNFNTBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXplci5oICovOyB9OwogCQkxQUNFNTNG
NjBBOEQxOTQ3MDAyMjk0N0QgLyogSlNYTUxTZXJpYWxpemVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0U1M0Y0MEE4RDE5NDcwMDIyOTQ3RCAv
KiBKU1hNTFNlcmlhbGl6ZXIuY3BwICovOyB9OwogCQkxQUNFNTNGNzBBOEQxOTQ3MDAyMjk0N0Qg
LyogSlNYTUxTZXJpYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUNFNTNGNTBBOEQxOTQ3MDAyMjk0N0QgLyogSlNYTUxTZXJpYWxpemVyLmgg
Ki87IH07CisJCTFBQ0YzRkI4MUQ1MDEyODcwMDYzQUVGQiAvKiBET01YUGF0aFJlc3VsdEludGVy
bmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUU3
MTE4QzBBQzVENTM1MDA1MzI3MEYgLyogRE9NWFBhdGhSZXN1bHRJbnRlcm5hbC5oICovOyB9Owor
CQkxQUNGM0ZCQzFENTAxMjg3MDA2M0FFRkIgLyogRE9NWFBhdGhSZXN1bHQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUU5RTBBMDBBQjNBMEM3MDAw
NjlDRDAgLyogRE9NWFBhdGhSZXN1bHQubW0gKi87IH07CisJCTFBQ0YzRkMwMUQ1MDEyQkQwMDYz
QUVGQiAvKiBET01YUGF0aEV4cHJlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0YzRkJEMUQ1MDEyQjYwMDYzQUVGQiAvKiBET01YUGF0aEV4
cHJlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkxQUNGM0ZDMTFENTAxMkJEMDA2M0FFRkIgLyogRE9NWFBhdGhFeHByZXNzaW9uLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDRjNGQkUxRDUw
MTJCNjAwNjNBRUZCIC8qIERPTVhQYXRoRXhwcmVzc2lvbi5tbSAqLzsgfTsKKwkJMUFDRjNGQzIx
RDUwMTJCRDAwNjNBRUZCIC8qIERPTVhQYXRoRXhwcmVzc2lvbkludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNGM0ZCRjFENTAxMkI2MDA2
M0FFRkIgLyogRE9NWFBhdGhFeHByZXNzaW9uSW50ZXJuYWwuaCAqLzsgfTsKIAkJMUFEMjMxNkUw
Q0QyNjlFNzAwQzFGMTk0IC8qIEpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFEMjMxNkQwQ0QyNjlFNzAwQzFG
MTk0IC8qIEpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwICovOyB9OwogCQkxQUQ4RjgxQjExQ0FC
OUU5MDBFOTNFNTQgLyogUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUQ4RjgxOTExQ0FCOUU5MDBFOTNFNTQgLyogUGxh
dGZvcm1TdHJhdGVnaWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMUFEOEY4MUMxMUNBQjlFOTAwRTkzRTU0IC8qIFBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUQ4
RjgxQTExQ0FCOUU5MDBFOTNFNTQgLyogUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCAqLzsgfTsKQEAg
LTMyMDksNyArMzIxMiw3IEBACiAJCTg1MUVFODIxMEFCQ0E1ODEwMEE2QUEzMyAvKiBET01SYW5n
ZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODUxRUU4MjAwQUJDQTU4MTAwQTZBQTMzIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODUyMTdFMDIwQTVF
Q0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUyMTdFMDAwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTElt
cG9ydFJ1bGUuY3BwICovOyB9OwogCQk4NTIxN0UwMzBBNUVDRDQ3MDBEQjhEMDAgLyogWFNMSW1w
b3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODUyMTdFMDEwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuaCAqLzsgfTsKLQkJODUz
OEYwMTkwQUQ3MThEODAwNkE4MUQxIC8qIERPTUFic3RyYWN0Vmlldy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUzOEYwMTYwQUQ3MThEODAwNkE4MUQx
IC8qIERPTUFic3RyYWN0Vmlldy5oICovOyB9OworCQk4NTM4RjAxOTBBRDcxOEQ4MDA2QTgxRDEg
LyogRE9NQWJzdHJhY3RWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NTM4RjAxNjBBRDcxOEQ4MDA2QTgxRDEgLyogRE9NQWJzdHJhY3RWaWV3Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODUzOEYw
MUIwQUQ3MThEODAwNkE4MUQxIC8qIERPTUFic3RyYWN0Vmlld0ludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTM4RjAxODBBRDcxOEQ4MDA2
QTgxRDEgLyogRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaCAqLzsgfTsKIAkJODUzOEYwMzAwQUQ3
MUNEQjAwNkE4MUQxIC8qIERPTUFic3RyYWN0Vmlldy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUzOEYwMTYwQUQ3MThEODAw
NkE4MUQxIC8qIERPTUFic3RyYWN0Vmlldy5oICovOyB9OwogCQk4NTM4RjA1QjBBRDcyMkYxMDA2
QTgxRDEgLyogRE9NUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1MzhGMDU4MEFENzIyRjEwMDZBODFEMSAvKiBET01SYW5nZS5oICovOyB9OwpA
QCAtMzQxOCwxNiArMzQyMSw4IEBACiAJCTg1RTcxMUQ2MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01S
ZWN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1RTcxMTg3MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01SZWN0SW50ZXJuYWwuaCAqLzsgfTsK
IAkJODVFNzExRDcwQUM1RDUzNTAwNTMyNzBGIC8qIERPTVN0eWxlU2hlZXRMaXN0SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RTcxMTg4
MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01TdHlsZVNoZWV0TGlzdEludGVybmFsLmggKi87IH07CiAJ
CTg1RTcxMUQ5MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01UZXh0SW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RTcxMThBMEFDNUQ1MzUwMDUz
MjcwRiAvKiBET01UZXh0SW50ZXJuYWwuaCAqLzsgfTsKLQkJODVFNzExREEwQUM1RDUzNTAwNTMy
NzBGIC8qIERPTVhQYXRoRXhwcmVzc2lvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUU3MTE4QjBBQzVENTM1MDA1MzI3MEYgLyogRE9N
WFBhdGhFeHByZXNzaW9uSW50ZXJuYWwuaCAqLzsgfTsKLQkJODVFNzExREIwQUM1RDUzNTAwNTMy
NzBGIC8qIERPTVhQYXRoUmVzdWx0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RTcxMThDMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01YUGF0
aFJlc3VsdEludGVybmFsLmggKi87IH07Ci0JCTg1RTlFMEExMEFCM0EwQzcwMDA2OUNEMCAvKiBE
T01YUGF0aEV4cHJlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1RTlFMDlCMEFCM0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aEV4cHJlc3Npb24u
aCAqLzsgfTsKLQkJODVFOUUwQTIwQUIzQTBDNzAwMDY5Q0QwIC8qIERPTVhQYXRoRXhwcmVzc2lv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RTlF
MDlDMEFCM0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aEV4cHJlc3Npb24ubW0gKi87IH07Ci0JCTg1
RTlFMEE0MEFCM0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RTlFMDlFMEFCM0EwQzcwMDA2
OUNEMCAvKiBET01YUGF0aE5TUmVzb2x2ZXIuaCAqLzsgfTsKLQkJODVFOUUwQTUwQUIzQTBDNzAw
MDY5Q0QwIC8qIERPTVhQYXRoUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NUU5RTA5RjBBQjNBMEM3MDAwNjlDRDAgLyogRE9NWFBhdGhSZXN1
bHQuaCAqLzsgfTsKLQkJODVFOUUwQTYwQUIzQTBDNzAwMDY5Q0QwIC8qIERPTVhQYXRoUmVzdWx0
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFOUUw
QTAwQUIzQTBDNzAwMDY5Q0QwIC8qIERPTVhQYXRoUmVzdWx0Lm1tICovOyB9OwotCQk4NUU5RTBB
ODBBQjNBMTE5MDAwNjlDRDAgLyogRE9NWFBhdGhFeHByZXNzaW9uLmggaW4gQ29weSBHZW5lcmF0
ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUU5RTA5QjBB
QjNBMEM3MDAwNjlDRDAgLyogRE9NWFBhdGhFeHByZXNzaW9uLmggKi87IH07Ci0JCTg1RTlFMEFB
MEFCM0ExMTkwMDA2OUNEMCAvKiBET01YUGF0aE5TUmVzb2x2ZXIuaCBpbiBDb3B5IEdlbmVyYXRl
ZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RTlFMDlFMEFC
M0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aE5TUmVzb2x2ZXIuaCAqLzsgfTsKLQkJODVFOUUwQUIw
QUIzQTExOTAwMDY5Q0QwIC8qIERPTVhQYXRoUmVzdWx0LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUU5RTA5RjBBQjNBMEM3
MDAwNjlDRDAgLyogRE9NWFBhdGhSZXN1bHQuaCAqLzsgfTsKKwkJODVFOUUwQTQwQUIzQTBDNzAw
MDY5Q0QwIC8qIERPTVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODVFOUUwOUUwQUIzQTBDNzAwMDY5Q0QwIC8qIERPTVhQYXRo
TlNSZXNvbHZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTg1RTlFMEE1MEFCM0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aFJlc3VsdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFOUUwOUYwQUIzQTBD
NzAwMDY5Q0QwIC8qIERPTVhQYXRoUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODVFQzlBRkIwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1
YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUVD
OUFGOTBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NUVDQkVFQjBBQTc2MjY5MDA1NDRGMEIgLyog
RE9NSFRNTEFyZWFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NUVDQkVERDBBQTc2MjY4MDA1NDRGMEIgLyogRE9NSFRNTEFyZWFFbGVtZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODVF
Q0JFRUMwQUE3NjI2OTAwNTQ0RjBCIC8qIERPTUhUTUxBcmVhRWxlbWVudC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RUNCRURFMEFBNzYyNjgwMDU0
NEYwQiAvKiBET01IVE1MQXJlYUVsZW1lbnQubW0gKi87IH07CkBAIC03MjkxLDkgKzcyODYsNiBA
QAogCQkJCTg1QzdGNEQwMEFBRjgzRjYwMDQwMTRERCAvKiBET01VSUV2ZW50LmggaW4gQ29weSBH
ZW5lcmF0ZWQgSGVhZGVycyAqLywKIAkJCQk4NURGMzQ2MDBBQUZDMkQ0MDBFNTlBRTMgLyogRE9N
V2hlZWxFdmVudC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8sCiAJCQkJN0M0OTAyQTIx
OEI4MjVGODAwN0Q5Mjk4IC8qIERPTVdoZWVsRXZlbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJh
dGVkIEhlYWRlcnMgKi8sCi0JCQkJODVFOUUwQTgwQUIzQTExOTAwMDY5Q0QwIC8qIERPTVhQYXRo
RXhwcmVzc2lvbi5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8sCi0JCQkJODVFOUUwQUEw
QUIzQTExOTAwMDY5Q0QwIC8qIERPTVhQYXRoTlNSZXNvbHZlci5oIGluIENvcHkgR2VuZXJhdGVk
IEhlYWRlcnMgKi8sCi0JCQkJODVFOUUwQUIwQUIzQTExOTAwMDY5Q0QwIC8qIERPTVhQYXRoUmVz
dWx0LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKIAkJCQlBOEQwNkIzOTBBMjY1RENE
MDA1RTcyMDMgLyogSFRNTE5hbWVzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKIAkJ
CQkxNDAzQkEwRjA5RUIxOEY5MDA3OTdDN0YgLyogSlNET01XaW5kb3cuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovLAogCQkJCTE0REMwRDM4MDlGRUQwNzMwMDdCMDIzNSAvKiBKU05vZGUu
aCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovLApAQCAtNzkxOCw4ICs3OTEwLDYgQEAKIAkJ
MEZFQTNFODYxOTFCM0JENzAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVGMjBDRDFC
RDRBMjQxMDAxMjhFNUQgLyogTGVuZ3RoU2l6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMZW5ndGhTaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZFRjIwQ0YxQkQ0QTY0RjAwMTI4RTVEIC8qIFJlbmRlclN0eWxlQ29uc3RhbnRzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclN0eWxlQ29uc3RhbnRz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZGNTAyNTkxMDJCQTkwMTAwNjZG
MzlBIC8qIERPTVN0eWxlTWVkaWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NU3R5bGVNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkY1MDI1QTEw
MkJBOTAxMDA2NkYzOUEgLyogRE9NU3R5bGVNZWRpYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IERPTVN0eWxlTWVkaWEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRjUwMjYyMTAyQkE5MkIwMDY2RjM5QSAvKiBET01TdHlsZU1lZGlhSW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU3R5bGVNZWRpYUludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjUwMjY3MTAyQkE5NDMwMDY2
RjM5QSAvKiBKU1N0eWxlTWVkaWEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTdHlsZU1lZGlhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZG
NTAyNjgxMDJCQTk0MzAwNjZGMzlBIC8qIEpTU3R5bGVNZWRpYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1N0eWxlTWVkaWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTgyOTUsNiArODI4NSw5IEBACiAJCTFBQ0U1M0U2MEE4RDE4RTcwMDIyOTQ3RCAvKiBY
TUxTZXJpYWxpemVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWE1MU2VyaWFsaXplci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQ0U1M0Y0MEE4RDE5NDcwMDIyOTQ3
RCAvKiBKU1hNTFNlcmlhbGl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTWE1MU2VyaWFsaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBQ0U1M0Y1MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTWE1MU2VyaWFsaXplci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQUNGM0ZCRDFENTAxMkI2MDA2M0FFRkIgLyogRE9NWFBhdGhFeHBy
ZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVhQYXRoRXhwcmVz
c2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUNGM0ZCRTFENTAxMkI2MDA2
M0FFRkIgLyogRE9NWFBhdGhFeHByZXNzaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRE9NWFBhdGhFeHByZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQUNGM0ZCRjFENTAxMkI2MDA2M0FFRkIgLyogRE9NWFBhdGhFeHByZXNzaW9u
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NWFBhdGhFeHBy
ZXNzaW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFEMjMxNkQw
Q0QyNjlFNzAwQzFGMTk0IC8qIEpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRDhGODE5MTFDQUI5RTkwMEU5M0U1NCAvKiBQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxh
dGZvcm1TdHJhdGVnaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRDhGODFB
MTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMDQ3LDEwICsxMTA0MCw3IEBACiAJCTg1RTcxMTg3MEFD
NUQ1MzUwMDUzMjcwRiAvKiBET01SZWN0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTVJlY3RJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NUU3MTE4ODBBQzVENTM1MDA1MzI3MEYgLyogRE9NU3R5bGVTaGVldExpc3RJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU3R5bGVTaGVldExpc3RJ
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUU3MTE4QTBBQzVENTM1
MDA1MzI3MEYgLyogRE9NVGV4dEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01UZXh0SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODVFNzExOEIwQUM1RDUzNTAwNTMyNzBGIC8qIERPTVhQYXRoRXhwcmVzc2lvbkludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01YUGF0aEV4cHJlc3Npb25JbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUU3MTE4QzBBQzVENTM1MDA1
MzI3MEYgLyogRE9NWFBhdGhSZXN1bHRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NWFBhdGhSZXN1bHRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk4NUU5RTA5QjBBQjNBMEM3MDAwNjlDRDAgLyogRE9NWFBhdGhFeHByZXNzaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01YUGF0aEV4cHJlc3Npb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODVFOUUwOUMwQUIzQTBDNzAwMDY5Q0Qw
IC8qIERPTVhQYXRoRXhwcmVzc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBET01YUGF0aEV4cHJlc3Npb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg1RTlFMDlFMEFCM0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aE5TUmVzb2x2ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVhQYXRoTlNSZXNvbHZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUU5RTA5RjBBQjNBMEM3MDAwNjlDRDAgLyog
RE9NWFBhdGhSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVhQ
YXRoUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1RTlFMEEwMEFCM0Ew
QzcwMDA2OUNEMCAvKiBET01YUGF0aFJlc3VsdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBET01YUGF0aFJlc3VsdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE2MjI5LDYgKzE2MjE5LDYwIEBACiAJCQluYW1lID0gT2ZmbGluZTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTFBQ0YzRkI1MUQ1MDEyNDQwMDYzQUVGQiAv
KiBYUGF0aCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MUFDRjNGQkQxRDUwMTJCNjAwNjNBRUZCIC8qIERPTVhQYXRoRXhwcmVzc2lvbi5oICovLAorCQkJ
CTFBQ0YzRkJFMUQ1MDEyQjYwMDYzQUVGQiAvKiBET01YUGF0aEV4cHJlc3Npb24ubW0gKi8sCisJ
CQkJMUFDRjNGQkYxRDUwMTJCNjAwNjNBRUZCIC8qIERPTVhQYXRoRXhwcmVzc2lvbkludGVybmFs
LmggKi8sCisJCQkJODVFOUUwOUUwQUIzQTBDNzAwMDY5Q0QwIC8qIERPTVhQYXRoTlNSZXNvbHZl
ci5oICovLAorCQkJCTg1RTlFMDlGMEFCM0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aFJlc3VsdC5o
ICovLAorCQkJCTg1RTlFMEEwMEFCM0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aFJlc3VsdC5tbSAq
LywKKwkJCQk4NUU3MTE4QzBBQzVENTM1MDA1MzI3MEYgLyogRE9NWFBhdGhSZXN1bHRJbnRlcm5h
bC5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBYUGF0aDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CisJCTFBQ0YzRkMzMUQ1MDEzQTAwMDYzQUVGQiAvKiBTdHlsZSBTaGVldHMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg1MDY1NkY4MEFB
QjQ3NjMwMDJEMTVDMCAvKiBET01NZWRpYUxpc3QuaCAqLywKKwkJCQk4NTA2NTZGOTBBQUI0NzYz
MDAyRDE1QzAgLyogRE9NTWVkaWFMaXN0Lm1tICovLAorCQkJCTg1RTcxMTgyMEFDNUQ1MzUwMDUz
MjcwRiAvKiBET01NZWRpYUxpc3RJbnRlcm5hbC5oICovLAorCQkJCTg1MDY1NkZBMEFBQjQ3NjMw
MDJEMTVDMCAvKiBET01TdHlsZVNoZWV0LmggKi8sCisJCQkJODUwNjU2RkIwQUFCNDc2MzAwMkQx
NUMwIC8qIERPTVN0eWxlU2hlZXQubW0gKi8sCisJCQkJODVCNDk4RkUwQURCMzQ4MTAwOTI1Q0JC
IC8qIERPTVN0eWxlU2hlZXRJbnRlcm5hbC5oICovLAorCQkJCTg1MDY1NkZDMEFBQjQ3NjMwMDJE
MTVDMCAvKiBET01TdHlsZVNoZWV0TGlzdC5oICovLAorCQkJCTg1MDY1NkZEMEFBQjQ3NjMwMDJE
MTVDMCAvKiBET01TdHlsZVNoZWV0TGlzdC5tbSAqLywKKwkJCQk4NUU3MTE4ODBBQzVENTM1MDA1
MzI3MEYgLyogRE9NU3R5bGVTaGVldExpc3RJbnRlcm5hbC5oICovLAorCQkJKTsKKwkJCW5hbWUg
PSAiU3R5bGUgU2hlZXRzIjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFB
Q0YzRkM0MUQ1MDEzQTkwMDYzQUVGQiAvKiBUcmF2ZXJzYWwgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg1NDA3NTI1MEFENkM2NjcwMDYyMEM1NyAvKiBE
T01Ob2RlRmlsdGVyLmggKi8sCisJCQkJODU1MjZDMzUwQUIwQTE3RTAwMDMwMkVBIC8qIERPTU5v
ZGVJdGVyYXRvci5oICovLAorCQkJCTg1NTI2QzM2MEFCMEExN0UwMDAzMDJFQSAvKiBET01Ob2Rl
SXRlcmF0b3IubW0gKi8sCisJCQkJODUwQjQxQzAwQUQ5RTdFNzAwQTZFRDRGIC8qIERPTU5vZGVJ
dGVyYXRvckludGVybmFsLmggKi8sCisJCQkJODU1MjZDRDAwQUIwQjdEOTAwMDMwMkVBIC8qIERP
TVRyZWVXYWxrZXIuaCAqLywKKwkJCQk4NTUyNkNEMTBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJl
ZVdhbGtlci5tbSAqLywKKwkJCQk4NTBCNDFDMTBBRDlFN0U3MDBBNkVENEYgLyogRE9NVHJlZVdh
bGtlckludGVybmFsLmggKi8sCisJCQkpOworCQkJbmFtZSA9IFRyYXZlcnNhbDsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFBQ0YzRkM1MUQ1MDEzQjAwMDYzQUVGQiAvKiBS
YW5nZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg1
MzhGMDU4MEFENzIyRjEwMDZBODFEMSAvKiBET01SYW5nZS5oICovLAorCQkJCTg1MzhGMDU5MEFE
NzIyRjEwMDZBODFEMSAvKiBET01SYW5nZS5tbSAqLywKKwkJCQk4NTM4RjA1QTBBRDcyMkYxMDA2
QTgxRDEgLyogRE9NUmFuZ2VJbnRlcm5hbC5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBSYW5nZXM7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxQUQyRDE1QzFENEZENkIyMDBC
N0RFMzYgLyogSFRNTCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0xODUzMywzOCArMTg1NzcsNiBAQAogCQkJcGF0aCA9IGNmOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKLQkJODUwNjU3MDQwQUFCNDc2QzAwMkQxNUMwIC8qIFN0eWxlU2hl
ZXRzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4NTA2
NTZGODBBQUI0NzYzMDAyRDE1QzAgLyogRE9NTWVkaWFMaXN0LmggKi8sCi0JCQkJODUwNjU2Rjkw
QUFCNDc2MzAwMkQxNUMwIC8qIERPTU1lZGlhTGlzdC5tbSAqLywKLQkJCQkwRkY1MDI1OTEwMkJB
OTAxMDA2NkYzOUEgLyogRE9NU3R5bGVNZWRpYS5oICovLAotCQkJCTBGRjUwMjVBMTAyQkE5MDEw
MDY2RjM5QSAvKiBET01TdHlsZU1lZGlhLm1tICovLAotCQkJCTg1MDY1NkZBMEFBQjQ3NjMwMDJE
MTVDMCAvKiBET01TdHlsZVNoZWV0LmggKi8sCi0JCQkJODUwNjU2RkIwQUFCNDc2MzAwMkQxNUMw
IC8qIERPTVN0eWxlU2hlZXQubW0gKi8sCi0JCQkJODUwNjU2RkMwQUFCNDc2MzAwMkQxNUMwIC8q
IERPTVN0eWxlU2hlZXRMaXN0LmggKi8sCi0JCQkJODUwNjU2RkQwQUFCNDc2MzAwMkQxNUMwIC8q
IERPTVN0eWxlU2hlZXRMaXN0Lm1tICovLAotCQkJKTsKLQkJCW5hbWUgPSBTdHlsZVNoZWV0czsK
LQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTg1MzhGMDE1MEFENzE4QUYwMDZB
ODFEMSAvKiBWaWV3cyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJODUzOEYwMTYwQUQ3MThEODAwNkE4MUQxIC8qIERPTUFic3RyYWN0Vmlldy5oICovLAot
CQkJKTsKLQkJCW5hbWUgPSBWaWV3czsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07
Ci0JCTg1MzhGMDU3MEFENzIyQjkwMDZBODFEMSAvKiBSYW5nZXMgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTg1MzhGMDU4MEFENzIyRjEwMDZBODFEMSAv
KiBET01SYW5nZS5oICovLAotCQkJCTg1MzhGMDU5MEFENzIyRjEwMDZBODFEMSAvKiBET01SYW5n
ZS5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gUmFuZ2VzOwotCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKLQkJfTsKIAkJODU0MDc1NDIwQUQ2QzczRTAwNjIwQzU3IC8qIERPTUV4Y2VwdGlvbnMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTg1ODUsMTgg
KzE4NTk3LDYgQEAKIAkJCW5hbWUgPSBDb3JlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKLQkJODU1MjZDMTUwQUIwQTEyQTAwMDMwMkVBIC8qIFRyYXZlcnNhbCAqLyA9IHsKLQkJ
CWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJODU0MDc1MjUwQUQ2QzY2NzAw
NjIwQzU3IC8qIERPTU5vZGVGaWx0ZXIuaCAqLywKLQkJCQk4NTUyNkMzNTBBQjBBMTdFMDAwMzAy
RUEgLyogRE9NTm9kZUl0ZXJhdG9yLmggKi8sCi0JCQkJODU1MjZDMzYwQUIwQTE3RTAwMDMwMkVB
IC8qIERPTU5vZGVJdGVyYXRvci5tbSAqLywKLQkJCQk4NTUyNkNEMDBBQjBCN0Q5MDAwMzAyRUEg
LyogRE9NVHJlZVdhbGtlci5oICovLAotCQkJCTg1NTI2Q0QxMEFCMEI3RDkwMDAzMDJFQSAvKiBE
T01UcmVlV2Fsa2VyLm1tICovLAotCQkJKTsKLQkJCW5hbWUgPSBUcmF2ZXJzYWw7Ci0JCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk4NTk2N0Q5RjBBQThCQjU5MDA1RkVERUUgLyog
Q29yZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xODc3
NywxMSArMTg3NzcsNiBAQAogCQkJCTg1OTY3RENBMEFBOEJGMEYwMDVGRURFRSAvKiBDU1MgKi8s
CiAJCQkJODVBRkE3QUIwQUFGM0JCMDAwRTg0MzA1IC8qIEV2ZW50cyAqLywKIAkJCQk4NUU3MTEz
RDBBQzVENEExMDA1MzI3MEYgLyogSW50ZXJuYWwgKi8sCi0JCQkJODUzOEYwNTcwQUQ3MjJCOTAw
NkE4MUQxIC8qIFJhbmdlcyAqLywKLQkJCQk4NTA2NTcwNDBBQUI0NzZDMDAyRDE1QzAgLyogU3R5
bGVTaGVldHMgKi8sCi0JCQkJODU1MjZDMTUwQUIwQTEyQTAwMDMwMkVBIC8qIFRyYXZlcnNhbCAq
LywKLQkJCQk4NTM4RjAxNTBBRDcxOEFGMDA2QTgxRDEgLyogVmlld3MgKi8sCi0JCQkJODVFOUUw
QTcwQUIzQTBDQzAwMDY5Q0QwIC8qIFhQYXRoICovLAogCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZl
ZCBTb3VyY2VzIjsKIAkJCXBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlOwpAQCAtMTg3OTAs
NyArMTg3ODUsNiBAQAogCQk4NUU3MTEzRDBBQzVENEExMDA1MzI3MEYgLyogSW50ZXJuYWwgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTg1MzhGMDE4MEFE
NzE4RDgwMDZBODFEMSAvKiBET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oICovLAogCQkJCTg1RTcx
MTNFMEFDNUQ1MzQwMDUzMjcwRiAvKiBET01BdHRySW50ZXJuYWwuaCAqLywKIAkJCQk4NUU3MTEz
RjBBQzVENTM0MDA1MzI3MEYgLyogRE9NQ0RBVEFTZWN0aW9uSW50ZXJuYWwuaCAqLywKIAkJCQk4
NUU3MTE0MDBBQzVENTM0MDA1MzI3MEYgLyogRE9NQ2hhcmFjdGVyRGF0YUludGVybmFsLmggKi8s
CkBAIC0xODgyMCw0NyArMTg4MTQsMjcgQEAKIAkJCQk4NUU3MTE0QjBBQzVENTM0MDA1MzI3MEYg
LyogRE9NRW50aXR5UmVmZXJlbmNlSW50ZXJuYWwuaCAqLywKIAkJCQk4NUI0OThGNDBBREIzMzdB
MDA5MjVDQkIgLyogRE9NRXZlbnRJbnRlcm5hbC5oICovLAogCQkJCTg1OTg5REM1MEFDQzhCQkQw
MEEwQkM1MSAvKiBET01LZXlib2FyZEV2ZW50SW50ZXJuYWwuaCAqLywKLQkJCQk4NUU3MTE4MjBB
QzVENTM1MDA1MzI3MEYgLyogRE9NTWVkaWFMaXN0SW50ZXJuYWwuaCAqLywKIAkJCQk3NTc5M0VE
MjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLywKIAkJCQlF
MUFERURENDBFNzZCRDYwMDA0QTFBNUUgLyogRE9NTWVzc2FnZVBvcnRJbnRlcm5hbC5oICovLAog
CQkJCTg1OTg5REM2MEFDQzhCQkQwMEEwQkM1MSAvKiBET01Nb3VzZUV2ZW50SW50ZXJuYWwuaCAq
LywKIAkJCQk4NTk4OURDNzBBQ0M4QkJEMDBBMEJDNTEgLyogRE9NTXV0YXRpb25FdmVudEludGVy
bmFsLmggKi8sCiAJCQkJODVFNzExODMwQUM1RDUzNTAwNTMyNzBGIC8qIERPTU5hbWVkTm9kZU1h
cEludGVybmFsLmggKi8sCiAJCQkJODVCNDk4RkEwQURCMzQwMjAwOTI1Q0JCIC8qIERPTU5vZGVJ
bnRlcm5hbC5oICovLAotCQkJCTg1MEI0MUMwMEFEOUU3RTcwMEE2RUQ0RiAvKiBET01Ob2RlSXRl
cmF0b3JJbnRlcm5hbC5oICovLAogCQkJCTg1RTcxMTg0MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01O
b2RlTGlzdEludGVybmFsLmggKi8sCiAJCQkJODU5ODlEQzgwQUNDOEJCRDAwQTBCQzUxIC8qIERP
TU92ZXJmbG93RXZlbnRJbnRlcm5hbC5oICovLAogCQkJCTg1RTcxMTg2MEFDNUQ1MzUwMDUzMjcw
RiAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25JbnRlcm5hbC5oICovLAogCQkJCUJDQzU3MzM3
MEQ2OTVCRDcwMDZFRjUxNyAvKiBET01Qcm9ncmVzc0V2ZW50SW50ZXJuYWwuaCAqLywKLQkJCQk4
NTM4RjA1QTBBRDcyMkYxMDA2QTgxRDEgLyogRE9NUmFuZ2VJbnRlcm5hbC5oICovLAogCQkJCTg1
RTcxMTg3MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01SZWN0SW50ZXJuYWwuaCAqLywKIAkJCQlCQ0Qw
RkM0RTBEQkQ3MjBCMDBCMkY2MzAgLyogRE9NUkdCQ29sb3JJbnRlcm5hbC5oICovLAogCQkJCTBG
RjUwMjYyMTAyQkE5MkIwMDY2RjM5QSAvKiBET01TdHlsZU1lZGlhSW50ZXJuYWwuaCAqLywKLQkJ
CQk4NUI0OThGRTBBREIzNDgxMDA5MjVDQkIgLyogRE9NU3R5bGVTaGVldEludGVybmFsLmggKi8s
Ci0JCQkJODVFNzExODgwQUM1RDUzNTAwNTMyNzBGIC8qIERPTVN0eWxlU2hlZXRMaXN0SW50ZXJu
YWwuaCAqLywKIAkJCQk0NDI5QUIwNzBDQjg0RjgxMDA3NjQ3QzUgLyogRE9NVGV4dEV2ZW50SW50
ZXJuYWwuaCAqLywKIAkJCQk4NUU3MTE4QTBBQzVENTM1MDA1MzI3MEYgLyogRE9NVGV4dEludGVy
bmFsLmggKi8sCi0JCQkJODUwQjQxQzEwQUQ5RTdFNzAwQTZFRDRGIC8qIERPTVRyZWVXYWxrZXJJ
bnRlcm5hbC5oICovLAogCQkJCTg1OTg5REM5MEFDQzhCQkQwMEEwQkM1MSAvKiBET01VSUV2ZW50
SW50ZXJuYWwuaCAqLywKIAkJCQk4NTk4OURDQTBBQ0M4QkJEMDBBMEJDNTEgLyogRE9NV2hlZWxF
dmVudEludGVybmFsLmggKi8sCi0JCQkJODVFNzExOEIwQUM1RDUzNTAwNTMyNzBGIC8qIERPTVhQ
YXRoRXhwcmVzc2lvbkludGVybmFsLmggKi8sCi0JCQkJODVFNzExOEMwQUM1RDUzNTAwNTMyNzBG
IC8qIERPTVhQYXRoUmVzdWx0SW50ZXJuYWwuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gSW50ZXJu
YWw7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk4NUU5RTBBNzBBQjNBMEND
MDAwNjlDRDAgLyogWFBhdGggKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVu
ID0gKAotCQkJCTg1RTlFMDlCMEFCM0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aEV4cHJlc3Npb24u
aCAqLywKLQkJCQk4NUU5RTA5QzBBQjNBMEM3MDAwNjlDRDAgLyogRE9NWFBhdGhFeHByZXNzaW9u
Lm1tICovLAotCQkJCTg1RTlFMDlFMEFCM0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aE5TUmVzb2x2
ZXIuaCAqLywKLQkJCQk4NUU5RTA5RjBBQjNBMEM3MDAwNjlDRDAgLyogRE9NWFBhdGhSZXN1bHQu
aCAqLywKLQkJCQk4NUU5RTBBMDBBQjNBMEM3MDAwNjlDRDAgLyogRE9NWFBhdGhSZXN1bHQubW0g
Ki8sCi0JCQkpOwotCQkJbmFtZSA9IFhQYXRoOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
LQkJfTsKIAkJODk4Nzg1NzYxMjJDQTFEQTAwM0FBQkRBIC8qIEZpbGVBUEkgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjI0NDksMTEgKzIyNDIzLDE1IEBA
CiAJCUJDMUEzNzk0MDk3QzZGQzQwMDE5RjNEOCAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQUNGM0ZDNTFENTAxM0IwMDA2M0FFRkIgLyog
UmFuZ2VzICovLAorCQkJCTFBQ0YzRkM0MUQ1MDEzQTkwMDYzQUVGQiAvKiBUcmF2ZXJzYWwgKi8s
CisJCQkJMUFDRjNGQzMxRDUwMTNBMDAwNjNBRUZCIC8qIFN0eWxlIFNoZWV0cyAqLywKIAkJCQk4
NTRGMTJBQzBBOEVCQzE4MDAwOTQwQjUgLyogQ29yZSAqLywKKwkJCQk4NTQwNzU0MjBBRDZDNzNF
MDA2MjBDNTcgLyogRE9NRXhjZXB0aW9ucyAqLywKIAkJCQkxQUQyRDE1QzFENEZENkIyMDBCN0RF
MzYgLyogSFRNTCAqLywKIAkJCQk4NUIyMzIyNjBBOEJGM0ExMDBGREY0N0IgLyogRGVyaXZlZCBT
b3VyY2VzICovLAotCQkJCTg1NDA3NTQyMEFENkM3M0UwMDYyMEM1NyAvKiBET01FeGNlcHRpb25z
ICovLAogCQkJCUJDRDBGQkNFMERCRDYyNDEwMEIyRjYzMCAvKiBWaWV3cyAqLywKKwkJCQkxQUNG
M0ZCNTFENTAxMjQ0MDA2M0FFRkIgLyogWFBhdGggKi8sCiAJCQkJODU5QjdGQjkwQThEMjg4ODAw
QTVGMUVBIC8qIENvZGVHZW5lcmF0b3JPYmpDLnBtICovLAogCQkJCUJDMUEzNzk3MDk3QzcxNUYw
MDE5RjNEOCAvKiBET00uaCAqLywKIAkJCQlCQzFBMzc5ODA5N0M3MTVGMDAxOUYzRDggLyogRE9N
Lm1tICovLApAQCAtMjI5MzcsNiArMjI5MTUsOCBAQAogCQlCQ0QwRkJDRTBEQkQ2MjQxMDBCMkY2
MzAgLyogVmlld3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTg1MzhGMDE2MEFENzE4RDgwMDZBODFEMSAvKiBET01BYnN0cmFjdFZpZXcuaCAqLywKKwkJ
CQk4NTM4RjAxODBBRDcxOEQ4MDA2QTgxRDEgLyogRE9NQWJzdHJhY3RWaWV3SW50ZXJuYWwuaCAq
LywKIAkJCQlCQ0QwRkJDRjBEQkQ2MjVFMDBCMkY2MzAgLyogRE9NQWJzdHJhY3RWaWV3Lm1tICov
LAogCQkJCUJDOTk4MTJEMERCRTgwN0EwMDhDRTlFRiAvKiBET01BYnN0cmFjdFZpZXdGcmFtZS5o
ICovLAogCQkJKTsKQEAgLTI1MzM2LDYgKzI1MzE2LDcgQEAKIAkJCQkxQTU2OUNGRTBEN0UyQjgy
MDA3QzM5ODMgLyogY191dGlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0IxNkMxQTA5NzlD
M0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM2NEI0Q0MwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTFBQ0YzRkMyMUQ1MDEyQkQwMDYzQUVGQiAvKiBET01YUGF0aEV4cHJlc3Npb25JbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFRjRFNjcxNzBFMTYwMzAwQUIyNzk5IC8qIENhY2hl
ZEZvbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQzBBQTM5MEYyQUExMEEwMDE2NDhD
MiAvKiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFDQkZDOTkwRDEwRTQ4MzAw
MkRCRjUxIC8qIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI1
OTQzLDcgKzI1OTI0LDYgQEAKIAkJCQk0QUNCQzBDNDEyNzEzQ0NBMDA5NEY5QjIgLyogRE9NU2V0
dGFibGVUb2tlbkxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NDQyNzRCMTFBNTdFN0EwMDYz
QTc0OSAvKiBET01TdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0NjQwQTExRDdG
MzA0MDA2NDU1QjAgLyogRE9NU3RyaW5nTWFwLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkY1MDI1
QjEwMkJBOTAxMDA2NkYzOUEgLyogRE9NU3R5bGVNZWRpYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZGNTAyNjMxMDJCQTkyQzAwNjZGMzlBIC8qIERPTVN0eWxlTWVkaWFJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODUwNjU3MDAwQUFCNDc2MzAwMkQxNUMwIC8qIERPTVN0eWxlU2hlZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg1QjQ5OEZGMEFEQjM0ODEwMDkyNUNCQiAvKiBET01TdHls
ZVNoZWV0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjYwMDYsMTEgKzI1OTg2LDggQEAK
IAkJCQlCQzUzREEyRTExNDMxMjFFMDAwRDgxN0UgLyogRE9NV3JhcHBlcldvcmxkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTFEMTM4MDBBNTMyNTUyMDA2NEJGNUYgLyogRE9NWFBhdGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1ODAxNUNFMEFCQ0E3NUQwMDgwNTg4RCAvKiBET01YUGF0aEV4Y2Vw
dGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODVFOUUwQTEwQUIzQTBDNzAwMDY5Q0QwIC8qIERP
TVhQYXRoRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODVFNzExREEwQUM1RDUzNTAw
NTMyNzBGIC8qIERPTVhQYXRoRXhwcmVzc2lvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NUU5RTBBNDBBQjNBMEM3MDAwNjlDRDAgLyogRE9NWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NUU5RTBBNTBBQjNBMEM3MDAwNjlDRDAgLyogRE9NWFBhdGhSZXN1bHQu
aCBpbiBIZWFkZXJzICovLAotCQkJCTg1RTcxMURCMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01YUGF0
aFJlc3VsdEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDE3NjJFNDE3NjY4NkVBMDBE
ODM2QTggLyogRG93blNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTg3NjBFMEIyQTEy
MDEwMEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDQTU5NjMw
QjI3QzFGMjAwRkEwMjFEIC8qIERyYWdDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjcxMTEs
NiArMjcwODgsNyBAQAogCQkJCTkzRjFENUMxMTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYkdMTG9z
ZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOTlDMTA0MkQyRDMwMDA5RDQ0NyAv
KiBKU1dlYkdMUHJvZ3JhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkY5OTVBMzIxQTcwODMzNzAw
QTczNUY0IC8qIEpTV2ViR0xRdWVyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFDRjNGQjgxRDUw
MTI4NzAwNjNBRUZCIC8qIERPTVhQYXRoUmVzdWx0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5QzdCOTlFMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMUmVuZGVyYnVmZmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUVFRDE0NzEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzRjNEMzY4MUE2OUIxQTUwMDU5RkMy
QiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjcz
MTgsNiArMjcyOTYsNyBAQAogCQkJCUNEQzhCNUE3MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRERDMUU3QTE4QTk1MkYz
MDAyN0E5RDQgLyogTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDYxRkU2ODE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUFDRjNGQzAxRDUwMTJCRDAwNjNBRUZCIC8qIERPTVhQYXRoRXhwcmVz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDNTlCNjkxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1l
ZGlhU291cmNlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE1MTdEMTREMUMw
MDQyMEFBMSAvKiBNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5NEMxN0Qx
NzA5NjAwNDIwQUExIC8qIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjk3NDgsNiArMjk3MjcsNyBAQAogCQkJCTg1REY4MTJDMEFBNzc4NzIwMDQ4
NkFENyAvKiBET01IVE1MT2JqZWN0RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QkE0
RDE2MEFBNjg4NjgwMDg4MDUyRCAvKiBET01IVE1MT0xpc3RFbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODVGMzJBRUYwQUE2M0I4NzAwRkYzMTg0IC8qIERPTUhUTUxPcHRHcm91cEVsZW1l
bnQubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQUNGM0ZDMTFENTAxMkJEMDA2M0FFRkIgLyogRE9N
WFBhdGhFeHByZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0MDc1NkMwQUQ2Q0JGOTAw
NjIwQzU3IC8qIERPTUhUTUxPcHRpb25FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVE
RjJGOUMwQUEzQ0FFNTAwQUQ2NEM1IC8qIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTg1MTgzQjQ3MEFBNjkyNjEwMEYxOUZBMyAvKiBET01IVE1MUGFyYWdy
YXBoRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLApAQCAtMjk3OTYsNyArMjk3NzYsNiBAQAogCQkJ
CUJDQUVGQ0FFMTAxNkNFNEEwMDQwRDM0RSAvKiBET01SR0JDb2xvci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUJDNUE4Njg0MEMzMzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzU1NjEwRjExMUE3MDRFQjAwQjgyRDI3IC8qIERPTVN0cmluZ0xpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZGNTAyNUMxMDJCQTkwMTAwNjZGMzlBIC8qIERPTVN0
eWxlTWVkaWEubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTA2NTcwMTBBQUI0NzYzMDAyRDE1QzAg
LyogRE9NU3R5bGVTaGVldC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDY1NzAzMEFBQjQ3NjMw
MDJEMTVDMCAvKiBET01TdHlsZVNoZWV0TGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QUNB
OTlEMEE5QjU3NTkwMDY3MUU5MCAvKiBET01UZXh0Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yOTgz
NCw4ICsyOTgxMyw2IEBACiAJCQkJQThDQ0JCNDgxNTFGODMxNjAwQUI3Q0U5IC8qIERPTVdpbmRv
d1dlYkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTNEQTQ4MTE0MzEzNEQwMDBE
ODE3RSAvKiBET01XcmFwcGVyV29ybGQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRDEzODEw
QTUzMjU1MjAwNjRCRjVGIC8qIERPTVhQYXRoLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJODVFOUUw
QTIwQUIzQTBDNzAwMDY5Q0QwIC8qIERPTVhQYXRoRXhwcmVzc2lvbi5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTg1RTlFMEE2MEFCM0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aFJlc3VsdC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUZEMTc2MkUzMTc2Njg2RUEwMEQ4MzZBOCAvKiBEb3duU2FtcGxlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0NBNTk1RTBCMjdCRDlFMDBGQTAyMUQgLyogRHJhZ0Nv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcxODc4OTAwQjJEMDRBQzAwQTE2RUNF
IC8qIERyYWdDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTMyMyw2ICszMTMw
MCw3IEBACiAJCQkJRkQzMTYwQTIxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5lci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRDMxNjAxOTEyQjAyNjc2MDBDMUEzNTkgLyogUGFubmVyTm9kZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMTg4OTBBRTFBQTEzRjI1MDAyNkMzMDEgLyogUGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQUNGM0ZCQzFENTAx
Mjg3MDA2M0FFRkIgLyogRE9NWFBhdGhSZXN1bHQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRENE
NDFFNzFDM0REQjA5MDA5NjVEOTkgLyogUGFyc2VkQ29udGVudFJhbmdlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ0Nzk1ODA1MTY0M0I0QjIwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RDOTEyNTFGMTJEMDAzRUYyNjkgLyogUGFzc3dv
cmRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUFic3RyYWN0Vmlldy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01BYnN0cmFjdFZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmQwYmE1M2ZhYjBjN2Q4NjI1
ZjBlYzRiM2IzOTYyOWRhYTA3YjI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01BYnN0cmFjdFZpZXcuaApAQCAtMCwwICsxLDMzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJD
b3JlL0RPTU9iamVjdC5oPgorCitAY2xhc3MgRE9NRG9jdW1lbnQ7CisKK1dFQktJVF9DTEFTU19B
VkFJTEFCTEVfTUFDKDEwXzQpCitXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERPTUFic3RyYWN0
VmlldyA6IERPTU9iamVjdAorQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Eb2N1bWVu
dCAqZG9jdW1lbnQ7CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUFic3RyYWN0Vmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
QWJzdHJhY3RWaWV3Lm1tCmluZGV4IDFjZGM4M2RmYWJmMjI4M2U2M2NiMTMyNzVmNzM3NGUyOGIz
ZjQ1ZWYuLjRhNGFiNzU5YmZkMmYzMjNiZmVjNjA4ZDYxMTJhMzdiMjBiMmMxMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQWJzdHJhY3RWaWV3Lm1tCkBAIC0yNywx
MCArMjcsMTAgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRPTUludGVy
bmFsLmgiIC8vIGltcG9ydCBmaXJzdCB0byBtYWtlIHRoZSBwcml2YXRlL3B1YmxpYyB0cmljayB3
b3JrCiAjaW1wb3J0ICJET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oIgogCiAjaW1wb3J0ICJET01E
b2N1bWVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9N
V2luZG93LmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxl
cnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQWJzdHJh
Y3RWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQWJzdHJh
Y3RWaWV3SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzI4YTAwYzA5NzIwNmFhMGU1ZDU2Njc3OTM1
MjhhM2RmN2NhNzhjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW1wb3J0IDxXZWJDb3Jl
L0RPTUFic3RyYWN0Vmlldy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBET01XaW5k
b3c7Cit9CisKK1dFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OkRPTVdpbmRvdyogY29yZShET01BYnN0
cmFjdFZpZXcgKik7CitXRUJDT1JFX0VYUE9SVCBET01BYnN0cmFjdFZpZXcgKmtpdChXZWJDb3Jl
OjpET01XaW5kb3cqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NTWVkaWFMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU1lZGlhTGlz
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYzOWM0ZjkwNmU4Yjk4NmM0MDMwMGU5MzdjYjU1NzU4OGMwM2Y4OWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU1lZGlh
TGlzdC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisKK0BjbGFz
cyBOU1N0cmluZzsKKworV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoMTBfNCkKK1dFQkNPUkVf
RVhQT1JUIEBpbnRlcmZhY2UgRE9NTWVkaWFMaXN0IDogRE9NT2JqZWN0CitAcHJvcGVydHkgKGNv
cHkpIE5TU3RyaW5nICptZWRpYVRleHQ7CitAcHJvcGVydHkgKHJlYWRvbmx5KSB1bnNpZ25lZCBs
ZW5ndGg7CisKKy0gKE5TU3RyaW5nICopaXRlbToodW5zaWduZWQpaW5kZXg7CistICh2b2lkKWRl
bGV0ZU1lZGl1bTooTlNTdHJpbmcgKilvbGRNZWRpdW07CistICh2b2lkKWFwcGVuZE1lZGl1bToo
TlNTdHJpbmcgKiluZXdNZWRpdW07CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTU1lZGlhTGlzdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NTWVkaWFMaXN0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2NmJhZTNlMDRiN2Q4MWNmZjljZmU2NmMx
MTQ5YjAxODc0NGEyNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTU1lZGlhTGlzdC5tbQpAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJET01JbnRlcm5hbC5oIgorCisjaW1wb3J0ICJET01NZWRpYUxpc3QuaCIKKworI2lt
cG9ydCAiRE9NTWVkaWFMaXN0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5o
IgorI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKKyNpbXBvcnQgIkpTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oIgorI2ltcG9ydCAiTWVkaWFMaXN0LmgiCisjaW1wb3J0ICJUaHJlYWRDaGVjay5o
IgorI2ltcG9ydCAiVVJMLmgiCisjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgorI2ltcG9y
dCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorCisj
ZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpNZWRpYUxpc3QqPihfaW50ZXJu
YWwpCisKK0BpbXBsZW1lbnRhdGlvbiBET01NZWRpYUxpc3QKKworLSAodm9pZClkZWFsbG9jCit7
CisgICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtET01N
ZWRpYUxpc3QgY2xhc3NdLCBzZWxmKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9pbnRl
cm5hbCkKKyAgICAgICAgSU1QTC0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisK
Ky0gKE5TU3RyaW5nICopbWVkaWFUZXh0Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5tZWRpYVRleHQoKTsKK30KKworLSAodm9p
ZClzZXRNZWRpYVRleHQ6KE5TU3RyaW5nICopbmV3TWVkaWFUZXh0Cit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIElNUEwtPnNldE1lZGlhVGV4dChuZXdNZWRpYVRleHQsIGVjKTsKKyAgICBX
ZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCistICh1bnNpZ25lZClsZW5ndGgKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElN
UEwtPmxlbmd0aCgpOworfQorCistIChOU1N0cmluZyAqKWl0ZW06KHVuc2lnbmVkKWluZGV4Cit7
CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJ
TVBMLT5pdGVtKGluZGV4KTsKK30KKworLSAodm9pZClkZWxldGVNZWRpdW06KE5TU3RyaW5nICop
b2xkTWVkaXVtCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIElNUEwtPmRlbGV0ZU1lZGl1
bShvbGRNZWRpdW0sIGVjKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworfQor
CistICh2b2lkKWFwcGVuZE1lZGl1bTooTlNTdHJpbmcgKiluZXdNZWRpdW0KK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgSU1QTC0+YXBwZW5kTWVkaXVtKG5ld01lZGl1bSwgZWMpOworICAg
IFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKK0BlbmQKKworV2ViQ29yZTo6TWVk
aWFMaXN0KiBjb3JlKERPTU1lZGlhTGlzdCAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBl
ciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6TWVkaWFMaXN0Kj4od3JhcHBlci0+X2ludGVy
bmFsKSA6IDA7Cit9CisKK0RPTU1lZGlhTGlzdCAqa2l0KFdlYkNvcmU6Ok1lZGlhTGlzdCogdmFs
dWUpCit7CisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKKyAgICBp
ZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIGlmIChET01NZWRpYUxpc3QgKndy
YXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFtbd3JhcHBlciBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBET01NZWRpYUxpc3QgKndyYXBwZXIgPSBbW0RPTU1l
ZGlhTGlzdCBhbGxvY10gX2luaXRdOworICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CisgICAgdmFsdWUtPnJlZigpOwor
ICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOworICAgIHJldHVybiBbd3JhcHBlciBh
dXRvcmVsZWFzZV07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTU1lZGlhTGlzdEludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TU1lZGlhTGlzdEludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ2YTc1MjVjZDNhMTZjYjVkMWU0ODA3
MzI1N2ZmOTJjNWQwZDJkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NTWVkaWFMaXN0SW50ZXJuYWwuaApAQCAtMCwwICsxLDM0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbXBvcnQgPFdl
YkNvcmUvRE9NTWVkaWFMaXN0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlh
TGlzdDsKK30KKworV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6TWVkaWFMaXN0KiBjb3JlKERPTU1l
ZGlhTGlzdCAqKTsKK1dFQkNPUkVfRVhQT1JUIERPTU1lZGlhTGlzdCAqa2l0KFdlYkNvcmU6Ok1l
ZGlhTGlzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01O
b2RlRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGVGaWx0ZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNmY0ZGUyMTQwNjM1ODc3NWZiZjhhMTJjMTY5Y2YwNDU4MzNiOGQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlRmls
dGVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9XZWJLaXRBdmFpbGFiaWxpdHkuaD4K
KworQGNsYXNzIERPTU5vZGU7CisKK2VudW0geworICAgIERPTV9GSUxURVJfQUNDRVBUID0gMSwK
KyAgICBET01fRklMVEVSX1JFSkVDVCA9IDIsCisgICAgRE9NX0ZJTFRFUl9TS0lQID0gMywKKyAg
ICBET01fU0hPV19BTEwgPSAweEZGRkZGRkZGLAorICAgIERPTV9TSE9XX0VMRU1FTlQgPSAweDAw
MDAwMDAxLAorICAgIERPTV9TSE9XX0FUVFJJQlVURSA9IDB4MDAwMDAwMDIsCisgICAgRE9NX1NI
T1dfVEVYVCA9IDB4MDAwMDAwMDQsCisgICAgRE9NX1NIT1dfQ0RBVEFfU0VDVElPTiA9IDB4MDAw
MDAwMDgsCisgICAgRE9NX1NIT1dfRU5USVRZX1JFRkVSRU5DRSA9IDB4MDAwMDAwMTAsCisgICAg
RE9NX1NIT1dfRU5USVRZID0gMHgwMDAwMDAyMCwKKyAgICBET01fU0hPV19QUk9DRVNTSU5HX0lO
U1RSVUNUSU9OID0gMHgwMDAwMDA0MCwKKyAgICBET01fU0hPV19DT01NRU5UID0gMHgwMDAwMDA4
MCwKKyAgICBET01fU0hPV19ET0NVTUVOVCA9IDB4MDAwMDAxMDAsCisgICAgRE9NX1NIT1dfRE9D
VU1FTlRfVFlQRSA9IDB4MDAwMDAyMDAsCisgICAgRE9NX1NIT1dfRE9DVU1FTlRfRlJBR01FTlQg
PSAweDAwMDAwNDAwLAorICAgIERPTV9TSE9XX05PVEFUSU9OID0gMHgwMDAwMDgwMAorfSBXRUJL
SVRfRU5VTV9BVkFJTEFCTEVfTUFDKDEwXzQpOworCitXRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01B
QygxMF80KQorQHByb3RvY29sIERPTU5vZGVGaWx0ZXIgPE5TT2JqZWN0PgorLSAoc2hvcnQpYWNj
ZXB0Tm9kZTooRE9NTm9kZSAqKW47CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTU5vZGVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01Ob2RlSXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGZlZjUyMWVjZDY2ODI4NDY1YWY2
YjYzMDBhMWYzMzExNjYzODEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01Ob2RlSXRlcmF0b3IuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJDb3Jl
L0RPTU9iamVjdC5oPgorCitAY2xhc3MgRE9NTm9kZTsKK0Bwcm90b2NvbCBET01Ob2RlRmlsdGVy
OworCitXRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01BQygxMF80KQorV0VCQ09SRV9FWFBPUlQgQGlu
dGVyZmFjZSBET01Ob2RlSXRlcmF0b3IgOiBET01PYmplY3QKK0Bwcm9wZXJ0eSAocmVhZG9ubHks
IHN0cm9uZykgRE9NTm9kZSAqcm9vdDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIHVuc2lnbmVkIHdo
YXRUb1Nob3c7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIGlkIDxET01Ob2RlRmlsdGVy
PiBmaWx0ZXI7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGV4cGFuZEVudGl0eVJlZmVyZW5j
ZXM7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTU5vZGUgKnJlZmVyZW5jZU5vZGUg
V0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIHBv
aW50ZXJCZWZvcmVSZWZlcmVuY2VOb2RlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworCist
IChET01Ob2RlICopbmV4dE5vZGU7CistIChET01Ob2RlICopcHJldmlvdXNOb2RlOworLSAodm9p
ZClkZXRhY2g7CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTU5vZGVJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9k
ZUl0ZXJhdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZDdhODI2ZmZhYjYzMzMzMTA2ZWMyOTNiZTVhMzlk
ZTUxNjgzZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTU5vZGVJdGVyYXRvci5tbQpAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJET01JbnRlcm5hbC5oIgorCisjaW1wb3J0ICJET01Ob2RlSXRlcmF0b3IuaCIKKworI2lt
cG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJET01Ob2RlSXRlcmF0b3JJbnRlcm5h
bC5oIgorI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKKyNpbXBvcnQgIkpTTWFpblRocmVh
ZEV4ZWNTdGF0ZS5oIgorI2ltcG9ydCAiTmF0aXZlTm9kZUZpbHRlci5oIgorI2ltcG9ydCAiTm9k
ZS5oIgorI2ltcG9ydCAiTm9kZUl0ZXJhdG9yLmgiCisjaW1wb3J0ICJPYmpDTm9kZUZpbHRlckNv
bmRpdGlvbi5oIgorI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKKyNpbXBvcnQgIldlYkNvcmVPYmpD
RXh0cmFzLmgiCisjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCisjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisKKyNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGVJdGVyYXRvcio+KF9pbnRlcm5hbCkKKworQGltcGxlbWVudGF0aW9uIERPTU5vZGVJdGVyYXRv
cgorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxs
b2NhdGVPbk1haW5UaHJlYWQoW0RPTU5vZGVJdGVyYXRvciBjbGFzc10sIHNlbGYpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoX2ludGVybmFsKSB7CisgICAgICAgIFtzZWxmIGRldGFjaF07
CisgICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAgfTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9
CisKKy0gKERPTU5vZGUgKilyb290Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cm9vdCgpKSk7Cit9
CisKKy0gKHVuc2lnbmVkKXdoYXRUb1Nob3cKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPndoYXRUb1Nob3coKTsKK30KKworLSAo
aWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlcgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KElNUEwtPmZpbHRlcigpKTsKK30KKworLSAo
Qk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5leHBhbmRFbnRpdHlSZWZlcmVuY2Vz
KCk7Cit9CisKKy0gKERPTU5vZGUgKilyZWZlcmVuY2VOb2RlCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1Q
TC0+cmVmZXJlbmNlTm9kZSgpKSk7Cit9CisKKy0gKEJPT0wpcG9pbnRlckJlZm9yZVJlZmVyZW5j
ZU5vZGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
cmV0dXJuIElNUEwtPnBvaW50ZXJCZWZvcmVSZWZlcmVuY2VOb2RlKCk7Cit9CisKKy0gKERPTU5v
ZGUgKiluZXh0Tm9kZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPm5leHROb2RlKCkpKTsKK30KKwor
LSAoRE9NTm9kZSAqKXByZXZpb3VzTm9kZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnByZXZpb3Vz
Tm9kZSgpKSk7Cit9CisKKy0gKHZvaWQpZGV0YWNoCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPmRldGFjaCgpOworfQorCitAZW5kCisKK1dl
YkNvcmU6Ok5vZGVJdGVyYXRvciogY29yZShET01Ob2RlSXRlcmF0b3IgKndyYXBwZXIpCit7Cisg
ICAgcmV0dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGVJdGVyYXRv
cio+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOworfQorCitET01Ob2RlSXRlcmF0b3IgKmtpdChX
ZWJDb3JlOjpOb2RlSXRlcmF0b3IqIHZhbHVlKQoreworICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRp
b25DaGVja1JvdW5kT25lKCk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICBpZiAoRE9NTm9kZUl0ZXJhdG9yICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkp
CisgICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgRE9N
Tm9kZUl0ZXJhdG9yICp3cmFwcGVyID0gW1tET01Ob2RlSXRlcmF0b3IgYWxsb2NdIF9pbml0XTsK
KyAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVy
bmFsKj4odmFsdWUpOworICAgIHZhbHVlLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBw
ZXIsIHZhbHVlKTsKKyAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlSXRlcmF0b3JJbnRlcm5h
bC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlSXRlcmF0b3JJbnRlcm5h
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZmZTIzYzhjODA3NDc2YjNhNDZjYTNlZTdjMWNjYzY1MGJjNDc3ODgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGVJ
dGVyYXRvckludGVybmFsLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGVJ
dGVyYXRvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOb2RlSXRlcmF0b3I7Cit9
CisKK1dFQkNPUkVfRVhQT1JUIFdlYkNvcmU6Ok5vZGVJdGVyYXRvciogY29yZShET01Ob2RlSXRl
cmF0b3IgKik7CitXRUJDT1JFX0VYUE9SVCBET01Ob2RlSXRlcmF0b3IgKmtpdChXZWJDb3JlOjpO
b2RlSXRlcmF0b3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUmFuZ2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYzg0ZGE3ZjBiMTFkZjgzYTQ1OWFhMGQzODIxZTRjNjJiMTE4OWNhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5oCkBAIC0w
LDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RP
TUNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRE9NUmFuZ2VFeGNlcHRpb24uaD4KKworQGNsYXNzIERPTURvY3VtZW50RnJhZ21lbnQ7CitA
Y2xhc3MgRE9NTm9kZTsKK0BjbGFzcyBET01SYW5nZTsKK0BjbGFzcyBOU1N0cmluZzsKKworZW51
bSB7CisgICAgRE9NX1NUQVJUX1RPX1NUQVJUID0gMCwKKyAgICBET01fU1RBUlRfVE9fRU5EID0g
MSwKKyAgICBET01fRU5EX1RPX0VORCA9IDIsCisgICAgRE9NX0VORF9UT19TVEFSVCA9IDMsCisg
ICAgRE9NX05PREVfQkVGT1JFID0gMCwKKyAgICBET01fTk9ERV9BRlRFUiA9IDEsCisgICAgRE9N
X05PREVfQkVGT1JFX0FORF9BRlRFUiA9IDIsCisgICAgRE9NX05PREVfSU5TSURFID0gMworfSBX
RUJLSVRfRU5VTV9BVkFJTEFCTEVfTUFDKDEwXzQpOworCitXRUJLSVRfQ0xBU1NfQVZBSUxBQkxF
X01BQygxMF80KQorV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01SYW5nZSA6IERPTU9iamVj
dAorQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Ob2RlICpzdGFydENvbnRhaW5lcjsK
K0Bwcm9wZXJ0eSAocmVhZG9ubHkpIGludCBzdGFydE9mZnNldDsKK0Bwcm9wZXJ0eSAocmVhZG9u
bHksIHN0cm9uZykgRE9NTm9kZSAqZW5kQ29udGFpbmVyOworQHByb3BlcnR5IChyZWFkb25seSkg
aW50IGVuZE9mZnNldDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY29sbGFwc2VkOworQHBy
b3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Ob2RlICpjb21tb25BbmNlc3RvckNvbnRhaW5l
cjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICp0ZXh0IFdFQktJVF9BVkFJ
TEFCTEVfTUFDKDEwXzUpOworCistICh2b2lkKXNldFN0YXJ0OihET01Ob2RlICopcmVmTm9kZSBv
ZmZzZXQ6KGludClvZmZzZXQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CistICh2b2lkKXNl
dEVuZDooRE9NTm9kZSAqKXJlZk5vZGUgb2Zmc2V0OihpbnQpb2Zmc2V0IFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzUpOworLSAodm9pZClzZXRTdGFydEJlZm9yZTooRE9NTm9kZSAqKXJlZk5vZGU7
CistICh2b2lkKXNldFN0YXJ0QWZ0ZXI6KERPTU5vZGUgKilyZWZOb2RlOworLSAodm9pZClzZXRF
bmRCZWZvcmU6KERPTU5vZGUgKilyZWZOb2RlOworLSAodm9pZClzZXRFbmRBZnRlcjooRE9NTm9k
ZSAqKXJlZk5vZGU7CistICh2b2lkKWNvbGxhcHNlOihCT09MKXRvU3RhcnQ7CistICh2b2lkKXNl
bGVjdE5vZGU6KERPTU5vZGUgKilyZWZOb2RlOworLSAodm9pZClzZWxlY3ROb2RlQ29udGVudHM6
KERPTU5vZGUgKilyZWZOb2RlOworLSAoc2hvcnQpY29tcGFyZUJvdW5kYXJ5UG9pbnRzOih1bnNp
Z25lZCBzaG9ydClob3cgc291cmNlUmFuZ2U6KERPTVJhbmdlICopc291cmNlUmFuZ2UgV0VCS0lU
X0FWQUlMQUJMRV9NQUMoMTBfNSk7CistICh2b2lkKWRlbGV0ZUNvbnRlbnRzOworLSAoRE9NRG9j
dW1lbnRGcmFnbWVudCAqKWV4dHJhY3RDb250ZW50czsKKy0gKERPTURvY3VtZW50RnJhZ21lbnQg
KiljbG9uZUNvbnRlbnRzOworLSAodm9pZClpbnNlcnROb2RlOihET01Ob2RlICopbmV3Tm9kZTsK
Ky0gKHZvaWQpc3Vycm91bmRDb250ZW50czooRE9NTm9kZSAqKW5ld1BhcmVudDsKKy0gKERPTVJh
bmdlICopY2xvbmVSYW5nZTsKKy0gKE5TU3RyaW5nICopdG9TdHJpbmc7CistICh2b2lkKWRldGFj
aDsKKy0gKERPTURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQ6KE5T
U3RyaW5nICopaHRtbCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKHNob3J0KWNvbXBh
cmVOb2RlOihET01Ob2RlICopcmVmTm9kZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0g
KEJPT0wpaW50ZXJzZWN0c05vZGU6KERPTU5vZGUgKilyZWZOb2RlIFdFQktJVF9BVkFJTEFCTEVf
TUFDKDEwXzUpOworLSAoc2hvcnQpY29tcGFyZVBvaW50OihET01Ob2RlICopcmVmTm9kZSBvZmZz
ZXQ6KGludClvZmZzZXQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CistIChCT09MKWlzUG9p
bnRJblJhbmdlOihET01Ob2RlICopcmVmTm9kZSBvZmZzZXQ6KGludClvZmZzZXQgV0VCS0lUX0FW
QUlMQUJMRV9NQUMoMTBfNSk7CitAZW5kCisKK0BpbnRlcmZhY2UgRE9NUmFuZ2UgKERPTVJhbmdl
RGVwcmVjYXRlZCkKKy0gKHZvaWQpc2V0U3RhcnQ6KERPTU5vZGUgKilyZWZOb2RlIDooaW50KW9m
ZnNldCBXRUJLSVRfREVQUkVDQVRFRF9NQUMoMTBfNCwgMTBfNSk7CistICh2b2lkKXNldEVuZDoo
RE9NTm9kZSAqKXJlZk5vZGUgOihpbnQpb2Zmc2V0IFdFQktJVF9ERVBSRUNBVEVEX01BQygxMF80
LCAxMF81KTsKKy0gKHNob3J0KWNvbXBhcmVCb3VuZGFyeVBvaW50czoodW5zaWduZWQgc2hvcnQp
aG93IDooRE9NUmFuZ2UgKilzb3VyY2VSYW5nZSBXRUJLSVRfREVQUkVDQVRFRF9NQUMoMTBfNCwg
MTBfNSk7CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVJhbmdlLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNmIyNmUwMWJjMTFjM2YyNzk5NjFjZjVlZDk5MjM2MzM0ZmRlMTZiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZS5tbQpAQCAt
MCwwICsxLDM3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01SYW5nZUludGVybmFsLmgi
CisKKyNpbXBvcnQgIkRPTURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9N
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRG9jdW1l
bnRGcmFnbWVudC5oIgorI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKKyNpbXBvcnQgIkpT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2ltcG9ydCAiTm9kZS5oIgorI2ltcG9ydCAiUmFuZ2Uu
aCIKKyNpbXBvcnQgIlRocmVhZENoZWNrLmgiCisjaW1wb3J0ICJVUkwuaCIKKyNpbXBvcnQgIldl
YkNvcmVPYmpDRXh0cmFzLmgiCisjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCisj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisKKyNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdl
YkNvcmU6OlJhbmdlKj4oX2ludGVybmFsKQorCitAaW1wbGVtZW50YXRpb24gRE9NUmFuZ2UKKwor
LSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRl
T25NYWluVGhyZWFkKFtET01SYW5nZSBjbGFzc10sIHNlbGYpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJlZigpOworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KKworLSAoRE9NTm9kZSAqKXN0YXJ0Q29udGFpbmVyCit7CisgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQ
dHIoSU1QTC0+c3RhcnRDb250YWluZXIoKSkpOworfQorCistIChpbnQpc3RhcnRPZmZzZXQKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElN
UEwtPnN0YXJ0T2Zmc2V0KCk7Cit9CisKKy0gKERPTU5vZGUgKillbmRDb250YWluZXIKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChX
VEY6OmdldFB0cihJTVBMLT5lbmRDb250YWluZXIoKSkpOworfQorCistIChpbnQpZW5kT2Zmc2V0
Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVy
biBJTVBMLT5lbmRPZmZzZXQoKTsKK30KKworLSAoQk9PTCljb2xsYXBzZWQKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmNvbGxh
cHNlZCgpOworfQorCistIChET01Ob2RlICopY29tbW9uQW5jZXN0b3JDb250YWluZXIKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChX
VEY6OmdldFB0cihJTVBMLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcigpKSk7Cit9CisKKy0gKE5T
U3RyaW5nICopdGV4dAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICByZXR1cm4gSU1QTC0+dGV4dCgpOworfQorCistICh2b2lkKXNldFN0YXJ0OihET01O
b2RlICopcmVmTm9kZSBvZmZzZXQ6KGludClvZmZzZXQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFyZWZOb2RlKQorICAgICAgICBXZWJDb3Jl
OjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIElNUEwtPnNldFN0YXJ0KCpjb3JlKHJlZk5vZGUpLCBvZmZzZXQsIGVjKTsK
KyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCistICh2b2lkKXNldFN0YXJ0
OihET01Ob2RlICopcmVmTm9kZSA6KGludClvZmZzZXQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFyZWZOb2RlKQorICAgICAgICBXZWJDb3Jl
OjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIElNUEwtPnNldFN0YXJ0KCpjb3JlKHJlZk5vZGUpLCBvZmZzZXQsIGVjKTsK
KyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCistICh2b2lkKXNldEVuZDoo
RE9NTm9kZSAqKXJlZk5vZGUgb2Zmc2V0OihpbnQpb2Zmc2V0Cit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGlmICghcmVmTm9kZSkKKyAgICAgICAgV2Vi
Q29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBJTVBMLT5zZXRFbmQoKmNvcmUocmVmTm9kZSksIG9mZnNldCwgZWMp
OworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKHZvaWQpc2V0RW5k
OihET01Ob2RlICopcmVmTm9kZSA6KGludClvZmZzZXQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFyZWZOb2RlKQorICAgICAgICBXZWJDb3Jl
OjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIElNUEwtPnNldEVuZCgqY29yZShyZWZOb2RlKSwgb2Zmc2V0LCBlYyk7Cisg
ICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9pZClzZXRTdGFydEJl
Zm9yZTooRE9NTm9kZSAqKXJlZk5vZGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgaWYgKCFyZWZOb2RlKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5
cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIElNUEwtPnNldFN0YXJ0QmVmb3JlKCpjb3JlKHJlZk5vZGUpLCBlYyk7CisgICAgV2ViQ29y
ZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9pZClzZXRTdGFydEFmdGVyOihET01O
b2RlICopcmVmTm9kZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICBpZiAoIXJlZk5vZGUpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhj
ZXB0aW9uKCk7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSU1QTC0+
c2V0U3RhcnRBZnRlcigqY29yZShyZWZOb2RlKSwgZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25E
T01FcnJvcihlYyk7Cit9CisKKy0gKHZvaWQpc2V0RW5kQmVmb3JlOihET01Ob2RlICopcmVmTm9k
ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBpZiAo
IXJlZk5vZGUpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Cisg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSU1QTC0+c2V0RW5kQmVmb3Jl
KCpjb3JlKHJlZk5vZGUpLCBlYyk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsK
K30KKworLSAodm9pZClzZXRFbmRBZnRlcjooRE9NTm9kZSAqKXJlZk5vZGUKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFyZWZOb2RlKQorICAg
ICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIElNUEwtPnNldEVuZEFmdGVyKCpjb3JlKHJlZk5vZGUp
LCBlYyk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9pZClj
b2xsYXBzZTooQk9PTCl0b1N0YXJ0Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIElNUEwtPmNvbGxhcHNlKHRvU3RhcnQpOworfQorCistICh2b2lkKXNl
bGVjdE5vZGU6KERPTU5vZGUgKilyZWZOb2RlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIGlmICghcmVmTm9kZSkKKyAgICAgICAgV2ViQ29yZTo6cmFp
c2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBJTVBMLT5zZWxlY3ROb2RlKCpjb3JlKHJlZk5vZGUpLCBlYyk7CisgICAgV2ViQ29y
ZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9pZClzZWxlY3ROb2RlQ29udGVudHM6
KERPTU5vZGUgKilyZWZOb2RlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIGlmICghcmVmTm9kZSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJy
b3JFeGNlcHRpb24oKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBJ
TVBMLT5zZWxlY3ROb2RlQ29udGVudHMoKmNvcmUocmVmTm9kZSksIGVjKTsKKyAgICBXZWJDb3Jl
OjpyYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCistIChzaG9ydCljb21wYXJlQm91bmRhcnlQb2lu
dHM6KHVuc2lnbmVkIHNob3J0KWhvdyBzb3VyY2VSYW5nZTooRE9NUmFuZ2UgKilzb3VyY2VSYW5n
ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBpZiAo
IXNvdXJjZVJhbmdlKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigp
OworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHNob3J0IHJlc3VsdCA9
IElNUEwtPmNvbXBhcmVCb3VuZGFyeVBvaW50c0ZvckJpbmRpbmdzKGhvdywgKmNvcmUoc291cmNl
UmFuZ2UpLCBlYyk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCistIChzaG9ydCljb21wYXJlQm91bmRhcnlQb2ludHM6KHVuc2lnbmVk
IHNob3J0KWhvdyA6KERPTVJhbmdlICopc291cmNlUmFuZ2UKK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFzb3VyY2VSYW5nZSkKKyAgICAgICAg
V2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBzaG9ydCByZXN1bHQgPSBJTVBMLT5jb21wYXJlQm91bmRhcnlQ
b2ludHNGb3JCaW5kaW5ncyhob3csICpjb3JlKHNvdXJjZVJhbmdlKSwgZWMpOworICAgIFdlYkNv
cmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAodm9p
ZClkZWxldGVDb250ZW50cworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBJTVBMLT5kZWxl
dGVDb250ZW50cyhlYyk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKwor
LSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWV4dHJhY3RDb250ZW50cworeworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBET01Eb2N1bWVudEZyYWdtZW50ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQ
dHIoSU1QTC0+ZXh0cmFjdENvbnRlbnRzKGVjKSkpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01F
cnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NRG9jdW1lbnRGcmFnbWVu
dCAqKWNsb25lQ29udGVudHMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NRG9jdW1l
bnRGcmFnbWVudCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNsb25lQ29udGVudHMo
ZWMpKSk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCistICh2b2lkKWluc2VydE5vZGU6KERPTU5vZGUgKiluZXdOb2RlCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGlmICghbmV3Tm9kZSkK
KyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBJTVBMLT5pbnNlcnROb2RlKCpjb3JlKG5ld05v
ZGUpLCBlYyk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9p
ZClzdXJyb3VuZENvbnRlbnRzOihET01Ob2RlICopbmV3UGFyZW50Cit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGlmICghbmV3UGFyZW50KQorICAgICAg
ICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIElNUEwtPnN1cnJvdW5kQ29udGVudHMoKmNvcmUobmV3UGFy
ZW50KSwgZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKERP
TVJhbmdlICopY2xvbmVSYW5nZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNsb25lUmFuZ2UoKSkp
OworfQorCistIChOU1N0cmluZyAqKXRvU3RyaW5nCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT50b1N0cmluZygpOworfQorCist
ICh2b2lkKWRldGFjaAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICBJTVBMLT5kZXRhY2goKTsKK30KKworLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNy
ZWF0ZUNvbnRleHR1YWxGcmFnbWVudDooTlNTdHJpbmcgKilodG1sCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIERPTURvY3VtZW50RnJhZ21lbnQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0
cihJTVBMLT5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoaHRtbCwgZWMpKSk7CisgICAgV2ViQ29y
ZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChzaG9y
dCljb21wYXJlTm9kZTooRE9NTm9kZSAqKXJlZk5vZGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFyZWZOb2RlKQorICAgICAgICBXZWJDb3Jl
OjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIHNob3J0IHJlc3VsdCA9IElNUEwtPmNvbXBhcmVOb2RlKCpjb3JlKHJlZk5v
ZGUpLCBlYyk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCistIChCT09MKWludGVyc2VjdHNOb2RlOihET01Ob2RlICopcmVmTm9kZQor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBpZiAoIXJl
Zk5vZGUpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgQk9PTCByZXN1bHQgPSBJTVBMLT5p
bnRlcnNlY3RzTm9kZSgqY29yZShyZWZOb2RlKSwgZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25E
T01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoc2hvcnQpY29tcGFyZVBv
aW50OihET01Ob2RlICopcmVmTm9kZSBvZmZzZXQ6KGludClvZmZzZXQKK3sKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFyZWZOb2RlKQorICAgICAg
ICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIHNob3J0IHJlc3VsdCA9IElNUEwtPmNvbXBhcmVQb2ludCgq
Y29yZShyZWZOb2RlKSwgb2Zmc2V0LCBlYyk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9y
KGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChCT09MKWlzUG9pbnRJblJhbmdlOihE
T01Ob2RlICopcmVmTm9kZSBvZmZzZXQ6KGludClvZmZzZXQKK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFyZWZOb2RlKQorICAgICAgICBXZWJD
b3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIEJPT0wgcmVzdWx0ID0gSU1QTC0+aXNQb2ludEluUmFuZ2UoKmNvcmUo
cmVmTm9kZSksIG9mZnNldCwgZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAodm9pZClleHBhbmQ6KE5TU3RyaW5nICopdW5p
dAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBJTVBMLT5leHBhbmQodW5pdCwgZWMpOwor
ICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKK0BlbmQKKworV2ViQ29yZTo6
UmFuZ2UqIGNvcmUoRE9NUmFuZ2UgKndyYXBwZXIpCit7CisgICAgcmV0dXJuIHdyYXBwZXIgPyBy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlJhbmdlKj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7
Cit9CisKK0RPTVJhbmdlICpraXQoV2ViQ29yZTo6UmFuZ2UqIHZhbHVlKQoreworICAgIFdlYkNv
cmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICBpZiAoRE9NUmFuZ2UgKndyYXBwZXIgPSBnZXRET01XcmFwcGVy
KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
KyAgICBET01SYW5nZSAqd3JhcHBlciA9IFtbRE9NUmFuZ2UgYWxsb2NdIF9pbml0XTsKKyAgICB3
cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4o
dmFsdWUpOworICAgIHZhbHVlLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZh
bHVlKTsKKyAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZUludGVybmFsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVJhbmdlSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2Nl
OTIxYjA4ZDkzM2MwMjg0NzE4YTg3MzNiZmIwNGJiZGI1MDE2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01SYW5nZUludGVybmFsLmgKQEAgLTAsMCAr
MSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCA8V2ViQ29yZS9ET01SYW5nZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBSYW5nZTsKK30KKworV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6UmFuZ2UqIGNvcmUoRE9N
UmFuZ2UgKik7CitXRUJDT1JFX0VYUE9SVCBET01SYW5nZSAqa2l0KFdlYkNvcmU6OlJhbmdlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVN0eWxlU2hlZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5bGVTaGVldC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBjZjg1OTQzM2I2NGJlZmQxZDVhYTBjNGVlY2EwMDc4NmU3YjAyYzQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVN0eWxlU2hlZXQuaApAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworQGNsYXNzIERPTU1lZGlhTGlz
dDsKK0BjbGFzcyBET01Ob2RlOworQGNsYXNzIERPTVN0eWxlU2hlZXQ7CitAY2xhc3MgTlNTdHJp
bmc7CisKK1dFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDEwXzQpCitXRUJDT1JFX0VYUE9SVCBA
aW50ZXJmYWNlIERPTVN0eWxlU2hlZXQgOiBET01PYmplY3QKK0Bwcm9wZXJ0eSAocmVhZG9ubHks
IGNvcHkpIE5TU3RyaW5nICp0eXBlOworQHByb3BlcnR5IEJPT0wgZGlzYWJsZWQ7CitAcHJvcGVy
dHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTU5vZGUgKm93bmVyTm9kZTsKK0Bwcm9wZXJ0eSAocmVh
ZG9ubHksIHN0cm9uZykgRE9NU3R5bGVTaGVldCAqcGFyZW50U3R5bGVTaGVldDsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpocmVmOworQHByb3BlcnR5IChyZWFkb25seSwg
Y29weSkgTlNTdHJpbmcgKnRpdGxlOworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01N
ZWRpYUxpc3QgKm1lZGlhOworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01TdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01TdHlsZVNoZWV0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNjk1N2JiNGU4MDk2YTRmN2U1ZjNkNDE3MTUz
MzkzMDAzNzFkNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTVN0eWxlU2hlZXQubW0KQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiRE9NSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiRE9NU3R5bGVTaGVldC5oIgorCisjaW1w
b3J0ICJET01NZWRpYUxpc3RJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgi
CisjaW1wb3J0ICJET01TdHlsZVNoZWV0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkhh
bmRsZXJzLmgiCisjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbXBvcnQgIk1l
ZGlhTGlzdC5oIgorI2ltcG9ydCAiTm9kZS5oIgorI2ltcG9ydCAiU3R5bGVTaGVldC5oIgorI2lt
cG9ydCAiVGhyZWFkQ2hlY2suaCIKKyNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiV2ViQ29yZU9i
akNFeHRyYXMuaCIKKyNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKworI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
U3R5bGVTaGVldCo+KF9pbnRlcm5hbCkKKworQGltcGxlbWVudGF0aW9uIERPTVN0eWxlU2hlZXQK
KworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9j
YXRlT25NYWluVGhyZWFkKFtET01TdHlsZVNoZWV0IGNsYXNzXSwgc2VsZikpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAg
W3N1cGVyIGRlYWxsb2NdOworfQorCistIChOU1N0cmluZyAqKXR5cGUKK3sKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPnR5cGUoKTsK
K30KKworLSAoQk9PTClkaXNhYmxlZAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+ZGlzYWJsZWQoKTsKK30KKworLSAodm9pZClz
ZXREaXNhYmxlZDooQk9PTCluZXdEaXNhYmxlZAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zZXREaXNhYmxlZChuZXdEaXNhYmxlZCk7Cit9
CisKKy0gKERPTU5vZGUgKilvd25lck5vZGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5vd25lck5v
ZGUoKSkpOworfQorCistIChET01TdHlsZVNoZWV0ICopcGFyZW50U3R5bGVTaGVldAoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdU
Rjo6Z2V0UHRyKElNUEwtPnBhcmVudFN0eWxlU2hlZXQoKSkpOworfQorCistIChOU1N0cmluZyAq
KWhyZWYKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
cmV0dXJuIElNUEwtPmhyZWYoKTsKK30KKworLSAoTlNTdHJpbmcgKil0aXRsZQoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+dGl0
bGUoKTsKK30KKworLSAoRE9NTWVkaWFMaXN0ICopbWVkaWEKK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBM
LT5tZWRpYSgpKSk7Cit9CisKK0BlbmQKKworV2ViQ29yZTo6U3R5bGVTaGVldCogY29yZShET01T
dHlsZVNoZWV0ICp3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpTdHlsZVNoZWV0Kj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Cit9CisK
K0RPTVN0eWxlU2hlZXQgKmtpdChXZWJDb3JlOjpTdHlsZVNoZWV0KiB2YWx1ZSkKK3sKKyAgICBX
ZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOworICAgIGlmICghdmFsdWUpCisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgaWYgKERPTVN0eWxlU2hlZXQgKndyYXBwZXIgPSBnZXRE
T01XcmFwcGVyKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKKyAgICBET01TdHlsZVNoZWV0ICp3cmFwcGVyID0gW1traXRDbGFzcyh2YWx1ZSkg
YWxsb2NdIF9pbml0XTsKKyAgICBpZiAoIXdyYXBwZXIpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5h
bCo+KHZhbHVlKTsKKyAgICB2YWx1ZS0+cmVmKCk7CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVy
LCB2YWx1ZSk7CisgICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5bGVTaGVldEludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVN0eWxlU2hlZXRJbnRlcm5hbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJiYzJmZmE3MmNiNTRiNDc1M2IyODZmNmNlYjZlY2IyZWM5M2NmMmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVN0eWxlU2hlZXRJ
bnRlcm5hbC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NU3R5bGVTaGVldC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTdHlsZVNoZWV0OworfQorCitXRUJDT1JFX0VY
UE9SVCBXZWJDb3JlOjpTdHlsZVNoZWV0KiBjb3JlKERPTVN0eWxlU2hlZXQgKik7CitXRUJDT1JF
X0VYUE9SVCBET01TdHlsZVNoZWV0ICpraXQoV2ViQ29yZTo6U3R5bGVTaGVldCopOworQ2xhc3Mg
a2l0Q2xhc3MoV2ViQ29yZTo6U3R5bGVTaGVldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01TdHlsZVNoZWV0TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01TdHlsZVNoZWV0TGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZWMxNzhjMThkMmI4
NTFjODdiYWQwNDBiZDQ4MTk2YjNjMjhmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTVN0eWxlU2hlZXRMaXN0LmgKQEAgLTAsMCArMSwzNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworQGNsYXNzIERPTVN0eWxlU2hlZXQ7CisKK1dFQktJ
VF9DTEFTU19BVkFJTEFCTEVfTUFDKDEwXzQpCitXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERP
TVN0eWxlU2hlZXRMaXN0IDogRE9NT2JqZWN0CitAcHJvcGVydHkgKHJlYWRvbmx5KSB1bnNpZ25l
ZCBsZW5ndGg7CisKKy0gKERPTVN0eWxlU2hlZXQgKilpdGVtOih1bnNpZ25lZClpbmRleDsKK0Bl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5bGVTaGVl
dExpc3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVN0eWxlU2hlZXRMaXN0
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI2Yjc1YmZkOTQ4NmI2NGM3YTFmYTMwOTc4M2FlOTc1M2JlYjIxYjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVN0eWxl
U2hlZXRMaXN0Lm1tCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9N
SW50ZXJuYWwuaCIKKworI2ltcG9ydCAiRE9NU3R5bGVTaGVldExpc3QuaCIKKworI2ltcG9ydCAi
RE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJET01TdHlsZVNoZWV0SW50ZXJuYWwuaCIKKyNp
bXBvcnQgIkRPTVN0eWxlU2hlZXRMaXN0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkhh
bmRsZXJzLmgiCisjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbXBvcnQgIlN0
eWxlU2hlZXQuaCIKKyNpbXBvcnQgIlN0eWxlU2hlZXRMaXN0LmgiCisjaW1wb3J0ICJUaHJlYWRD
aGVjay5oIgorI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKKyNpbXBvcnQgIldlYlNjcmlw
dE9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKworI2RlZmluZSBJTVBM
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6U3R5bGVTaGVldExpc3QqPihfaW50ZXJuYWwpCisK
K0BpbXBsZW1lbnRhdGlvbiBET01TdHlsZVNoZWV0TGlzdAorCistICh2b2lkKWRlYWxsb2MKK3sK
KyAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTVN0
eWxlU2hlZXRMaXN0IGNsYXNzXSwgc2VsZikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChf
aW50ZXJuYWwpCisgICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOwor
fQorCistICh1bnNpZ25lZClsZW5ndGgKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmxlbmd0aCgpOworfQorCistIChET01TdHls
ZVNoZWV0ICopaXRlbToodW5zaWduZWQpaW5kZXgKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5pdGVt
KGluZGV4KSkpOworfQorCitAZW5kCisKK1dlYkNvcmU6OlN0eWxlU2hlZXRMaXN0KiBjb3JlKERP
TVN0eWxlU2hlZXRMaXN0ICp3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpTdHlsZVNoZWV0TGlzdCo+KHdyYXBwZXItPl9pbnRlcm5hbCkg
OiAwOworfQorCitET01TdHlsZVNoZWV0TGlzdCAqa2l0KFdlYkNvcmU6OlN0eWxlU2hlZXRMaXN0
KiB2YWx1ZSkKK3sKKyAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOwor
ICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgaWYgKERPTVN0eWxlU2hl
ZXRMaXN0ICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2YWx1ZSkpCisgICAgICAgIHJldHVybiBb
W3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgRE9NU3R5bGVTaGVldExpc3QgKndy
YXBwZXIgPSBbW0RPTVN0eWxlU2hlZXRMaXN0IGFsbG9jXSBfaW5pdF07CisgICAgd3JhcHBlci0+
X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsK
KyAgICB2YWx1ZS0+cmVmKCk7CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5bGVTaGVldExpc3RJbnRlcm5hbC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01TdHlsZVNoZWV0TGlzdEludGVybmFsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDAzY2M0M2JlZjdiZDVjMmZmOTZlNTNiZmY5ZDMwZDUwY2U4NjllNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU3R5bGVTaGVldExpc3RJ
bnRlcm5hbC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NU3R5bGVTaGVldExpc3Qu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU3R5bGVTaGVldExpc3Q7Cit9CisKK1dF
QkNPUkVfRVhQT1JUIFdlYkNvcmU6OlN0eWxlU2hlZXRMaXN0KiBjb3JlKERPTVN0eWxlU2hlZXRM
aXN0ICopOworV0VCQ09SRV9FWFBPUlQgRE9NU3R5bGVTaGVldExpc3QgKmtpdChXZWJDb3JlOjpT
dHlsZVNoZWV0TGlzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01UcmVlV2Fsa2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRyZWVX
YWxrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hM2MyZWEwMThhYzU1MmEzMWY0ZThiMWNjOWE4NzExMGMwOGRi
M2FhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01U
cmVlV2Fsa2VyLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKwor
QGNsYXNzIERPTU5vZGU7CitAcHJvdG9jb2wgRE9NTm9kZUZpbHRlcjsKKworV0VCS0lUX0NMQVNT
X0FWQUlMQUJMRV9NQUMoMTBfNCkKK1dFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NVHJlZVdh
bGtlciA6IERPTU9iamVjdAorQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Ob2RlICpy
b290OworQHByb3BlcnR5IChyZWFkb25seSkgdW5zaWduZWQgd2hhdFRvU2hvdzsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHksIHN0cm9uZykgaWQgPERPTU5vZGVGaWx0ZXI+IGZpbHRlcjsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHkpIEJPT0wgZXhwYW5kRW50aXR5UmVmZXJlbmNlczsKK0Bwcm9wZXJ0eSAoc3Ry
b25nKSBET01Ob2RlICpjdXJyZW50Tm9kZTsKKworLSAoRE9NTm9kZSAqKXBhcmVudE5vZGU7Cist
IChET01Ob2RlICopZmlyc3RDaGlsZDsKKy0gKERPTU5vZGUgKilsYXN0Q2hpbGQ7CistIChET01O
b2RlICopcHJldmlvdXNTaWJsaW5nOworLSAoRE9NTm9kZSAqKW5leHRTaWJsaW5nOworLSAoRE9N
Tm9kZSAqKXByZXZpb3VzTm9kZTsKKy0gKERPTU5vZGUgKiluZXh0Tm9kZTsKK0BlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVHJlZVdhbGtlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVHJlZVdhbGtlci5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NzUwOTdjNTBmM2VmZDAyMWE2MWY1NDQwZmZmOWU3YTU1MTRiYmEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01UcmVlV2Fsa2VyLm1tCkBAIC0wLDAg
KzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTVRyZWVXYWxrZXJJbnRlcm5hbC5o
IgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgi
CisjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgorI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmgiCisjaW1wb3J0ICJOYXRpdmVOb2RlRmlsdGVyLmgiCisjaW1wb3J0ICJOb2RlLmgi
CisjaW1wb3J0ICJPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oIgorI2ltcG9ydCAiVGhyZWFkQ2hl
Y2suaCIKKyNpbXBvcnQgIlRyZWVXYWxrZXIuaCIKKyNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFz
LmgiCisjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCisjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisKKyNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRyZWVXYWxr
ZXIqPihfaW50ZXJuYWwpCisKK0BpbXBsZW1lbnRhdGlvbiBET01UcmVlV2Fsa2VyCisKKy0gKHZv
aWQpZGVhbGxvYworeworICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFp
blRocmVhZChbRE9NVHJlZVdhbGtlciBjbGFzc10sIHNlbGYpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJlZigpOworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KKworLSAoRE9NTm9kZSAqKXJvb3QKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5y
b290KCkpKTsKK30KKworLSAodW5zaWduZWQpd2hhdFRvU2hvdworeworICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+d2hhdFRvU2hvdygp
OworfQorCistIChpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVyCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoSU1QTC0+ZmlsdGVyKCkp
OworfQorCistIChCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKK3sKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmV4cGFuZEVudGl0
eVJlZmVyZW5jZXMoKTsKK30KKworLSAoRE9NTm9kZSAqKWN1cnJlbnROb2RlCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpn
ZXRQdHIoSU1QTC0+Y3VycmVudE5vZGUoKSkpOworfQorCistICh2b2lkKXNldEN1cnJlbnROb2Rl
OihET01Ob2RlICopbmV3Q3VycmVudE5vZGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgQVNTRVJUKG5ld0N1cnJlbnROb2RlKTsKKworICAgIGlmICgh
Y29yZShuZXdDdXJyZW50Tm9kZSkpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhj
ZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0Q3VycmVudE5vZGUoKmNvcmUobmV3Q3VycmVudE5vZGUp
KTsKK30KKworLSAoRE9NTm9kZSAqKXBhcmVudE5vZGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5w
YXJlbnROb2RlKCkpKTsKK30KKworLSAoRE9NTm9kZSAqKWZpcnN0Q2hpbGQKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6Omdl
dFB0cihJTVBMLT5maXJzdENoaWxkKCkpKTsKK30KKworLSAoRE9NTm9kZSAqKWxhc3RDaGlsZAor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4g
a2l0KFdURjo6Z2V0UHRyKElNUEwtPmxhc3RDaGlsZCgpKSk7Cit9CisKKy0gKERPTU5vZGUgKilw
cmV2aW91c1NpYmxpbmcKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5wcmV2aW91c1NpYmxpbmcoKSkp
OworfQorCistIChET01Ob2RlICopbmV4dFNpYmxpbmcKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5u
ZXh0U2libGluZygpKSk7Cit9CisKKy0gKERPTU5vZGUgKilwcmV2aW91c05vZGUKK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6
OmdldFB0cihJTVBMLT5wcmV2aW91c05vZGUoKSkpOworfQorCistIChET01Ob2RlICopbmV4dE5v
ZGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5uZXh0Tm9kZSgpKSk7Cit9CisKK0BlbmQKKworV2Vi
Q29yZTo6VHJlZVdhbGtlciogY29yZShET01UcmVlV2Fsa2VyICp3cmFwcGVyKQoreworICAgIHJl
dHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUcmVlV2Fsa2VyKj4od3Jh
cHBlci0+X2ludGVybmFsKSA6IDA7Cit9CisKK0RPTVRyZWVXYWxrZXIgKmtpdChXZWJDb3JlOjpU
cmVlV2Fsa2VyKiB2YWx1ZSkKK3sKKyAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3Vu
ZE9uZSgpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgaWYgKERP
TVRyZWVXYWxrZXIgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKKyAgICAgICAgcmV0
dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBET01UcmVlV2Fsa2VyICp3
cmFwcGVyID0gW1tET01UcmVlV2Fsa2VyIGFsbG9jXSBfaW5pdF07CisgICAgd3JhcHBlci0+X2lu
dGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKKyAg
ICB2YWx1ZS0+cmVmKCk7CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7CisgICAg
cmV0dXJuIFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NVHJlZVdhbGtlckludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTVRyZWVXYWxrZXJJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyZGFk
YjU4MWFjN2QxOTkzOTE5ZTJlODI2OTgwOTU5YTlmZGY4NGQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRyZWVXYWxrZXJJbnRlcm5hbC5oCkBAIC0w
LDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2ltcG9ydCA8V2ViQ29yZS9ET01UcmVlV2Fsa2VyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFRyZWVXYWxrZXI7Cit9CisKK1dFQkNPUkVfRVhQT1JUIFdlYkNvcmU6
OlRyZWVXYWxrZXIqIGNvcmUoRE9NVHJlZVdhbGtlciAqKTsKK1dFQkNPUkVfRVhQT1JUIERPTVRy
ZWVXYWxrZXIgKmtpdChXZWJDb3JlOjpUcmVlV2Fsa2VyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aEV4cHJlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDY2OWY2
ZjYzYzlhNDg2NDhkZmYyYjViMmVkZWRkZTNhMmIzY2I5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aEV4cHJlc3Npb24uaApAQCAtMCwwICsx
LDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCitAY2xhc3MgRE9NTm9kZTsKK0BjbGFz
cyBET01YUGF0aFJlc3VsdDsKKworV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoMTBfNSkKK1dF
QkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NWFBhdGhFeHByZXNzaW9uIDogRE9NT2JqZWN0Cist
IChET01YUGF0aFJlc3VsdCAqKWV2YWx1YXRlOihET01Ob2RlICopY29udGV4dE5vZGUgdHlwZToo
dW5zaWduZWQgc2hvcnQpdHlwZSBpblJlc3VsdDooRE9NWFBhdGhSZXN1bHQgKilpblJlc3VsdCBX
RUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKK0BlbmQKKworQGludGVyZmFjZSBET01YUGF0aEV4
cHJlc3Npb24gKERPTVhQYXRoRXhwcmVzc2lvbkRlcHJlY2F0ZWQpCistIChET01YUGF0aFJlc3Vs
dCAqKWV2YWx1YXRlOihET01Ob2RlICopY29udGV4dE5vZGUgOih1bnNpZ25lZCBzaG9ydCl0eXBl
IDooRE9NWFBhdGhSZXN1bHQgKilpblJlc3VsdCBXRUJLSVRfREVQUkVDQVRFRF9NQUMoMTBfNSwg
MTBfNSk7CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVhQYXRoRXhwcmVzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBh
dGhFeHByZXNzaW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmYjMyYjhmYTRkODZmZDM4ZjZmYjdhY2IzN2Rl
YzE3MGYzM2Q1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTVhQYXRoRXhwcmVzc2lvbi5tbQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkRPTVhQYXRoRXhwcmVzc2lvbkludGVybmFsLmgiCisKKyNpbXBvcnQgIkRPTUlu
dGVybmFsLmgiCisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVhQYXRo
UmVzdWx0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0
ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbXBvcnQgIk5vZGUuaCIKKyNpbXBvcnQgIlRo
cmVhZENoZWNrLmgiCisjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgorI2ltcG9ydCAiV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCAiWFBhdGhFeHByZXNzaW9uLmgiCisjaW1w
b3J0ICJYUGF0aFJlc3VsdC5oIgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorCisjZGVmaW5lIElN
UEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpYUGF0aEV4cHJlc3Npb24qPihfaW50ZXJuYWwp
CisKK0BpbXBsZW1lbnRhdGlvbiBET01YUGF0aEV4cHJlc3Npb24KKworLSAodm9pZClkZWFsbG9j
Cit7CisgICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtE
T01YUGF0aEV4cHJlc3Npb24gY2xhc3NdLCBzZWxmKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKF9pbnRlcm5hbCkKKyAgICAgICAgSU1QTC0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZGVhbGxv
Y107Cit9CisKKy0gKERPTVhQYXRoUmVzdWx0ICopZXZhbHVhdGU6KERPTU5vZGUgKiljb250ZXh0
Tm9kZSB0eXBlOih1bnNpZ25lZCBzaG9ydCl0eXBlIGluUmVzdWx0OihET01YUGF0aFJlc3VsdCAq
KWluUmVzdWx0Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTVhQYXRoUmVzdWx0ICpy
ZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+ZXZhbHVhdGUoY29yZShjb250ZXh0Tm9kZSks
IHR5cGUsIGNvcmUoaW5SZXN1bHQpLCBlYykpKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJy
b3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTVhQYXRoUmVzdWx0ICopZXZh
bHVhdGU6KERPTU5vZGUgKiljb250ZXh0Tm9kZSA6KHVuc2lnbmVkIHNob3J0KXR5cGUgOihET01Y
UGF0aFJlc3VsdCAqKWluUmVzdWx0Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTVhQ
YXRoUmVzdWx0ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+ZXZhbHVhdGUoY29yZShj
b250ZXh0Tm9kZSksIHR5cGUsIGNvcmUoaW5SZXN1bHQpLCBlYykpKTsKKyAgICBXZWJDb3JlOjpy
YWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0BlbmQKKworV2Vi
Q29yZTo6WFBhdGhFeHByZXNzaW9uKiBjb3JlKERPTVhQYXRoRXhwcmVzc2lvbiAqd3JhcHBlcikK
K3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6WFBhdGhF
eHByZXNzaW9uKj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Cit9CisKK0RPTVhQYXRoRXhwcmVz
c2lvbiAqa2l0KFdlYkNvcmU6OlhQYXRoRXhwcmVzc2lvbiogdmFsdWUpCit7CisgICAgV2ViQ29y
ZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIGlmIChET01YUGF0aEV4cHJlc3Npb24gKndyYXBwZXIgPSBnZXRE
T01XcmFwcGVyKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKKyAgICBET01YUGF0aEV4cHJlc3Npb24gKndyYXBwZXIgPSBbW0RPTVhQYXRoRXhw
cmVzc2lvbiBhbGxvY10gX2luaXRdOworICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CisgICAgdmFsdWUtPnJlZigpOwor
ICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOworICAgIHJldHVybiBbd3JhcHBlciBh
dXRvcmVsZWFzZV07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTVhQYXRoRXhwcmVzc2lvbkludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTVhQYXRoRXhwcmVzc2lvbkludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM5MDQzYTIyY2Qx
ZjY5MDMwMmVkM2FmNTIyZjE1OWJmNTVmNDk1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGhFeHByZXNzaW9uSW50ZXJuYWwuaApAQCAtMCww
ICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxXZWJDb3JlL0RPTVhQYXRoRXhwcmVzc2lvbi5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBYUGF0aEV4cHJlc3Npb247Cit9CisKK1dFQkNPUkVfRVhQT1JUIFdl
YkNvcmU6OlhQYXRoRXhwcmVzc2lvbiogY29yZShET01YUGF0aEV4cHJlc3Npb24gKik7CitXRUJD
T1JFX0VYUE9SVCBET01YUGF0aEV4cHJlc3Npb24gKmtpdChXZWJDb3JlOjpYUGF0aEV4cHJlc3Np
b24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGhO
U1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoTlNSZXNv
bHZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE1MjhkNWNkOGY0ZTJhZTYxNDg3MTM1NDc0NjYyZWY4YzE4Yzc2
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQ
YXRoTlNSZXNvbHZlci5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvV2ViS2l0QXZhaWxh
YmlsaXR5Lmg+CisKK0BjbGFzcyBOU1N0cmluZzsKKworV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9N
QUMoMTBfNSkKK0Bwcm90b2NvbCBET01YUGF0aE5TUmVzb2x2ZXIgPE5TT2JqZWN0PgorLSAoTlNT
dHJpbmcgKilsb29rdXBOYW1lc3BhY2VVUkk6KE5TU3RyaW5nICopcHJlZml4OworQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aFJlc3VsdC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aFJlc3VsdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY1NTMzOTUxNGM2MTQ4OTliNDY0N2JmMjE5Nzc2NmUxZDRkMTQxZWIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoUmVzdWx0LmgKQEAgLTAs
MCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworQGNsYXNzIERPTU5vZGU7CitA
Y2xhc3MgTlNTdHJpbmc7CisKK2VudW0geworICAgIERPTV9BTllfVFlQRSA9IDAsCisgICAgRE9N
X05VTUJFUl9UWVBFID0gMSwKKyAgICBET01fU1RSSU5HX1RZUEUgPSAyLAorICAgIERPTV9CT09M
RUFOX1RZUEUgPSAzLAorICAgIERPTV9VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFID0gNCwK
KyAgICBET01fT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUgPSA1LAorICAgIERPTV9VTk9SREVS
RURfTk9ERV9TTkFQU0hPVF9UWVBFID0gNiwKKyAgICBET01fT1JERVJFRF9OT0RFX1NOQVBTSE9U
X1RZUEUgPSA3LAorICAgIERPTV9BTllfVU5PUkRFUkVEX05PREVfVFlQRSA9IDgsCisgICAgRE9N
X0ZJUlNUX09SREVSRURfTk9ERV9UWVBFID0gOQorfSBXRUJLSVRfRU5VTV9BVkFJTEFCTEVfTUFD
KDEwXzUpOworCitXRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01BQygxMF81KQorV0VCQ09SRV9FWFBP
UlQgQGludGVyZmFjZSBET01YUGF0aFJlc3VsdCA6IERPTU9iamVjdAorQHByb3BlcnR5IChyZWFk
b25seSkgdW5zaWduZWQgc2hvcnQgcmVzdWx0VHlwZTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIGRv
dWJsZSBudW1iZXJWYWx1ZTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpz
dHJpbmdWYWx1ZTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgYm9vbGVhblZhbHVlOworQHBy
b3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Ob2RlICpzaW5nbGVOb2RlVmFsdWU7CitAcHJv
cGVydHkgKHJlYWRvbmx5KSBCT09MIGludmFsaWRJdGVyYXRvclN0YXRlOworQHByb3BlcnR5IChy
ZWFkb25seSkgdW5zaWduZWQgc25hcHNob3RMZW5ndGg7CisKKy0gKERPTU5vZGUgKilpdGVyYXRl
TmV4dDsKKy0gKERPTU5vZGUgKilzbmFwc2hvdEl0ZW06KHVuc2lnbmVkKWluZGV4OworQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01YUGF0aFJlc3VsdC5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGhSZXN1bHQubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGVlOTVmYzEzZDIxNTE5M2U5M2VhMjU5NTdjMzI3NzU1NzI4NTg5MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NWFBhdGhSZXN1bHQubW0K
QEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NWFBhdGhSZXN1bHRJ
bnRlcm5hbC5oIgorCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NTm9kZUlu
dGVybmFsLmgiCisjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgorI2ltcG9ydCAiSlNNYWlu
VGhyZWFkRXhlY1N0YXRlLmgiCisjaW1wb3J0ICJOb2RlLmgiCisjaW1wb3J0ICJUaHJlYWRDaGVj
ay5oIgorI2ltcG9ydCAiVVJMLmgiCisjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgorI2lt
cG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCAiWFBhdGhSZXN1bHQuaCIK
KyNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKworI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6WFBhdGhSZXN1bHQqPihfaW50ZXJuYWwpCisKK0BpbXBsZW1lbnRhdGlvbiBET01Y
UGF0aFJlc3VsdAorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoV2ViQ29yZU9iakNTY2hl
ZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTVhQYXRoUmVzdWx0IGNsYXNzXSwgc2VsZikp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwtPmRl
cmVmKCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh1bnNpZ25lZCBzaG9ydClyZXN1
bHRUeXBlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IHJldHVybiBJTVBMLT5yZXN1bHRUeXBlKCk7Cit9CisKKy0gKGRvdWJsZSludW1iZXJWYWx1ZQor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkb3VibGUgcmVzdWx0ID0gSU1QTC0+bnVtYmVy
VmFsdWUoZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworLSAoTlNTdHJpbmcgKilzdHJpbmdWYWx1ZQoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBOU1N0cmluZyAqcmVzdWx0ID0gSU1QTC0+c3RyaW5nVmFsdWUoZWMpOwor
ICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworLSAoQk9PTClib29sZWFuVmFsdWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgQk9P
TCByZXN1bHQgPSBJTVBMLT5ib29sZWFuVmFsdWUoZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25E
T01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NTm9kZSAqKXNpbmds
ZU5vZGVWYWx1ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBET01Ob2RlICpyZXN1bHQg
PSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+c2luZ2xlTm9kZVZhbHVlKGVjKSkpOworICAgIFdlYkNv
cmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoQk9P
TClpbnZhbGlkSXRlcmF0b3JTdGF0ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+aW52YWxpZEl0ZXJhdG9yU3RhdGUoKTsKK30K
KworLSAodW5zaWduZWQpc25hcHNob3RMZW5ndGgKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgdW5zaWduZWQgcmVzdWx0ID0gSU1QTC0+c25hcHNob3RMZW5ndGgoZWMpOworICAgIFdlYkNv
cmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9N
Tm9kZSAqKWl0ZXJhdGVOZXh0Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTU5vZGUg
KnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5pdGVyYXRlTmV4dChlYykpKTsKKyAgICBX
ZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0g
KERPTU5vZGUgKilzbmFwc2hvdEl0ZW06KHVuc2lnbmVkKWluZGV4Cit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIERPTU5vZGUgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5zbmFw
c2hvdEl0ZW0oaW5kZXgsIGVjKSkpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQGVuZAorCitXZWJDb3JlOjpYUGF0aFJlc3VsdCog
Y29yZShET01YUGF0aFJlc3VsdCAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6WFBhdGhSZXN1bHQqPih3cmFwcGVyLT5faW50ZXJuYWwp
IDogMDsKK30KKworRE9NWFBhdGhSZXN1bHQgKmtpdChXZWJDb3JlOjpYUGF0aFJlc3VsdCogdmFs
dWUpCit7CisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKKyAgICBp
ZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIGlmIChET01YUGF0aFJlc3VsdCAq
d3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQorICAgICAgICByZXR1cm4gW1t3cmFwcGVy
IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIERPTVhQYXRoUmVzdWx0ICp3cmFwcGVyID0gW1tE
T01YUGF0aFJlc3VsdCBhbGxvY10gX2luaXRdOworICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CisgICAgdmFsdWUtPnJl
ZigpOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOworICAgIHJldHVybiBbd3Jh
cHBlciBhdXRvcmVsZWFzZV07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTVhQYXRoUmVzdWx0SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NWFBhdGhSZXN1bHRJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzOTMyYTNkYzViOTlm
MDFkZTNhMTI0YTczYmRiYzY5N2RhYjBkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTVhQYXRoUmVzdWx0SW50ZXJuYWwuaApAQCAtMCwwICsxLDMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0IDxXZWJDb3JlL0RPTVhQYXRoUmVzdWx0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFhQYXRoUmVzdWx0OworfQorCitXRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpYUGF0aFJl
c3VsdCogY29yZShET01YUGF0aFJlc3VsdCAqKTsKK1dFQkNPUkVfRVhQT1JUIERPTVhQYXRoUmVz
dWx0ICpraXQoV2ViQ29yZTo6WFBhdGhSZXN1bHQqKTsK
</data>
<flag name="review"
          id="308711"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>