<?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>181944</bug_id>
          
          <creation_ts>2018-01-22 13:36:16 -0800</creation_ts>
          <short_desc>Remove pre-NetworkSession loading code</short_desc>
          <delta_ts>2018-01-22 14:31:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1391784</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-22 13:36:16 -0800</bug_when>
    <thetext>Remove pre-NetworkSession loading code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391785</commentid>
    <comment_count>1</comment_count>
      <attachid>331956</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-22 13:37:57 -0800</bug_when>
    <thetext>Created attachment 331956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391787</commentid>
    <comment_count>2</comment_count>
      <attachid>331957</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-22 13:42:56 -0800</bug_when>
    <thetext>Created attachment 331957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391794</commentid>
    <comment_count>3</comment_count>
      <attachid>331960</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-22 13:47:34 -0800</bug_when>
    <thetext>Created attachment 331960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391805</commentid>
    <comment_count>4</comment_count>
      <attachid>331962</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-22 13:56:34 -0800</bug_when>
    <thetext>Created attachment 331962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391819</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-22 14:29:18 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/227364/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391820</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-22 14:31:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/36749172&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331956</attachid>
            <date>2018-01-22 13:37:57 -0800</date>
            <delta_ts>2018-01-22 13:42:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181944-20180122133802.patch</filename>
            <type>text/plain</type>
            <size>148190</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjczNTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzOCBAQAorMjAxOC0wMS0yMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBwcmUt
TmV0d29ya1Nlc3Npb24gbG9hZGluZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODE5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2Nv
YS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclByb3RvY29sQ2xhc3MpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWQ6On5Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRGaW5pc2gpOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkOjpkaWRTdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjp3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZDo6c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuaDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnNldEJsb2JGaWxlUmVmZXJlbmNl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXF1ZXN0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rv
d25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNv
bnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1h
bmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06IFJlbW92ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2FkUGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2tCbG9iLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6fk5ldHdvcmtMb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0xvYWQ6OnNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZEZpbmlzaExvYWRpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkRmFpbCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp3aWxsU2VuZFJlcXVlc3RBc3luYyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlQXN5bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrTG9hZDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnJlY2VpdmVkQ2FuY2VsbGF0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNz
Q29jb2EpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVX
ZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAg
KFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9yU2luZ2xlQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51
ZVdpdGhvdXRDcmVkZW50aWFsRm9yU2luZ2xlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6
QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjYW5jZWxTaW5nbGVDaGFsbGVuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JT
aW5nbGVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OnJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlRm9yU2luZ2xlQ2hhbGxlbmdlKToKKyAg
ICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6Cisg
ICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ckNvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKToKKyAgICAgICAgKiBTaGFy
ZWQvU2Vzc2lvblRyYWNrZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VT
aGltLmg6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6
CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChBUEk6OkRvd25sb2FkQ2xpZW50OjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAg
ICAgIChXS0NvbnRleHRTZXREb3dubG9hZENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6c2hvdWxkRGVjb2Rl
U291cmNlRGF0YU9mTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNob3VsZERl
Y29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRl
RGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKToKKyAgICAg
ICAgKiBjb25maWcuaDoKKwogMjAxOC0wMS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCByZWxlYXNlIGxvZ2dpbmcgdG8gaGVscCBkZWJ1ZyBpc3N1ZXMg
cmVsYXRlZCB0byBzZXJ2aWNlIHdvcmtlcnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY29uZmlnLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jb25maWcuaAkocmV2aXNpb24gMjI3MjMyKQor
KysgU291cmNlL1dlYktpdC9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNzksMTAgKzc5LDYg
QEAKICNlbmRpZgogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oQVBQTEVU
VikgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgVVNFKFNPVVApCi0jaWZuZGVmIFVTRV9ORVRXT1JL
X1NFU1NJT04KLSNkZWZpbmUgVVNFX05FVFdPUktfU0VTU0lPTiAxCi0jZW5kaWYKLQogI2lmbmRl
ZiBFTkFCTEVfQkVBQ09OX0FQSQogI2RlZmluZSBFTkFCTEVfQkVBQ09OX0FQSSAxCiAjZW5kaWYK
QEAgLTkzLDcgKzg5LDcgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKSAmJiAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCkpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICNpZm5kZWYgRU5BQkxFX1NF
UlZFUl9QUkVDT05ORUNUCiAjZGVmaW5lIEVOQUJMRV9TRVJWRVJfUFJFQ09OTkVDVCAxCiAjZW5k
aWYKQEAgLTExMiw3ICsxMDgsNyBAQAogI2VuZGlmCiAKICNpZm5kZWYgRU5BQkxFX05FVFdPUktf
Q0FQVFVSRQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmIFBMQVRGT1JNKENPQ09BKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogI2RlZmluZSBFTkFCTEVfTkVUV09SS19DQVBUVVJFIDEKICNlbmRp
ZgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCShyZXZpc2lvbiAyMjcyMzIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCIKIAotI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCi0KICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgi
CkBAIC0xMzMsNSArMTMxLDMgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmNh
bm5vdAogfQogCiB9IC8vIE5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFVTRShORVRXT1JL
X1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHJldmlzaW9uIDIyNzIzMikKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVzcG9uc2UuaD4KQEAgLTc1LDUgKzczLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgIlBpbmdMb2Fk
LmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCkBAIC01NywxMCArNTgs
NiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSNpbmNsdWRlICJQaW5n
TG9hZC5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTI0MywxNiArMjQwLDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6bG9hZAogICAgICAgICBkaWRGaW5pc2hQaW5nTG9hZChpZGVudGlmaWVyLCBlcnJv
ciwgcmVzcG9uc2UpOwogICAgIH07CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIC8v
IFBpbmdMb2FkIG1hbmFnZXMgaXRzIG93biBsaWZldGltZSwgZGVsZXRpbmcgaXRzZWxmIHdoZW4g
aXRzIHB1cnBvc2UgaGFzIGJlZW4gZnVsZmlsbGVkLgogICAgIG5ldyBQaW5nTG9hZChXVEZNb3Zl
KGxvYWRQYXJhbWV0ZXJzKSwgV1RGTW92ZShvcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ob3JpZ2luYWxS
ZXF1ZXN0SGVhZGVycyk7Ci0gICAgYXV0byBjb250ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmNyZWF0ZShsb2FkUGFyYW1ldGVycy5zZXNzaW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwotCi0gICAgLy8gUGluZ0hhbmRs
ZSBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJw
b3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KLSAgICBuZXcgUGluZ0hhbmRsZShjb250ZXh0LnB0cigp
LCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBsb2FkUGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFs
c1BvbGljeSA9PSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBsb2FkUGFyYW1ldGVycy5z
aG91bGRGb2xsb3dSZWRpcmVjdHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSNlbmRp
ZgogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5pc2hQaW5n
TG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHJldmlzaW9uIDIy
NzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikK
LQogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFza0Jsb2IuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgpAQCAtMTQwLDUgKzEz
OCwzIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpmYWlsdXJlVGltZXJGaXJlZCgKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShy
ZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLQogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50
aWFsLmg+CkBAIC0xNjAsNSArMTU4LDMgQEAgcHJvdGVjdGVkOgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
CShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFza0Jsb2IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrQmxvYi5oIgogCi0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKLQogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTU4NCw1ICs1ODIsMyBA
QCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZEZpbmlzaCgpCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCShy
ZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0KICNpbmNsdWRlICJOZXR3b3JrRGF0
YVRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTdHJlYW1DbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KQEAgLTEyMCw1ICsxMTgsMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9O
KQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJ
KHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw2IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCi0KIHN0cnVjdCBOZXR3b3JrTG9hZDo6VGhyb3R0bGUgewogICAgIFRocm90dGxlKE5ldHdv
cmtMb2FkJiBsb2FkLCBTZWNvbmRzIGRlbGF5LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogICAgICAgICA6IHRpbWVyKGxv
YWQsICZOZXR3b3JrTG9hZDo6dGhyb3R0bGVEZWxheUNvbXBsZXRlZCkKQEAgLTExNywyNSArMTE1
LDExIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmluaXRpYWxpemUoTmV0d29ya1Nlc3MKICAgICAgICAg
bV90YXNrLT5yZXN1bWUoKTsKIH0KIAotI2Vsc2UKLQotTmV0d29ya0xvYWQ6Ok5ldHdvcmtMb2Fk
KE5ldHdvcmtMb2FkQ2xpZW50JiBjbGllbnQsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92
ZShwYXJhbWV0ZXJzKSkKLSAgICAsIG1fbmV0d29ya2luZ0NvbnRleHQoUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OmNyZWF0ZShtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMuc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkpCi0gICAgLCBtX2N1cnJlbnRS
ZXF1ZXN0KG1fcGFyYW1ldGVycy5yZXF1ZXN0KQotewotICAgIG1faGFuZGxlID0gUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZShtX25ldHdvcmtpbmdDb250ZXh0LmdldCgpLCBtX3BhcmFtZXRlcnMucmVx
dWVzdCwgdGhpcywgbV9wYXJhbWV0ZXJzLmRlZmVyc0xvYWRpbmcsIG1fcGFyYW1ldGVycy5jb250
ZW50U25pZmZpbmdQb2xpY3kgPT0gU25pZmZDb250ZW50LCBtX3BhcmFtZXRlcnMuY29udGVudEVu
Y29kaW5nU25pZmZpbmdQb2xpY3kgPT0gQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNu
aWZmKTsKLX0KLQotI2VuZGlmCi0KIE5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQoKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKG1fcmVkaXJlY3RDb21wbGV0aW9u
SGFuZGxlcikKICAgICAgICAgbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
KQogICAgICAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25v
cmUpOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCkBAIC0xNDQsMTkg
KzEyOCwxMCBAQCBOZXR3b3JrTG9hZDo6fk5ldHdvcmtMb2FkKCkKICNlbmRpZgogICAgIGlmICht
X3Rhc2spCiAgICAgICAgIG1fdGFzay0+Y2xlYXJDbGllbnQoKTsKLSNlbHNlCi0jaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICBpZiAobV9oYW5kbGUgJiYgbV93YWl0
aW5nRm9yQ29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKQotICAg
ICAgICBtX2hhbmRsZS0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKGZhbHNlKTsKLSNlbmRpZgotICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUt
PmNsZWFyQ2xpZW50KCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6c2V0RGVmZXJz
TG9hZGluZyhib29sIGRlZmVycykKIHsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlm
IChtX3Rhc2spIHsKICAgICAgICAgaWYgKGRlZmVycykKICAgICAgICAgICAgIG1fdGFzay0+c3Vz
cGVuZCgpOwpAQCAtMTY4LDIxICsxNDMsMTIgQEAgdm9pZCBOZXR3b3JrTG9hZDo6c2V0RGVmZXJz
TG9hZGluZyhib29sIAogI2VuZGlmCiAgICAgICAgIH0KICAgICB9Ci0jZWxzZQotICAgIGlmICht
X2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUtPnNldERlZmVyc0xvYWRpbmcoZGVmZXJzKTsKLSNl
bmRpZgogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpjYW5jZWwoKQogewotI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCiAgICAgaWYgKG1fdGFzaykKICAgICAgICAgbV90YXNrLT5jYW5jZWwoKTsKLSNl
bHNlCi0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkKQEAgLTE5OSw3ICsxNjUsNiBAQCB2b2lk
IE5ldHdvcmtMb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzCiAgICAgICAgIG1fcmVjb3JkZXIt
PnJlY29yZFJlZGlyZWN0U2VudChuZXdSZXF1ZXN0KTsKICNlbmRpZgogCi0jaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKICAgICBhdXRvIHJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4
Y2hhbmdlKG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7CiAgICAgQVNTRVJU
KHJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0Lmlz
TnVsbCgpKSB7CkBAIC0yMTIsMzkgKzE3NywyMCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51
ZVdpbGxTZW5kUmVxdWVzCiAKICAgICBpZiAocmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikKICAg
ICAgICAgcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcihSZXNvdXJjZVJlcXVlc3QobV9jdXJyZW50
UmVxdWVzdCkpOwotI2Vsc2UKLSAgICBpZiAobV9jdXJyZW50UmVxdWVzdC5pc051bGwoKSkgewot
ICAgICAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7Ci0g
ICAgICAgIGRpZEZhaWwobV9oYW5kbGUuZ2V0KCksIGNhbmNlbGxlZEVycm9yKG1fY3VycmVudFJl
cXVlc3QpKTsKLSAgICB9IGVsc2UgaWYgKG1faGFuZGxlKSB7Ci0gICAgICAgIGF1dG8gY3VycmVu
dFJlcXVlc3RDb3B5ID0gbV9jdXJyZW50UmVxdWVzdDsKLSAgICAgICAgYXV0byByZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRs
ZXIsIG51bGxwdHIpOwotICAgICAgICBBU1NFUlQocmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7
Ci0gICAgICAgIHJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjdXJyZW50UmVxdWVz
dENvcHkpKTsKLSAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UoKQogewotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYg
KG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBhdXRvIHJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciwgbnVsbHB0cik7CiAgICAgICAgIHJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0
aW9uOjpVc2UpOwogICAgIH0KLSNlbHNlCi0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBtX2hh
bmRsZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKLSNlbmRpZgogfQogCi0jaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKIGJvb2wgTmV0d29ya0xvYWQ6OnNob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LmdldCgpLnNo
b3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpOwogfQotI2VuZGlmCiAKIE5ldHdv
cmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBOZXR3b3JrTG9h
ZDo6c2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkK
IHsKQEAgLTI3Niw4ICsyMjIsNiBAQCBib29sIE5ldHdvcmtMb2FkOjppc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDCiAgICAgcmV0dXJuIG1fY2xpZW50LmdldCgpLmlzQWxsb3dlZFRvQXNrVXNlckZvckNy
ZWRlbnRpYWxzKCk7CiB9CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiB2b2lkIE5ldHdv
cmtMb2FkOjpjb252ZXJ0VGFza1RvRG93bmxvYWQoUGVuZGluZ0Rvd25sb2FkJiBwZW5kaW5nRG93
bmxvYWQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgdXBkYXRlZFJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmICghbV90YXNrKQpAQCAtNDU1LDEyOCAr
Mzk5LDQgQEAgdm9pZCBOZXR3b3JrTG9hZDo6Y2Fubm90U2hvd1VSTCgpCiAgICAgbV9jbGllbnQu
Z2V0KCkuZGlkRmFpbExvYWRpbmcoY2Fubm90U2hvd1VSTEVycm9yKG1fY3VycmVudFJlcXVlc3Qp
KTsKIH0KIAotI2Vsc2UKLQotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5
bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVz
cG9uc2UpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7
Ci0gICAgaWYgKHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlY2VpdmVkUmVzcG9u
c2UpKSA9PSBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2U6OlllcykKLSAgICAgICAgbV9oYW5kbGUtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7
Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgY2hhciogLyogZGF0YSAqLywgdW5zaWduZWQgLyogbGVuZ3RoICovLCBpbnQgLyogZW5j
b2RlZERhdGFMZW5ndGggKi8pCi17Ci0gICAgLy8gVGhlIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBu
ZXZlciBnZXQgYSBkaWRSZWNlaXZlRGF0YSBjYWxsYmFjay4KLSAgICAvLyBXZSBzaG91bGQgYWx3
YXlzIGJlIHVzaW5nIGRpZFJlY2VpdmVCdWZmZXIuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQotewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5k
bGUpOwotICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIp
LCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQotewotICAgIEFTU0VSVF9VTlVT
RUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwotICAgIE5ldHdvcmtMb2FkTWV0cmljcyBl
bXB0eU1ldHJpY3M7Ci0gICAgbV9jbGllbnQuZ2V0KCkuZGlkRmluaXNoTG9hZGluZyhlbXB0eU1l
dHJpY3MpOwotfQotCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQotewotICAgIEFTU0VSVF9VTlVTRUQo
aGFuZGxlLCAhaGFuZGxlIHx8IGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgQVNTRVJUKCFlcnJv
ci5pc051bGwoKSk7Ci0KLSAgICBtX2NsaWVudC5nZXQoKS5kaWRGYWlsTG9hZGluZyhlcnJvcik7
Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoIW1fcmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlcik7Ci0gICAgbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9
PSBtX2hhbmRsZSk7Ci0gICAgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKLX0KLQotI2lmIFVTRShQUk9U
RUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi12b2lkIE5ldHdvcmtMb2FkOjpjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCi17Ci0gICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1f
aGFuZGxlKTsKLQotICAgIC8vIEhhbmRsZSBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbiBhdCBwbGF0
Zm9ybS1sZXZlbCBpZiByZXF1ZXN0ZWQsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgotICAgIGlm
IChwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZAotICAg
ICAgICAmJiAhTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhbkhhbmRsZUhUVFBTU2VydmVy
VHJ1c3RFdmFsdWF0aW9uKCkpIHsKLSAgICAgICAgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG1fd2FpdGluZ0ZvckNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZSA9IHRydWU7Ci0gICAgbV9jbGllbnQuZ2V0KCkuY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZUFzeW5jKHByb3RlY3Rpb25TcGFjZSk7Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6
OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIHJlc3Vs
dCkKLXsKLSAgICBtX3dhaXRpbmdGb3JDb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UgPSBmYWxzZTsKLSAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgIG1faGFuZGxl
LT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocmVzdWx0KTsK
LX0KLSNlbmRpZgotCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxCeXRlc1RvQmVTZW50KQotewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5k
bGUgPT0gbV9oYW5kbGUpOwotCi0gICAgbV9jbGllbnQuZ2V0KCkuZGlkU2VuZERhdGEoYnl0ZXNT
ZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwotfQotCi12b2lkIE5ldHdvcmtMb2FkOjp3YXNCbG9j
a2VkKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUs
IGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0KLSAgICBkaWRGYWlsKGhhbmRsZSwgV2ViS2l0OjpibG9j
a2VkRXJyb3IobV9jdXJyZW50UmVxdWVzdCkpOwotfQotCi12b2lkIE5ldHdvcmtMb2FkOjpjYW5u
b3RTaG93VVJMKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRCho
YW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0KLSAgICBkaWRGYWlsKGhhbmRsZSwgV2ViS2l0
OjpjYW5ub3RTaG93VVJMRXJyb3IobV9jdXJyZW50UmVxdWVzdCkpOwotfQotCi1ib29sIE5ldHdv
cmtMb2FkOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSogaGFuZGxl
KQotewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUgfHwgIW1f
aGFuZGxlKTsgLy8gbV9oYW5kbGUgd2lsbCBiZSAwIGlmIGNhbGxlZCBmcm9tIFJlc291cmNlSGFu
ZGxlOjpzdGFydCgpLgotCi0gICAgLy8gV2hlbiB0aGUgV2ViUHJvY2VzcyBpcyBoYW5kbGluZyBs
b2FkaW5nIGEgY2xpZW50IGlzIGNvbnN1bHRlZCBlYWNoIHRpbWUgdGhpcyBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSBxdWVzdGlvbiBpcyBhc2tlZC4KLSAgICAvLyBJbiBOZXR3b3JrUHJvY2Vz
cyBtb2RlIHdlIGFzayB0aGUgV2ViUHJvY2VzcyBjbGllbnQgdXAgZnJvbnQgb25jZSBhbmQgdGhl
biByZXVzZSB0aGUgY2FjaGVkIGFuc3dlci4KLQotICAgIC8vIFdlIHN0aWxsIG5lZWQgdGhpcyBz
eW5jIHZlcnNpb24sIGJlY2F1c2UgUmVzb3VyY2VIYW5kbGUgaXRzZWxmIHVzZXMgaXQgaW50ZXJu
YWxseSwgZXZlbiB3aGVuIHRoZSBkZWxlZ2F0ZSB1c2VzIGFuIGFzeW5jIG9uZS4KLQotICAgIHJl
dHVybiBtX3BhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OlVzZTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUs
IGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0KLSAgICBpZiAoIWlzQWxsb3dlZFRvQXNrVXNlckZvckNy
ZWRlbnRpYWxzKCkpIHsKLSAgICAgICAgY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkt
PnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgY2hhbGxl
bmdlKTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAg
IEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwotCi0gICAgbV9oYW5k
bGUtPmNhbmNlbCgpOwotICAgIGRpZEZhaWwobV9oYW5kbGUuZ2V0KCksIGNhbmNlbGxlZEVycm9y
KG1fY3VycmVudFJlcXVlc3QpKTsKLX0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTkgKzI1LDE2
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtEYXRhVGFzay5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCiAjaW5j
bHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKLSNpbmNsdWRlICJEb3dubG9hZElELmgiCi0jaW5jbHVkZSAi
TmV0d29ya0RhdGFUYXNrLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoTkVUV09SS19DQVBUVVJFKQogI2luY2x1ZGUg
Ik5ldHdvcmtDYXB0dXJlUmVjb3JkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZVJlcGxh
eWVyLmgiCkBAIC00NSwyMCArNDIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IE5ldHdvcmtMb2FkIGZpbmFsIDoKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIHByaXZh
dGUgTmV0d29ya0RhdGFUYXNrQ2xpZW50Ci0jZWxzZQotICAgIHByaXZhdGUgV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQKLSNlbmRpZgorY2xhc3MgTmV0d29ya0xvYWQgZmluYWwgOiBwcml2
YXRlIE5ldHdvcmtEYXRhVGFza0NsaWVudAogewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgTmV0d29ya0xvYWQoTmV0
d29ya0xvYWRDbGllbnQmLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya1Nlc3Npb24m
KTsKLSNlbHNlCi0gICAgTmV0d29ya0xvYWQoTmV0d29ya0xvYWRDbGllbnQmLCBOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMmJik7Ci0jZW5kaWYKICAgICB+TmV0d29ya0xvYWQoKTsKIAogICAgIHZvaWQg
c2V0RGVmZXJzTG9hZGluZyhib29sKTsKQEAgLTc0LDcgKzYyLDYgQEAgcHVibGljOgogICAgIHZv
aWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwog
ICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIAotI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCiAgICAgdm9pZCBjb252ZXJ0VGFza1RvRG93bmxvYWQoUGVuZGluZ0Rvd25sb2Fk
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkSUQoRG93bmxvYWRJRCk7
CiAgICAgdm9pZCBzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKQEAgLTgyLDQ5
ICs2OSwyMSBAQCBwdWJsaWM6CiAgICAgRG93bmxvYWRJRCBwZW5kaW5nRG93bmxvYWRJRCgpIHsg
cmV0dXJuIG1fdGFzay0+cGVuZGluZ0Rvd25sb2FkSUQoKTsgfQogCiAgICAgYm9vbCBzaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBmaW5hbDsKLSNlbHNlCi0gICAg
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxl
LmdldCgpOyB9Ci0KLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAg
IHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgb3ZlcnJp
ZGU7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHdpbGxDYWNoZVJlc3Bv
bnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICop
IG92ZXJyaWRlOwotI2VuZGlmCi0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKIAogI2lm
IFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgdm9pZCBjb250aW51ZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCk7CiAjZW5kaWYKIAogcHJp
dmF0ZToKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogI2lmIEVOQUJMRShORVRXT1JLX0NBUFRV
UkUpCiAgICAgdm9pZCBpbml0aWFsaXplRm9yUmVjb3JkKE5ldHdvcmtTZXNzaW9uJik7CiAgICAg
dm9pZCBpbml0aWFsaXplRm9yUmVwbGF5KE5ldHdvcmtTZXNzaW9uJik7CiAjZW5kaWYKICAgICB2
b2lkIGluaXRpYWxpemUoTmV0d29ya1Nlc3Npb24mKTsKLSNlbmRpZgogCiAgICAgTmV0d29ya0xv
YWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIHNoYXJlZERpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgc2hhcmVk
V2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQot
ICAgIC8vIFJlc291cmNlSGFuZGxlQ2xpZW50Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3lu
YyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwotICAgIHZv
aWQgZGlkU2VuZERhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVk
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZh
aWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JikgZmluYWw7Ci0gICAgdm9pZCB3YXNCbG9ja2VkKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikg
ZmluYWw7Ci0gICAgdm9pZCBjYW5ub3RTaG93VVJMKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikg
ZmluYWw7Ci0gICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSopIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKSBmaW5hbDsKLSAgICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKSBmaW5hbDsKLSAgICBib29sIGxvYWRpbmdTeW5jaHJvbm91c1hIUigpIGZpbmFsIHsg
cmV0dXJuIG1fY2xpZW50LmdldCgpLmlzU3luY2hyb25vdXMoKTsgfQotI2Vsc2UKICAgICAvLyBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
Q2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CkBAIC0xMzksMTIgKzk4LDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCB0aHJvdHRsZURlbGF5Q29tcGxldGVkKCk7CiAKICAgICB2b2lkIGNvbXBs
ZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7
Ci0jZW5kaWYKIAogICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TmV0d29ya0xvYWRDbGllbnQ+
IG1fY2xpZW50OwogICAgIGNvbnN0IE5ldHdvcmtMb2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7
CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
IG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQog
ICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+IG1fdGFzazsKICAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiBtX2NoYWxsZW5nZTsKICNpZiBVU0UoUFJP
VEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpAQCAtMTU0LDExICsxMTEsNiBAQCBwcml2YXRl
OgogICAgIAogICAgIHN0cnVjdCBUaHJvdHRsZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyb3R0
bGU+IG1fdGhyb3R0bGU7Ci0jZWxzZQotICAgIGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ+IG1fbmV0d29ya2luZ0NvbnRleHQ7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlJlc291cmNlSGFuZGxlPiBtX2hhbmRsZTsKLSNlbmRpZgogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7IC8vIFVwZGF0ZWQgb24gcmVkaXJl
Y3RzLgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIE5ldHdvcmtMb2FkUGFyYW1ldGVyc19oCi0jZGVmaW5lIE5ldHdvcmtMb2FkUGFy
YW1ldGVyc19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYkRhdGFGaWxl
UmVmZXJlbmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4K
QEAgLTQ5LDEyICs0OCw4IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QgeyB0cnVlIH07CiAgICAgYm9vbCBkZWZlcnNMb2FkaW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIG5lZWRzQ2VydGlmaWNhdGVJbmZvIHsgZmFsc2UgfTsKLSNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPj4gYmxvYkZpbGVSZWZlcmVuY2VzOwotI2VuZGlmCiAgICAgUHJlY29ubmVj
dE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHkgeyBQcmVjb25uZWN0T25seTo6Tm8gfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gTmV0d29ya0xvYWRQYXJhbWV0ZXJz
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDEyICsyNTIsMTAgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcgogICAgIG1fbG9nQ29va2ll
SW5mb3JtYXRpb24gPSBwYXJhbWV0ZXJzLmxvZ0Nvb2tpZUluZm9ybWF0aW9uOwogI2VuZGlmCiAK
LSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RP
Q09MX01BTkFHRVIpCiAgICAgcGFyYW1ldGVycy5kZWZhdWx0U2Vzc2lvblBhcmFtZXRlcnMubGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gc3VwcGxlbWVudDxMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXI+KCk7CiAjZW5kaWYKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdU
Rk1vdmUocGFyYW1ldGVycy5kZWZhdWx0U2Vzc2lvblBhcmFtZXRlcnMpKSk7Ci0jZW5kaWYKIAog
ICAgIGZvciAoYXV0byYgc3VwcGxlbWVudCA6IG1fc3VwcGxlbWVudHMudmFsdWVzKCkpCiAgICAg
ICAgIHN1cHBsZW1lbnQtPmluaXRpYWxpemUocGFyYW1ldGVycyk7CkBAIC0zMDAsMTIgKzI5OCwx
MCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIHsKICAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuY2xl
YXJDcmVkZW50aWFscygpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKQogICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+Y2xl
YXJDcmVkZW50aWFscygpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCkBAIC01OTMsNyArNTg5LDYg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aQogCiAjZW5kaWYKIAot
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoZG93bmxvYWRJRCwgV1RGTW92ZShyZXF1ZXN0KSk7CkBAIC02MTgsNyArNjEzLDYg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZAogCiAgICAgZG93bmxv
YWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhuZXR3b3JrRGF0YVRhc2sucGVu
ZGluZ0Rvd25sb2FkSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUpLCBkZXN0aW5hdGlvbklEKTsKIH0K
LSNlbmRpZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9u
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29s
IGFsbG93T3ZlcndyaXRlKQogewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksOSAr
MTE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7CiAjZW5kaWYKIAotI2lm
IFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0jZW5kaWYKIAogI2lmIFVTRShQUk9URUNUSU9O
X1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlByb3Rl
Y3Rpb25TcGFjZSYpOwpAQCAtMTg0LDkgKzE4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRE
ZXN0cm95RG93bmxvYWQoKSBvdmVycmlkZTsKICAgICBJUEM6OkNvbm5lY3Rpb24qIGRvd25sb2Fk
UHJveHlDb25uZWN0aW9uKCkgb3ZlcnJpZGU7CiAgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyJiBk
b3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKSBvdmVycmlkZTsKLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQogICAgIHZvaWQgcGVuZGluZ0Rvd25sb2FkQ2FuY2VsZWQoRG93bmxvYWRJRCkg
b3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIC8vIE1lc3NhZ2UgSGFuZGxlcnMKICAgICB2b2lkIGRp
ZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CkBAIC0yMTAsOSArMjA2LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoUFJPVEVDVElPTl9T
UEFDRV9BVVRIX0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIGJvb2wg
Y2FuQXV0aGVudGljYXRlKTsKICNlbmRpZgotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAg
dm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik7Ci0jZW5kaWYKICAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25s
b2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAKICAgICB2b2lkIHNldENh
Y2hlTW9kZWwodWludDMyX3QpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMjcyMzIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzIExlZ2FjeVJlY2VpdmUKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExC
QUNLKQogICAgIENvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1
aW50NjRfdCBsb2FkZXJJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCiAjZW5kaWYKLSNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQogICAgIENvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93
bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKLSNl
bmRpZgogICAgIENvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oV2ViS2l0
OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092
ZXJ3cml0ZSkKIAogICAgIFNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCBmbGFnKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDYsMTQgKzEwNiw2IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8K
ICAgICAgICAgfQogICAgIH0KIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIGlmIChv
cmlnaW5hbFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzQmxvYigpKSB7Ci0gICAgICAgIEFTU0VS
VCghbV9wYXJhbWV0ZXJzLnJlc291cmNlU2FuZGJveEV4dGVuc2lvbik7Ci0gICAgICAgIG1fZmls
ZVJlZmVyZW5jZXMuYXBwZW5kVmVjdG9yKE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigp
LmZpbGVzSW5CbG9iKGNvbm5lY3Rpb24sIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpKSk7Ci0gICAg
fQotI2VuZGlmCi0KLQogICAgIGlmIChzeW5jaHJvbm91c1JlcGx5KQogICAgICAgICBtX3N5bmNo
cm9ub3VzTG9hZERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+KFdU
Rk1vdmUoc3luY2hyb25vdXNSZXBseSkpOwogfQpAQCAtMjI5LDcgKzIyMSw2IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmsKICAgICBwYXJhbWV0ZXJzLmRlZmVyc0xv
YWRpbmcgPSBtX2RlZmVyc0xvYWRpbmc7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVz
dDsKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKHJlcXVlc3QudXJsKCkucHJv
dG9jb2xJc0Jsb2IoKSkKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBO
ZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5maWxlc0luQmxvYihtX2Nvbm5lY3Rpb24s
IG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpKTsKIApAQCAtMjQyLDkgKzIzMyw2IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMs
IFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7Ci0jZWxzZQotICAgIG1fbmV0
d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgV1RGTW92ZShw
YXJhbWV0ZXJzKSk7Ci0jZW5kaWYKIAogICAgIGlmIChtX2RlZmVyc0xvYWRpbmcpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogQ3JlYXRlZCwgYnV0
IGRlZmVycmVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtTZXNzaW9uLmgiCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVkZSAiTmV0
d29ya0RhdGFUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtODcsNSArODUsMyBAQCBib29sIE5l
dHdvcmtTZXNzaW9uOjphbGxvd3NTcGVjaWZpY0hUVFBTCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgJKHJldmlzaW9uIDIyNzIzMikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShORVRX
T1JLX1NFU1NJT04pCi0KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC02Nyw1ICs2NSwzIEBAIHByb3Rl
Y3RlZDoKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKE5FVFdP
UktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlBpbmdMb2FkLmgiCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9O
KQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgpAQCAtMzMwLDUg
KzMyOCwzIEBAIENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzIFBpbmdMb2EKICNlbmRp
ZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVk
ZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oPgpA
QCAtOTgsNSArOTYsMyBAQCBwcml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYgLy8gVVNFKE5FVFdP
UktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUsNiBAQCBMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OkxlZ2FjeUN1c3RvCiAKIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpp
bml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogewotICAgIHJlZ2lzdGVyUHJvdG9jb2xDbGFzcygpOwotCiAgICAgZm9yIChjb25zdCBh
dXRvJiBzY2hlbWUgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJv
dG9jb2xzKQogICAgICAgICByZWdpc3RlclNjaGVtZShzY2hlbWUpOwogfQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHJldmlzaW9uIDIy
NzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIHN0b3BMb2Fk
aW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYm
IFVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCByZWdp
c3RlclByb3RvY29sQ2xhc3MoTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiopOwogI2VuZGlmCiAK
QEAgLTExMSw4ICsxMTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKICAgICB2b2lkIHdhc1JlZGlyZWN0ZWRUb1JlcXVl
c3QodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7
CiAKLSAgICB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xDbGFzcygpOwotCiAgICAgQ2hpbGRQcm9jZXNz
JiBtX2NoaWxkUHJvY2VzczsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgQ3VzdG9t
UHJvdG9jb2w+IEN1c3RvbVByb3RvY29sTWFwOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHJl
dmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDUsMTkgKzEwNSwxMCBAQCAtICh2b2lkKXN0b3BMb2FkaW5nCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi12b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0
ZXJQcm90b2NvbENsYXNzKCkKLXsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBbTlNV
UkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltXS0N1c3RvbVByb3RvY29sIGNsYXNzXV07Ci0jZW5k
aWYKLX0KLQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6cmVnaXN0ZXJQcm90b2NvbENsYXNzKE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRp
b24gKmNvbmZpZ3VyYXRpb24pCiB7CiAgICAgY29uZmlndXJhdGlvbi5wcm90b2NvbENsYXNzZXMg
PSBAW1tXS0N1c3RvbVByb3RvY29sIGNsYXNzXV07CiB9Ci0jZW5kaWYKIAogdm9pZCBMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1l
KQogewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRv
d25sb2FkQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGll
bnQuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTIwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQmxvYkRvd25sb2FkQ2xpZW50LmgiCi0KLSNpZiAh
VVNFKE5FVFdPUktfU0VTU0lPTikKLQotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNs
dWRlICJEb3dubG9hZC5oIgotI2luY2x1ZGUgIldlYkVycm9ycy5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvTUlNRVR5cGVSZWdpc3RyeS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotQmxvYkRv
d25sb2FkQ2xpZW50OjpCbG9iRG93bmxvYWRDbGllbnQoRG93bmxvYWQmIGRvd25sb2FkKQotICAg
IDogbV9kb3dubG9hZChkb3dubG9hZCkKLXsKLX0KLQotdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlKQotewotICAgIG1fZG93bmxvYWQuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1v
dmUocmVzcG9uc2UpKTsKLSAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSBNSU1FVHlwZVJl
Z2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkobV9kb3dubG9hZC5zdWdnZXN0
ZWROYW1lKCkuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJ1bmtub3duIikgOiBtX2Rvd25sb2Fk
LnN1Z2dlc3RlZE5hbWUoKSwgcmVzcG9uc2UubWltZVR5cGUoKSk7Ci0gICAgbV9kb3dubG9hZC5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKHN1Z2dlc3RlZEZpbGVu
YW1lKTsKLX0KLQotdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZERlY2lkZURvd25sb2FkRGVz
dGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIGJvb2wgYWxsb3dPdmVyd3Jp
dGUpCi17Ci0gICAgQVNTRVJUKCFkZXN0aW5hdGlvblBhdGguaXNFbXB0eSgpKTsKLQotICAgIGlm
IChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRlc3RpbmF0aW9uUGF0aCkpIHsKLSAgICAgICAgaWYg
KCFhbGxvd092ZXJ3cml0ZSkgewotICAgICAgICAgICAgZGlkRmFpbChudWxscHRyLCBjYW5jZWxs
ZWRFcnJvcihtX2Rvd25sb2FkLnJlcXVlc3QoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZGVzdGluYXRpb25QYXRoKTsK
LSAgICB9Ci0KLSAgICBtX2Rlc3RpbmF0aW9uUGF0aCA9IGRlc3RpbmF0aW9uUGF0aDsKLSAgICBt
X2Rlc3RpbmF0aW9uRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fZGVzdGluYXRpb25QYXRo
LCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKLSAgICBtX2Rvd25sb2FkLmRpZENy
ZWF0ZURlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25QYXRoKTsKLQotICAgIG1fZG93bmxvYWQuY29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKLX0KLQotdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6
OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKLX0KLQot
I2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi12b2lkIEJsb2JEb3dubG9h
ZENsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJikKLXsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLSNlbmRpZgotCi12b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQp
Ci17Ci0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kZXN0aW5hdGlvbkZpbGUsIGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgbV9kb3dubG9hZC5kaWRSZWNlaXZlRGF0
YShidWZmZXItPnNpemUoKSk7Ci19Ci0KLXZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKikKLXsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
bV9kZXN0aW5hdGlvbkZpbGUpOwotICAgIG1fZG93bmxvYWQuZGlkRmluaXNoKCk7Ci19Ci0KLXZv
aWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoKQotewotICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7Ci0gICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5p
c0VtcHR5KCkpCi0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9kZXN0aW5hdGlvblBh
dGgpOwotCi0gICAgbV9kb3dubG9hZC5kaWRDYW5jZWwoSVBDOjpEYXRhUmVmZXJlbmNlKCkpOwot
fQotCi12b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQotewotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSht
X2Rlc3RpbmF0aW9uRmlsZSk7Ci0gICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkp
Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOwotCi0g
ICAgbV9kb3dubG9hZC5kaWRGYWlsKGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UoKSk7Ci19Ci0K
LX0KLQotI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2Fk
Q2xpZW50LmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oCShub25leGlzdGVudCkKQEAgLTEsNjQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgIVVTRShORVRXT1JLX1NF
U1NJT04pCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgRG93bmxvYWQ7Ci1jbGFzcyBOZXR3b3JrTG9hZFBh
cmFtZXRlcnM7Ci0KLWNsYXNzIEJsb2JEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgQmxvYkRv
d25sb2FkQ2xpZW50KERvd25sb2FkJik7Ci0KLSAgICB2b2lkIGRpZENhbmNlbCgpOwotICAgIHZv
aWQgZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
UGF0aCwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gUmVzb3VyY2VI
YW5kbGVDbGllbnQKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7
Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5
bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7Ci0jaWYgVVNFKFBST1RFQ1RJT05fU1BB
Q0VfQVVUSF9DQUxMQkFDSykKLSAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZSYpIGZpbmFsOwotI2VuZGlmCi0KLSAgICBEb3dubG9hZCYgbV9kb3dubG9h
ZDsKLSAgICBTdHJpbmcgbV9kZXN0aW5hdGlvblBhdGg7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZGVzdGluYXRpb25GaWxlIHsgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwotfTsKLQotfQotCi0jZW5kaWYgLy8g
IVVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJEb3dubG9hZC5oIgogCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCi0jaW5jbHVkZSAiQmxvYkRvd25sb2FkQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKQEAgLTUwLDcgKzQ5LDYgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0jaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKIERvd25sb2FkOjpEb3dubG9hZChEb3dubG9hZE1hbmFnZXImIGRvd25sb2Fk
TWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBOZXR3b3JrRGF0YVRhc2smIGRvd25sb2Fk
LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZE5hbWUpCiAgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCiAgICAgLCBt
X2Rvd25sb2FkSUQoZG93bmxvYWRJRCkKQEAgLTYyLDYgKzYwLDcgQEAgRG93bmxvYWQ6OkRvd25s
b2FkKERvd25sb2FkTWFuYWdlciYgZG93bgogCiAgICAgbV9kb3dubG9hZE1hbmFnZXIuZGlkQ3Jl
YXRlRG93bmxvYWQoKTsKIH0KKwogI2lmIFBMQVRGT1JNKENPQ09BKQogRG93bmxvYWQ6OkRvd25s
b2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2Fk
SUQsIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayogZG93bmxvYWQsIGNvbnN0IFBBTDo6U2Vzc2lv
bklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKICAgICA6IG1fZG93
bmxvYWRNYW5hZ2VyKGRvd25sb2FkTWFuYWdlcikKQEAgLTc1LDkwICs3NCwyMiBAQCBEb3dubG9h
ZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3duCiAgICAgbV9kb3dubG9hZE1hbmFnZXIu
ZGlkQ3JlYXRlRG93bmxvYWQoKTsKIH0KICNlbmRpZgotI2Vsc2UKLURvd25sb2FkOjpEb3dubG9h
ZChEb3dubG9hZE1hbmFnZXImIGRvd25sb2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElE
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
TmFtZSkKLSAgICA6IG1fZG93bmxvYWRNYW5hZ2VyKGRvd25sb2FkTWFuYWdlcikKLSAgICAsIG1f
ZG93bmxvYWRJRChkb3dubG9hZElEKQotICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCi0gICAgLCBt
X3N1Z2dlc3RlZE5hbWUoc3VnZ2VzdGVkTmFtZSkKLXsKLSAgICBBU1NFUlQobV9kb3dubG9hZElE
LmRvd25sb2FkSUQoKSk7Ci0KLSAgICBtX2Rvd25sb2FkTWFuYWdlci5kaWRDcmVhdGVEb3dubG9h
ZCgpOwotfQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAKIERvd25sb2FkOjp+RG93
bmxvYWQoKQogewotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIGZvciAoYXV0byYgZmls
ZVJlZmVyZW5jZSA6IG1fYmxvYkZpbGVSZWZlcmVuY2VzKQotICAgICAgICBmaWxlUmVmZXJlbmNl
LT5yZXZva2VGaWxlQWNjZXNzKCk7Ci0KLSAgICBpZiAobV9yZXNvdXJjZUhhbmRsZSkgewotICAg
ICAgICBtX3Jlc291cmNlSGFuZGxlLT5jbGVhckNsaWVudCgpOwotICAgICAgICBtX3Jlc291cmNl
SGFuZGxlLT5jYW5jZWwoKTsKLSAgICAgICAgbV9yZXNvdXJjZUhhbmRsZSA9IG51bGxwdHI7Ci0g
ICAgfQotICAgIG1fZG93bmxvYWRDbGllbnQgPSBudWxscHRyOwotCi0gICAgcGxhdGZvcm1JbnZh
bGlkYXRlKCk7Ci0jZW5kaWYKLQogICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRpZERlc3Ryb3lEb3du
bG9hZCgpOwogfQogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi12b2lkIERvd25sb2FkOjpz
dGFydCgpCi17Ci0gICAgaWYgKG1fcmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKSB7Ci0g
ICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JEb3dubG9hZENs
aWVudD4oKnRoaXMpOwotICAgICAgICBib29sIGRlZmVyc0xvYWRpbmcgPSBmYWxzZTsKLSAgICAg
ICAgYm9vbCBzaG91bGRDb250ZW50U25pZmYgPSBmYWxzZTsKLSAgICAgICAgYm9vbCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiA9IHRydWU7Ci0gICAgICAgIG1fcmVzb3VyY2VIYW5kbGUgPSBS
ZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKG51bGxwdHIsIG1fcmVxdWVzdCwgbV9kb3dubG9hZENsaWVu
dC5nZXQoKSwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50
RW5jb2RpbmdTbmlmZik7Ci0gICAgICAgIGRpZFN0YXJ0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBzdGFydE5ldHdvcmtMb2FkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnN0YXJ0
V2l0aEhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKLXsKLSAgICBpZiAobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkp
IHsKLSAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYkRvd25s
b2FkQ2xpZW50PigqdGhpcyk7Ci0gICAgICAgIGJvb2wgZGVmZXJzTG9hZGluZyA9IGZhbHNlOwot
ICAgICAgICBib29sIHNob3VsZENvbnRlbnRTbmlmZiA9IGZhbHNlOwotICAgICAgICBib29sIHNo
b3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmID0gdHJ1ZTsKLSAgICAgICAgbV9yZXNvdXJjZUhhbmRs
ZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUobnVsbHB0ciwgbV9yZXF1ZXN0LCBtX2Rvd25sb2Fk
Q2xpZW50LmdldCgpLCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmKTsKLSAgICAgICAgZGlkU3RhcnQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHN0YXJ0TmV0d29ya0xvYWRXaXRoSGFuZGxlKGhhbmRsZSwgcmVzcG9u
c2UpOwotfQotI2VuZGlmCi0KIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCiB7Ci0jaWYgVVNFKE5F
VFdPUktfU0VTU0lPTikKICAgICBpZiAobV9kb3dubG9hZCkgewogICAgICAgICBtX2Rvd25sb2Fk
LT5jYW5jZWwoKTsKICAgICAgICAgZGlkQ2FuY2VsKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0jZWxzZQotICAgIGlmIChtX3JlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkgewot
ICAgICAgICBhdXRvIHJlc291cmNlSGFuZGxlID0gV1RGTW92ZShtX3Jlc291cmNlSGFuZGxlKTsK
LSAgICAgICAgcmVzb3VyY2VIYW5kbGUtPmNhbmNlbCgpOwotICAgICAgICBzdGF0aWNfY2FzdDxC
bG9iRG93bmxvYWRDbGllbnQqPihtX2Rvd25sb2FkQ2xpZW50LmdldCgpKS0+ZGlkQ2FuY2VsKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKICAgICBwbGF0Zm9ybUNhbmNlbE5ldHdv
cmtMb2FkKCk7CiB9CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBEb3dubG9hZDo6
ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmIChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuaXNQYXNzd29yZEJh
c2VkKCkgJiYgIWNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKS5pc0VtcHR5KCkgJiYgIWNo
YWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpKSB7CkBAIC0xNjgsODEgKzk5LDYgQEAgdm9p
ZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdAogCiAgICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9Ci0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKLQotI2lmICFVU0UoTkVU
V09SS19TRVNTSU9OKQotdm9pZCBEb3dubG9hZDo6ZGlkU3RhcnQoKQotewotICAgIHNlbmQoTWVz
c2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFN0YXJ0KG1fcmVxdWVzdCwgbV9zdWdnZXN0ZWROYW1l
KSk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9h
ZFByb3h5OjpXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3Zl
KHJlZGlyZWN0UmVzcG9uc2UpKSk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpCi17Ci0gICAgbV9kb3dubG9hZE1hbmFnZXIuZG93bmxvYWRzQXV0
aGVudGljYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0
aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IENyZWF0ZWQgKGlkID0g
JSIgUFJJdTY0ICIpIiwgZG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSk7Ci0KLSAgICBtX3Jlc3Bv
bnNlTUlNRVR5cGUgPSByZXNwb25zZS5taW1lVHlwZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OkRv
d25sb2FkUHJveHk6OkRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSkpOwotfQotCi1ib29sIERv
d25sb2FkOjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQotewotICAgIGJvb2wgcmVzdWx0OwotICAgIGlmICghc2VuZFN5bmMoTWVzc2FnZXM6
OkRvd25sb2FkUHJveHk6OlNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKG1pbWVUeXBl
KSwgTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OlNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVU
eXBlOjpSZXBseShyZXN1bHQpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi1TdHJpbmcgRG93bmxvYWQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRl
KQotewotICAgIFN0cmluZyBkZXN0aW5hdGlvbjsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIXNlbmRTeW5jKE1lc3NhZ2VzOjpE
b3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShmaWxl
bmFtZSwgbV9yZXNwb25zZU1JTUVUeXBlKSwgTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOjpSZXBseShkZXN0aW5hdGlvbiwgYWxs
b3dPdmVyd3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKSkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotCi0gICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwotICAgIGlmIChtX3NhbmRib3hF
eHRlbnNpb24pCi0gICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwotCi0gICAg
cmV0dXJuIGRlc3RpbmF0aW9uOwotfQotCi12b2lkIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhkb3dubG9hZElEKCksIHN1Z2dlc3RlZEZpbGVu
YW1lKSk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24o
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCi17Ci0gICAgQVNT
RVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOwotICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKLSAg
ICBpZiAobV9zYW5kYm94RXh0ZW5zaW9uKQotICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNv
bnN1bWUoKTsKLQotICAgIGlmIChtX3JlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkgewot
ICAgICAgICBzdGF0aWNfY2FzdDxCbG9iRG93bmxvYWRDbGllbnQqPihtX2Rvd25sb2FkQ2xpZW50
LmdldCgpKS0+ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihkZXN0aW5hdGlvblBhdGgsIGFs
bG93T3ZlcndyaXRlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZvciBub3cs
IG9ubHkgQmxvYiBVUkwgZG93bmxvYWRzIGdvIHRocm91Z2ggdGhpcyBjb2RlIHBhdGguCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmNvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlKCkKLXsKLSAgICBtX3Jlc291cmNlSGFuZGxlLT5jb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpOwotfQotI2VuZGlmCiAKIHZvaWQgRG93bmxvYWQ6OmRpZENyZWF0ZURlc3Rp
bmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKQEAgLTI2MywxMCArMTE5LDYgQEAgdm9pZCBE
b3dubG9hZDo6ZGlkRmluaXNoKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRG
aW5pc2g6IChpZCA9ICUiIFBSSXU2NCAiKSIsIGRvd25sb2FkSUQoKS5kb3dubG9hZElEKCkpOwog
Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgcGxhdGZvcm1EaWRGaW5pc2goKTsKLSNl
bmRpZgotCiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkRmluaXNoKCkpOwog
CiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikgewpAQCAtMzE2LDcgKzE2OCw3IEBAIHVpbnQ2
NF90IERvd25sb2FkOjptZXNzYWdlU2VuZGVyRGVzdGluYXQKIAogYm9vbCBEb3dubG9hZDo6aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKIHsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9O
KSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gbV9z
ZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7CiAjZWxzZQogICAgIHJldHVybiBm
YWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
OSBAQAogCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKKyNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
QEAgLTM2LDE4ICszOCw5IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSNpbmNsdWRl
ICJOZXR3b3JrRGF0YVRhc2suaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmg+CiAjaWYgUExBVEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRv
d25sb2FkVGFzazsKICNlbmRpZgotI2Vsc2UgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKLSNpZiBQ
TEFURk9STShDT0NPQSkKLU9CSkNfQ0xBU1MgTlNVUkxEb3dubG9hZDsKLU9CSkNfQ0xBU1MgV0tE
b3dubG9hZEFzRGVsZWdhdGU7Ci0jZW5kaWYKLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9O
KQogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CkBAIC03Myw0NSArNjYs
MjEgQEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIERvd25sb2FkIDogcHVibGljIElQQzo6TWVzc2Fn
ZVNlbmRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG93bmxvYWQpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIERv
d25sb2FkKERvd25sb2FkTWFuYWdlciYsIERvd25sb2FkSUQsIE5ldHdvcmtEYXRhVGFzayYsIGNv
bnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUgPSB7IH0pOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIERvd25sb2FkKERvd25sb2Fk
TWFuYWdlciYsIERvd25sb2FkSUQsIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayosIGNvbnN0IFBB
TDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUg
PSB7IH0pOwogI2VuZGlmCi0jZWxzZQotICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdlciYsIERv
d25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0pOwotI2VuZGlmCiAKICAgICB+RG93bmxvYWQoKTsKIAot
I2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIHZvaWQgc2V0QmxvYkZpbGVSZWZlcmVuY2Vz
KFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mJiBmaWxlUmVm
ZXJlbmNlcykgeyBtX2Jsb2JGaWxlUmVmZXJlbmNlcyA9IFdURk1vdmUoZmlsZVJlZmVyZW5jZXMp
OyB9Ci0KLSAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBzdGFydFdpdGhIYW5kbGUoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0j
ZW5kaWYKICAgICB2b2lkIHJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogICAg
IHZvaWQgY2FuY2VsKCk7CiAKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJl
dHVybiBtX2Rvd25sb2FkSUQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUoKSBj
b25zdCB7IHJldHVybiBtX3N1Z2dlc3RlZE5hbWU7IH0KIAotI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCiAgICAgdm9pZCBzZXRTYW5kYm94RXh0ZW5zaW9uKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
PiYmIHNhbmRib3hFeHRlbnNpb24pIHsgbV9zYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZShzYW5k
Ym94RXh0ZW5zaW9uKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYpOwotI2Vsc2UKLSAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qo
KSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
OwotICAgIHZvaWQgZGlkU3RhcnQoKTsKLSAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0gICAgU3RyaW5nIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3Zlcndy
aXRlKTsKLSAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5
bmMoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9u
KGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7Ci0gICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSgpOwotICAgIHZvaWQgcGxhdGZvcm1EaWRGaW5pc2goKTsKLSNlbmRpZgogICAgIHZvaWQg
ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKQEAgLTEy
MywxMSArOTIsNiBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIG92ZXJyaWRlOwogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgdm9p
ZCBzdGFydE5ldHdvcmtMb2FkKCk7Ci0gICAgdm9pZCBzdGFydE5ldHdvcmtMb2FkV2l0aEhhbmRs
ZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwotI2VuZGlmCiAgICAgdm9pZCBw
bGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKCk7CiAKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpIGNvbnN0OwpAQCAtMTM4LDIyICsxMDIsMTEgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IG1fYmxvYkZpbGVSZWZl
cmVuY2VzOwogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247
CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+
IG1fZG93bmxvYWQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5TVVJMU2Vz
c2lvbkRvd25sb2FkVGFzaz4gbV9kb3dubG9hZFRhc2s7CiAjZW5kaWYKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKLSNlbHNlIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBTdHJpbmcgbV9yZXNwb25zZU1J
TUVUeXBlOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxOU1VSTERvd25sb2Fk
PiBtX25zVVJMRG93bmxvYWQ7Ci0gICAgUmV0YWluUHRyPFdLRG93bmxvYWRBc0RlbGVnYXRlPiBt
X2RlbGVnYXRlOwotI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwotICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNT
SU9OKQogICAgIFN0cmluZyBtX3N1Z2dlc3RlZE5hbWU7CiAgICAgYm9vbCBtX2hhc1JlY2VpdmVk
RGF0YSB7IGZhbHNlIH07CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCShyZXZpc2lvbiAy
MjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIERvd25sb2FkTWFu
YWdlcjo6RG93bmxvYWRNYW5hZ2VyKENsaWVudCYKIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0
YXJ0RG93bmxvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKIHsKLSNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gU2Vzc2lv
blRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYgKCFuZXR3b3JrU2Vz
c2lvbikKICAgICAgICAgcmV0dXJuOwpAQCAtNjEsMjIgKzYwLDggQEAgdm9pZCBEb3dubG9hZE1h
bmFnZXI6OnN0YXJ0RG93bmxvYWQoTmV0dwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAKICAgICBtX3Bl
bmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rv
d25sb2FkPihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24s
IHN1Z2dlc3RlZE5hbWUpKTsKLSNlbHNlCi0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91
bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1l
KTsKLSAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpICYmIGNvbm5lY3Rpb24p
IHsKLSAgICAgICAgYXV0byBibG9iRmlsZVJlZmVyZW5jZXMgPSBOZXR3b3JrQmxvYlJlZ2lzdHJ5
OjpzaW5nbGV0b24oKS5maWxlc0luQmxvYigqY29ubmVjdGlvbiwgcmVxdWVzdC51cmwoKSk7Ci0g
ICAgICAgIGZvciAoYXV0byYgZmlsZVJlZmVyZW5jZSA6IGJsb2JGaWxlUmVmZXJlbmNlcykKLSAg
ICAgICAgICAgIGZpbGVSZWZlcmVuY2UtPnByZXBhcmVGb3JGaWxlQWNjZXNzKCk7Ci0gICAgICAg
IGRvd25sb2FkLT5zZXRCbG9iRmlsZVJlZmVyZW5jZXMoV1RGTW92ZShibG9iRmlsZVJlZmVyZW5j
ZXMpKTsKLSAgICB9Ci0gICAgZG93bmxvYWQtPnN0YXJ0KCk7Ci0KLSAgICBBU1NFUlQoIW1fZG93
bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxv
YWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwotI2VuZGlmCiB9CiAKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNr
KERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkPiYmIGRvd25s
b2FkKQogewogICAgIEFTU0VSVChtX3BlbmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJ
RCkpOwpAQCAtMTAwLDMxICs4NSwxNSBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lk
ZVBlbmRpbmdECiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0
aW5hdGlvbi5zZXQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3BhaXI8UmVmUHRyPE5ldHdvcmtEYXRh
VGFzaz4sIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXI+KCZuZXR3b3JrRGF0YVRhc2ssIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQog
CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3du
bG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiBuZXR3b3Jr
TG9hZCwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYmIGJs
b2JGaWxlUmVmZXJlbmNlcywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQog
ICAgIEFTU0VSVCghbV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKICAg
ICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ0Rvd25sb2FkPihXVEZNb3ZlKG5ldHdvcmtMb2FkKSwgZG93bmxvYWRJRCwgcmVxdWVzdCwg
cmVzcG9uc2UpKTsKLSNlbHNlCi0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8
RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCByZXF1ZXN0KTsKLSAgICBkb3dubG9hZC0+c2V0
QmxvYkZpbGVSZWZlcmVuY2VzKFdURk1vdmUoYmxvYkZpbGVSZWZlcmVuY2VzKSk7Ci0KLSAgICBh
dXRvKiBoYW5kbGUgPSBuZXR3b3JrTG9hZC0+aGFuZGxlKCk7Ci0gICAgQVNTRVJUKGhhbmRsZSk7
Ci0gICAgZG93bmxvYWQtPnN0YXJ0V2l0aEhhbmRsZShoYW5kbGUsIHJlc3BvbnNlKTsKLSAgICBB
U1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX2Rvd25sb2Fk
cy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwotCi0gICAgLy8gVW5ibG9jayB0
aGUgVVJMIGNvbm5lY3Rpb24gb3BlcmF0aW9uIHF1ZXVlLgotICAgIGhhbmRsZS0+Y29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UoKTsKLSNlbmRpZgogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6
Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25s
b2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKIHsKLSNpZiBVU0UoTkVU
V09SS19TRVNTSU9OKQogICAgIGlmIChtX2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0aW5hdGlvbi5j
b250YWlucyhkb3dubG9hZElEKSkgewogICAgICAgICBhdXRvIHBhaXIgPSBtX2Rvd25sb2Fkc1dh
aXRpbmdGb3JEZXN0aW5hdGlvbi50YWtlKGRvd25sb2FkSUQpOwogICAgICAgICBhdXRvIG5ldHdv
cmtEYXRhVGFzayA9IFdURk1vdmUocGFpci5maXJzdCk7CkBAIC0xNDYsMjMgKzExNSwxNCBAQCB2
b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kCiAgICAgICAgIEFTU0VSVCgh
bV9kb3dubG9hZHNBZnRlckRlc3RpbmF0aW9uRGVjaWRlZC5jb250YWlucyhkb3dubG9hZElEKSk7
CiAgICAgICAgIG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lkZWQuc2V0KGRvd25sb2Fk
SUQsIG5ldHdvcmtEYXRhVGFzayk7CiAgICAgfQotI2Vsc2UKLSAgICBpZiAoYXV0byogd2FpdGlu
Z0Rvd25sb2FkID0gZG93bmxvYWQoZG93bmxvYWRJRCkpCi0gICAgICAgIHdhaXRpbmdEb3dubG9h
ZC0+ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihkZXN0aW5hdGlvbiwgV1RGTW92ZShzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKSwgYWxsb3dPdmVyd3JpdGUpOwotI2VuZGlmCiB9CiAKIHZvaWQg
RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVE
YXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCiB7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYgIVBMQVRG
T1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
I2Vsc2UKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lv
bklEKTsKLSNlbHNlCi0gICAgLy8gRG93bmxvYWQ6OnJlc3VtZSgpIGlzIHJlc3BvbnNpYmxlIGZv
ciBzZXR0aW5nIHRoZSBEb3dubG9hZCdzIHJlc291cmNlIHJlcXVlc3QuCi0gICAgYXV0byBkb3du
bG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBSZXNv
dXJjZVJlcXVlc3QoKSk7Ci0jZW5kaWYKIAogICAgIGRvd25sb2FkLT5yZXN1bWUocmVzdW1lRGF0
YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgQVNTRVJUKCFt
X2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CkBAIC0xNzMsMTQgKzEzMywxMSBAQCB2
b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMCiB2b2lkIERvd25sb2FkTWFu
YWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQogewogICAgIGlmIChE
b3dubG9hZCogZG93bmxvYWQgPSBtX2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCkpIHsKLSNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWRzV2FpdGluZ0Zv
ckRlc3RpbmF0aW9uLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKICAgICAgICAgQVNTRVJUKCFtX3Bl
bmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwotI2VuZGlmCiAgICAgICAgIGRv
d25sb2FkLT5jYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQogICAgIGF1dG8gcGVuZGluZ0Rvd25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRz
LnRha2UoZG93bmxvYWRJRCk7CiAgICAgaWYgKG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3RpbmF0
aW9uLmNvbnRhaW5zKGRvd25sb2FkSUQpKSB7CiAgICAgICAgIGF1dG8gcGFpciA9IG1fZG93bmxv
YWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uLnRha2UoZG93bmxvYWRJRCk7CkBAIC0xOTcsNyArMTU0
LDYgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2FkKERvdwogCiAgICAgaWYg
KHBlbmRpbmdEb3dubG9hZCkKICAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5jYW5jZWwoKTsKLSNl
bmRpZgogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5pc2hlZChEb3dubG9h
ZCogZG93bmxvYWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNpb24gMjI3MjMyKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDE5ICs3MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWREZXN0cm95RG93bmxvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgSVBDOjpD
b25uZWN0aW9uKiBkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpID0gMDsKICAgICAgICAgdmlydHVh
bCBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigp
ID0gMDsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGVu
ZGluZ0Rvd25sb2FkQ2FuY2VsZWQoRG93bmxvYWRJRCkgPSAwOwotI2VuZGlmCiAgICAgfTsKIAog
ICAgIGV4cGxpY2l0IERvd25sb2FkTWFuYWdlcihDbGllbnQmKTsKIAogICAgIHZvaWQgc3RhcnRE
b3dubG9hZChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIFBBTDo6U2Vzc2lvbklELCBE
b3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZE5hbWUgPSB7IH0pOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9p
ZCBkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8
RG93bmxvYWQ+JiYpOwogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgd2lsbERlY2lkZVBlbmRp
bmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJik7Ci0jZW5kaWYKICAgICB2b2lkIGNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxv
YWQoRG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2
b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwg
U3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxv
d092ZXJ3cml0ZSk7CiAKQEAgLTEwNCwxMSArMTAwLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIENsaWVudCYgbV9jbGllbnQ7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBIYXNo
TWFwPERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRG93bmxvYWQ+PiBtX3BlbmRp
bmdEb3dubG9hZHM7CiAgICAgSGFzaE1hcDxEb3dubG9hZElELCBzdGQ6OnBhaXI8UmVmUHRyPE5l
dHdvcmtEYXRhVGFzaz4sIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXI+PiBtX2Rvd25sb2Fkc1dh
aXRpbmdGb3JEZXN0aW5hdGlvbjsKICAgICBIYXNoTWFwPERvd25sb2FkSUQsIFJlZlB0cjxOZXR3
b3JrRGF0YVRhc2s+PiBtX2Rvd25sb2Fkc0FmdGVyRGVzdGluYXRpb25EZWNpZGVkOwotI2VuZGlm
CiAgICAgSGFzaE1hcDxEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+PiBtX2Rv
d25sb2FkczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAkocmV2aXNpb24gMjI3MjMy
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlBlbmRpbmdEb3dubG9hZC5oIgogCi0jaWYgVVNFKE5FVFdPUktfU0VT
U0lPTikKLQogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFBy
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgpAQCAtMTAxLDUgKzk5LDMg
QEAgdWludDY0X3QgUGVuZGluZ0Rvd25sb2FkOjptZXNzYWdlU2VuZGVyRAogfQogICAgIAogfQot
Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1Bl
bmRpbmdEb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTAgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBlbmRpbmdEb3dubG9hZF9oCi0jZGVmaW5lIFBlbmRp
bmdEb3dubG9hZF9oCi0KLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQu
aCIKQEAgLTc1LDcgKzcyLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0KLQotI2VuZGlmCi0KLSNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93
bmxvYWRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCShyZXZpc2lvbiAyMjcyMzIpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIkRvd25sb2FkLmgiCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW1w
b3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAj
aW1wb3J0ICJTZXNzaW9uVHJhY2tlci5oIgpAQCAtNzQsNSArNzIsMyBAQCB2b2lkIERvd25sb2Fk
OjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkCiB9CiAKIH0KLQotI2VuZGlmIC8vIFVTRShORVRX
T1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9pb3MvRG93bmxvYWRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCShyZXZpc2lvbiAyMjcyMzIpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1Mu
bW0JKG5vbmV4aXN0ZW50KQpAQCAtMSwxNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiRG93bmxvYWQuaCIKLQotI2lmIFVTRShDRk5FVFdPUkspICYm
ICFVU0UoTkVUV09SS19TRVNTSU9OKQotCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1w
b3J0IDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8g
RklYTUU6IElmIHBvc3NpYmxlLCB3ZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHNvbWUgY2FsbGJh
Y2tzIG9mZiB0aGUgbWFpbiB0aHJlYWQgb3IgYXQgbGVhc3QKLS8vIG1ha2luZyB0aGVtIGFzeW5j
aG9ub3VzIGNhbGxzLgotc3RhdGljIHZvaWQgZGlzcGF0Y2hPbk1haW5UaHJlYWQodm9pZCheYmxv
Y2spKCkpCi17Ci0gICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKSB7Ci0gICAgICAgIGJsb2NrKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKLX0KLQotc3RhdGljIGlubGluZSBEb3dubG9hZCogdG9E
b3dubG9hZChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxEb3dubG9hZCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLX0KLQotc3RhdGlj
IHZvaWQgc2V0VXBEb3dubG9hZENsaWVudChDRlVSTERvd25sb2FkQ2xpZW50JiBjbGllbnQsIERv
d25sb2FkJiBkb3dubG9hZCkKLXsKLSAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVu
dCkpOwotICAgIGNsaWVudC5jbGllbnRJbmZvID0gJmRvd25sb2FkOwotCi0gICAgY2xpZW50LmRp
ZFN0YXJ0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChj
bGllbnRJbmZvKS0+ZGlkU3RhcnQoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVu
dC53aWxsU2VuZFJlcXVlc3QgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlcXVlc3RSZWYg
cmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9pZCopIC0+IENGVVJMUmVxdWVzdFJl
ZiB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlVSTFJlcXVlc3RSZWY+KENGUmV0YWlu
KHJlcXVlc3QpKTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSA9IFtd
KENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAg
ICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7
Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBbXShD
RlVSTERvd25sb2FkUmVmLCBDRkluZGV4IGxlbmd0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykg
ewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9h
ZChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZURhdGEobGVuZ3RoKTsKLSAgICAgICAgfSk7Ci0gICAg
fTsKLQotICAgIGNsaWVudC5zaG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZSA9IFtdKENGVVJMRG93
bmxvYWRSZWYsIENGU3RyaW5nUmVmIGVuY29kaW5nVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykgLT4gQm9vbGVhbiB7Ci0gICAgICAgIF9fYmxvY2sgQk9PTCByZXR1cm5WYWx1ZSA9IE5POwot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZShlbmNvZGluZ1R5cGUpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwotICAgIH07Ci0KLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2Jq
ZWN0TmFtZSA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGU3RyaW5nUmVmIG9i
amVjdE5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoXnsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgICAgICAg
ICBTdHJpbmcgZGVzdGluYXRpb24gPSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShvYmplY3ROYW1lLCBhbGxvd092ZXJ3cml0ZSk7
Ci0gICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICAgICAgICAg
IENGVVJMRG93bmxvYWRTZXREZXN0aW5hdGlvbihkb3dubG9hZFJlZiwgcmVpbnRlcnByZXRfY2Fz
dDxDRlVSTFJlZj4oW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkZXN0aW5hdGlvbl0pLCBhbGxvd092
ZXJ3cml0ZSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkQ3JlYXRlRGVz
dGluYXRpb24gPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlZiBwYXRoLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAg
ICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihDRlVSTEdl
dFN0cmluZyhwYXRoKSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkRmlu
aXNoID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAg
ICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGll
bnRJbmZvKS0+ZGlkRmluaXNoKCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQu
ZGlkRmFpbCA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGRXJyb3JSZWYgZXJy
b3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJl
YWQoXnsKLSAgICAgICAgICAgIGF1dG8gcmVzdW1lRGF0YSA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9h
ZENvcHlSZXN1bWVEYXRhKGRvd25sb2FkUmVmKSk7Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNs
aWVudEluZm8pLT5kaWRGYWlsKGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVzdW1lRGF0YSA/
IENGRGF0YUdldEJ5dGVQdHIocmVzdW1lRGF0YS5nZXQoKSkgOiBudWxscHRyLCByZXN1bWVEYXRh
ID8gQ0ZEYXRhR2V0TGVuZ3RoKHJlc3VtZURhdGEuZ2V0KCkpIDogMCkpOwotICAgICAgICB9KTsK
LSAgICB9OwotfQotCi12b2lkIERvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkKCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnROZXR3
b3JrTG9hZFdpdGhIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0gICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7Ci0g
ICAgc2V0VXBEb3dubG9hZENsaWVudChjbGllbnQsICp0aGlzKTsKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNh
dGVkLWRlY2xhcmF0aW9ucyIKLSAgICBtX2Rvd25sb2FkID0gYWRvcHRDRihDRlVSTERvd25sb2Fk
Q3JlYXRlQW5kU3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oTlVMTCwgaGFuZGxlLT5yZWxlYXNl
Q29ubmVjdGlvbkZvckRvd25sb2FkKCkuZ2V0KCksIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpLCByZXNwb25zZS5jZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKLSNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5j
ZWxOZXR3b3JrTG9hZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3du
bG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRX
T1JLKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHJl
dmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L21hYy9Eb3dubG9hZE1hYy5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDI3OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEb3dubG9hZC5oIgot
Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0KLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIK
LSNpbXBvcnQgIldlYlBhZ2UuaCIKLSNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5k
bGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1VS
TERvd25sb2FkU1BJLmg+Ci0KLUBpbnRlcmZhY2UgV0tEb3dubG9hZEFzRGVsZWdhdGUgOiBOU09i
amVjdCA8TlNVUkxEb3dubG9hZERlbGVnYXRlPiB7Ci0gICAgV2ViS2l0OjpEb3dubG9hZCogX2Rv
d25sb2FkOwotfQotLSAoaWQpaW5pdFdpdGhEb3dubG9hZDooV2ViS2l0OjpEb3dubG9hZCopZG93
bmxvYWQ7Ci0tICh2b2lkKWludmFsaWRhdGU7Ci1AZW5kCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3Jr
TG9hZCgpCi17Ci0gICAgQVNTRVJUKCFtX25zVVJMRG93bmxvYWQpOwotICAgIEFTU0VSVCghbV9k
ZWxlZ2F0ZSk7Ci0KLSAgICBtX2RlbGVnYXRlID0gYWRvcHROUyhbW1dLRG93bmxvYWRBc0RlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aERvd25sb2FkOnRoaXNdKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVk
LWRlY2xhcmF0aW9ucyIKLSAgICBtX25zVVJMRG93bmxvYWQgPSBhZG9wdE5TKFtbTlNVUkxEb3du
bG9hZCBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0Om1fcmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRl
SFRUUEJvZHkpIGRlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldKTsKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKLQotICAgIC8vIEZJWE1FOiBBbGxvdyB0aGlzIHRvIGJlIGNoYW5nZWQgYnkg
dGhlIGNsaWVudC4KLSAgICBbbV9uc1VSTERvd25sb2FkIHNldERlbGV0ZXNGaWxlVXBvbkZhaWx1
cmU6Tk9dOwotfQotCi12b2lkIERvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkV2l0aEhhbmRsZShS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
LXsKLSAgICBBU1NFUlQoIW1fbnNVUkxEb3dubG9hZCk7Ci0gICAgQVNTRVJUKCFtX2RlbGVnYXRl
KTsKLQotICAgIG1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tEb3dubG9hZEFzRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoRG93bmxvYWQ6dGhpc10pOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1
c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFy
YXRpb25zIgotICAgIG1fbnNVUkxEb3dubG9hZCA9IFtOU1VSTERvd25sb2FkIF9kb3dubG9hZFdp
dGhMb2FkaW5nQ29ubmVjdGlvbjpoYW5kbGUtPmNvbm5lY3Rpb24oKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDptX3Jl
cXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTpyZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5
Om5pbF07Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0KLSAgICAvLyBGSVhNRTogQWxs
b3cgdGhpcyB0byBiZSBjaGFuZ2VkIGJ5IHRoZSBjbGllbnQuCi0gICAgW21fbnNVUkxEb3dubG9h
ZCBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlOk5PXTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVz
dW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQot
ewotICAgIEFTU0VSVCghbV9uc1VSTERvd25sb2FkKTsKLSAgICBBU1NFUlQoIW1fZGVsZWdhdGUp
OwotCi0gICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdU
Rk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwotICAgIGlmIChtX3NhbmRib3hFeHRlbnNp
b24pCi0gICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwotCi0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgbV9kZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS0Rv
d25sb2FkQXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEb3dubG9hZDp0aGlzXSk7Ci0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcG9wCi0KLSAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoW1tOU0Rh
dGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cmVzdW1lRGF0YS5kYXRhKCkgbGVuZ3RoOnJlc3VtZURh
dGEuc2l6ZSgpXSk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgbV9u
c1VSTERvd25sb2FkID0gYWRvcHROUyhbW05TVVJMRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoUmVz
dW1lRGF0YTpuc0RhdGEuZ2V0KCkgZGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKSBwYXRoOnBhdGhd
KTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLQotICAgIG1fcmVxdWVzdCA9IFttX25z
VVJMRG93bmxvYWQgcmVxdWVzdF07Ci0KLSAgICAvLyBGSVhNRTogQWxsb3cgdGhpcyB0byBiZSBj
aGFuZ2VkIGJ5IHRoZSBjbGllbnQuCi0gICAgW21fbnNVUkxEb3dubG9hZCBzZXREZWxldGVzRmls
ZVVwb25GYWlsdXJlOk5PXTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3
b3JrTG9hZCgpCi17Ci0gICAgW21fbnNVUkxEb3dubG9hZCBjYW5jZWxdOwotCi0gICAgUmV0YWlu
UHRyPE5TRGF0YT4gcmVzdW1lRGF0YSA9IFttX25zVVJMRG93bmxvYWQgcmVzdW1lRGF0YV07Ci0g
ICAgZGlkQ2FuY2VsKElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihbcmVzdW1lRGF0YSBieXRlc10pLCBbcmVzdW1lRGF0YSBsZW5ndGhdKSk7Ci19Ci0K
LXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0gICAgaWYgKG1fZGVsZWdh
dGUpIHsKLSAgICAgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07Ci0gICAgICAgIG1fZGVsZWdh
dGUgPSBudWxscHRyOwotICAgIH0KLSAgICBtX25zVVJMRG93bmxvYWQgPSBudWxscHRyOwotfQot
Ci12b2lkIERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCi17Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi1AaW1wbGVtZW50YXRpb24gV0tEb3dubG9hZEFzRGVsZWdhdGUKLQotLy8g
RklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlc2UgY2FsbGJhY2tzIHdvdWxkbid0IGhhdmUg
dG8gYmUgaW52b2tlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi1zdGF0aWMgdm9pZCBkaXNwYXRjaE9u
TWFpblRocmVhZCh2b2lkICheYmxvY2spKCkpCi17Ci0gICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigp
KSB7Ci0gICAgICAgIGJsb2NrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkaXNw
YXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKLX0KLQotLSAoaWQp
aW5pdFdpdGhEb3dubG9hZDooV2ViS2l0OjpEb3dubG9hZCopZG93bmxvYWQKLXsKLSAgICBzZWxm
ID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQot
ICAgIF9kb3dubG9hZCA9IGRvd25sb2FkOwotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lk
KWludmFsaWRhdGUKLXsKLSAgICBfZG93bmxvYWQgPSAwOwotfQotCi0tICh2b2lkKWRvd25sb2Fk
RGlkQmVnaW46KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZAotewotICAgIGRpc3BhdGNoT25NYWlu
VGhyZWFkKF57Ci0gICAgICAgIGlmIChfZG93bmxvYWQpCi0gICAgICAgICAgICBfZG93bmxvYWQt
PmRpZFN0YXJ0KCk7Ci0gICAgfSk7Ci19Ci0KLS0gKE5TVVJMUmVxdWVzdCAqKWRvd25sb2FkOihO
U1VSTERvd25sb2FkICopZG93bmxvYWQgd2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0IHJlZGlyZWN0UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNl
Ci17Ci0gICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXiB7Ci0gICAgICAgIGlmIChfZG93bmxvYWQg
JiYgcmVkaXJlY3RSZXNwb25zZSAmJiAhW3JlcXVlc3QuVVJMIGlzRXF1YWw6cmVkaXJlY3RSZXNw
b25zZS5VUkxdKQotICAgICAgICAgICAgX2Rvd25sb2FkLT53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIH0pOwotICAgIHJldHVybiByZXF1
ZXN0OwotfQotCi0tIChCT09MKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopY29ubmVjdGlvbiBj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOihOU1VSTFByb3RlY3Rpb25TcGFj
ZSAqKXByb3RlY3Rpb25TcGFjZQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKHZvaWQpZG93bmxvYWQ6KE5T
VVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKLXsKLSAgICBkaXNwYXRj
aE9uTWFpblRocmVhZCheewotICAgICAgICBpZiAoX2Rvd25sb2FkKQotICAgICAgICAgICAgX2Rv
d25sb2FkLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29yZShjaGFsbGVuZ2Up
KTsKLSAgICB9KTsKLX0KLQotLSAoQk9PTClkb3dubG9hZFNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlOihOU1VSTERvd25sb2FkICopZG93bmxvYWQKLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0g
KHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlUmVzcG9u
c2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQotewotICAgIGRpc3BhdGNoT25NYWluVGhyZWFk
KF57Ci0gICAgICAgIGlmIChfZG93bmxvYWQpCi0gICAgICAgICAgICBfZG93bmxvYWQtPmRpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpZG93bmxvYWQ6
KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCB3aWxsUmVzdW1lV2l0aFJlc3BvbnNlOihOU1VSTFJl
c3BvbnNlICopcmVzcG9uc2UgZnJvbUJ5dGU6KGxvbmcgbG9uZylzdGFydGluZ0J5dGUKLXsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLS0gKHZv
aWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlRGF0YU9mTGVu
Z3RoOihOU1VJbnRlZ2VyKWxlbmd0aAotewotICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0g
ICAgICAgIGlmIChfZG93bmxvYWQpCi0gICAgICAgICAgICBfZG93bmxvYWQtPmRpZFJlY2VpdmVE
YXRhKGxlbmd0aCk7Ci0gICAgfSk7Ci19Ci0KLS0gKEJPT0wpZG93bmxvYWQ6KE5TVVJMRG93bmxv
YWQgKilkb3dubG9hZCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTooTlNTdHJpbmcg
KillbmNvZGluZ1R5cGUKLXsKLSAgICBfX2Jsb2NrIEJPT0wgcmV0dXJuVmFsdWU7Ci0gICAgZGlz
cGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgaWYgKF9kb3dubG9hZCkKLSAgICAgICAgICAg
IHJldHVyblZhbHVlID0gX2Rvd25sb2FkLT5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZShlbmNvZGluZ1R5cGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9
IFlFUzsKLSAgICB9KTsKLQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLX0KLQotLSAodm9pZClk
b3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lCi17Ci0gICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoXnsKLSAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uOwotICAgICAgICBib29sIGFs
bG93T3ZlcndyaXRlOwotICAgICAgICBpZiAoX2Rvd25sb2FkKQotICAgICAgICAgICAgZGVzdGlu
YXRpb24gPSBfZG93bmxvYWQtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KGZpbGVuYW1lLCBhbGxvd092ZXJ3cml0ZSk7Ci0KLSAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5p
c051bGwoKSkKLSAgICAgICAgICAgIFtkb3dubG9hZCBzZXREZXN0aW5hdGlvbjpkZXN0aW5hdGlv
biBhbGxvd092ZXJ3cml0ZTphbGxvd092ZXJ3cml0ZV07Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQp
ZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlvbjoo
TlNTdHJpbmcgKilwYXRoCi17Ci0gICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAg
aWYgKF9kb3dubG9hZCkKLSAgICAgICAgICAgIF9kb3dubG9hZC0+ZGlkQ3JlYXRlRGVzdGluYXRp
b24ocGF0aCk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KE5TVVJM
RG93bmxvYWQgKilkb3dubG9hZAotewotICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAg
ICAgIGlmIChfZG93bmxvYWQpCi0gICAgICAgICAgICBfZG93bmxvYWQtPmRpZEZpbmlzaCgpOwot
ICAgIH0pOwotfQotCi0tICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQg
ZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0gICAgZGlzcGF0Y2hPbk1haW5U
aHJlYWQoXnsKLSAgICAgICAgaWYgKCFfZG93bmxvYWQpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gcmVzdW1lRGF0YSA9IFtkb3dubG9hZCByZXN1bWVE
YXRhXTsKLSAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW3Jlc3VtZURhdGEgYnl0ZXNdKSwgW3Jlc3VtZURhdGEg
bGVuZ3RoXSk7Ci0KLSAgICAgICAgX2Rvd25sb2FkLT5kaWRGYWlsKGVycm9yLCBkYXRhUmVmZXJl
bmNlKTsKLSAgICB9KTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gIVVTRShORVRXT1JLX1NFU1NJ
T04pCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0
eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCShyZXZpc2lvbiAyMjcy
MzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDExICs1OCw3IEBAIFNwZWN1
bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiAKICAgICBwYXJhbWV0ZXJzLmNvbnRl
bnRTbmlmZmluZ1BvbGljeSA9IERvTm90U25pZmZDb250ZW50OwogICAgIHBhcmFtZXRlcnMuY29u
dGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgPSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eTo6U25pZmY7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7Ci0j
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3Vu
aXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycyksICpTZXNzaW9uVHJh
Y2tlcjo6bmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkp
OwotI2Vsc2UKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9h
ZD4oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycykpOwotI2VuZGlmCiB9CiAKIFNwZWN1bGF0aXZl
TG9hZDo6flNwZWN1bGF0aXZlTG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lv
biAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVkZSAiTmV0d29ya0Rh
dGFUYXNrLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KQEAgLTk5LDUgKzk3LDMgQEAgcHJpdmF0ZToK
IFdlYkNvcmU6OkNyZWRlbnRpYWwgc2VydmVyVHJ1c3RDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQko
cmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIgogCi0j
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgiCiAjaW1wb3J0ICJEb3dubG9hZC5oIgogI2ltcG9ydCAiRG93bmxvYWRQcm94eU1lc3NhZ2Vz
LmgiCkBAIC00MzksNSArNDM3LDMgQEAgV2ViQ29yZTo6Q3JlZGVudGlhbCBzZXJ2ZXJUcnVzdENy
ZWRlbnRpYQogfQogCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNp
b24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
UHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KIAogICAgIFNlc3Npb25UcmFja2VyOjpz
ZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwog
Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRT
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRhKHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRh
KCkpOwogICAgIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcihwYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik7
CiAgICAgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKHBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
KTsKQEAgLTg3LDcgKzg2LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplTgogI2lmIFBMQVRGT1JNKElPUykKICAgICBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRDVERh
dGFDb25uZWN0aW9uU2VydmljZVR5cGUocGFyYW1ldGVycy5jdERhdGFDb25uZWN0aW9uU2Vydmlj
ZVR5cGUpOwogI2VuZGlmCi0jZW5kaWYKIAogICAgIGluaXRpYWxpemVOZXR3b3JrU2V0dGluZ3Mo
KTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKLQogT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lv
bjsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwpAQCAtODcsNSArODUsMyBA
QCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0Uo
TkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjI3MjMy
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKIAotI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCi0KICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2ltcG9ydCAiRGF0
YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIKQEAgLTgwMCw1ICs3OTgsMyBAQCBi
b29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFsbG93c1NwZWNpZmljCiB9CiAKIH0KLQotI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
TG9hZE1hYy5tbQkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJOZXR3b3JrTG9hZC5o
IgotCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGUuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotdm9pZCBOZXR3b3Jr
TG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0Nh
Y2hlZFVSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQotewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxl
LCBoYW5kbGUgPT0gbV9oYW5kbGUpOwotCi0gICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hl
UmVzcG9uc2UobnNSZXNwb25zZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gIVVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQko
cmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMiwxMCArMTEyLDgg
QEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2VicwogICAgICAgICBzZXNz
aW9uLT5zZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YShwYXJhbWV0ZXJzLmNhY2hlU3RvcmFn
ZVBlck9yaWdpblF1b3RhKTsKICAgICB9CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAg
IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmxlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlciA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlcj4oKTsKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihz
ZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycykpKTsKLSNlbmRpZgogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDYgQEAgdm9pZCBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2UoYwogICAgIGlk
ZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwogfQogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lP
TikKIHN0YXRpYyBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8TmV0d29ya1Nlc3Npb24+
PiYgc3RhdGljU2Vzc2lvbk1hcCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTczLDE2ICs3MiwxMyBAQCB2b2lkIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKFBBTDo6
U2VzCiB7CiAgICAgc3RhdGljU2Vzc2lvbk1hcCgpLnNldChzZXNzaW9uSUQsIFdURk1vdmUoc2Vz
c2lvbikpOwogfQotI2VuZGlmCiAKIHZvaWQgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgYXV0byBzZXNzaW9uID0gc3RhdGlj
U2Vzc2lvbk1hcCgpLnRha2Uoc2Vzc2lvbklEKTsKICAgICBpZiAoc2Vzc2lvbikKICAgICAgICAg
c2Vzc2lvbi0+aW52YWxpZGF0ZUFuZENhbmNlbCgpOwotI2VuZGlmCiAgICAgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0
NSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBnZXRJZGVudGlmaWVyQmFz
ZSgpOwogICAgIHN0YXRpYyB2b2lkIHNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwog
ICAgIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgc3RhdGljIHZvaWQgc2V0U2Vzc2lv
bihQQUw6OlNlc3Npb25JRCwgUmVmPE5ldHdvcmtTZXNzaW9uPiYmKTsKICAgICBzdGF0aWMgTmV0
d29ya1Nlc3Npb24qIG5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKLSNlbmRpZgogICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE2LDExICsxMTYsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6ZGlkUmVjZWl2ZUF1CiAgICAgQVNTRVJUKGZyYW1lLT5wYWdlKCkpOwogCiAgICAgYXV0byBw
YWdlSUQgPSBmcmFtZS0+cGFnZSgpLT5wYWdlSUQoKTsKLSAgICB1aW50NjRfdCBjaGFsbGVuZ2VJ
RCA9IGFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFwKHtwYWdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAgICAgLCB7IH0KLSNlbmRpZgot
ICAgIH0pOworICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVu
Z2VNYXAoeyBwYWdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB7IH0gfSk7CiAKICAgICAv
LyBDb2FsZXNjZSBjaGFsbGVuZ2VzIGluIHRoZSBzYW1lIHByb3RlY3Rpb24gc3BhY2UgYW5kIGlu
IHRoZSBzYW1lIHBhZ2UuCiAgICAgaWYgKHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHBhZ2VJRCwg
Y2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSkKQEAgLTEyOSw3ICsxMjUsNiBA
QCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgbV9wcm9jZXNz
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGZyYW1lLT5mcmFtZUlEKCksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVu
Z2VJRCksIGZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpKTsKIH0KIAotI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChwYWdl
SUQpOwpAQCAtMTU1LDM3ICsxNTAsNiBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlk
UmVjZWl2ZUF1CiAgICAgCiAgICAgZG93bmxvYWQuc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94
eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBjaGFsbGVuZ2VJRCkpOwogfQotI2VuZGlmCi0KLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lP
TikKLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi17Ci0gICAgQVNTRVJU
KHBhZ2VJRCk7Ci0gICAgQVNTRVJUKGZyYW1lSUQpOwotCi0gICAgdWludDY0X3QgY2hhbGxlbmdl
SUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7cGFnZUlELCBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZX0pOwotCi0gICAgLy8gQ29hbGVzY2UgY2hhbGxlbmdlcyBpbiB0aGUgc2FtZSBwcm90
ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdlLgotICAgIGlmIChzaG91bGRDb2FsZXNj
ZUNoYWxsZW5nZShwYWdlSUQsIGNoYWxsZW5nZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHBhZ2VJ
RCwgZnJhbWVJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7Ci19Ci0j
ZW5kaWYKLQotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotdm9pZCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZCYgZG93bmxv
YWQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkKLXsKLSAgICB1aW50NjRfdCBkdW1teVBhZ2VJRCA9IDA7Ci0gICAgdWludDY0X3QgY2hhbGxl
bmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7ZHVtbXlQYWdlSUQsIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlfSk7Ci0KLSAgICAvLyBDb2FsZXNjZSBjaGFsbGVuZ2VzIGluIHRoZSBz
YW1lIHByb3RlY3Rpb24gc3BhY2UgYW5kIGluIHRoZSBzYW1lIHBhZ2UuCi0gICAgaWYgKHNob3Vs
ZENvYWxlc2NlQ2hhbGxlbmdlKGR1bW15UGFnZUlELCBjaGFsbGVuZ2VJRCwgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3dubG9hZC5zZW5kKE1lc3Nh
Z2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7Ci19Ci0jZW5kaWYKIAogLy8gQ3Vy
cmVudGx5LCBvbmx5IE1hYyBrbm93cyBob3cgdG8gcmVzcG9uZCB0byBhdXRoZW50aWNhdGlvbiBj
aGFsbGVuZ2VzIHdpdGggY2VydGlmaWNhdGUgaW5mby4KICNpZiAhSEFWRShTRUNfSURFTlRJVFkp
CkBAIC0yMDgsMTcgKzE3MiwxMiBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3Jl
ZGVudGlhCiAgICAgYXV0byBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJ
RCk7CiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuY2hhbGxlbmdlLmlzTnVsbCgpKTsKIAotI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKTsKLSNlbHNlCi0gICAgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIgPSBudWxscHRyOwotI2VuZGlmCiAgICAgCiAg
ICAgaWYgKHRyeVVzZUNlcnRpZmljYXRlSW5mb0ZvckNoYWxsZW5nZShjaGFsbGVuZ2UuY2hhbGxl
bmdlLCBjZXJ0aWZpY2F0ZUluZm8sIGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQgPSBjaGFsbGVuZ2UuY2hh
bGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikK
ICAgICAvLyBJZiB0aGVyZSBpcyBhIGNvbXBsZXRpb24gaGFuZGxlciwgdGhlbiB0aGVyZSBpcyBu
byBBdXRoZW50aWNhdGlvbkNsaWVudC4KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSB1c2Ugb2Yg
QXV0aGVudGljYXRpb25DbGllbnQgaW4gV2ViS2l0MiBvbmNlIE5FVFdPUktfU0VTU0lPTiBpcyB1
c2VkIGZvciBhbGwgbG9hZHMuCiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CkBAIC0yMjcs
MTQgKzE4Niw5IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWEKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoY29yZUNsaWVudCk7Ci0jZW5kaWYKIAog
ICAgIGlmIChjb3JlQ2xpZW50KQogICAgICAgICBjb3JlQ2xpZW50LT5yZWNlaXZlZENyZWRlbnRp
YWwoY2hhbGxlbmdlLmNoYWxsZW5nZSwgY3JlZGVudGlhbCk7Ci0jaWYgIVVTRShORVRXT1JLX1NF
U1NJT04pCi0gICAgZWxzZQotICAgICAgICByZWNlaXZlZENyZWRlbnRpYWwoY2hhbGxlbmdlLmNo
YWxsZW5nZSwgY3JlZGVudGlhbCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hh
bGxlbmdlSUQpCkBAIC0yNTEsMjEgKzIwNSwxNSBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6Y29udGludWVXaXRoCiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuY2hhbGxlbmdlLmlzTnVsbCgp
KTsKIAogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBjb3JlQ2xpZW50ID0gY2hhbGxlbmdlLmNo
YWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04p
CiAgICAgaWYgKGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBBU1NFUlQo
IWNvcmVDbGllbnQpOwogICAgICAgICBjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgQ3JlZGVudGlhbCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoY29yZUNsaWVudCk7Ci0jZW5k
aWYKIAogICAgIGlmIChjb3JlQ2xpZW50KQogICAgICAgICBjb3JlQ2xpZW50LT5yZWNlaXZlZFJl
cXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlLmNoYWxsZW5nZSk7Ci0j
aWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgZWxzZQotICAgICAgICByZWNlaXZlZFJlcXVl
c3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlLmNoYWxsZW5nZSk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNhbmNlbENoYWxsZW5nZSh1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTI4MiwyMSArMjMwLDE1IEBAIHZvaWQgQXV0aGVudGljYXRp
b25NYW5hZ2VyOjpjYW5jZWxTaW5nbGUKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5jaGFsbGVuZ2Uu
aXNOdWxsKCkpOwogCiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQgPSBjaGFs
bGVuZ2UuY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7Ci0jaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKICAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAg
IEFTU0VSVCghY29yZUNsaWVudCk7CiAgICAgICAgIGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxl
cihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwsIENyZWRlbnRpYWwo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKGNvcmVDbGllbnQpOwotI2Vu
ZGlmCiAKICAgICBpZiAoY29yZUNsaWVudCkKICAgICAgICAgY29yZUNsaWVudC0+cmVjZWl2ZWRD
YW5jZWxsYXRpb24oY2hhbGxlbmdlLmNoYWxsZW5nZSk7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJ
T04pCi0gICAgZWxzZQotICAgICAgICByZWNlaXZlZENhbmNlbGxhdGlvbihjaGFsbGVuZ2UuY2hh
bGxlbmdlKTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cGVyZm9y
bURlZmF1bHRIYW5kbGluZyh1aW50NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTMxMywyMSArMjU1LDE1
IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpwZXJmb3JtRGVmYXUKICAgICBBU1NFUlQo
IWNoYWxsZW5nZS5jaGFsbGVuZ2UuaXNOdWxsKCkpOwogCiAgICAgQXV0aGVudGljYXRpb25DbGll
bnQqIGNvcmVDbGllbnQgPSBjaGFsbGVuZ2UuY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50
KCk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRp
b25IYW5kbGVyKSB7CiAgICAgICAgIEFTU0VSVCghY29yZUNsaWVudCk7CiAgICAgICAgIGNoYWxs
ZW5nZS5jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBDcmVkZW50aWFsKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIEFTU0VSVChjb3JlQ2xpZW50KTsKLSNlbmRpZgogCiAgICAgaWYgKGNvcmVD
bGllbnQpCiAgICAgICAgIGNvcmVDbGllbnQtPnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1
bHRIYW5kbGluZyhjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lP
TikKLSAgICBlbHNlCi0gICAgICAgIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5k
bGluZyhjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUodWludDY0X3QgY2hh
bGxlbmdlSUQpCkBAIC0zNDQsMjEgKzI4MCwxNSBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6cmVqZWN0UHJvdGVjCiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuY2hhbGxlbmdlLmlzTnVsbCgp
KTsKIAogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBjb3JlQ2xpZW50ID0gY2hhbGxlbmdlLmNo
YWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04p
CiAgICAgaWYgKGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBBU1NFUlQo
IWNvcmVDbGllbnQpOwogICAgICAgICBjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlLCBDcmVk
ZW50aWFsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChjb3JlQ2xpZW50
KTsKLSNlbmRpZgogCiAgICAgaWYgKGNvcmVDbGllbnQpCiAgICAgICAgIGNvcmVDbGllbnQtPnJl
Y2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNoYWxsZW5nZS5jaGFsbGVuZ2UpOwotI2lmICFVU0Uo
TkVUV09SS19TRVNTSU9OKQotICAgIGVsc2UKLSAgICAgICAgcmVjZWl2ZWRDaGFsbGVuZ2VSZWpl
Y3Rpb24oY2hhbGxlbmdlLmNoYWxsZW5nZSk7Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkocmV2aXNpb24gMjI3MjMyKQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDIyICs2NiwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQs
IGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImJik7CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykK
ICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShE
b3dubG9hZElELCBib29sIGNhbkF1dGhlbnRpY2F0ZSk7CiAjZW5kaWYKLSNlbmRpZgogICAgIC8v
IENhbGxlZCBmb3IgcmVzb3VyY2VzIGluIHRoZSBXZWJQcm9jZXNzIChOZXR3b3JrUHJvY2VzcyBk
aXNhYmxlZCkKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJG
cmFtZSosIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKLSNpZiAh
VVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAvLyBDYWxsZWQgZm9yIHJlc291cmNlcyBpbiB0aGUg
TmV0d29ya1Byb2Nlc3MgKE5ldHdvcmtQcm9jZXNzIGVuYWJsZWQpCi0gICAgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkJiwgY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLSNlbmRpZgotCiAgICAgdm9pZCB1c2VDcmVk
ZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBXZWJDb3JlOjpD
cmVkZW50aWFsJiwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJik7CiAgICAgdm9pZCBj
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlE
KTsKICAgICB2b2lkIGNhbmNlbENoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CkBAIC0x
MDAsOSArOTIsNyBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBDaGFsbGVuZ2UgewogICAgICAgICB1
aW50NjRfdCBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGNoYWxsZW5nZTsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgICAgICBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcjsKLSNlbmRpZgogICAgIH07CiAgICAg
CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhl
bnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2Nv
YS5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgotCi0jaWYgIVVT
RShORVRXT1JLX1NFU1NJT04pCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIFthdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5zZW5kZXIoKSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkg
Zm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKLX0KLQotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi17Ci0gICAgW2F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxG
b3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotfQotCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotewotICAgIFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5z
ZW5kZXIoKSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotfQotCi12b2lkIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLXsK
LSAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgcGVyZm9ybURlZmF1bHRIYW5k
bGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5z
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi17Ci0gICAgW2F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLnNlbmRlcigpIHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENo
YWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKCldOwotfQotCi19Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9D
b29raWVTdG9yYWdlU2hpbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9Db29raWVTdG9yYWdlU2hpbS5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0uaAkobm9uZXhpc3RlbnQpCkBAIC0xLDUxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmICFVU0UoTkVUV09SS19TRVNT
SU9OKQotCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBDb29raWVTdG9yYWdl
U2hpbSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29va2llU3RvcmFnZVNoaW0pOwotICAg
IGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxDb29raWVTdG9yYWdlU2hpbT47Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIENvb2tpZVN0b3JhZ2VTaGltJiBzaW5nbGV0b24oKTsKLQotICAgIHZvaWQg
aW5pdGlhbGl6ZSgpOwotCi1wcml2YXRlOgotICAgIENvb2tpZVN0b3JhZ2VTaGltKCkKLSAgICB7
Ci0gICAgfQotfTsKLQotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9Db29raWVTdG9yYWdlU2hpbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0JKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbQkobm9uZXhpc3RlbnQpCkBAIC0x
LDE0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiQ29va2llU3RvcmFnZVNoaW0uaCIKLQotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQot
Ci0jaW5jbHVkZSAiQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmgiCi0jaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db29raWVzU3RyYXRlZ3kuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPGRsZmNuLmg+Ci0jaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgotI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+Ci0jaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVx
dWVzdCogQ0ZVUkxSZXF1ZXN0UmVmOwotQGNsYXNzIE5TVVJMU2Vzc2lvblRhc2s7Ci0KLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1AaW50ZXJmYWNlIFdLTlNVUkxTZXNzaW9uTG9jYWwgOiBO
U09iamVjdAotLSAoQ0ZEaWN0aW9uYXJ5UmVmKSBfY29weUNvb2tpZXNGb3JSZXF1ZXN0VXNpbmdB
bGxBcHByb3ByaWF0ZVN0b3JhZ2VTZW1hbnRpY3M6KENGVVJMUmVxdWVzdFJlZikgcmVxdWVzdDsK
LS0gKHZvaWQpX2dldENvb2tpZUhlYWRlcnNGb3JUYXNrOihOU1VSTFNlc3Npb25UYXNrKil0YXNr
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShDRkRpY3Rpb25hcnlSZWYpKWNvbXBsZXRpb25I
YW5kbGVyOwotQGVuZAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIENGRGljdGlvbmFy
eVJlZiB3ZWJLaXRDb29raWVTdG9yYWdlQ29weVJlcXVlc3RIZWFkZXJGaWVsZHNGb3JVUkwoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZiBpbkNvb2tpZVN0b3JhZ2UsIENGVVJMUmVmIGluUmVxdWVzdFVS
TCkKLXsKLSAgICBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcyA9IFVS
TChpblJlcXVlc3RVUkwpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2ll
czo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vOwotCi0gICAgU3RyaW5nIGNvb2tpZXM7
Ci0gICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBVUkwgZmlyc3RQ
YXJ0eUZvckNvb2tpZXNVUkw7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBmaXJzdFBhcnR5Rm9y
Q29va2llc1VSTCwgaW5SZXF1ZXN0VVJMLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVzLCBzZWN1cmVD
b29raWVzQWNjZXNzZWQpLCAwKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoY29va2ll
cy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNmQ29va2llcyA9IGNvb2tpZXMuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICBzdGF0aWMgY29u
c3Qgdm9pZCogY29va2llS2V5c1tdID0geyBDRlNUUigiQ29va2llIikgfTsKLSAgICBjb25zdCB2
b2lkKiBjb29raWVWYWx1ZXNbXSA9IHsgY2ZDb29raWVzLmdldCgpIH07Ci0gICAgcmV0dXJuIENG
RGljdGlvbmFyeUNyZWF0ZSgwLCBjb29raWVLZXlzLCBjb29raWVWYWx1ZXMsIDEsICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
OwotfQotCi1Db29raWVTdG9yYWdlU2hpbSYgQ29va2llU3RvcmFnZVNoaW06OnNpbmdsZXRvbigp
Ci17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvb2tpZVN0b3JhZ2VTaGltPiBzdG9yYWdl
OwotICAgIHJldHVybiBzdG9yYWdlOwotfQotCi12b2lkIENvb2tpZVN0b3JhZ2VTaGltOjppbml0
aWFsaXplKCkKLXsKLSAgICBDb29raWVTdG9yYWdlU2hpbUNhbGxiYWNrcyBjYWxsYmFja3MgPSB7
ICZ3ZWJLaXRDb29raWVTdG9yYWdlQ29weVJlcXVlc3RIZWFkZXJGaWVsZHNGb3JVUkwgfTsKLSAg
ICBDb29raWVTdG9yYWdlU2hpbUluaXRpYWxpemVGdW5jIGZ1bmMgPSByZWludGVycHJldF9jYXN0
PENvb2tpZVN0b3JhZ2VTaGltSW5pdGlhbGl6ZUZ1bmM+KGRsc3ltKFJUTERfREVGQVVMVCwgIldl
YktpdENvb2tpZVN0b3JhZ2VTaGltSW5pdGlhbGl6ZSIpKTsKLSAgICBpZiAoZnVuYykKLSAgICAg
ICAgZnVuYyhjYWxsYmFja3MpOwotCi0gICAgQ2xhc3MgX19OU1VSTFNlc3Npb25Mb2NhbENsYXNz
ID0gb2JqY19nZXRDbGFzcygiX19OU1VSTFNlc3Npb25Mb2NhbCIpOwotICAgIGlmICghX19OU1VS
TFNlc3Npb25Mb2NhbENsYXNzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoTWV0aG9kIG9y
aWdpbmFsID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QoX19OU1VSTFNlc3Npb25Mb2NhbENsYXNz
LCBAc2VsZWN0b3IoX2NvcHlDb29raWVzRm9yUmVxdWVzdFVzaW5nQWxsQXBwcm9wcmlhdGVTdG9y
YWdlU2VtYW50aWNzOikpKSB7Ci0gICAgICAgIE1ldGhvZCByZXBsYWNlbWVudCA9IGNsYXNzX2dl
dEluc3RhbmNlTWV0aG9kKFtXS05TVVJMU2Vzc2lvbkxvY2FsIGNsYXNzXSwgQHNlbGVjdG9yKF9j
b3B5Q29va2llc0ZvclJlcXVlc3RVc2luZ0FsbEFwcHJvcHJpYXRlU3RvcmFnZVNlbWFudGljczop
KTsKLSAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KTsKLSAgICAgICAgbWV0aG9kX2V4Y2hhbmdl
SW1wbGVtZW50YXRpb25zKG9yaWdpbmFsLCByZXBsYWNlbWVudCk7Ci0gICAgfQotCi0gICAgaWYg
KE1ldGhvZCBvcmlnaW5hbCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKF9fTlNVUkxTZXNzaW9u
TG9jYWxDbGFzcywgQHNlbGVjdG9yKF9nZXRDb29raWVIZWFkZXJzRm9yVGFzazpjb21wbGV0aW9u
SGFuZGxlcjopKSkgewotICAgICAgICBNZXRob2QgcmVwbGFjZW1lbnQgPSBjbGFzc19nZXRJbnN0
YW5jZU1ldGhvZChbV0tOU1VSTFNlc3Npb25Mb2NhbCBjbGFzc10sIEBzZWxlY3RvcihfZ2V0Q29v
a2llSGVhZGVyc0ZvclRhc2s6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgICAgIEFTU0VSVChy
ZXBsYWNlbWVudCk7Ci0gICAgICAgIG1ldGhvZF9leGNoYW5nZUltcGxlbWVudGF0aW9ucyhvcmln
aW5hbCwgcmVwbGFjZW1lbnQpOwotICAgIH0KLX0KLQotfQotCi1AaW1wbGVtZW50YXRpb24gV0tO
U1VSTFNlc3Npb25Mb2NhbAotLSAoQ0ZEaWN0aW9uYXJ5UmVmKV9jb3B5Q29va2llc0ZvclJlcXVl
c3RVc2luZ0FsbEFwcHJvcHJpYXRlU3RvcmFnZVNlbWFudGljczooQ0ZVUkxSZXF1ZXN0UmVmKSBy
ZXF1ZXN0Ci17Ci0gICAgaWYgKCFDRlVSTFJlcXVlc3RTaG91bGRIYW5kbGVIVFRQQ29va2llcyhy
ZXF1ZXN0KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFdlYktpdDo6d2Vi
S2l0Q29va2llU3RvcmFnZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzRm9yVVJMKG51bGxwdHIsIENG
VVJMUmVxdWVzdEdldFVSTChyZXF1ZXN0KSk7Ci19Ci0KLXVzaW5nIENvbXBsZXRpb25IYW5kbGVy
QmxvY2sgPSB2b2lkKF4pKENGRGljdGlvbmFyeVJlZik7Ci0tICh2b2lkKV9nZXRDb29raWVIZWFk
ZXJzRm9yVGFzazooTlNVUkxTZXNzaW9uVGFzayopdGFzayBjb21wbGV0aW9uSGFuZGxlcjooQ29t
cGxldGlvbkhhbmRsZXJCbG9jayljb21wbGV0aW9uSGFuZGxlcgotewotICAgIGlmICghY29tcGxl
dGlvbkhhbmRsZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghW1t0YXNrIGN1cnJlbnRS
ZXF1ZXN0XSBIVFRQU2hvdWxkSGFuZGxlQ29va2llc10pIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobnVsbHB0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDb21wbGV0aW9u
SGFuZGxlckJsb2NrIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IFtjb21wbGV0aW9uSGFuZGxlciBj
b3B5XTsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Rhc2sgPSBSZXRhaW5QdHI8TlNV
UkxTZXNzaW9uVGFzaz4odGFzayksIGNvbXBsZXRpb25IYW5kbGVyQ29weV0gewotICAgICAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJzID0gYWRvcHRDRihXZWJLaXQ6OndlYktp
dENvb2tpZVN0b3JhZ2VDb3B5UmVxdWVzdEhlYWRlckZpZWxkc0ZvclVSTChudWxscHRyLCAoQ0ZV
UkxSZWYpW1t0YXNrIGN1cnJlbnRSZXF1ZXN0XSBVUkxdKSk7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyQ29weShoZWFkZXJzLmdldCgpKTsKLSAgICAgICAgW2NvbXBsZXRpb25IYW5kbGVyQ29w
eSByZWxlYXNlXTsKLSAgICB9KTsKLX0KLQotQGVuZAotCi0jZW5kaWYKLQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgJKHJldmlzaW9u
IDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCB1aW50
NjRfdCkgeyB9Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgdmlydHVhbCBib29sIHNo
b3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgcmV0dXJuIHRydWU7
IH0KLSNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3Jp
dGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3du
bG9hZFByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAko
cmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDE2ICsyMDQsNiBAQCB2b2lkIFdLQ29udGV4
dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4CiAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YSh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxvYWRQcm94eSksIGxlbmd0
aCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0jaWYgIVVTRShORVRX
T1JLX1NFU1NJT04pCi0gICAgICAgIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5
cGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKQotICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hv
dWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEko
JmRvd25sb2FkUHJveHkpLCB0b0FQSShtaW1lVHlwZS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9Ci0jZW5kaWYKLQogICAgICAgICB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwg
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVu
Y3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw5ICs1Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDYW5jZWwoV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9h
ZFByb3h5JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGZpbmFsOwotI2lmICFVU0Uo
TkVUV09SS19TRVNTSU9OKQotICAgIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5
cGUoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJikgZmluYWw7
Ci0jZW5kaWYKICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlByb2Nlc3NQb29sJiwg
RG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcHJvY2Vzc0Rp
ZENyYXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQkocmV2
aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRD
bGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNCwxNSArMTI0LDYgQEAgdm9pZCBEb3dubG9h
ZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgIH0pLmdldCgpXTsKIH0KIAotI2lmICFV
U0UoTkVUV09SS19TRVNTSU9OKQotYm9vbCBEb3dubG9hZENsaWVudDo6c2hvdWxkRGVjb2RlU291
cmNlRGF0YU9mTUlNRVR5cGUoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKQotICAgICAgICBy
ZXR1cm4gW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgc2hvdWxk
RGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU6bWltZVR5cGVdOwotICAgIHJldHVybiB0cnVlOwot
fQotI2VuZGlmCi0KIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKFdl
YlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5n
JiBkZXN0aW5hdGlvbikKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRD
cmVhdGVEZXN0aW5hdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM0LDcgKzEzNCw2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1
ZXN0KFJlc28KICAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLndpbGxTZW5kUmVx
dWVzdCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVk
aXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVz
b3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgewogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBw
ZW5kKG5ld1JlcXVlc3QudXJsKCkpOwogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICAg
ICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX3Byb2Nlc3NQb29sKQogICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC0xNDMsNyArMTQyLDYgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2VuZFJlcXVl
c3QoUmVzbwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG5ldHdvcmtQcm9jZXNzUHJv
eHktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDb250aW51ZVdpbGxTZW5kUmVxdWVz
dChwcm90ZWN0ZWRUaGlzLT5tX2Rvd25sb2FkSUQsIG5ld1JlcXVlc3QpLCAwKTsKLSNlbmRpZgog
ICAgIH0pOwogfQogCkBAIC0xNTIsMTMgKzE1MCw2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGMKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVy
bjsKIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIC8vIEFzIHBlciBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnLyNhcy1hLWRvd25sb2FkIChzdGVwIDIpLCB0aGUgZmlsZW5hbWUg
ZnJvbSB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIKLSAgICAvLyBzaG91bGQgb3ZlcnJp
ZGUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBmcm9tIHRoZSBkb3dubG9hZCBhdHRyaWJ1dGUuCi0g
ICAgaWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzTnVsbCgpICYmIHJlc3BvbnNlLmlzQXR0YWNo
bWVudFdpdGhGaWxlbmFtZSgpKQotICAgICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gU3RyaW5n
KCk7Ci0jZW5kaWYKLQogICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVj
ZWl2ZVJlc3BvbnNlKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgcmVzcG9uc2UpOwogfQogCkBAIC0x
NzAsMTggKzE2MSw2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEodWludDYK
ICAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRhKCptX3By
b2Nlc3NQb29sLCAqdGhpcywgbGVuZ3RoKTsKIH0KIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9O
KQotdm9pZCBEb3dubG9hZFByb3h5OjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sJiByZXN1bHQpCi17Ci0gICAgcmVzdWx0ID0gZmFs
c2U7Ci0KLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCi0gICAgICAgIHJldHVybjsKLQotICAgIHJl
c3VsdCA9IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuc2hvdWxkRGVjb2RlU291cmNl
RGF0YU9mTUlNRVR5cGUoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBtaW1lVHlwZSk7Ci19Ci0jZW5k
aWYKLQogdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFzeW5jKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSkKIHsKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCkBAIC0xOTcsMjQgKzE3Niw2
IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXQKICAgICB9KTsKIH0K
IAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotCi12b2lkIERvd25sb2FkUHJveHk6OmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFJlZjxNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6OkRlbGF5ZWRSZXBseT4mJiByZXBs
eSkKLXsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0
cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRl
bnNpb25JZk5lY2Vzc2FyeShtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSA/IGZpbGVuYW1l
IDogbV9zdWdnZXN0ZWRGaWxlbmFtZSwgbWltZVR5cGUpOwotICAgIG1fcHJvY2Vzc1Bvb2wtPmRv
d25sb2FkQ2xpZW50KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoKm1f
cHJvY2Vzc1Bvb2wsICp0aGlzLCBzdWdnZXN0ZWRGaWxlbmFtZSwgW3JlcGx5ID0gV1RGTW92ZShy
ZXBseSldIChBbGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRlc3RpbmF0aW9u
KSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlOwotICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwotICAgICAgICByZXBs
eS0+c2VuZChkZXN0aW5hdGlvbiwgYWxsb3dPdmVyd3JpdGUgPT0gQWxsb3dPdmVyd3JpdGU6Olll
cywgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgfSk7Ci19Ci0KLSNlbmRpZgotCiB2b2lk
IERvd25sb2FkUHJveHk6OmRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHJldmlzaW9uIDIyNzIzMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTg1LDcgKzg1LDYgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRp
ZFN0YXJ0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUpOwpAQCAtOTgsOSArOTcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0g
ICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBSZWY8TWVzc2FnZXM6OkRvd25s
b2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOjpEZWxheWVk
UmVwbHk+JiYpOwotI2VuZGlmCiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZUFzeW5jKERvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUpOwogCiAgICAgRG93bmxvYWRQcm94eU1hcCYgbV9kb3dubG9hZFByb3h5TWFwOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMCArMjgsNiBAQCBtZXNzYWdlcyAtPiBEb3dubG9hZFByb3h5IHsKIAogICAg
IERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQog
ICAgIERpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCkKLSNpZiAhVVNFKE5FVFdPUktfU0VT
U0lPTikKLSAgICBTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShTdHJpbmcgbWltZVR5
cGUpIC0+IChib29sIHJlc3VsdCkKLSAgICBEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyBtaW1lVHlwZSkgLT4gKFN0cmluZyBkZXN0
aW5hdGlvbiwgYm9vbCBhbGxvd092ZXJ3cml0ZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgRGVsYXllZAotI2VuZGlmCiAgICAgRGlkQ3Jl
YXRlRGVzdGluYXRpb24oU3RyaW5nIHBhdGgpCiAgICAgRGlkRmluaXNoKCkKICAgICBEaWRGYWls
KFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVE
YXRhKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgwLDcgKzExODAsNiBAQAog
CQk1M0JBNDdEMDFEQzJFRjVFMDA0REY0QUQgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlFQjU0NjFEQzJF
RTQwMDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgKi87IH07CiAJCTUzQkE0N0Qx
MURDMkVGNUUwMDRERjRBRCAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlFQjU0NzFEQzJFRTQwMDA5RDQ4Q0Yg
LyogTmV0d29ya0RhdGFUYXNrQmxvYi5oICovOyB9OwogCQk1M0RFQTM2NjFEREU0MjMxMDBFODI2
NDggLyoganNvbi5ocHAgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1M0RFQTM2NTFEREU0MjJFMDBFODI2NDggLyoganNvbi5ocHAgKi87IH07Ci0JCTVDMDUy
RjI2MUM2RDNCRDMwMDc2RTkxOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMDUyRjI0MUM2RDNB
QjYwMDc2RTkxOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSAqLzsgfTsKIAkJNUMw
QjE3NzgxRTdDODgwRTAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMw
QjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQk1QzBCMTc3OTFFN0M4ODIxMDBFOTEyM0MgLyogV2ViU29ja2V0U3Ry
ZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1QzBCMTc3QzFFN0M4ODU0MDBFOTEyM0MgLyog
V2ViU29ja2V0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDMEIxNzdBMUU3Qzg4NEYwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW0uY3Bw
ICovOyB9OwpAQCAtMTE5NSw4ICsxMTk0LDYgQEAKIAkJNUMxNDI3MDUxQzIzRjg0QzAwRDQxMTgz
IC8qIERvd25sb2FkSUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDMTQyNkY3MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZElELmggKi87IH07CiAJ
CTVDMTQyNzA2MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2RjgxQzIzRjg0MzAw
RDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgKi87IH07CiAJCTVDMTQyNzA3MUMyM0Y4NEMw
MEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY5MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1h
bmFnZXIuaCAqLzsgfTsKLQkJNUMxNDI3MTExQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkSU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3
MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25sb2FkSU9TLm1tICovOyB9OwotCQk1QzE0MjcxMjFD
MjNGODlFMDBENDExODMgLyogRG93bmxvYWRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwRjFDMjNGODk5MDBENDExODMgLyogRG93bmxv
YWRNYWMubW0gKi87IH07CiAJCTVDMTQyNzEzMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZENv
Y29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMx
NDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0gKi87IH07CiAJCTVDMTQy
NzE4MUMyM0Y4QjcwMEQ0MTE4MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzE0MUMyM0Y4
QjAwMEQ0MTE4MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAqLzsgfTsKIAkJNUMx
NDI3MUQxQzIzRjhDRjAwRDQxMTgzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29h
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3
MUIxQzIzRjhDQzAwRDQxMTgzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1t
ICovOyB9OwpAQCAtMTQwNCw3ICsxNDAxLDYgQEAKIAkJODM0QjI1MTIxQTg0MkM4NzAwQ0ZCMTUw
IC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2Fj
aGVTdGF0aXN0aWNzLmggKi87IH07CiAJCTgzNjAzNDlGMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM2MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFi
YXNlVHJhY2tlci5jcHAgKi87IH07CiAJCTgzNjAzNEEwMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzNjAzNDlFMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuaCAqLzsgfTsKLQkJODM2RUVCODAxQkU5RUM5RTAwNkI0QjgyIC8qIE5ldHdvcmtM
b2FkTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM2RUVCN0YxQkU5RUM5RTAwNkI0QjgyIC8qIE5ldHdvcmtMb2FkTWFjLm1tICovOyB9OwogCQk4
MzcyREIyNTFBNjc0QzhGMDBDNjk3QzUgLyogV0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzJEQjI0
MUE2NzRDOEYwMEM2OTdDNSAvKiBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzJEQjI4MUE2
NzU2MjgwMEM2OTdDNSAvKiBXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMjYxQTY3NTYy
ODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5jcHAgKi87IH07CiAJ
CTgzNzJEQjI5MUE2NzU2MjgwMEM2OTdDNSAvKiBXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzJE
QjI3MUE2NzU2MjgwMEM2OTdDNSAvKiBXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCAq
LzsgfTsKQEAgLTE0MjEsOCArMTQxNyw2IEBACiAJCTgzQTBFRDM0MUY3NDdDQ0QwMDMyOTlFQiAv
KiBQcmVjb25uZWN0VGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0EwRUQzMzFGNzQ3Q0M3MDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suY3Bw
ICovOyB9OwogCQk4M0EwRUQzNTFGNzQ3Q0NGMDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQTBFRDMyMUY3
NDdDQzYwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5oICovOyB9OwogCQk4M0JEQ0NCOTFBQzVG
REI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JEQ0NCODFBQzVGREI2MDAzRjY0NDEg
LyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgKi87IH07Ci0JCTgzQkZBQzQyMUQ5NjEzN0Mw
MDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkZBQzQwMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93
bmxvYWRDbGllbnQuaCAqLzsgfTsKLQkJODNCRkFDNDMxRDk2MTM3QzAwNDMzNDkwIC8qIEJsb2JE
b3dubG9hZENsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0JGQUM0MTFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNw
cCAqLzsgfTsKIAkJODNENDU0RDcxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0Q0NTRE
NjFCRTlEM0M0MDA2QzkzQkQgLyogTmV0d29ya0xvYWRDbGllbnQuaCAqLzsgfTsKIAkJODNFRTU3
NUIxREI3RDYxMTAwQzc0QzUwIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRUU1NzU5MURCN0Q2
MDYwMEM3NEM1MCAvKiBXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5jcHAgKi87IH07CiAJCTgz
RUU1NzVDMURCN0Q2MTEwMEM3NEM1MCAvKiBXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFRTU3NUExREI3
RDYwNjAwQzc0QzUwIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggKi87IH07CkBAIC0y
MDIxLDcgKzIwMTUsNiBAQAogCQlDREMzODJGRTE3MjExNzk5MDA4QTJGQzMgLyogU2VjSXRlbVNo
aW1MaWJyYXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTExRjhBNzgxMzhCNDYwOTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5tbSAqLzsg
fTsKIAkJQ0RDMzgzMDcxNzIxMTdERDAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFy
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMz
ODJGOTE3MjExNkQzMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcCAqLzsg
fTsKIAkJQ0RDMzgzMEMxNzIxMjI4MjAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFy
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMzgz
MEIxNzIxMjFDRTAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oICovOyB9Owot
CQlDREMzODMxMDE3MjEyNDQwMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMzODMwRDE3MjEyNDJE
MDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0ubW0gKi87IH07CiAJCUNEQ0E4NUM4MTMyQUJB
NEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1QzYxMzJBQkE0RTAwRTk2
MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEQ0E4NUM5
MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVDNzEzMkFCQTRF
MDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9OwogCQlDRTEx
QUQ1MDFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyog
Q29kZVNpZ25pbmcubW0gKi87IH07CkBAIC0zNTY4LDcgKzM1NjEsNiBAQAogCQk1MzlFQjU0NjFE
QzJFRTQwMDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MzlFQjU0NzFEQzJFRTQwMDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxv
Yi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrRGF0YVRhc2tCbG9i
Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzREVBMzY1MURERTQyMkUwMEU4MjY0OCAvKiBqc29uLmhw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IG5hbWUgPSBqc29uLmhwcDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvanNvbi5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTVDMDUyRjI0MUM2RDNBQjYwMDc2RTkxOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEF1dGhlbnRpY2F0
aW9uTWFuYWdlckNvY29hLm1tOyBwYXRoID0gQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGlj
YXRpb25NYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMEIx
Nzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtTb2NrZXRT
dHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzBCMTc3NTFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzBCMTc3NjFFN0M4NzlDMDBF
OTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTkxLDggKzM1ODMsNiBAQAogCQk1
QzE0MjZGODFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERvd25sb2FkTWFuYWdlci5jcHA7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI2RjkxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEb3dubG9hZE1hbmFnZXIu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERv
d25sb2FkQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBE
b3dubG9hZENvY29hLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rv
d25sb2FkQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDMTQyNzBEMUMy
M0Y4ODUwMEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IERvd25sb2FkSU9TLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NUMxNDI3MEYxQzIzRjg5OTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRNYWMubW07IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzE0MjcxNDFDMjNGOEIwMDBENDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzE0MjcxNTFDMjNGOEIwMDBENDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzFCMUMyM0Y4Q0MwMEQ0MTE4MyAvKiBMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzgyNSw3ICszODE1
LDYgQEAKIAkJODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3Rp
Y3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlU3RhdGlz
dGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2
MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNjAzNDlFMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgz
NkVFQjdGMUJFOUVDOUUwMDZCNEI4MiAvKiBOZXR3b3JrTG9hZE1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtMb2FkTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MzcyREIyNDFBNjc0QzhGMDBDNjk3QzUgLyogV0tQYWdlRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM3MkRCMjYxQTY3NTYyODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdl
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzcyREIyNzFBNjc1NjI4MDBDNjk3QzUgLyogV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzg0Miw4ICsz
ODMxLDYgQEAKIAkJODNBMEVEMzIxRjc0N0NDNjAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByZWNvbm5lY3RUYXNrLmg7IHBhdGgg
PSBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4M0EwRUQzMzFGNzQ3Q0M3MDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJlY29ubmVjdFRhc2suY3BwOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0JEQ0NCODFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3Jr
Q2FjaGVTdGF0aXN0aWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODNCRkFD
NDAxRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCbG9iRG93bmxvYWRDbGllbnQuaDsgcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJODNCRkFDNDExRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCbG9iRG93bmxvYWRD
bGllbnQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENs
aWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRDQ1NEQ2MUJFOUQzQzQw
MDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBOZXR3b3JrTG9hZENsaWVudC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNFRTU3NTkxREI3
RDYwNjAwQzc0QzUwIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNFRTU3NUExREI3RDYwNjAwQzc0QzUw
IC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00NDg5LDggKzQ0NzYsNiBAQAogCQlDREMzODJGOTE3MjExNkQzMDA4QTJG
QzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENv
b2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQzM4MzA2MTcyMTE3OTkwMDhBMkZDMyAvKiBXZWJQcm9jZXNzU2hpbS5keWxpYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5keWxpYiI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdlYlByb2Nlc3NTaGltLmR5bGli
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDREMzODMwQjE3MjEyMUNF
MDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
b2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
REMzODMwRDE3MjEyNDJEMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlU2hpbS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0RDMzgzMEUxNzIxMjQyRDAwOEEyRkMzIC8qIENv
b2tpZVN0b3JhZ2VTaGltLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2VTaGltLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzhGNDg4MTcy
NUU2NzgwMDE2NkY2RSAvKiBDb3JlRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFt
ZSA9IENvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+
IjsgfTsKIAkJQ0RDQTg1QzYxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02Mjg1LDcgKzYyNzAs
NiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlFMTdBRTJDMTE2
QjlDMTM5MDAxQzQyRjEgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbiAq
LywKLQkJCQk4MzZFRUI3RjFCRTlFQzlFMDA2QjRCODIgLyogTmV0d29ya0xvYWRNYWMubW0gKi8s
CiAJCQkJNTFBOEE2MTUxNjI3RjNGOTAwMEQ5MEU5IC8qIE5ldHdvcmtQcm9jZXNzTWFjLm1tICov
LAogCQkJCUUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5tbSAqLywKIAkJCSk7CkBAIC02NDgwLDcgKzY0NjQsNiBAQAogCQk1MThFOEVGMTE2QjIwOEYw
MDBFOTE0MjkgLyogQXV0aGVudGljYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAotCQkJCTVDMDUyRjIzMUM2RDNBQTEwMDc2RTkxOSAvKiBjb2NvYSAqLywK
IAkJCQk1MThFOEVGNjE2QjIwOTFDMDBFOTE0MjkgLyogbWFjICovLAogCQkJCTUxOEU4RUYzMTZC
MjA5MUMwMEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwICovLAogCQkJCTUxOEU4
RUY0MTZCMjA5MUMwMEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCAqLywKQEAgLTY2
MTcsMjIgKzY2MDAsMTAgQEAKIAkJCW5hbWUgPSBjYXB0dXJlOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKLQkJNUMwNTJGMjMxQzZEM0FBMTAwNzZFOTE5IC8qIGNvY29hICovID0g
ewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk1QzA1MkYyNDFDNkQz
QUI2MDA3NkU5MTkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0gKi8sCi0JCQkpOwot
CQkJbmFtZSA9IGNvY29hOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJNUMx
NDI2RjExQzIzRjgxNzAwRDQxMTgzIC8qIERvd25sb2FkcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNUMxNDI3MDgxQzIzRjg1MjAwRDQxMTgzIC8qIGNv
Y29hICovLAotCQkJCTVDMTQyNzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBpb3MgKi8sCi0JCQkJNUMx
NDI3MEIxQzIzRjg3MTAwRDQxMTgzIC8qIG1hYyAqLywKLQkJCQk4M0JGQUM0MTFEOTYxMzYwMDA0
MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCAqLywKLQkJCQk4M0JGQUM0MDFEOTYxMzYw
MDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJNUMxNDI2RjMxQzIzRjg0
MzAwRDQxMTgzIC8qIERvd25sb2FkLmNwcCAqLywKIAkJCQk1QzE0MjZGNDFDMjNGODQzMDBENDEx
ODMgLyogRG93bmxvYWQuaCAqLywKIAkJCQk1QzE0MjZGNzFDMjNGODQzMDBENDExODMgLyogRG93
bmxvYWRJRC5oICovLApAQCAtNjY2MywyMiArNjYzNCw2IEBACiAJCQluYW1lID0gY29jb2E7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk1QzE0MjcwQjFDMjNGODcxMDBENDEx
ODMgLyogbWFjICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJ
CQk1QzE0MjcwRjFDMjNGODk5MDBENDExODMgLyogRG93bmxvYWRNYWMubW0gKi8sCi0JCQkpOwot
CQkJbmFtZSA9IG1hYzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTVDMTQy
NzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBpb3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJ
CWNoaWxkcmVuID0gKAotCQkJCTVDMTQyNzBEMUMyM0Y4ODUwMEQ0MTE4MyAvKiBEb3dubG9hZElP
Uy5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gaW9zOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKIAkJNUMxNDI3MUExQzIzRjhCRjAwRDQxMTgzIC8qIENvY29hICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTc1MDYsOCArNzQ2MSw2IEBACiAJ
CQkJQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVTaWduaW5nLm1tICovLAogCQkJCTFB
MkE0QUZFMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5oICovLAogCQkJCTFBMkE0
QUZEMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5tbSAqLywKLQkJCQlDREMzODMw
RTE3MjEyNDJEMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0uaCAqLywKLQkJCQlDREMzODMw
RDE3MjEyNDJEMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0ubW0gKi8sCiAJCQkJQ0RDMzgy
RjkxNzIxMTZEMzAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAgKi8sCiAJ
CQkJQ0RDMzgzMEIxNzIxMjFDRTAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5o
ICovLAogCQkJCTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJs
ZXJNYWMubW0gKi8sCkBAIC04NjY2LDEyICs4NjE5LDEwIEBACiAJCQkJQ0RBMDQxRjQxQUNFMjEw
NTAwNEExM0VDIC8qIEJhY2tCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVz
c1RpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTY0QTJGMjE5MUFGMTRFMDAxMDczN0QgLyog
QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaCBpbiBIZWFkZXJzICov
LAotCQkJCTgzQkZBQzQyMUQ5NjEzN0MwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUUxNzA4NzZDMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0
cnlQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8q
IEJsb2NraW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNTExMUJFNDEw
RTYwMDg3NEFGMSAvKiBCbG9ja1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY1RkExMjU5
MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTBFREU4NTAz
MjAwNEU3NUQwMDAzMDU2MCAvKiBXZWJzaXRlUG9wVXBQb2xpY3kuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxODk3RUQ4MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdFREExRjQxNUQ4QTAwMTZGQTQy
IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTE4
OCw2ICs5MTM5LDcgQEAKIAkJCQkxQTQ4MzJEMTFBOUJEQzJGMDA4QjRERkUgLyogV2Vic2l0ZURh
dGFSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTNDMkFBMUEzMjU3MzAwMDRFOEM3MCAv
KiBXZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFGN0Q0MTFFQjFCQ0Y1
MDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBFREU4NTAzMjAwNEU3NUQwMDAzMDU2MCAvKiBXZWJzaXRlUG9wVXBQb2xpY3kuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzNjAzNEEwMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRh
YmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTJDMEY4MUEzOENEQzcwMDE2MTYw
QSAvKiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
N0E1MzA1MUY0NzkzQzYwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMTAyNDAsNyArMTAxOTIsNiBAQAogCQkJCTUxMkY1ODk4MTJBODgzODgwMDYy
OTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTE4RThFRjgxNkIyMDkxQzAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThFOEVGQjE2QjIwOTFDMDBFOTE0MjkgLyogQXV0aGVu
dGljYXRpb25NYW5hZ2VyLm1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTVDMDUyRjI2MUM2RDNC
RDMwMDc2RTkxOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxMkY1OEEyMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk1NUE2RjQxQzc5ODZEQzAw
RUI2QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTlDODFENTkxQzIwRTFFNTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0gaW4g
U291cmNlcyAqLywKQEAgLTEwMjQ5LDcgKzEwMjAwLDYgQEAKIAkJCQk5OTBEMjhCQzFDNjUzOURB
MDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0NkEyQjYwODFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZl
bmVzc1RpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNjRBMkYxMTkxQUYxNEUwMDEwNzM3
RCAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk4M0JGQUM0MzFEOTYxMzdDMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzA4NzZCMTZENkNBNjkwMEY5OTIyNiAvKiBC
bG9iUmVnaXN0cnlQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0YxODYzODE2N0QwNzFF
MDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTg5N0VENzFG
NDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMTAyNzAsNyArMTAyMjAsNiBAQAogCQkJCUJDMDMyREFBMTBGNDM3RDEwMDU4QzE1QSAvKiBD
b25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzBFQUM2MTE1RDdEQTMwMDUzRTkz
NyAvKiBDb25uZWN0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNkQ3QzIxOEJEQkU3
MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQ0RDMzgzMTAxNzIxMjQ0MDAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTEwNEY1QTIxRjE5RDdEMjAwNENGODIxIC8qIENvb2tpZVN0b3JhZ2VV
dGlsc0NGLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjg3OEI2MTYxMzM0MjhEQzAwNjg4OEU5IC8q
IENvcnJlY3Rpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM1NUY5MTcwMUM1OTVGNjMw
MDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI4
MCw4ICsxMDIyOSw2IEBACiAJCQkJNUMxNDI3MDExQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2Fk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExREY2MzEyMThFMEI3QzgwMDNBM0UyQSAvKiBEb3du
bG9hZENsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEzMUMyM0Y4OUUwMEQ0MTE4
MyAvKiBEb3dubG9hZENvY29hLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNUMxNDI3MTExQzIzRjg5
RTAwRDQxMTgzIC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNUMxNDI3MTIx
QzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMx
NDI3MDYxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUI3RDRDQjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUQyNUU5NTE2N0FCMDgxMDBFQTlCQ0QgLyogRG93bmxvYWRQcm94
eU1hcC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwNDEyLDcgKzEwMzU5LDYgQEAKIAkJCQk1Q0JD
OUI4RDFDNjUyNzlDMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1MzAyNTg0NjFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0RhdGFUYXNrUmVw
bGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzOTkwMjAyMUJFOUEwMkIwMDBGMzY1MyAvKiBO
ZXR3b3JrTG9hZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4MzZFRUI4MDFCRTlFQzlFMDA2QjRC
ODIgLyogTmV0d29ya0xvYWRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTc5NTU2ODE2Mjg3
NkNGMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VD
NEYwRkIxOEU0QUNCQjAwODA1NkFGIC8qIE5ldHdvcmtQcm9jZXNzQ29jb2EubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1MTgzRERFQzE2MzBCREZDMDA4QkU1QzcgLyogTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDYgQEAKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiQ29va2llU3RvcmFnZVNoaW0u
aCIKICNpbmNsdWRlICJPYmpDT2JqZWN0R3JhcGguaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlci5oIgogI2VuZGlmCkBAIC0yNzIsOSArMjcxLDcgQEAgdm9pZCBXZWJQcm9jZXNz
Ojppbml0aWFsaXplV2ViUHJvY2VzcyhXZQogCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2VzcyhXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAg
ICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZSh7IH0pKTsKLSNlbmRpZgogCiAgICAgLy8g
TWF0Y2ggdGhlIFFvUyBvZiB0aGUgVUlQcm9jZXNzIGFuZCB0aGUgc2Nyb2xsaW5nIHRocmVhZCBi
dXQgdXNlIGEgc2xpZ2h0bHkgbG93ZXIgcHJpb3JpdHkuCiAgICAgV1RGOjpUaHJlYWQ6OnNldEN1
cnJlbnRUaHJlYWRJc1VzZXJJbnRlcmFjdGl2ZSgtMSk7CkBAIC0zODUsOSArMzgyLDYgQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZQogCiAgICAgZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShORVRX
T1JLX1NFU1NJT04pCi0gICAgQ29va2llU3RvcmFnZVNoaW06OnNpbmdsZXRvbigpLmluaXRpYWxp
emUoKTsKLSNlbmRpZgogICAgIHNldFRlcm1pbmF0aW9uVGltZW91dChwYXJhbWV0ZXJzLnRlcm1p
bmF0aW9uVGltZW91dCk7CiAKICAgICByZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhw
YXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyk7CkBAIC01NTYsMTIgKzU1MCwx
MCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMyX3QgCiB2b2lkIFdlYlBy
b2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQogewogICAgIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNy
ZWRlbnRpYWxzKCk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAoYXV0byogbmV0
d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpCiAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckNy
ZWRlbnRpYWxzKCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNl
bmRpZgogfQogCiBXZWJQYWdlKiBXZWJQcm9jZXNzOjpmb2N1c2VkV2ViUGFnZSgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZp
c2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDkg
KzY3LDcgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZQogCiAgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKHNlc3Npb25JRCwgYmFzZSArICcu
JyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSksIFdURk1vdmUodWlQcm9j
ZXNzQ29va2llU3RvcmFnZSkpOwogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBTZXNz
aW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUo
V1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKLSNlbmRpZgog
fQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGlj
eUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331957</attachid>
            <date>2018-01-22 13:42:56 -0800</date>
            <delta_ts>2018-01-22 13:47:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181944-20180122134300.patch</filename>
            <type>text/plain</type>
            <size>147308</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjczNTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzOCBAQAorMjAxOC0wMS0yMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBwcmUt
TmV0d29ya1Nlc3Npb24gbG9hZGluZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODE5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2Nv
YS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclByb3RvY29sQ2xhc3MpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWQ6On5Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRGaW5pc2gpOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkOjpkaWRTdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjp3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZDo6c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuaDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnNldEJsb2JGaWxlUmVmZXJlbmNl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXF1ZXN0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rv
d25sb2FkRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNv
bnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1h
bmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06IFJlbW92ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2FkUGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2tCbG9iLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6fk5ldHdvcmtMb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0xvYWQ6OnNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZEZpbmlzaExvYWRpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkRmFpbCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp3aWxsU2VuZFJlcXVlc3RBc3luYyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlQXN5bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrTG9hZDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnJlY2VpdmVkQ2FuY2VsbGF0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNz
Q29jb2EpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVX
ZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAg
KFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9yU2luZ2xlQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51
ZVdpdGhvdXRDcmVkZW50aWFsRm9yU2luZ2xlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6
QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjYW5jZWxTaW5nbGVDaGFsbGVuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JT
aW5nbGVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OnJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlRm9yU2luZ2xlQ2hhbGxlbmdlKToKKyAg
ICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6Cisg
ICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ckNvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKToKKyAgICAgICAgKiBTaGFy
ZWQvU2Vzc2lvblRyYWNrZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VT
aGltLmg6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6
CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChBUEk6OkRvd25sb2FkQ2xpZW50OjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAg
ICAgIChXS0NvbnRleHRTZXREb3dubG9hZENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6c2hvdWxkRGVjb2Rl
U291cmNlRGF0YU9mTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNob3VsZERl
Y29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRl
RGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKToKKyAgICAg
ICAgKiBjb25maWcuaDoKKwogMjAxOC0wMS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCByZWxlYXNlIGxvZ2dpbmcgdG8gaGVscCBkZWJ1ZyBpc3N1ZXMg
cmVsYXRlZCB0byBzZXJ2aWNlIHdvcmtlcnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY29uZmlnLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jb25maWcuaAkocmV2aXNpb24gMjI3MjMyKQor
KysgU291cmNlL1dlYktpdC9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNzksMTAgKzc5LDYg
QEAKICNlbmRpZgogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oQVBQTEVU
VikgfHwgUExBVEZPUk0oV0FUQ0hPUykgfHwgVVNFKFNPVVApCi0jaWZuZGVmIFVTRV9ORVRXT1JL
X1NFU1NJT04KLSNkZWZpbmUgVVNFX05FVFdPUktfU0VTU0lPTiAxCi0jZW5kaWYKLQogI2lmbmRl
ZiBFTkFCTEVfQkVBQ09OX0FQSQogI2RlZmluZSBFTkFCTEVfQkVBQ09OX0FQSSAxCiAjZW5kaWYK
QEAgLTkzLDcgKzg5LDcgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKSAmJiAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDAwMCkpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICNpZm5kZWYgRU5BQkxFX1NF
UlZFUl9QUkVDT05ORUNUCiAjZGVmaW5lIEVOQUJMRV9TRVJWRVJfUFJFQ09OTkVDVCAxCiAjZW5k
aWYKQEAgLTExMiw3ICsxMDgsNyBAQAogI2VuZGlmCiAKICNpZm5kZWYgRU5BQkxFX05FVFdPUktf
Q0FQVFVSRQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmIFBMQVRGT1JNKENPQ09BKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogI2RlZmluZSBFTkFCTEVfTkVUV09SS19DQVBUVVJFIDEKICNlbmRp
ZgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCShyZXZpc2lvbiAyMjcyMzIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCIKIAotI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCi0KICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgi
CkBAIC0xMzMsNSArMTMxLDMgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmNh
bm5vdAogfQogCiB9IC8vIE5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFVTRShORVRXT1JL
X1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgJKHJldmlzaW9uIDIyNzIzMikKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVzcG9uc2UuaD4KQEAgLTc1LDUgKzczLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgIlBpbmdMb2Fk
LmgiCiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCkBAIC01NywxMCArNTgs
NiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSNpbmNsdWRlICJQaW5n
TG9hZC5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTI0MywxNiArMjQwLDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6bG9hZAogICAgICAgICBkaWRGaW5pc2hQaW5nTG9hZChpZGVudGlmaWVyLCBlcnJv
ciwgcmVzcG9uc2UpOwogICAgIH07CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIC8v
IFBpbmdMb2FkIG1hbmFnZXMgaXRzIG93biBsaWZldGltZSwgZGVsZXRpbmcgaXRzZWxmIHdoZW4g
aXRzIHB1cnBvc2UgaGFzIGJlZW4gZnVsZmlsbGVkLgogICAgIG5ldyBQaW5nTG9hZChXVEZNb3Zl
KGxvYWRQYXJhbWV0ZXJzKSwgV1RGTW92ZShvcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ob3JpZ2luYWxS
ZXF1ZXN0SGVhZGVycyk7Ci0gICAgYXV0byBjb250ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmNyZWF0ZShsb2FkUGFyYW1ldGVycy5zZXNzaW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwotCi0gICAgLy8gUGluZ0hhbmRs
ZSBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJw
b3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KLSAgICBuZXcgUGluZ0hhbmRsZShjb250ZXh0LnB0cigp
LCBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LCBsb2FkUGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFs
c1BvbGljeSA9PSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBsb2FkUGFyYW1ldGVycy5z
aG91bGRGb2xsb3dSZWRpcmVjdHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSNlbmRp
ZgogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5pc2hQaW5n
TG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHJldmlzaW9uIDIy
NzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikK
LQogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFza0Jsb2IuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgpAQCAtMTQwLDUgKzEz
OCwzIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpmYWlsdXJlVGltZXJGaXJlZCgKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShy
ZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLQogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50
aWFsLmg+CkBAIC0xNjAsNSArMTU4LDMgQEAgcHJvdGVjdGVkOgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
CShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFza0Jsb2IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrQmxvYi5oIgogCi0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKLQogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTU4NCw1ICs1ODIsMyBA
QCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZEZpbmlzaCgpCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCShy
ZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0KICNpbmNsdWRlICJOZXR3b3JrRGF0
YVRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTdHJlYW1DbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KQEAgLTEyMCw1ICsxMTgsMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9O
KQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJ
KHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw2IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCi0KIHN0cnVjdCBOZXR3b3JrTG9hZDo6VGhyb3R0bGUgewogICAgIFRocm90dGxlKE5ldHdv
cmtMb2FkJiBsb2FkLCBTZWNvbmRzIGRlbGF5LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogICAgICAgICA6IHRpbWVyKGxv
YWQsICZOZXR3b3JrTG9hZDo6dGhyb3R0bGVEZWxheUNvbXBsZXRlZCkKQEAgLTExNywyNSArMTE1
LDExIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmluaXRpYWxpemUoTmV0d29ya1Nlc3MKICAgICAgICAg
bV90YXNrLT5yZXN1bWUoKTsKIH0KIAotI2Vsc2UKLQotTmV0d29ya0xvYWQ6Ok5ldHdvcmtMb2Fk
KE5ldHdvcmtMb2FkQ2xpZW50JiBjbGllbnQsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3BhcmFtZXRlcnMoV1RGTW92
ZShwYXJhbWV0ZXJzKSkKLSAgICAsIG1fbmV0d29ya2luZ0NvbnRleHQoUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OmNyZWF0ZShtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMuc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkpCi0gICAgLCBtX2N1cnJlbnRS
ZXF1ZXN0KG1fcGFyYW1ldGVycy5yZXF1ZXN0KQotewotICAgIG1faGFuZGxlID0gUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZShtX25ldHdvcmtpbmdDb250ZXh0LmdldCgpLCBtX3BhcmFtZXRlcnMucmVx
dWVzdCwgdGhpcywgbV9wYXJhbWV0ZXJzLmRlZmVyc0xvYWRpbmcsIG1fcGFyYW1ldGVycy5jb250
ZW50U25pZmZpbmdQb2xpY3kgPT0gU25pZmZDb250ZW50LCBtX3BhcmFtZXRlcnMuY29udGVudEVu
Y29kaW5nU25pZmZpbmdQb2xpY3kgPT0gQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNu
aWZmKTsKLX0KLQotI2VuZGlmCi0KIE5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQoKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKG1fcmVkaXJlY3RDb21wbGV0aW9u
SGFuZGxlcikKICAgICAgICAgbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
KQogICAgICAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25v
cmUpOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCkBAIC0xNDQsMTkg
KzEyOCwxMCBAQCBOZXR3b3JrTG9hZDo6fk5ldHdvcmtMb2FkKCkKICNlbmRpZgogICAgIGlmICht
X3Rhc2spCiAgICAgICAgIG1fdGFzay0+Y2xlYXJDbGllbnQoKTsKLSNlbHNlCi0jaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICBpZiAobV9oYW5kbGUgJiYgbV93YWl0
aW5nRm9yQ29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKQotICAg
ICAgICBtX2hhbmRsZS0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKGZhbHNlKTsKLSNlbmRpZgotICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUt
PmNsZWFyQ2xpZW50KCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6c2V0RGVmZXJz
TG9hZGluZyhib29sIGRlZmVycykKIHsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlm
IChtX3Rhc2spIHsKICAgICAgICAgaWYgKGRlZmVycykKICAgICAgICAgICAgIG1fdGFzay0+c3Vz
cGVuZCgpOwpAQCAtMTY4LDIxICsxNDMsMTIgQEAgdm9pZCBOZXR3b3JrTG9hZDo6c2V0RGVmZXJz
TG9hZGluZyhib29sIAogI2VuZGlmCiAgICAgICAgIH0KICAgICB9Ci0jZWxzZQotICAgIGlmICht
X2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUtPnNldERlZmVyc0xvYWRpbmcoZGVmZXJzKTsKLSNl
bmRpZgogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpjYW5jZWwoKQogewotI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCiAgICAgaWYgKG1fdGFzaykKICAgICAgICAgbV90YXNrLT5jYW5jZWwoKTsKLSNl
bHNlCi0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkKQEAgLTE5OSw3ICsxNjUsNiBAQCB2b2lk
IE5ldHdvcmtMb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzCiAgICAgICAgIG1fcmVjb3JkZXIt
PnJlY29yZFJlZGlyZWN0U2VudChuZXdSZXF1ZXN0KTsKICNlbmRpZgogCi0jaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKICAgICBhdXRvIHJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4
Y2hhbmdlKG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7CiAgICAgQVNTRVJU
KHJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0Lmlz
TnVsbCgpKSB7CkBAIC0yMTIsMzkgKzE3NywyMCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51
ZVdpbGxTZW5kUmVxdWVzCiAKICAgICBpZiAocmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikKICAg
ICAgICAgcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcihSZXNvdXJjZVJlcXVlc3QobV9jdXJyZW50
UmVxdWVzdCkpOwotI2Vsc2UKLSAgICBpZiAobV9jdXJyZW50UmVxdWVzdC5pc051bGwoKSkgewot
ICAgICAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7Ci0g
ICAgICAgIGRpZEZhaWwobV9oYW5kbGUuZ2V0KCksIGNhbmNlbGxlZEVycm9yKG1fY3VycmVudFJl
cXVlc3QpKTsKLSAgICB9IGVsc2UgaWYgKG1faGFuZGxlKSB7Ci0gICAgICAgIGF1dG8gY3VycmVu
dFJlcXVlc3RDb3B5ID0gbV9jdXJyZW50UmVxdWVzdDsKLSAgICAgICAgYXV0byByZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRs
ZXIsIG51bGxwdHIpOwotICAgICAgICBBU1NFUlQocmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7
Ci0gICAgICAgIHJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjdXJyZW50UmVxdWVz
dENvcHkpKTsKLSAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UoKQogewotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYg
KG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBhdXRvIHJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciwgbnVsbHB0cik7CiAgICAgICAgIHJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0
aW9uOjpVc2UpOwogICAgIH0KLSNlbHNlCi0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBtX2hh
bmRsZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKLSNlbmRpZgogfQogCi0jaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKIGJvb2wgTmV0d29ya0xvYWQ6OnNob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LmdldCgpLnNo
b3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpOwogfQotI2VuZGlmCiAKIE5ldHdv
cmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBOZXR3b3JrTG9h
ZDo6c2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkK
IHsKQEAgLTI3Niw4ICsyMjIsNiBAQCBib29sIE5ldHdvcmtMb2FkOjppc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDCiAgICAgcmV0dXJuIG1fY2xpZW50LmdldCgpLmlzQWxsb3dlZFRvQXNrVXNlckZvckNy
ZWRlbnRpYWxzKCk7CiB9CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiB2b2lkIE5ldHdv
cmtMb2FkOjpjb252ZXJ0VGFza1RvRG93bmxvYWQoUGVuZGluZ0Rvd25sb2FkJiBwZW5kaW5nRG93
bmxvYWQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgdXBkYXRlZFJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmICghbV90YXNrKQpAQCAtNDU1LDEyOCAr
Mzk5LDQgQEAgdm9pZCBOZXR3b3JrTG9hZDo6Y2Fubm90U2hvd1VSTCgpCiAgICAgbV9jbGllbnQu
Z2V0KCkuZGlkRmFpbExvYWRpbmcoY2Fubm90U2hvd1VSTEVycm9yKG1fY3VycmVudFJlcXVlc3Qp
KTsKIH0KIAotI2Vsc2UKLQotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5
bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVz
cG9uc2UpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7
Ci0gICAgaWYgKHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlY2VpdmVkUmVzcG9u
c2UpKSA9PSBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2U6OlllcykKLSAgICAgICAgbV9oYW5kbGUtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7
Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgY2hhciogLyogZGF0YSAqLywgdW5zaWduZWQgLyogbGVuZ3RoICovLCBpbnQgLyogZW5j
b2RlZERhdGFMZW5ndGggKi8pCi17Ci0gICAgLy8gVGhlIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBu
ZXZlciBnZXQgYSBkaWRSZWNlaXZlRGF0YSBjYWxsYmFjay4KLSAgICAvLyBXZSBzaG91bGQgYWx3
YXlzIGJlIHVzaW5nIGRpZFJlY2VpdmVCdWZmZXIuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQotewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5k
bGUpOwotICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIp
LCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQotewotICAgIEFTU0VSVF9VTlVT
RUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwotICAgIE5ldHdvcmtMb2FkTWV0cmljcyBl
bXB0eU1ldHJpY3M7Ci0gICAgbV9jbGllbnQuZ2V0KCkuZGlkRmluaXNoTG9hZGluZyhlbXB0eU1l
dHJpY3MpOwotfQotCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQotewotICAgIEFTU0VSVF9VTlVTRUQo
aGFuZGxlLCAhaGFuZGxlIHx8IGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgQVNTRVJUKCFlcnJv
ci5pc051bGwoKSk7Ci0KLSAgICBtX2NsaWVudC5nZXQoKS5kaWRGYWlsTG9hZGluZyhlcnJvcik7
Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoIW1fcmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlcik7Ci0gICAgbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9
PSBtX2hhbmRsZSk7Ci0gICAgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKLX0KLQotI2lmIFVTRShQUk9U
RUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi12b2lkIE5ldHdvcmtMb2FkOjpjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCi17Ci0gICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1f
aGFuZGxlKTsKLQotICAgIC8vIEhhbmRsZSBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbiBhdCBwbGF0
Zm9ybS1sZXZlbCBpZiByZXF1ZXN0ZWQsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgotICAgIGlm
IChwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZAotICAg
ICAgICAmJiAhTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhbkhhbmRsZUhUVFBTU2VydmVy
VHJ1c3RFdmFsdWF0aW9uKCkpIHsKLSAgICAgICAgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG1fd2FpdGluZ0ZvckNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZSA9IHRydWU7Ci0gICAgbV9jbGllbnQuZ2V0KCkuY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZUFzeW5jKHByb3RlY3Rpb25TcGFjZSk7Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6
OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIHJlc3Vs
dCkKLXsKLSAgICBtX3dhaXRpbmdGb3JDb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UgPSBmYWxzZTsKLSAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgIG1faGFuZGxl
LT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocmVzdWx0KTsK
LX0KLSNlbmRpZgotCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxCeXRlc1RvQmVTZW50KQotewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5k
bGUgPT0gbV9oYW5kbGUpOwotCi0gICAgbV9jbGllbnQuZ2V0KCkuZGlkU2VuZERhdGEoYnl0ZXNT
ZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwotfQotCi12b2lkIE5ldHdvcmtMb2FkOjp3YXNCbG9j
a2VkKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUs
IGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0KLSAgICBkaWRGYWlsKGhhbmRsZSwgV2ViS2l0OjpibG9j
a2VkRXJyb3IobV9jdXJyZW50UmVxdWVzdCkpOwotfQotCi12b2lkIE5ldHdvcmtMb2FkOjpjYW5u
b3RTaG93VVJMKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRCho
YW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0KLSAgICBkaWRGYWlsKGhhbmRsZSwgV2ViS2l0
OjpjYW5ub3RTaG93VVJMRXJyb3IobV9jdXJyZW50UmVxdWVzdCkpOwotfQotCi1ib29sIE5ldHdv
cmtMb2FkOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSogaGFuZGxl
KQotewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUgfHwgIW1f
aGFuZGxlKTsgLy8gbV9oYW5kbGUgd2lsbCBiZSAwIGlmIGNhbGxlZCBmcm9tIFJlc291cmNlSGFu
ZGxlOjpzdGFydCgpLgotCi0gICAgLy8gV2hlbiB0aGUgV2ViUHJvY2VzcyBpcyBoYW5kbGluZyBs
b2FkaW5nIGEgY2xpZW50IGlzIGNvbnN1bHRlZCBlYWNoIHRpbWUgdGhpcyBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSBxdWVzdGlvbiBpcyBhc2tlZC4KLSAgICAvLyBJbiBOZXR3b3JrUHJvY2Vz
cyBtb2RlIHdlIGFzayB0aGUgV2ViUHJvY2VzcyBjbGllbnQgdXAgZnJvbnQgb25jZSBhbmQgdGhl
biByZXVzZSB0aGUgY2FjaGVkIGFuc3dlci4KLQotICAgIC8vIFdlIHN0aWxsIG5lZWQgdGhpcyBz
eW5jIHZlcnNpb24sIGJlY2F1c2UgUmVzb3VyY2VIYW5kbGUgaXRzZWxmIHVzZXMgaXQgaW50ZXJu
YWxseSwgZXZlbiB3aGVuIHRoZSBkZWxlZ2F0ZSB1c2VzIGFuIGFzeW5jIG9uZS4KLQotICAgIHJl
dHVybiBtX3BhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OlVzZTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUs
IGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0KLSAgICBpZiAoIWlzQWxsb3dlZFRvQXNrVXNlckZvckNy
ZWRlbnRpYWxzKCkpIHsKLSAgICAgICAgY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkt
PnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgY2hhbGxl
bmdlKTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAg
IEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwotCi0gICAgbV9oYW5k
bGUtPmNhbmNlbCgpOwotICAgIGRpZEZhaWwobV9oYW5kbGUuZ2V0KCksIGNhbmNlbGxlZEVycm9y
KG1fY3VycmVudFJlcXVlc3QpKTsKLX0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTkgKzI1LDE2
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtEYXRhVGFzay5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCiAjaW5j
bHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKLSNpbmNsdWRlICJEb3dubG9hZElELmgiCi0jaW5jbHVkZSAi
TmV0d29ya0RhdGFUYXNrLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoTkVUV09SS19DQVBUVVJFKQogI2luY2x1ZGUg
Ik5ldHdvcmtDYXB0dXJlUmVjb3JkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZVJlcGxh
eWVyLmgiCkBAIC00NSwyMCArNDIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IE5ldHdvcmtMb2FkIGZpbmFsIDoKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIHByaXZh
dGUgTmV0d29ya0RhdGFUYXNrQ2xpZW50Ci0jZWxzZQotICAgIHByaXZhdGUgV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQKLSNlbmRpZgorY2xhc3MgTmV0d29ya0xvYWQgZmluYWwgOiBwcml2
YXRlIE5ldHdvcmtEYXRhVGFza0NsaWVudAogewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgTmV0d29ya0xvYWQoTmV0
d29ya0xvYWRDbGllbnQmLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya1Nlc3Npb24m
KTsKLSNlbHNlCi0gICAgTmV0d29ya0xvYWQoTmV0d29ya0xvYWRDbGllbnQmLCBOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMmJik7Ci0jZW5kaWYKICAgICB+TmV0d29ya0xvYWQoKTsKIAogICAgIHZvaWQg
c2V0RGVmZXJzTG9hZGluZyhib29sKTsKQEAgLTc0LDcgKzYyLDYgQEAgcHVibGljOgogICAgIHZv
aWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwog
ICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIAotI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCiAgICAgdm9pZCBjb252ZXJ0VGFza1RvRG93bmxvYWQoUGVuZGluZ0Rvd25sb2Fk
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkSUQoRG93bmxvYWRJRCk7
CiAgICAgdm9pZCBzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKQEAgLTgyLDQ5
ICs2OSwyMSBAQCBwdWJsaWM6CiAgICAgRG93bmxvYWRJRCBwZW5kaW5nRG93bmxvYWRJRCgpIHsg
cmV0dXJuIG1fdGFzay0+cGVuZGluZ0Rvd25sb2FkSUQoKTsgfQogCiAgICAgYm9vbCBzaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBmaW5hbDsKLSNlbHNlCi0gICAg
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxl
LmdldCgpOyB9Ci0KLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAg
IHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgb3ZlcnJp
ZGU7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHdpbGxDYWNoZVJlc3Bv
bnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICop
IG92ZXJyaWRlOwotI2VuZGlmCi0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKIAogI2lm
IFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgdm9pZCBjb250aW51ZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCk7CiAjZW5kaWYKIAogcHJp
dmF0ZToKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogI2lmIEVOQUJMRShORVRXT1JLX0NBUFRV
UkUpCiAgICAgdm9pZCBpbml0aWFsaXplRm9yUmVjb3JkKE5ldHdvcmtTZXNzaW9uJik7CiAgICAg
dm9pZCBpbml0aWFsaXplRm9yUmVwbGF5KE5ldHdvcmtTZXNzaW9uJik7CiAjZW5kaWYKICAgICB2
b2lkIGluaXRpYWxpemUoTmV0d29ya1Nlc3Npb24mKTsKLSNlbmRpZgogCiAgICAgTmV0d29ya0xv
YWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIHNoYXJlZERpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgc2hhcmVk
V2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQot
ICAgIC8vIFJlc291cmNlSGFuZGxlQ2xpZW50Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3lu
YyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwotICAgIHZv
aWQgZGlkU2VuZERhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVk
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZh
aWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JikgZmluYWw7Ci0gICAgdm9pZCB3YXNCbG9ja2VkKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikg
ZmluYWw7Ci0gICAgdm9pZCBjYW5ub3RTaG93VVJMKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikg
ZmluYWw7Ci0gICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSopIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKSBmaW5hbDsKLSAgICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKSBmaW5hbDsKLSAgICBib29sIGxvYWRpbmdTeW5jaHJvbm91c1hIUigpIGZpbmFsIHsg
cmV0dXJuIG1fY2xpZW50LmdldCgpLmlzU3luY2hyb25vdXMoKTsgfQotI2Vsc2UKICAgICAvLyBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
Q2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CkBAIC0xMzksMTIgKzk4LDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCB0aHJvdHRsZURlbGF5Q29tcGxldGVkKCk7CiAKICAgICB2b2lkIGNvbXBs
ZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7
Ci0jZW5kaWYKIAogICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TmV0d29ya0xvYWRDbGllbnQ+
IG1fY2xpZW50OwogICAgIGNvbnN0IE5ldHdvcmtMb2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7
CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
IG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQog
ICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+IG1fdGFzazsKICAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiBtX2NoYWxsZW5nZTsKICNpZiBVU0UoUFJP
VEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpAQCAtMTU0LDExICsxMTEsNiBAQCBwcml2YXRl
OgogICAgIAogICAgIHN0cnVjdCBUaHJvdHRsZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyb3R0
bGU+IG1fdGhyb3R0bGU7Ci0jZWxzZQotICAgIGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ+IG1fbmV0d29ya2luZ0NvbnRleHQ7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlJlc291cmNlSGFuZGxlPiBtX2hhbmRsZTsKLSNlbmRpZgogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7IC8vIFVwZGF0ZWQgb24gcmVkaXJl
Y3RzLgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIE5ldHdvcmtMb2FkUGFyYW1ldGVyc19oCi0jZGVmaW5lIE5ldHdvcmtMb2FkUGFy
YW1ldGVyc19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYkRhdGFGaWxl
UmVmZXJlbmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4K
QEAgLTQ5LDEyICs0OCw4IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QgeyB0cnVlIH07CiAgICAgYm9vbCBkZWZlcnNMb2FkaW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIG5lZWRzQ2VydGlmaWNhdGVJbmZvIHsgZmFsc2UgfTsKLSNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPj4gYmxvYkZpbGVSZWZlcmVuY2VzOwotI2VuZGlmCiAgICAgUHJlY29ubmVj
dE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHkgeyBQcmVjb25uZWN0T25seTo6Tm8gfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gTmV0d29ya0xvYWRQYXJhbWV0ZXJz
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDEyICsyNTIsMTAgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcgogICAgIG1fbG9nQ29va2ll
SW5mb3JtYXRpb24gPSBwYXJhbWV0ZXJzLmxvZ0Nvb2tpZUluZm9ybWF0aW9uOwogI2VuZGlmCiAK
LSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RP
Q09MX01BTkFHRVIpCiAgICAgcGFyYW1ldGVycy5kZWZhdWx0U2Vzc2lvblBhcmFtZXRlcnMubGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gc3VwcGxlbWVudDxMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXI+KCk7CiAjZW5kaWYKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdU
Rk1vdmUocGFyYW1ldGVycy5kZWZhdWx0U2Vzc2lvblBhcmFtZXRlcnMpKSk7Ci0jZW5kaWYKIAog
ICAgIGZvciAoYXV0byYgc3VwcGxlbWVudCA6IG1fc3VwcGxlbWVudHMudmFsdWVzKCkpCiAgICAg
ICAgIHN1cHBsZW1lbnQtPmluaXRpYWxpemUocGFyYW1ldGVycyk7CkBAIC0zMDAsMTIgKzI5OCwx
MCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIHsKICAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuY2xl
YXJDcmVkZW50aWFscygpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKQogICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+Y2xl
YXJDcmVkZW50aWFscygpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCkBAIC01OTMsNyArNTg5LDYg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aQogCiAjZW5kaWYKIAot
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoZG93bmxvYWRJRCwgV1RGTW92ZShyZXF1ZXN0KSk7CkBAIC02MTgsNyArNjEzLDYg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZAogCiAgICAgZG93bmxv
YWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhuZXR3b3JrRGF0YVRhc2sucGVu
ZGluZ0Rvd25sb2FkSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUpLCBkZXN0aW5hdGlvbklEKTsKIH0K
LSNlbmRpZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9u
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29s
IGFsbG93T3ZlcndyaXRlKQogewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksOSAr
MTE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7CiAjZW5kaWYKIAotI2lm
IFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0jZW5kaWYKIAogI2lmIFVTRShQUk9URUNUSU9O
X1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlByb3Rl
Y3Rpb25TcGFjZSYpOwpAQCAtMTg0LDkgKzE4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRE
ZXN0cm95RG93bmxvYWQoKSBvdmVycmlkZTsKICAgICBJUEM6OkNvbm5lY3Rpb24qIGRvd25sb2Fk
UHJveHlDb25uZWN0aW9uKCkgb3ZlcnJpZGU7CiAgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyJiBk
b3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKSBvdmVycmlkZTsKLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQogICAgIHZvaWQgcGVuZGluZ0Rvd25sb2FkQ2FuY2VsZWQoRG93bmxvYWRJRCkg
b3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIC8vIE1lc3NhZ2UgSGFuZGxlcnMKICAgICB2b2lkIGRp
ZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CkBAIC0yMTAsOSArMjA2LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoUFJPVEVDVElPTl9T
UEFDRV9BVVRIX0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIGJvb2wg
Y2FuQXV0aGVudGljYXRlKTsKICNlbmRpZgotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAg
dm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik7Ci0jZW5kaWYKICAgICB2b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25s
b2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAKICAgICB2b2lkIHNldENh
Y2hlTW9kZWwodWludDMyX3QpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMjcyMzIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzIExlZ2FjeVJlY2VpdmUKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExC
QUNLKQogICAgIENvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1
aW50NjRfdCBsb2FkZXJJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCiAjZW5kaWYKLSNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQogICAgIENvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93
bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKLSNl
bmRpZgogICAgIENvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oV2ViS2l0
OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092
ZXJ3cml0ZSkKIAogICAgIFNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCBmbGFnKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDYsMTQgKzEwNiw2IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8K
ICAgICAgICAgfQogICAgIH0KIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIGlmIChv
cmlnaW5hbFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzQmxvYigpKSB7Ci0gICAgICAgIEFTU0VS
VCghbV9wYXJhbWV0ZXJzLnJlc291cmNlU2FuZGJveEV4dGVuc2lvbik7Ci0gICAgICAgIG1fZmls
ZVJlZmVyZW5jZXMuYXBwZW5kVmVjdG9yKE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigp
LmZpbGVzSW5CbG9iKGNvbm5lY3Rpb24sIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpKSk7Ci0gICAg
fQotI2VuZGlmCi0KLQogICAgIGlmIChzeW5jaHJvbm91c1JlcGx5KQogICAgICAgICBtX3N5bmNo
cm9ub3VzTG9hZERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+KFdU
Rk1vdmUoc3luY2hyb25vdXNSZXBseSkpOwogfQpAQCAtMjI5LDcgKzIyMSw2IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmsKICAgICBwYXJhbWV0ZXJzLmRlZmVyc0xv
YWRpbmcgPSBtX2RlZmVyc0xvYWRpbmc7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVz
dDsKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKHJlcXVlc3QudXJsKCkucHJv
dG9jb2xJc0Jsb2IoKSkKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBO
ZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5maWxlc0luQmxvYihtX2Nvbm5lY3Rpb24s
IG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpKTsKIApAQCAtMjQyLDkgKzIzMyw2IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMs
IFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7Ci0jZWxzZQotICAgIG1fbmV0
d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgV1RGTW92ZShw
YXJhbWV0ZXJzKSk7Ci0jZW5kaWYKIAogICAgIGlmIChtX2RlZmVyc0xvYWRpbmcpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogQ3JlYXRlZCwgYnV0
IGRlZmVycmVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtTZXNzaW9uLmgiCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVkZSAiTmV0
d29ya0RhdGFUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtODcsNSArODUsMyBAQCBib29sIE5l
dHdvcmtTZXNzaW9uOjphbGxvd3NTcGVjaWZpY0hUVFBTCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgJKHJldmlzaW9uIDIyNzIzMikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShORVRX
T1JLX1NFU1NJT04pCi0KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC02Nyw1ICs2NSwzIEBAIHByb3Rl
Y3RlZDoKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKE5FVFdP
UktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlBpbmdMb2FkLmgiCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9O
KQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgpAQCAtMzMwLDUg
KzMyOCwzIEBAIENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzIFBpbmdMb2EKICNlbmRp
ZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVk
ZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oPgpA
QCAtOTgsNSArOTYsMyBAQCBwcml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYgLy8gVVNFKE5FVFdP
UktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUsNiBAQCBMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OkxlZ2FjeUN1c3RvCiAKIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpp
bml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogewotICAgIHJlZ2lzdGVyUHJvdG9jb2xDbGFzcygpOwotCiAgICAgZm9yIChjb25zdCBh
dXRvJiBzY2hlbWUgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJv
dG9jb2xzKQogICAgICAgICByZWdpc3RlclNjaGVtZShzY2hlbWUpOwogfQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHJldmlzaW9uIDIy
NzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIHN0b3BMb2Fk
aW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYm
IFVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCByZWdp
c3RlclByb3RvY29sQ2xhc3MoTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiopOwogI2VuZGlmCiAK
QEAgLTExMSw4ICsxMTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKICAgICB2b2lkIHdhc1JlZGlyZWN0ZWRUb1JlcXVl
c3QodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7
CiAKLSAgICB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xDbGFzcygpOwotCiAgICAgQ2hpbGRQcm9jZXNz
JiBtX2NoaWxkUHJvY2VzczsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgQ3VzdG9t
UHJvdG9jb2w+IEN1c3RvbVByb3RvY29sTWFwOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHJl
dmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDUsMTkgKzEwNSwxMCBAQCAtICh2b2lkKXN0b3BMb2FkaW5nCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi12b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0
ZXJQcm90b2NvbENsYXNzKCkKLXsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBbTlNV
UkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltXS0N1c3RvbVByb3RvY29sIGNsYXNzXV07Ci0jZW5k
aWYKLX0KLQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6cmVnaXN0ZXJQcm90b2NvbENsYXNzKE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRp
b24gKmNvbmZpZ3VyYXRpb24pCiB7CiAgICAgY29uZmlndXJhdGlvbi5wcm90b2NvbENsYXNzZXMg
PSBAW1tXS0N1c3RvbVByb3RvY29sIGNsYXNzXV07CiB9Ci0jZW5kaWYKIAogdm9pZCBMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1l
KQogewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRv
d25sb2FkQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGll
bnQuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTIwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQmxvYkRvd25sb2FkQ2xpZW50LmgiCi0KLSNpZiAh
VVNFKE5FVFdPUktfU0VTU0lPTikKLQotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNs
dWRlICJEb3dubG9hZC5oIgotI2luY2x1ZGUgIldlYkVycm9ycy5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvTUlNRVR5cGVSZWdpc3RyeS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotQmxvYkRv
d25sb2FkQ2xpZW50OjpCbG9iRG93bmxvYWRDbGllbnQoRG93bmxvYWQmIGRvd25sb2FkKQotICAg
IDogbV9kb3dubG9hZChkb3dubG9hZCkKLXsKLX0KLQotdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlKQotewotICAgIG1fZG93bmxvYWQuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1v
dmUocmVzcG9uc2UpKTsKLSAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSBNSU1FVHlwZVJl
Z2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkobV9kb3dubG9hZC5zdWdnZXN0
ZWROYW1lKCkuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJ1bmtub3duIikgOiBtX2Rvd25sb2Fk
LnN1Z2dlc3RlZE5hbWUoKSwgcmVzcG9uc2UubWltZVR5cGUoKSk7Ci0gICAgbV9kb3dubG9hZC5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKHN1Z2dlc3RlZEZpbGVu
YW1lKTsKLX0KLQotdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZERlY2lkZURvd25sb2FkRGVz
dGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIGJvb2wgYWxsb3dPdmVyd3Jp
dGUpCi17Ci0gICAgQVNTRVJUKCFkZXN0aW5hdGlvblBhdGguaXNFbXB0eSgpKTsKLQotICAgIGlm
IChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRlc3RpbmF0aW9uUGF0aCkpIHsKLSAgICAgICAgaWYg
KCFhbGxvd092ZXJ3cml0ZSkgewotICAgICAgICAgICAgZGlkRmFpbChudWxscHRyLCBjYW5jZWxs
ZWRFcnJvcihtX2Rvd25sb2FkLnJlcXVlc3QoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZGVzdGluYXRpb25QYXRoKTsK
LSAgICB9Ci0KLSAgICBtX2Rlc3RpbmF0aW9uUGF0aCA9IGRlc3RpbmF0aW9uUGF0aDsKLSAgICBt
X2Rlc3RpbmF0aW9uRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fZGVzdGluYXRpb25QYXRo
LCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKLSAgICBtX2Rvd25sb2FkLmRpZENy
ZWF0ZURlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25QYXRoKTsKLQotICAgIG1fZG93bmxvYWQuY29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKLX0KLQotdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6
OndpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKLX0KLQot
I2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi12b2lkIEJsb2JEb3dubG9h
ZENsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJikKLXsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLSNlbmRpZgotCi12b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQp
Ci17Ci0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kZXN0aW5hdGlvbkZpbGUsIGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgbV9kb3dubG9hZC5kaWRSZWNlaXZlRGF0
YShidWZmZXItPnNpemUoKSk7Ci19Ci0KLXZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKikKLXsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
bV9kZXN0aW5hdGlvbkZpbGUpOwotICAgIG1fZG93bmxvYWQuZGlkRmluaXNoKCk7Ci19Ci0KLXZv
aWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoKQotewotICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7Ci0gICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5p
c0VtcHR5KCkpCi0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9kZXN0aW5hdGlvblBh
dGgpOwotCi0gICAgbV9kb3dubG9hZC5kaWRDYW5jZWwoSVBDOjpEYXRhUmVmZXJlbmNlKCkpOwot
fQotCi12b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQotewotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSht
X2Rlc3RpbmF0aW9uRmlsZSk7Ci0gICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkp
Ci0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOwotCi0g
ICAgbV9kb3dubG9hZC5kaWRGYWlsKGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UoKSk7Ci19Ci0K
LX0KLQotI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2Fk
Q2xpZW50LmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oCShub25leGlzdGVudCkKQEAgLTEsNjQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgIVVTRShORVRXT1JLX1NF
U1NJT04pCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgRG93bmxvYWQ7Ci1jbGFzcyBOZXR3b3JrTG9hZFBh
cmFtZXRlcnM7Ci0KLWNsYXNzIEJsb2JEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgQmxvYkRv
d25sb2FkQ2xpZW50KERvd25sb2FkJik7Ci0KLSAgICB2b2lkIGRpZENhbmNlbCgpOwotICAgIHZv
aWQgZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
UGF0aCwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gUmVzb3VyY2VI
YW5kbGVDbGllbnQKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7
Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5
bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7Ci0jaWYgVVNFKFBST1RFQ1RJT05fU1BB
Q0VfQVVUSF9DQUxMQkFDSykKLSAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZSYpIGZpbmFsOwotI2VuZGlmCi0KLSAgICBEb3dubG9hZCYgbV9kb3dubG9h
ZDsKLSAgICBTdHJpbmcgbV9kZXN0aW5hdGlvblBhdGg7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZGVzdGluYXRpb25GaWxlIHsgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwotfTsKLQotfQotCi0jZW5kaWYgLy8g
IVVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJEb3dubG9hZC5oIgogCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCi0jaW5jbHVkZSAiQmxvYkRvd25sb2FkQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKQEAgLTUwLDcgKzQ5LDYgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0jaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKIERvd25sb2FkOjpEb3dubG9hZChEb3dubG9hZE1hbmFnZXImIGRvd25sb2Fk
TWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBOZXR3b3JrRGF0YVRhc2smIGRvd25sb2Fk
LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZE5hbWUpCiAgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCiAgICAgLCBt
X2Rvd25sb2FkSUQoZG93bmxvYWRJRCkKQEAgLTYyLDYgKzYwLDcgQEAgRG93bmxvYWQ6OkRvd25s
b2FkKERvd25sb2FkTWFuYWdlciYgZG93bgogCiAgICAgbV9kb3dubG9hZE1hbmFnZXIuZGlkQ3Jl
YXRlRG93bmxvYWQoKTsKIH0KKwogI2lmIFBMQVRGT1JNKENPQ09BKQogRG93bmxvYWQ6OkRvd25s
b2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2Fk
SUQsIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayogZG93bmxvYWQsIGNvbnN0IFBBTDo6U2Vzc2lv
bklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKICAgICA6IG1fZG93
bmxvYWRNYW5hZ2VyKGRvd25sb2FkTWFuYWdlcikKQEAgLTc1LDkwICs3NCwyMiBAQCBEb3dubG9h
ZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3duCiAgICAgbV9kb3dubG9hZE1hbmFnZXIu
ZGlkQ3JlYXRlRG93bmxvYWQoKTsKIH0KICNlbmRpZgotI2Vsc2UKLURvd25sb2FkOjpEb3dubG9h
ZChEb3dubG9hZE1hbmFnZXImIGRvd25sb2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElE
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
TmFtZSkKLSAgICA6IG1fZG93bmxvYWRNYW5hZ2VyKGRvd25sb2FkTWFuYWdlcikKLSAgICAsIG1f
ZG93bmxvYWRJRChkb3dubG9hZElEKQotICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCi0gICAgLCBt
X3N1Z2dlc3RlZE5hbWUoc3VnZ2VzdGVkTmFtZSkKLXsKLSAgICBBU1NFUlQobV9kb3dubG9hZElE
LmRvd25sb2FkSUQoKSk7Ci0KLSAgICBtX2Rvd25sb2FkTWFuYWdlci5kaWRDcmVhdGVEb3dubG9h
ZCgpOwotfQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAKIERvd25sb2FkOjp+RG93
bmxvYWQoKQogewotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIGZvciAoYXV0byYgZmls
ZVJlZmVyZW5jZSA6IG1fYmxvYkZpbGVSZWZlcmVuY2VzKQotICAgICAgICBmaWxlUmVmZXJlbmNl
LT5yZXZva2VGaWxlQWNjZXNzKCk7Ci0KLSAgICBpZiAobV9yZXNvdXJjZUhhbmRsZSkgewotICAg
ICAgICBtX3Jlc291cmNlSGFuZGxlLT5jbGVhckNsaWVudCgpOwotICAgICAgICBtX3Jlc291cmNl
SGFuZGxlLT5jYW5jZWwoKTsKLSAgICAgICAgbV9yZXNvdXJjZUhhbmRsZSA9IG51bGxwdHI7Ci0g
ICAgfQotICAgIG1fZG93bmxvYWRDbGllbnQgPSBudWxscHRyOwotCi0gICAgcGxhdGZvcm1JbnZh
bGlkYXRlKCk7Ci0jZW5kaWYKLQogICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRpZERlc3Ryb3lEb3du
bG9hZCgpOwogfQogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi12b2lkIERvd25sb2FkOjpz
dGFydCgpCi17Ci0gICAgaWYgKG1fcmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKSB7Ci0g
ICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2JEb3dubG9hZENs
aWVudD4oKnRoaXMpOwotICAgICAgICBib29sIGRlZmVyc0xvYWRpbmcgPSBmYWxzZTsKLSAgICAg
ICAgYm9vbCBzaG91bGRDb250ZW50U25pZmYgPSBmYWxzZTsKLSAgICAgICAgYm9vbCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiA9IHRydWU7Ci0gICAgICAgIG1fcmVzb3VyY2VIYW5kbGUgPSBS
ZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKG51bGxwdHIsIG1fcmVxdWVzdCwgbV9kb3dubG9hZENsaWVu
dC5nZXQoKSwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50
RW5jb2RpbmdTbmlmZik7Ci0gICAgICAgIGRpZFN0YXJ0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBzdGFydE5ldHdvcmtMb2FkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnN0YXJ0
V2l0aEhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKLXsKLSAgICBpZiAobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkp
IHsKLSAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYkRvd25s
b2FkQ2xpZW50PigqdGhpcyk7Ci0gICAgICAgIGJvb2wgZGVmZXJzTG9hZGluZyA9IGZhbHNlOwot
ICAgICAgICBib29sIHNob3VsZENvbnRlbnRTbmlmZiA9IGZhbHNlOwotICAgICAgICBib29sIHNo
b3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmID0gdHJ1ZTsKLSAgICAgICAgbV9yZXNvdXJjZUhhbmRs
ZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUobnVsbHB0ciwgbV9yZXF1ZXN0LCBtX2Rvd25sb2Fk
Q2xpZW50LmdldCgpLCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmKTsKLSAgICAgICAgZGlkU3RhcnQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHN0YXJ0TmV0d29ya0xvYWRXaXRoSGFuZGxlKGhhbmRsZSwgcmVzcG9u
c2UpOwotfQotI2VuZGlmCi0KIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCiB7Ci0jaWYgVVNFKE5F
VFdPUktfU0VTU0lPTikKICAgICBpZiAobV9kb3dubG9hZCkgewogICAgICAgICBtX2Rvd25sb2Fk
LT5jYW5jZWwoKTsKICAgICAgICAgZGlkQ2FuY2VsKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0jZWxzZQotICAgIGlmIChtX3JlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkgewot
ICAgICAgICBhdXRvIHJlc291cmNlSGFuZGxlID0gV1RGTW92ZShtX3Jlc291cmNlSGFuZGxlKTsK
LSAgICAgICAgcmVzb3VyY2VIYW5kbGUtPmNhbmNlbCgpOwotICAgICAgICBzdGF0aWNfY2FzdDxC
bG9iRG93bmxvYWRDbGllbnQqPihtX2Rvd25sb2FkQ2xpZW50LmdldCgpKS0+ZGlkQ2FuY2VsKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKICAgICBwbGF0Zm9ybUNhbmNlbE5ldHdv
cmtMb2FkKCk7CiB9CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBEb3dubG9hZDo6
ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmIChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuaXNQYXNzd29yZEJh
c2VkKCkgJiYgIWNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKS5pc0VtcHR5KCkgJiYgIWNo
YWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpKSB7CkBAIC0xNjgsODEgKzk5LDYgQEAgdm9p
ZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdAogCiAgICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9Ci0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKLQotI2lmICFVU0UoTkVU
V09SS19TRVNTSU9OKQotdm9pZCBEb3dubG9hZDo6ZGlkU3RhcnQoKQotewotICAgIHNlbmQoTWVz
c2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFN0YXJ0KG1fcmVxdWVzdCwgbV9zdWdnZXN0ZWROYW1l
KSk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9h
ZFByb3h5OjpXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3Zl
KHJlZGlyZWN0UmVzcG9uc2UpKSk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpCi17Ci0gICAgbV9kb3dubG9hZE1hbmFnZXIuZG93bmxvYWRzQXV0
aGVudGljYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0
aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IENyZWF0ZWQgKGlkID0g
JSIgUFJJdTY0ICIpIiwgZG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSk7Ci0KLSAgICBtX3Jlc3Bv
bnNlTUlNRVR5cGUgPSByZXNwb25zZS5taW1lVHlwZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OkRv
d25sb2FkUHJveHk6OkRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSkpOwotfQotCi1ib29sIERv
d25sb2FkOjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQotewotICAgIGJvb2wgcmVzdWx0OwotICAgIGlmICghc2VuZFN5bmMoTWVzc2FnZXM6
OkRvd25sb2FkUHJveHk6OlNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKG1pbWVUeXBl
KSwgTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OlNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVU
eXBlOjpSZXBseShyZXN1bHQpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi1TdHJpbmcgRG93bmxvYWQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRl
KQotewotICAgIFN0cmluZyBkZXN0aW5hdGlvbjsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIXNlbmRTeW5jKE1lc3NhZ2VzOjpE
b3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShmaWxl
bmFtZSwgbV9yZXNwb25zZU1JTUVUeXBlKSwgTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOjpSZXBseShkZXN0aW5hdGlvbiwgYWxs
b3dPdmVyd3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKSkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotCi0gICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwotICAgIGlmIChtX3NhbmRib3hF
eHRlbnNpb24pCi0gICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwotCi0gICAg
cmV0dXJuIGRlc3RpbmF0aW9uOwotfQotCi12b2lkIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhkb3dubG9hZElEKCksIHN1Z2dlc3RlZEZpbGVu
YW1lKSk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24o
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCi17Ci0gICAgQVNT
RVJUKCFtX3NhbmRib3hFeHRlbnNpb24pOwotICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKLSAg
ICBpZiAobV9zYW5kYm94RXh0ZW5zaW9uKQotICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNv
bnN1bWUoKTsKLQotICAgIGlmIChtX3JlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkgewot
ICAgICAgICBzdGF0aWNfY2FzdDxCbG9iRG93bmxvYWRDbGllbnQqPihtX2Rvd25sb2FkQ2xpZW50
LmdldCgpKS0+ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihkZXN0aW5hdGlvblBhdGgsIGFs
bG93T3ZlcndyaXRlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZvciBub3cs
IG9ubHkgQmxvYiBVUkwgZG93bmxvYWRzIGdvIHRocm91Z2ggdGhpcyBjb2RlIHBhdGguCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmNvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlKCkKLXsKLSAgICBtX3Jlc291cmNlSGFuZGxlLT5jb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpOwotfQotI2VuZGlmCiAKIHZvaWQgRG93bmxvYWQ6OmRpZENyZWF0ZURlc3Rp
bmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKQEAgLTI2MywxMCArMTE5LDYgQEAgdm9pZCBE
b3dubG9hZDo6ZGlkRmluaXNoKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRG
aW5pc2g6IChpZCA9ICUiIFBSSXU2NCAiKSIsIGRvd25sb2FkSUQoKS5kb3dubG9hZElEKCkpOwog
Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgcGxhdGZvcm1EaWRGaW5pc2goKTsKLSNl
bmRpZgotCiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkRmluaXNoKCkpOwog
CiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikgewpAQCAtMzE2LDcgKzE2OCw3IEBAIHVpbnQ2
NF90IERvd25sb2FkOjptZXNzYWdlU2VuZGVyRGVzdGluYXQKIAogYm9vbCBEb3dubG9hZDo6aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKIHsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9O
KSAmJiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gbV9z
ZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7CiAjZWxzZQogICAgIHJldHVybiBm
YWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
OSBAQAogCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKKyNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
QEAgLTM2LDE4ICszOCw5IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSNpbmNsdWRl
ICJOZXR3b3JrRGF0YVRhc2suaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmg+CiAjaWYgUExBVEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRv
d25sb2FkVGFzazsKICNlbmRpZgotI2Vsc2UgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKLSNpZiBQ
TEFURk9STShDT0NPQSkKLU9CSkNfQ0xBU1MgTlNVUkxEb3dubG9hZDsKLU9CSkNfQ0xBU1MgV0tE
b3dubG9hZEFzRGVsZWdhdGU7Ci0jZW5kaWYKLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9O
KQogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CkBAIC03Myw0NSArNjYs
MjEgQEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIERvd25sb2FkIDogcHVibGljIElQQzo6TWVzc2Fn
ZVNlbmRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG93bmxvYWQpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIERv
d25sb2FkKERvd25sb2FkTWFuYWdlciYsIERvd25sb2FkSUQsIE5ldHdvcmtEYXRhVGFzayYsIGNv
bnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUgPSB7IH0pOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIERvd25sb2FkKERvd25sb2Fk
TWFuYWdlciYsIERvd25sb2FkSUQsIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayosIGNvbnN0IFBB
TDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUg
PSB7IH0pOwogI2VuZGlmCi0jZWxzZQotICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdlciYsIERv
d25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0pOwotI2VuZGlmCiAKICAgICB+RG93bmxvYWQoKTsKIAot
I2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIHZvaWQgc2V0QmxvYkZpbGVSZWZlcmVuY2Vz
KFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mJiBmaWxlUmVm
ZXJlbmNlcykgeyBtX2Jsb2JGaWxlUmVmZXJlbmNlcyA9IFdURk1vdmUoZmlsZVJlZmVyZW5jZXMp
OyB9Ci0KLSAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBzdGFydFdpdGhIYW5kbGUoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0j
ZW5kaWYKICAgICB2b2lkIHJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogICAg
IHZvaWQgY2FuY2VsKCk7CiAKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJl
dHVybiBtX2Rvd25sb2FkSUQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUoKSBj
b25zdCB7IHJldHVybiBtX3N1Z2dlc3RlZE5hbWU7IH0KIAotI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCiAgICAgdm9pZCBzZXRTYW5kYm94RXh0ZW5zaW9uKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
PiYmIHNhbmRib3hFeHRlbnNpb24pIHsgbV9zYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZShzYW5k
Ym94RXh0ZW5zaW9uKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYpOwotI2Vsc2UKLSAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qo
KSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
OwotICAgIHZvaWQgZGlkU3RhcnQoKTsKLSAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0gICAgU3RyaW5nIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3Zlcndy
aXRlKTsKLSAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5
bmMoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9u
KGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7Ci0gICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSgpOwotICAgIHZvaWQgcGxhdGZvcm1EaWRGaW5pc2goKTsKLSNlbmRpZgogICAgIHZvaWQg
ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKQEAgLTEy
MywxMSArOTIsNiBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIG92ZXJyaWRlOwogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgdm9p
ZCBzdGFydE5ldHdvcmtMb2FkKCk7Ci0gICAgdm9pZCBzdGFydE5ldHdvcmtMb2FkV2l0aEhhbmRs
ZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwotI2VuZGlmCiAgICAgdm9pZCBw
bGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKCk7CiAKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpIGNvbnN0OwpAQCAtMTM4LDIyICsxMDIsMTEgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IG1fYmxvYkZpbGVSZWZl
cmVuY2VzOwogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247
CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+
IG1fZG93bmxvYWQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5TVVJMU2Vz
c2lvbkRvd25sb2FkVGFzaz4gbV9kb3dubG9hZFRhc2s7CiAjZW5kaWYKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKLSNlbHNlIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBTdHJpbmcgbV9yZXNwb25zZU1J
TUVUeXBlOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxOU1VSTERvd25sb2Fk
PiBtX25zVVJMRG93bmxvYWQ7Ci0gICAgUmV0YWluUHRyPFdLRG93bmxvYWRBc0RlbGVnYXRlPiBt
X2RlbGVnYXRlOwotI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwotICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNT
SU9OKQogICAgIFN0cmluZyBtX3N1Z2dlc3RlZE5hbWU7CiAgICAgYm9vbCBtX2hhc1JlY2VpdmVk
RGF0YSB7IGZhbHNlIH07CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCShyZXZpc2lvbiAy
MjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIERvd25sb2FkTWFu
YWdlcjo6RG93bmxvYWRNYW5hZ2VyKENsaWVudCYKIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0
YXJ0RG93bmxvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKIHsKLSNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gU2Vzc2lv
blRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYgKCFuZXR3b3JrU2Vz
c2lvbikKICAgICAgICAgcmV0dXJuOwpAQCAtNjEsMjIgKzYwLDggQEAgdm9pZCBEb3dubG9hZE1h
bmFnZXI6OnN0YXJ0RG93bmxvYWQoTmV0dwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAKICAgICBtX3Bl
bmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rv
d25sb2FkPihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24s
IHN1Z2dlc3RlZE5hbWUpKTsKLSNlbHNlCi0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91
bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1l
KTsKLSAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpICYmIGNvbm5lY3Rpb24p
IHsKLSAgICAgICAgYXV0byBibG9iRmlsZVJlZmVyZW5jZXMgPSBOZXR3b3JrQmxvYlJlZ2lzdHJ5
OjpzaW5nbGV0b24oKS5maWxlc0luQmxvYigqY29ubmVjdGlvbiwgcmVxdWVzdC51cmwoKSk7Ci0g
ICAgICAgIGZvciAoYXV0byYgZmlsZVJlZmVyZW5jZSA6IGJsb2JGaWxlUmVmZXJlbmNlcykKLSAg
ICAgICAgICAgIGZpbGVSZWZlcmVuY2UtPnByZXBhcmVGb3JGaWxlQWNjZXNzKCk7Ci0gICAgICAg
IGRvd25sb2FkLT5zZXRCbG9iRmlsZVJlZmVyZW5jZXMoV1RGTW92ZShibG9iRmlsZVJlZmVyZW5j
ZXMpKTsKLSAgICB9Ci0gICAgZG93bmxvYWQtPnN0YXJ0KCk7Ci0KLSAgICBBU1NFUlQoIW1fZG93
bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxv
YWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwotI2VuZGlmCiB9CiAKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNr
KERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkPiYmIGRvd25s
b2FkKQogewogICAgIEFTU0VSVChtX3BlbmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJ
RCkpOwpAQCAtMTAwLDMxICs4NSwxNSBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lk
ZVBlbmRpbmdECiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0
aW5hdGlvbi5zZXQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3BhaXI8UmVmUHRyPE5ldHdvcmtEYXRh
VGFzaz4sIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXI+KCZuZXR3b3JrRGF0YVRhc2ssIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQog
CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3du
bG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiBuZXR3b3Jr
TG9hZCwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYmIGJs
b2JGaWxlUmVmZXJlbmNlcywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQog
ICAgIEFTU0VSVCghbV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKICAg
ICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ0Rvd25sb2FkPihXVEZNb3ZlKG5ldHdvcmtMb2FkKSwgZG93bmxvYWRJRCwgcmVxdWVzdCwg
cmVzcG9uc2UpKTsKLSNlbHNlCi0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8
RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCByZXF1ZXN0KTsKLSAgICBkb3dubG9hZC0+c2V0
QmxvYkZpbGVSZWZlcmVuY2VzKFdURk1vdmUoYmxvYkZpbGVSZWZlcmVuY2VzKSk7Ci0KLSAgICBh
dXRvKiBoYW5kbGUgPSBuZXR3b3JrTG9hZC0+aGFuZGxlKCk7Ci0gICAgQVNTRVJUKGhhbmRsZSk7
Ci0gICAgZG93bmxvYWQtPnN0YXJ0V2l0aEhhbmRsZShoYW5kbGUsIHJlc3BvbnNlKTsKLSAgICBB
U1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX2Rvd25sb2Fk
cy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwotCi0gICAgLy8gVW5ibG9jayB0
aGUgVVJMIGNvbm5lY3Rpb24gb3BlcmF0aW9uIHF1ZXVlLgotICAgIGhhbmRsZS0+Y29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UoKTsKLSNlbmRpZgogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6
Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25s
b2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKIHsKLSNpZiBVU0UoTkVU
V09SS19TRVNTSU9OKQogICAgIGlmIChtX2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0aW5hdGlvbi5j
b250YWlucyhkb3dubG9hZElEKSkgewogICAgICAgICBhdXRvIHBhaXIgPSBtX2Rvd25sb2Fkc1dh
aXRpbmdGb3JEZXN0aW5hdGlvbi50YWtlKGRvd25sb2FkSUQpOwogICAgICAgICBhdXRvIG5ldHdv
cmtEYXRhVGFzayA9IFdURk1vdmUocGFpci5maXJzdCk7CkBAIC0xNDYsMjMgKzExNSwxNCBAQCB2
b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kCiAgICAgICAgIEFTU0VSVCgh
bV9kb3dubG9hZHNBZnRlckRlc3RpbmF0aW9uRGVjaWRlZC5jb250YWlucyhkb3dubG9hZElEKSk7
CiAgICAgICAgIG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lkZWQuc2V0KGRvd25sb2Fk
SUQsIG5ldHdvcmtEYXRhVGFzayk7CiAgICAgfQotI2Vsc2UKLSAgICBpZiAoYXV0byogd2FpdGlu
Z0Rvd25sb2FkID0gZG93bmxvYWQoZG93bmxvYWRJRCkpCi0gICAgICAgIHdhaXRpbmdEb3dubG9h
ZC0+ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihkZXN0aW5hdGlvbiwgV1RGTW92ZShzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKSwgYWxsb3dPdmVyd3JpdGUpOwotI2VuZGlmCiB9CiAKIHZvaWQg
RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVE
YXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCiB7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYgIVBMQVRG
T1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
I2Vsc2UKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lv
bklEKTsKLSNlbHNlCi0gICAgLy8gRG93bmxvYWQ6OnJlc3VtZSgpIGlzIHJlc3BvbnNpYmxlIGZv
ciBzZXR0aW5nIHRoZSBEb3dubG9hZCdzIHJlc291cmNlIHJlcXVlc3QuCi0gICAgYXV0byBkb3du
bG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBSZXNv
dXJjZVJlcXVlc3QoKSk7Ci0jZW5kaWYKIAogICAgIGRvd25sb2FkLT5yZXN1bWUocmVzdW1lRGF0
YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgQVNTRVJUKCFt
X2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CkBAIC0xNzMsMTQgKzEzMywxMSBAQCB2
b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMCiB2b2lkIERvd25sb2FkTWFu
YWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQogewogICAgIGlmIChE
b3dubG9hZCogZG93bmxvYWQgPSBtX2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCkpIHsKLSNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWRzV2FpdGluZ0Zv
ckRlc3RpbmF0aW9uLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKICAgICAgICAgQVNTRVJUKCFtX3Bl
bmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwotI2VuZGlmCiAgICAgICAgIGRv
d25sb2FkLT5jYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQogICAgIGF1dG8gcGVuZGluZ0Rvd25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRz
LnRha2UoZG93bmxvYWRJRCk7CiAgICAgaWYgKG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3RpbmF0
aW9uLmNvbnRhaW5zKGRvd25sb2FkSUQpKSB7CiAgICAgICAgIGF1dG8gcGFpciA9IG1fZG93bmxv
YWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uLnRha2UoZG93bmxvYWRJRCk7CkBAIC0xOTcsNyArMTU0
LDYgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2FkKERvdwogCiAgICAgaWYg
KHBlbmRpbmdEb3dubG9hZCkKICAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5jYW5jZWwoKTsKLSNl
bmRpZgogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5pc2hlZChEb3dubG9h
ZCogZG93bmxvYWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNpb24gMjI3MjMyKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDE5ICs3MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWREZXN0cm95RG93bmxvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgSVBDOjpD
b25uZWN0aW9uKiBkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpID0gMDsKICAgICAgICAgdmlydHVh
bCBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigp
ID0gMDsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGVu
ZGluZ0Rvd25sb2FkQ2FuY2VsZWQoRG93bmxvYWRJRCkgPSAwOwotI2VuZGlmCiAgICAgfTsKIAog
ICAgIGV4cGxpY2l0IERvd25sb2FkTWFuYWdlcihDbGllbnQmKTsKIAogICAgIHZvaWQgc3RhcnRE
b3dubG9hZChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIFBBTDo6U2Vzc2lvbklELCBE
b3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZE5hbWUgPSB7IH0pOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9p
ZCBkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8
RG93bmxvYWQ+JiYpOwogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgd2lsbERlY2lkZVBlbmRp
bmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJik7Ci0jZW5kaWYKICAgICB2b2lkIGNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxv
YWQoRG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2
b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwg
U3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxv
d092ZXJ3cml0ZSk7CiAKQEAgLTEwNCwxMSArMTAwLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIENsaWVudCYgbV9jbGllbnQ7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBIYXNo
TWFwPERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRG93bmxvYWQ+PiBtX3BlbmRp
bmdEb3dubG9hZHM7CiAgICAgSGFzaE1hcDxEb3dubG9hZElELCBzdGQ6OnBhaXI8UmVmUHRyPE5l
dHdvcmtEYXRhVGFzaz4sIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXI+PiBtX2Rvd25sb2Fkc1dh
aXRpbmdGb3JEZXN0aW5hdGlvbjsKICAgICBIYXNoTWFwPERvd25sb2FkSUQsIFJlZlB0cjxOZXR3
b3JrRGF0YVRhc2s+PiBtX2Rvd25sb2Fkc0FmdGVyRGVzdGluYXRpb25EZWNpZGVkOwotI2VuZGlm
CiAgICAgSGFzaE1hcDxEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+PiBtX2Rv
d25sb2FkczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAkocmV2aXNpb24gMjI3MjMy
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlBlbmRpbmdEb3dubG9hZC5oIgogCi0jaWYgVVNFKE5FVFdPUktfU0VT
U0lPTikKLQogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZFBy
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgpAQCAtMTAxLDUgKzk5LDMg
QEAgdWludDY0X3QgUGVuZGluZ0Rvd25sb2FkOjptZXNzYWdlU2VuZGVyRAogfQogICAgIAogfQot
Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1Bl
bmRpbmdEb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTAgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBlbmRpbmdEb3dubG9hZF9oCi0jZGVmaW5lIFBlbmRp
bmdEb3dubG9hZF9oCi0KLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQu
aCIKQEAgLTc1LDcgKzcyLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0KLQotI2VuZGlmCi0KLSNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93
bmxvYWRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCShyZXZpc2lvbiAyMjcyMzIpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIkRvd25sb2FkLmgiCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW1w
b3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAj
aW1wb3J0ICJTZXNzaW9uVHJhY2tlci5oIgpAQCAtNzQsNSArNzIsMyBAQCB2b2lkIERvd25sb2Fk
OjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkCiB9CiAKIH0KLQotI2VuZGlmIC8vIFVTRShORVRX
T1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9pb3MvRG93bmxvYWRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCShyZXZpc2lvbiAyMjcyMzIpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1Mu
bW0JKG5vbmV4aXN0ZW50KQpAQCAtMSwxNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiRG93bmxvYWQuaCIKLQotI2lmIFVTRShDRk5FVFdPUkspICYm
ICFVU0UoTkVUV09SS19TRVNTSU9OKQotCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1w
b3J0IDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8g
RklYTUU6IElmIHBvc3NpYmxlLCB3ZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHNvbWUgY2FsbGJh
Y2tzIG9mZiB0aGUgbWFpbiB0aHJlYWQgb3IgYXQgbGVhc3QKLS8vIG1ha2luZyB0aGVtIGFzeW5j
aG9ub3VzIGNhbGxzLgotc3RhdGljIHZvaWQgZGlzcGF0Y2hPbk1haW5UaHJlYWQodm9pZCheYmxv
Y2spKCkpCi17Ci0gICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKSB7Ci0gICAgICAgIGJsb2NrKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKLX0KLQotc3RhdGljIGlubGluZSBEb3dubG9hZCogdG9E
b3dubG9hZChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxEb3dubG9hZCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLX0KLQotc3RhdGlj
IHZvaWQgc2V0VXBEb3dubG9hZENsaWVudChDRlVSTERvd25sb2FkQ2xpZW50JiBjbGllbnQsIERv
d25sb2FkJiBkb3dubG9hZCkKLXsKLSAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVu
dCkpOwotICAgIGNsaWVudC5jbGllbnRJbmZvID0gJmRvd25sb2FkOwotCi0gICAgY2xpZW50LmRp
ZFN0YXJ0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChj
bGllbnRJbmZvKS0+ZGlkU3RhcnQoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVu
dC53aWxsU2VuZFJlcXVlc3QgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlcXVlc3RSZWYg
cmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiwgY29uc3Qgdm9pZCopIC0+IENGVVJMUmVxdWVzdFJl
ZiB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlVSTFJlcXVlc3RSZWY+KENGUmV0YWlu
KHJlcXVlc3QpKTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSA9IFtd
KENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAg
ICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7
Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBbXShD
RlVSTERvd25sb2FkUmVmLCBDRkluZGV4IGxlbmd0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykg
ewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9h
ZChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZURhdGEobGVuZ3RoKTsKLSAgICAgICAgfSk7Ci0gICAg
fTsKLQotICAgIGNsaWVudC5zaG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZSA9IFtdKENGVVJMRG93
bmxvYWRSZWYsIENGU3RyaW5nUmVmIGVuY29kaW5nVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykgLT4gQm9vbGVhbiB7Ci0gICAgICAgIF9fYmxvY2sgQk9PTCByZXR1cm5WYWx1ZSA9IE5POwot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZShlbmNvZGluZ1R5cGUpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwotICAgIH07Ci0KLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2Jq
ZWN0TmFtZSA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGU3RyaW5nUmVmIG9i
amVjdE5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoXnsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgICAgICAg
ICBTdHJpbmcgZGVzdGluYXRpb24gPSB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShvYmplY3ROYW1lLCBhbGxvd092ZXJ3cml0ZSk7
Ci0gICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICAgICAgICAg
IENGVVJMRG93bmxvYWRTZXREZXN0aW5hdGlvbihkb3dubG9hZFJlZiwgcmVpbnRlcnByZXRfY2Fz
dDxDRlVSTFJlZj4oW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkZXN0aW5hdGlvbl0pLCBhbGxvd092
ZXJ3cml0ZSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkQ3JlYXRlRGVz
dGluYXRpb24gPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlZiBwYXRoLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAg
ICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihDRlVSTEdl
dFN0cmluZyhwYXRoKSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkRmlu
aXNoID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAg
ICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGll
bnRJbmZvKS0+ZGlkRmluaXNoKCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQu
ZGlkRmFpbCA9IFtdKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWRSZWYsIENGRXJyb3JSZWYgZXJy
b3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJl
YWQoXnsKLSAgICAgICAgICAgIGF1dG8gcmVzdW1lRGF0YSA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9h
ZENvcHlSZXN1bWVEYXRhKGRvd25sb2FkUmVmKSk7Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNs
aWVudEluZm8pLT5kaWRGYWlsKGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVzdW1lRGF0YSA/
IENGRGF0YUdldEJ5dGVQdHIocmVzdW1lRGF0YS5nZXQoKSkgOiBudWxscHRyLCByZXN1bWVEYXRh
ID8gQ0ZEYXRhR2V0TGVuZ3RoKHJlc3VtZURhdGEuZ2V0KCkpIDogMCkpOwotICAgICAgICB9KTsK
LSAgICB9OwotfQotCi12b2lkIERvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkKCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnROZXR3
b3JrTG9hZFdpdGhIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0gICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7Ci0g
ICAgc2V0VXBEb3dubG9hZENsaWVudChjbGllbnQsICp0aGlzKTsKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNh
dGVkLWRlY2xhcmF0aW9ucyIKLSAgICBtX2Rvd25sb2FkID0gYWRvcHRDRihDRlVSTERvd25sb2Fk
Q3JlYXRlQW5kU3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oTlVMTCwgaGFuZGxlLT5yZWxlYXNl
Q29ubmVjdGlvbkZvckRvd25sb2FkKCkuZ2V0KCksIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpLCByZXNwb25zZS5jZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKLSNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5j
ZWxOZXR3b3JrTG9hZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3du
bG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRX
T1JLKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHJl
dmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L21hYy9Eb3dubG9hZE1hYy5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDI3OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEb3dubG9hZC5oIgot
Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0KLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIK
LSNpbXBvcnQgIldlYlBhZ2UuaCIKLSNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5k
bGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1VS
TERvd25sb2FkU1BJLmg+Ci0KLUBpbnRlcmZhY2UgV0tEb3dubG9hZEFzRGVsZWdhdGUgOiBOU09i
amVjdCA8TlNVUkxEb3dubG9hZERlbGVnYXRlPiB7Ci0gICAgV2ViS2l0OjpEb3dubG9hZCogX2Rv
d25sb2FkOwotfQotLSAoaWQpaW5pdFdpdGhEb3dubG9hZDooV2ViS2l0OjpEb3dubG9hZCopZG93
bmxvYWQ7Ci0tICh2b2lkKWludmFsaWRhdGU7Ci1AZW5kCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3Jr
TG9hZCgpCi17Ci0gICAgQVNTRVJUKCFtX25zVVJMRG93bmxvYWQpOwotICAgIEFTU0VSVCghbV9k
ZWxlZ2F0ZSk7Ci0KLSAgICBtX2RlbGVnYXRlID0gYWRvcHROUyhbW1dLRG93bmxvYWRBc0RlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aERvd25sb2FkOnRoaXNdKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVk
LWRlY2xhcmF0aW9ucyIKLSAgICBtX25zVVJMRG93bmxvYWQgPSBhZG9wdE5TKFtbTlNVUkxEb3du
bG9hZCBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0Om1fcmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRl
SFRUUEJvZHkpIGRlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldKTsKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKLQotICAgIC8vIEZJWE1FOiBBbGxvdyB0aGlzIHRvIGJlIGNoYW5nZWQgYnkg
dGhlIGNsaWVudC4KLSAgICBbbV9uc1VSTERvd25sb2FkIHNldERlbGV0ZXNGaWxlVXBvbkZhaWx1
cmU6Tk9dOwotfQotCi12b2lkIERvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkV2l0aEhhbmRsZShS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
LXsKLSAgICBBU1NFUlQoIW1fbnNVUkxEb3dubG9hZCk7Ci0gICAgQVNTRVJUKCFtX2RlbGVnYXRl
KTsKLQotICAgIG1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tEb3dubG9hZEFzRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoRG93bmxvYWQ6dGhpc10pOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1
c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFy
YXRpb25zIgotICAgIG1fbnNVUkxEb3dubG9hZCA9IFtOU1VSTERvd25sb2FkIF9kb3dubG9hZFdp
dGhMb2FkaW5nQ29ubmVjdGlvbjpoYW5kbGUtPmNvbm5lY3Rpb24oKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDptX3Jl
cXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTpyZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5
Om5pbF07Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0KLSAgICAvLyBGSVhNRTogQWxs
b3cgdGhpcyB0byBiZSBjaGFuZ2VkIGJ5IHRoZSBjbGllbnQuCi0gICAgW21fbnNVUkxEb3dubG9h
ZCBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlOk5PXTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVz
dW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQot
ewotICAgIEFTU0VSVCghbV9uc1VSTERvd25sb2FkKTsKLSAgICBBU1NFUlQoIW1fZGVsZWdhdGUp
OwotCi0gICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdU
Rk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwotICAgIGlmIChtX3NhbmRib3hFeHRlbnNp
b24pCi0gICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwotCi0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgbV9kZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS0Rv
d25sb2FkQXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEb3dubG9hZDp0aGlzXSk7Ci0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcG9wCi0KLSAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoW1tOU0Rh
dGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cmVzdW1lRGF0YS5kYXRhKCkgbGVuZ3RoOnJlc3VtZURh
dGEuc2l6ZSgpXSk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgbV9u
c1VSTERvd25sb2FkID0gYWRvcHROUyhbW05TVVJMRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoUmVz
dW1lRGF0YTpuc0RhdGEuZ2V0KCkgZGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKSBwYXRoOnBhdGhd
KTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLQotICAgIG1fcmVxdWVzdCA9IFttX25z
VVJMRG93bmxvYWQgcmVxdWVzdF07Ci0KLSAgICAvLyBGSVhNRTogQWxsb3cgdGhpcyB0byBiZSBj
aGFuZ2VkIGJ5IHRoZSBjbGllbnQuCi0gICAgW21fbnNVUkxEb3dubG9hZCBzZXREZWxldGVzRmls
ZVVwb25GYWlsdXJlOk5PXTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3
b3JrTG9hZCgpCi17Ci0gICAgW21fbnNVUkxEb3dubG9hZCBjYW5jZWxdOwotCi0gICAgUmV0YWlu
UHRyPE5TRGF0YT4gcmVzdW1lRGF0YSA9IFttX25zVVJMRG93bmxvYWQgcmVzdW1lRGF0YV07Ci0g
ICAgZGlkQ2FuY2VsKElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihbcmVzdW1lRGF0YSBieXRlc10pLCBbcmVzdW1lRGF0YSBsZW5ndGhdKSk7Ci19Ci0K
LXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0gICAgaWYgKG1fZGVsZWdh
dGUpIHsKLSAgICAgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07Ci0gICAgICAgIG1fZGVsZWdh
dGUgPSBudWxscHRyOwotICAgIH0KLSAgICBtX25zVVJMRG93bmxvYWQgPSBudWxscHRyOwotfQot
Ci12b2lkIERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCi17Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi1AaW1wbGVtZW50YXRpb24gV0tEb3dubG9hZEFzRGVsZWdhdGUKLQotLy8g
RklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlc2UgY2FsbGJhY2tzIHdvdWxkbid0IGhhdmUg
dG8gYmUgaW52b2tlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi1zdGF0aWMgdm9pZCBkaXNwYXRjaE9u
TWFpblRocmVhZCh2b2lkICheYmxvY2spKCkpCi17Ci0gICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigp
KSB7Ci0gICAgICAgIGJsb2NrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkaXNw
YXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKLX0KLQotLSAoaWQp
aW5pdFdpdGhEb3dubG9hZDooV2ViS2l0OjpEb3dubG9hZCopZG93bmxvYWQKLXsKLSAgICBzZWxm
ID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQot
ICAgIF9kb3dubG9hZCA9IGRvd25sb2FkOwotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lk
KWludmFsaWRhdGUKLXsKLSAgICBfZG93bmxvYWQgPSAwOwotfQotCi0tICh2b2lkKWRvd25sb2Fk
RGlkQmVnaW46KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZAotewotICAgIGRpc3BhdGNoT25NYWlu
VGhyZWFkKF57Ci0gICAgICAgIGlmIChfZG93bmxvYWQpCi0gICAgICAgICAgICBfZG93bmxvYWQt
PmRpZFN0YXJ0KCk7Ci0gICAgfSk7Ci19Ci0KLS0gKE5TVVJMUmVxdWVzdCAqKWRvd25sb2FkOihO
U1VSTERvd25sb2FkICopZG93bmxvYWQgd2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0IHJlZGlyZWN0UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNl
Ci17Ci0gICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXiB7Ci0gICAgICAgIGlmIChfZG93bmxvYWQg
JiYgcmVkaXJlY3RSZXNwb25zZSAmJiAhW3JlcXVlc3QuVVJMIGlzRXF1YWw6cmVkaXJlY3RSZXNw
b25zZS5VUkxdKQotICAgICAgICAgICAgX2Rvd25sb2FkLT53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIH0pOwotICAgIHJldHVybiByZXF1
ZXN0OwotfQotCi0tIChCT09MKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopY29ubmVjdGlvbiBj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOihOU1VSTFByb3RlY3Rpb25TcGFj
ZSAqKXByb3RlY3Rpb25TcGFjZQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKHZvaWQpZG93bmxvYWQ6KE5T
VVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKLXsKLSAgICBkaXNwYXRj
aE9uTWFpblRocmVhZCheewotICAgICAgICBpZiAoX2Rvd25sb2FkKQotICAgICAgICAgICAgX2Rv
d25sb2FkLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29yZShjaGFsbGVuZ2Up
KTsKLSAgICB9KTsKLX0KLQotLSAoQk9PTClkb3dubG9hZFNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlOihOU1VSTERvd25sb2FkICopZG93bmxvYWQKLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0g
KHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlUmVzcG9u
c2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQotewotICAgIGRpc3BhdGNoT25NYWluVGhyZWFk
KF57Ci0gICAgICAgIGlmIChfZG93bmxvYWQpCi0gICAgICAgICAgICBfZG93bmxvYWQtPmRpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpZG93bmxvYWQ6
KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCB3aWxsUmVzdW1lV2l0aFJlc3BvbnNlOihOU1VSTFJl
c3BvbnNlICopcmVzcG9uc2UgZnJvbUJ5dGU6KGxvbmcgbG9uZylzdGFydGluZ0J5dGUKLXsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLS0gKHZv
aWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlRGF0YU9mTGVu
Z3RoOihOU1VJbnRlZ2VyKWxlbmd0aAotewotICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0g
ICAgICAgIGlmIChfZG93bmxvYWQpCi0gICAgICAgICAgICBfZG93bmxvYWQtPmRpZFJlY2VpdmVE
YXRhKGxlbmd0aCk7Ci0gICAgfSk7Ci19Ci0KLS0gKEJPT0wpZG93bmxvYWQ6KE5TVVJMRG93bmxv
YWQgKilkb3dubG9hZCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTooTlNTdHJpbmcg
KillbmNvZGluZ1R5cGUKLXsKLSAgICBfX2Jsb2NrIEJPT0wgcmV0dXJuVmFsdWU7Ci0gICAgZGlz
cGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgaWYgKF9kb3dubG9hZCkKLSAgICAgICAgICAg
IHJldHVyblZhbHVlID0gX2Rvd25sb2FkLT5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZShlbmNvZGluZ1R5cGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9
IFlFUzsKLSAgICB9KTsKLQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLX0KLQotLSAodm9pZClk
b3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lCi17Ci0gICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoXnsKLSAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uOwotICAgICAgICBib29sIGFs
bG93T3ZlcndyaXRlOwotICAgICAgICBpZiAoX2Rvd25sb2FkKQotICAgICAgICAgICAgZGVzdGlu
YXRpb24gPSBfZG93bmxvYWQtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KGZpbGVuYW1lLCBhbGxvd092ZXJ3cml0ZSk7Ci0KLSAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5p
c051bGwoKSkKLSAgICAgICAgICAgIFtkb3dubG9hZCBzZXREZXN0aW5hdGlvbjpkZXN0aW5hdGlv
biBhbGxvd092ZXJ3cml0ZTphbGxvd092ZXJ3cml0ZV07Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQp
ZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlvbjoo
TlNTdHJpbmcgKilwYXRoCi17Ci0gICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAg
aWYgKF9kb3dubG9hZCkKLSAgICAgICAgICAgIF9kb3dubG9hZC0+ZGlkQ3JlYXRlRGVzdGluYXRp
b24ocGF0aCk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KE5TVVJM
RG93bmxvYWQgKilkb3dubG9hZAotewotICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAg
ICAgIGlmIChfZG93bmxvYWQpCi0gICAgICAgICAgICBfZG93bmxvYWQtPmRpZEZpbmlzaCgpOwot
ICAgIH0pOwotfQotCi0tICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQg
ZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0gICAgZGlzcGF0Y2hPbk1haW5U
aHJlYWQoXnsKLSAgICAgICAgaWYgKCFfZG93bmxvYWQpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gcmVzdW1lRGF0YSA9IFtkb3dubG9hZCByZXN1bWVE
YXRhXTsKLSAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW3Jlc3VtZURhdGEgYnl0ZXNdKSwgW3Jlc3VtZURhdGEg
bGVuZ3RoXSk7Ci0KLSAgICAgICAgX2Rvd25sb2FkLT5kaWRGYWlsKGVycm9yLCBkYXRhUmVmZXJl
bmNlKTsKLSAgICB9KTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gIVVTRShORVRXT1JLX1NFU1NJ
T04pCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0
eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCShyZXZpc2lvbiAyMjcy
MzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDExICs1OCw3IEBAIFNwZWN1
bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiAKICAgICBwYXJhbWV0ZXJzLmNvbnRl
bnRTbmlmZmluZ1BvbGljeSA9IERvTm90U25pZmZDb250ZW50OwogICAgIHBhcmFtZXRlcnMuY29u
dGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgPSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eTo6U25pZmY7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7Ci0j
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3Vu
aXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycyksICpTZXNzaW9uVHJh
Y2tlcjo6bmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkp
OwotI2Vsc2UKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9h
ZD4oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycykpOwotI2VuZGlmCiB9CiAKIFNwZWN1bGF0aXZl
TG9hZDo6flNwZWN1bGF0aXZlTG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lv
biAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVkZSAiTmV0d29ya0Rh
dGFUYXNrLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KQEAgLTk5LDUgKzk3LDMgQEAgcHJpdmF0ZToK
IFdlYkNvcmU6OkNyZWRlbnRpYWwgc2VydmVyVHJ1c3RDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQko
cmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIgogCi0j
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgiCiAjaW1wb3J0ICJEb3dubG9hZC5oIgogI2ltcG9ydCAiRG93bmxvYWRQcm94eU1lc3NhZ2Vz
LmgiCkBAIC00MzksNSArNDM3LDMgQEAgV2ViQ29yZTo6Q3JlZGVudGlhbCBzZXJ2ZXJUcnVzdENy
ZWRlbnRpYQogfQogCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNp
b24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
UHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KIAogICAgIFNlc3Npb25UcmFja2VyOjpz
ZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwog
Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRT
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRhKHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRh
KCkpOwogICAgIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcihwYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik7
CiAgICAgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKHBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
KTsKQEAgLTg3LDcgKzg2LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplTgogI2lmIFBMQVRGT1JNKElPUykKICAgICBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRDVERh
dGFDb25uZWN0aW9uU2VydmljZVR5cGUocGFyYW1ldGVycy5jdERhdGFDb25uZWN0aW9uU2Vydmlj
ZVR5cGUpOwogI2VuZGlmCi0jZW5kaWYKIAogICAgIGluaXRpYWxpemVOZXR3b3JrU2V0dGluZ3Mo
KTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKLQogT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lv
bjsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwpAQCAtODcsNSArODUsMyBA
QCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0Uo
TkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjI3MjMy
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKIAotI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCi0KICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2ltcG9ydCAiRGF0
YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIKQEAgLTgwMCw1ICs3OTgsMyBAQCBi
b29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFsbG93c1NwZWNpZmljCiB9CiAKIH0KLQotI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
TG9hZE1hYy5tbQkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJOZXR3b3JrTG9hZC5o
IgotCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGUuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotdm9pZCBOZXR3b3Jr
TG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0Nh
Y2hlZFVSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQotewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxl
LCBoYW5kbGUgPT0gbV9oYW5kbGUpOwotCi0gICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hl
UmVzcG9uc2UobnNSZXNwb25zZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gIVVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQko
cmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMiwxMCArMTEyLDgg
QEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2VicwogICAgICAgICBzZXNz
aW9uLT5zZXRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YShwYXJhbWV0ZXJzLmNhY2hlU3RvcmFn
ZVBlck9yaWdpblF1b3RhKTsKICAgICB9CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAg
IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmxlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlciA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlcj4oKTsKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihz
ZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycykpKTsKLSNlbmRpZgogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDYgQEAgdm9pZCBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2UoYwogICAgIGlk
ZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwogfQogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lP
TikKIHN0YXRpYyBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8TmV0d29ya1Nlc3Npb24+
PiYgc3RhdGljU2Vzc2lvbk1hcCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTczLDE2ICs3MiwxMyBAQCB2b2lkIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKFBBTDo6
U2VzCiB7CiAgICAgc3RhdGljU2Vzc2lvbk1hcCgpLnNldChzZXNzaW9uSUQsIFdURk1vdmUoc2Vz
c2lvbikpOwogfQotI2VuZGlmCiAKIHZvaWQgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgYXV0byBzZXNzaW9uID0gc3RhdGlj
U2Vzc2lvbk1hcCgpLnRha2Uoc2Vzc2lvbklEKTsKICAgICBpZiAoc2Vzc2lvbikKICAgICAgICAg
c2Vzc2lvbi0+aW52YWxpZGF0ZUFuZENhbmNlbCgpOwotI2VuZGlmCiAgICAgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0
NSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBnZXRJZGVudGlmaWVyQmFz
ZSgpOwogICAgIHN0YXRpYyB2b2lkIHNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwog
ICAgIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgc3RhdGljIHZvaWQgc2V0U2Vzc2lv
bihQQUw6OlNlc3Npb25JRCwgUmVmPE5ldHdvcmtTZXNzaW9uPiYmKTsKICAgICBzdGF0aWMgTmV0
d29ya1Nlc3Npb24qIG5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKLSNlbmRpZgogICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE2LDExICsxMTYsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6ZGlkUmVjZWl2ZUF1CiAgICAgQVNTRVJUKGZyYW1lLT5wYWdlKCkpOwogCiAgICAgYXV0byBw
YWdlSUQgPSBmcmFtZS0+cGFnZSgpLT5wYWdlSUQoKTsKLSAgICB1aW50NjRfdCBjaGFsbGVuZ2VJ
RCA9IGFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFwKHtwYWdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAgICAgLCB7IH0KLSNlbmRpZgot
ICAgIH0pOworICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVu
Z2VNYXAoeyBwYWdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB7IH0gfSk7CiAKICAgICAv
LyBDb2FsZXNjZSBjaGFsbGVuZ2VzIGluIHRoZSBzYW1lIHByb3RlY3Rpb24gc3BhY2UgYW5kIGlu
IHRoZSBzYW1lIHBhZ2UuCiAgICAgaWYgKHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHBhZ2VJRCwg
Y2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSkKQEAgLTEyOSw3ICsxMjUsNiBA
QCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgbV9wcm9jZXNz
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGZyYW1lLT5mcmFtZUlEKCksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVu
Z2VJRCksIGZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpKTsKIH0KIAotI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChwYWdl
SUQpOwpAQCAtMTU1LDM3ICsxNTAsNiBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlk
UmVjZWl2ZUF1CiAgICAgCiAgICAgZG93bmxvYWQuc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94
eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBjaGFsbGVuZ2VJRCkpOwogfQotI2VuZGlmCi0KLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lP
TikKLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi17Ci0gICAgQVNTRVJU
KHBhZ2VJRCk7Ci0gICAgQVNTRVJUKGZyYW1lSUQpOwotCi0gICAgdWludDY0X3QgY2hhbGxlbmdl
SUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7cGFnZUlELCBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZX0pOwotCi0gICAgLy8gQ29hbGVzY2UgY2hhbGxlbmdlcyBpbiB0aGUgc2FtZSBwcm90
ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdlLgotICAgIGlmIChzaG91bGRDb2FsZXNj
ZUNoYWxsZW5nZShwYWdlSUQsIGNoYWxsZW5nZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHBhZ2VJ
RCwgZnJhbWVJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7Ci19Ci0j
ZW5kaWYKLQotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotdm9pZCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZCYgZG93bmxv
YWQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkKLXsKLSAgICB1aW50NjRfdCBkdW1teVBhZ2VJRCA9IDA7Ci0gICAgdWludDY0X3QgY2hhbGxl
bmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7ZHVtbXlQYWdlSUQsIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlfSk7Ci0KLSAgICAvLyBDb2FsZXNjZSBjaGFsbGVuZ2VzIGluIHRoZSBz
YW1lIHByb3RlY3Rpb24gc3BhY2UgYW5kIGluIHRoZSBzYW1lIHBhZ2UuCi0gICAgaWYgKHNob3Vs
ZENvYWxlc2NlQ2hhbGxlbmdlKGR1bW15UGFnZUlELCBjaGFsbGVuZ2VJRCwgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3dubG9hZC5zZW5kKE1lc3Nh
Z2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7Ci19Ci0jZW5kaWYKIAogLy8gQ3Vy
cmVudGx5LCBvbmx5IE1hYyBrbm93cyBob3cgdG8gcmVzcG9uZCB0byBhdXRoZW50aWNhdGlvbiBj
aGFsbGVuZ2VzIHdpdGggY2VydGlmaWNhdGUgaW5mby4KICNpZiAhSEFWRShTRUNfSURFTlRJVFkp
CkBAIC0yMDgsMTcgKzE3MiwxMiBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3Jl
ZGVudGlhCiAgICAgYXV0byBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJ
RCk7CiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuY2hhbGxlbmdlLmlzTnVsbCgpKTsKIAotI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKTsKLSNlbHNlCi0gICAgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIgPSBudWxscHRyOwotI2VuZGlmCiAgICAgCiAg
ICAgaWYgKHRyeVVzZUNlcnRpZmljYXRlSW5mb0ZvckNoYWxsZW5nZShjaGFsbGVuZ2UuY2hhbGxl
bmdlLCBjZXJ0aWZpY2F0ZUluZm8sIGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQgPSBjaGFsbGVuZ2UuY2hh
bGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikK
ICAgICAvLyBJZiB0aGVyZSBpcyBhIGNvbXBsZXRpb24gaGFuZGxlciwgdGhlbiB0aGVyZSBpcyBu
byBBdXRoZW50aWNhdGlvbkNsaWVudC4KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSB1c2Ugb2Yg
QXV0aGVudGljYXRpb25DbGllbnQgaW4gV2ViS2l0MiBvbmNlIE5FVFdPUktfU0VTU0lPTiBpcyB1
c2VkIGZvciBhbGwgbG9hZHMuCiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CkBAIC0yMjcs
MTQgKzE4Niw5IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWEKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoY29yZUNsaWVudCk7Ci0jZW5kaWYKIAog
ICAgIGlmIChjb3JlQ2xpZW50KQogICAgICAgICBjb3JlQ2xpZW50LT5yZWNlaXZlZENyZWRlbnRp
YWwoY2hhbGxlbmdlLmNoYWxsZW5nZSwgY3JlZGVudGlhbCk7Ci0jaWYgIVVTRShORVRXT1JLX1NF
U1NJT04pCi0gICAgZWxzZQotICAgICAgICByZWNlaXZlZENyZWRlbnRpYWwoY2hhbGxlbmdlLmNo
YWxsZW5nZSwgY3JlZGVudGlhbCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hh
bGxlbmdlSUQpCkBAIC0yNTEsMjEgKzIwNSwxNSBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6Y29udGludWVXaXRoCiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuY2hhbGxlbmdlLmlzTnVsbCgp
KTsKIAogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBjb3JlQ2xpZW50ID0gY2hhbGxlbmdlLmNo
YWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04p
CiAgICAgaWYgKGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBBU1NFUlQo
IWNvcmVDbGllbnQpOwogICAgICAgICBjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgQ3JlZGVudGlhbCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoY29yZUNsaWVudCk7Ci0jZW5k
aWYKIAogICAgIGlmIChjb3JlQ2xpZW50KQogICAgICAgICBjb3JlQ2xpZW50LT5yZWNlaXZlZFJl
cXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlLmNoYWxsZW5nZSk7Ci0j
aWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgZWxzZQotICAgICAgICByZWNlaXZlZFJlcXVl
c3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlLmNoYWxsZW5nZSk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNhbmNlbENoYWxsZW5nZSh1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTI4MiwyMSArMjMwLDE1IEBAIHZvaWQgQXV0aGVudGljYXRp
b25NYW5hZ2VyOjpjYW5jZWxTaW5nbGUKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5jaGFsbGVuZ2Uu
aXNOdWxsKCkpOwogCiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQgPSBjaGFs
bGVuZ2UuY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7Ci0jaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKICAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAg
IEFTU0VSVCghY29yZUNsaWVudCk7CiAgICAgICAgIGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxl
cihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwsIENyZWRlbnRpYWwo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKGNvcmVDbGllbnQpOwotI2Vu
ZGlmCiAKICAgICBpZiAoY29yZUNsaWVudCkKICAgICAgICAgY29yZUNsaWVudC0+cmVjZWl2ZWRD
YW5jZWxsYXRpb24oY2hhbGxlbmdlLmNoYWxsZW5nZSk7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJ
T04pCi0gICAgZWxzZQotICAgICAgICByZWNlaXZlZENhbmNlbGxhdGlvbihjaGFsbGVuZ2UuY2hh
bGxlbmdlKTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cGVyZm9y
bURlZmF1bHRIYW5kbGluZyh1aW50NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTMxMywyMSArMjU1LDE1
IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpwZXJmb3JtRGVmYXUKICAgICBBU1NFUlQo
IWNoYWxsZW5nZS5jaGFsbGVuZ2UuaXNOdWxsKCkpOwogCiAgICAgQXV0aGVudGljYXRpb25DbGll
bnQqIGNvcmVDbGllbnQgPSBjaGFsbGVuZ2UuY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50
KCk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRp
b25IYW5kbGVyKSB7CiAgICAgICAgIEFTU0VSVCghY29yZUNsaWVudCk7CiAgICAgICAgIGNoYWxs
ZW5nZS5jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBDcmVkZW50aWFsKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIEFTU0VSVChjb3JlQ2xpZW50KTsKLSNlbmRpZgogCiAgICAgaWYgKGNvcmVD
bGllbnQpCiAgICAgICAgIGNvcmVDbGllbnQtPnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1
bHRIYW5kbGluZyhjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lP
TikKLSAgICBlbHNlCi0gICAgICAgIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5k
bGluZyhjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUodWludDY0X3QgY2hh
bGxlbmdlSUQpCkBAIC0zNDQsMjEgKzI4MCwxNSBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6cmVqZWN0UHJvdGVjCiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuY2hhbGxlbmdlLmlzTnVsbCgp
KTsKIAogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBjb3JlQ2xpZW50ID0gY2hhbGxlbmdlLmNo
YWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04p
CiAgICAgaWYgKGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBBU1NFUlQo
IWNvcmVDbGllbnQpOwogICAgICAgICBjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlLCBDcmVk
ZW50aWFsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChjb3JlQ2xpZW50
KTsKLSNlbmRpZgogCiAgICAgaWYgKGNvcmVDbGllbnQpCiAgICAgICAgIGNvcmVDbGllbnQtPnJl
Y2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNoYWxsZW5nZS5jaGFsbGVuZ2UpOwotI2lmICFVU0Uo
TkVUV09SS19TRVNTSU9OKQotICAgIGVsc2UKLSAgICAgICAgcmVjZWl2ZWRDaGFsbGVuZ2VSZWpl
Y3Rpb24oY2hhbGxlbmdlLmNoYWxsZW5nZSk7Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkocmV2aXNpb24gMjI3MjMyKQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDIyICs2NiwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQs
IGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImJik7CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykK
ICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShE
b3dubG9hZElELCBib29sIGNhbkF1dGhlbnRpY2F0ZSk7CiAjZW5kaWYKLSNlbmRpZgogICAgIC8v
IENhbGxlZCBmb3IgcmVzb3VyY2VzIGluIHRoZSBXZWJQcm9jZXNzIChOZXR3b3JrUHJvY2VzcyBk
aXNhYmxlZCkKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJG
cmFtZSosIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKLSNpZiAh
VVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAvLyBDYWxsZWQgZm9yIHJlc291cmNlcyBpbiB0aGUg
TmV0d29ya1Byb2Nlc3MgKE5ldHdvcmtQcm9jZXNzIGVuYWJsZWQpCi0gICAgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkJiwgY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLSNlbmRpZgotCiAgICAgdm9pZCB1c2VDcmVk
ZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBXZWJDb3JlOjpD
cmVkZW50aWFsJiwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJik7CiAgICAgdm9pZCBj
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlE
KTsKICAgICB2b2lkIGNhbmNlbENoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CkBAIC0x
MDAsOSArOTIsNyBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBDaGFsbGVuZ2UgewogICAgICAgICB1
aW50NjRfdCBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGNoYWxsZW5nZTsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgICAgICBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcjsKLSNlbmRpZgogICAgIH07CiAgICAg
CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhl
bnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2Nv
YS5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgotCi0jaWYgIVVT
RShORVRXT1JLX1NFU1NJT04pCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIFthdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5zZW5kZXIoKSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkg
Zm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKLX0KLQotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi17Ci0gICAgW2F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxG
b3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotfQotCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotewotICAgIFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5z
ZW5kZXIoKSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotfQotCi12b2lkIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLXsK
LSAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgcGVyZm9ybURlZmF1bHRIYW5k
bGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5z
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi17Ci0gICAgW2F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLnNlbmRlcigpIHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENo
YWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKCldOwotfQotCi19Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9D
b29raWVTdG9yYWdlU2hpbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9Db29raWVTdG9yYWdlU2hpbS5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0uaAkobm9uZXhpc3RlbnQpCkBAIC0xLDUxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmICFVU0UoTkVUV09SS19TRVNT
SU9OKQotCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBDb29raWVTdG9yYWdl
U2hpbSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29va2llU3RvcmFnZVNoaW0pOwotICAg
IGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxDb29raWVTdG9yYWdlU2hpbT47Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIENvb2tpZVN0b3JhZ2VTaGltJiBzaW5nbGV0b24oKTsKLQotICAgIHZvaWQg
aW5pdGlhbGl6ZSgpOwotCi1wcml2YXRlOgotICAgIENvb2tpZVN0b3JhZ2VTaGltKCkKLSAgICB7
Ci0gICAgfQotfTsKLQotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9Db29raWVTdG9yYWdlU2hpbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0JKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbQkobm9uZXhpc3RlbnQpCkBAIC0x
LDE0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiQ29va2llU3RvcmFnZVNoaW0uaCIKLQotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQot
Ci0jaW5jbHVkZSAiQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmgiCi0jaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db29raWVzU3RyYXRlZ3kuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPGRsZmNuLmg+Ci0jaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgotI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+Ci0jaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVx
dWVzdCogQ0ZVUkxSZXF1ZXN0UmVmOwotQGNsYXNzIE5TVVJMU2Vzc2lvblRhc2s7Ci0KLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1AaW50ZXJmYWNlIFdLTlNVUkxTZXNzaW9uTG9jYWwgOiBO
U09iamVjdAotLSAoQ0ZEaWN0aW9uYXJ5UmVmKSBfY29weUNvb2tpZXNGb3JSZXF1ZXN0VXNpbmdB
bGxBcHByb3ByaWF0ZVN0b3JhZ2VTZW1hbnRpY3M6KENGVVJMUmVxdWVzdFJlZikgcmVxdWVzdDsK
LS0gKHZvaWQpX2dldENvb2tpZUhlYWRlcnNGb3JUYXNrOihOU1VSTFNlc3Npb25UYXNrKil0YXNr
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShDRkRpY3Rpb25hcnlSZWYpKWNvbXBsZXRpb25I
YW5kbGVyOwotQGVuZAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIENGRGljdGlvbmFy
eVJlZiB3ZWJLaXRDb29raWVTdG9yYWdlQ29weVJlcXVlc3RIZWFkZXJGaWVsZHNGb3JVUkwoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZiBpbkNvb2tpZVN0b3JhZ2UsIENGVVJMUmVmIGluUmVxdWVzdFVS
TCkKLXsKLSAgICBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcyA9IFVS
TChpblJlcXVlc3RVUkwpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2ll
czo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vOwotCi0gICAgU3RyaW5nIGNvb2tpZXM7
Ci0gICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBVUkwgZmlyc3RQ
YXJ0eUZvckNvb2tpZXNVUkw7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBmaXJzdFBhcnR5Rm9y
Q29va2llc1VSTCwgaW5SZXF1ZXN0VVJMLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVzLCBzZWN1cmVD
b29raWVzQWNjZXNzZWQpLCAwKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoY29va2ll
cy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNmQ29va2llcyA9IGNvb2tpZXMuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICBzdGF0aWMgY29u
c3Qgdm9pZCogY29va2llS2V5c1tdID0geyBDRlNUUigiQ29va2llIikgfTsKLSAgICBjb25zdCB2
b2lkKiBjb29raWVWYWx1ZXNbXSA9IHsgY2ZDb29raWVzLmdldCgpIH07Ci0gICAgcmV0dXJuIENG
RGljdGlvbmFyeUNyZWF0ZSgwLCBjb29raWVLZXlzLCBjb29raWVWYWx1ZXMsIDEsICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
OwotfQotCi1Db29raWVTdG9yYWdlU2hpbSYgQ29va2llU3RvcmFnZVNoaW06OnNpbmdsZXRvbigp
Ci17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvb2tpZVN0b3JhZ2VTaGltPiBzdG9yYWdl
OwotICAgIHJldHVybiBzdG9yYWdlOwotfQotCi12b2lkIENvb2tpZVN0b3JhZ2VTaGltOjppbml0
aWFsaXplKCkKLXsKLSAgICBDb29raWVTdG9yYWdlU2hpbUNhbGxiYWNrcyBjYWxsYmFja3MgPSB7
ICZ3ZWJLaXRDb29raWVTdG9yYWdlQ29weVJlcXVlc3RIZWFkZXJGaWVsZHNGb3JVUkwgfTsKLSAg
ICBDb29raWVTdG9yYWdlU2hpbUluaXRpYWxpemVGdW5jIGZ1bmMgPSByZWludGVycHJldF9jYXN0
PENvb2tpZVN0b3JhZ2VTaGltSW5pdGlhbGl6ZUZ1bmM+KGRsc3ltKFJUTERfREVGQVVMVCwgIldl
YktpdENvb2tpZVN0b3JhZ2VTaGltSW5pdGlhbGl6ZSIpKTsKLSAgICBpZiAoZnVuYykKLSAgICAg
ICAgZnVuYyhjYWxsYmFja3MpOwotCi0gICAgQ2xhc3MgX19OU1VSTFNlc3Npb25Mb2NhbENsYXNz
ID0gb2JqY19nZXRDbGFzcygiX19OU1VSTFNlc3Npb25Mb2NhbCIpOwotICAgIGlmICghX19OU1VS
TFNlc3Npb25Mb2NhbENsYXNzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoTWV0aG9kIG9y
aWdpbmFsID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QoX19OU1VSTFNlc3Npb25Mb2NhbENsYXNz
LCBAc2VsZWN0b3IoX2NvcHlDb29raWVzRm9yUmVxdWVzdFVzaW5nQWxsQXBwcm9wcmlhdGVTdG9y
YWdlU2VtYW50aWNzOikpKSB7Ci0gICAgICAgIE1ldGhvZCByZXBsYWNlbWVudCA9IGNsYXNzX2dl
dEluc3RhbmNlTWV0aG9kKFtXS05TVVJMU2Vzc2lvbkxvY2FsIGNsYXNzXSwgQHNlbGVjdG9yKF9j
b3B5Q29va2llc0ZvclJlcXVlc3RVc2luZ0FsbEFwcHJvcHJpYXRlU3RvcmFnZVNlbWFudGljczop
KTsKLSAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KTsKLSAgICAgICAgbWV0aG9kX2V4Y2hhbmdl
SW1wbGVtZW50YXRpb25zKG9yaWdpbmFsLCByZXBsYWNlbWVudCk7Ci0gICAgfQotCi0gICAgaWYg
KE1ldGhvZCBvcmlnaW5hbCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKF9fTlNVUkxTZXNzaW9u
TG9jYWxDbGFzcywgQHNlbGVjdG9yKF9nZXRDb29raWVIZWFkZXJzRm9yVGFzazpjb21wbGV0aW9u
SGFuZGxlcjopKSkgewotICAgICAgICBNZXRob2QgcmVwbGFjZW1lbnQgPSBjbGFzc19nZXRJbnN0
YW5jZU1ldGhvZChbV0tOU1VSTFNlc3Npb25Mb2NhbCBjbGFzc10sIEBzZWxlY3RvcihfZ2V0Q29v
a2llSGVhZGVyc0ZvclRhc2s6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgICAgIEFTU0VSVChy
ZXBsYWNlbWVudCk7Ci0gICAgICAgIG1ldGhvZF9leGNoYW5nZUltcGxlbWVudGF0aW9ucyhvcmln
aW5hbCwgcmVwbGFjZW1lbnQpOwotICAgIH0KLX0KLQotfQotCi1AaW1wbGVtZW50YXRpb24gV0tO
U1VSTFNlc3Npb25Mb2NhbAotLSAoQ0ZEaWN0aW9uYXJ5UmVmKV9jb3B5Q29va2llc0ZvclJlcXVl
c3RVc2luZ0FsbEFwcHJvcHJpYXRlU3RvcmFnZVNlbWFudGljczooQ0ZVUkxSZXF1ZXN0UmVmKSBy
ZXF1ZXN0Ci17Ci0gICAgaWYgKCFDRlVSTFJlcXVlc3RTaG91bGRIYW5kbGVIVFRQQ29va2llcyhy
ZXF1ZXN0KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFdlYktpdDo6d2Vi
S2l0Q29va2llU3RvcmFnZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzRm9yVVJMKG51bGxwdHIsIENG
VVJMUmVxdWVzdEdldFVSTChyZXF1ZXN0KSk7Ci19Ci0KLXVzaW5nIENvbXBsZXRpb25IYW5kbGVy
QmxvY2sgPSB2b2lkKF4pKENGRGljdGlvbmFyeVJlZik7Ci0tICh2b2lkKV9nZXRDb29raWVIZWFk
ZXJzRm9yVGFzazooTlNVUkxTZXNzaW9uVGFzayopdGFzayBjb21wbGV0aW9uSGFuZGxlcjooQ29t
cGxldGlvbkhhbmRsZXJCbG9jayljb21wbGV0aW9uSGFuZGxlcgotewotICAgIGlmICghY29tcGxl
dGlvbkhhbmRsZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghW1t0YXNrIGN1cnJlbnRS
ZXF1ZXN0XSBIVFRQU2hvdWxkSGFuZGxlQ29va2llc10pIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobnVsbHB0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDb21wbGV0aW9u
SGFuZGxlckJsb2NrIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IFtjb21wbGV0aW9uSGFuZGxlciBj
b3B5XTsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Rhc2sgPSBSZXRhaW5QdHI8TlNV
UkxTZXNzaW9uVGFzaz4odGFzayksIGNvbXBsZXRpb25IYW5kbGVyQ29weV0gewotICAgICAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJzID0gYWRvcHRDRihXZWJLaXQ6OndlYktp
dENvb2tpZVN0b3JhZ2VDb3B5UmVxdWVzdEhlYWRlckZpZWxkc0ZvclVSTChudWxscHRyLCAoQ0ZV
UkxSZWYpW1t0YXNrIGN1cnJlbnRSZXF1ZXN0XSBVUkxdKSk7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyQ29weShoZWFkZXJzLmdldCgpKTsKLSAgICAgICAgW2NvbXBsZXRpb25IYW5kbGVyQ29w
eSByZWxlYXNlXTsKLSAgICB9KTsKLX0KLQotQGVuZAotCi0jZW5kaWYKLQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgJKHJldmlzaW9u
IDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCB1aW50
NjRfdCkgeyB9Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgdmlydHVhbCBib29sIHNo
b3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgcmV0dXJuIHRydWU7
IH0KLSNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3Jp
dGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3du
bG9hZFByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAko
cmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDE2ICsyMDQsNiBAQCB2b2lkIFdLQ29udGV4
dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4CiAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YSh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxvYWRQcm94eSksIGxlbmd0
aCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0jaWYgIVVTRShORVRX
T1JLX1NFU1NJT04pCi0gICAgICAgIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5
cGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKQotICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hv
dWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEko
JmRvd25sb2FkUHJveHkpLCB0b0FQSShtaW1lVHlwZS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9Ci0jZW5kaWYKLQogICAgICAgICB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwg
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVu
Y3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw5ICs1Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDYW5jZWwoV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9h
ZFByb3h5JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGZpbmFsOwotI2lmICFVU0Uo
TkVUV09SS19TRVNTSU9OKQotICAgIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5
cGUoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJikgZmluYWw7
Ci0jZW5kaWYKICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlByb2Nlc3NQb29sJiwg
RG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcHJvY2Vzc0Rp
ZENyYXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQkocmV2
aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRD
bGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNCwxNSArMTI0LDYgQEAgdm9pZCBEb3dubG9h
ZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgIH0pLmdldCgpXTsKIH0KIAotI2lmICFV
U0UoTkVUV09SS19TRVNTSU9OKQotYm9vbCBEb3dubG9hZENsaWVudDo6c2hvdWxkRGVjb2RlU291
cmNlRGF0YU9mTUlNRVR5cGUoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKQotICAgICAgICBy
ZXR1cm4gW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgc2hvdWxk
RGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU6bWltZVR5cGVdOwotICAgIHJldHVybiB0cnVlOwot
fQotI2VuZGlmCi0KIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKFdl
YlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5n
JiBkZXN0aW5hdGlvbikKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRD
cmVhdGVEZXN0aW5hdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM0LDcgKzEzNCw2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1
ZXN0KFJlc28KICAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLndpbGxTZW5kUmVx
dWVzdCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVk
aXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVz
b3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgewogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBw
ZW5kKG5ld1JlcXVlc3QudXJsKCkpOwogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICAg
ICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX3Byb2Nlc3NQb29sKQogICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC0xNDMsNyArMTQyLDYgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2VuZFJlcXVl
c3QoUmVzbwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG5ldHdvcmtQcm9jZXNzUHJv
eHktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDb250aW51ZVdpbGxTZW5kUmVxdWVz
dChwcm90ZWN0ZWRUaGlzLT5tX2Rvd25sb2FkSUQsIG5ld1JlcXVlc3QpLCAwKTsKLSNlbmRpZgog
ICAgIH0pOwogfQogCkBAIC0xNTIsMTMgKzE1MCw2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGMKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVy
bjsKIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIC8vIEFzIHBlciBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnLyNhcy1hLWRvd25sb2FkIChzdGVwIDIpLCB0aGUgZmlsZW5hbWUg
ZnJvbSB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIKLSAgICAvLyBzaG91bGQgb3ZlcnJp
ZGUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBmcm9tIHRoZSBkb3dubG9hZCBhdHRyaWJ1dGUuCi0g
ICAgaWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzTnVsbCgpICYmIHJlc3BvbnNlLmlzQXR0YWNo
bWVudFdpdGhGaWxlbmFtZSgpKQotICAgICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gU3RyaW5n
KCk7Ci0jZW5kaWYKLQogICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVj
ZWl2ZVJlc3BvbnNlKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgcmVzcG9uc2UpOwogfQogCkBAIC0x
NzAsMTggKzE2MSw2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEodWludDYK
ICAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRhKCptX3By
b2Nlc3NQb29sLCAqdGhpcywgbGVuZ3RoKTsKIH0KIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9O
KQotdm9pZCBEb3dubG9hZFByb3h5OjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sJiByZXN1bHQpCi17Ci0gICAgcmVzdWx0ID0gZmFs
c2U7Ci0KLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCi0gICAgICAgIHJldHVybjsKLQotICAgIHJl
c3VsdCA9IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuc2hvdWxkRGVjb2RlU291cmNl
RGF0YU9mTUlNRVR5cGUoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBtaW1lVHlwZSk7Ci19Ci0jZW5k
aWYKLQogdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFzeW5jKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSkKIHsKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCkBAIC0xOTcsMjQgKzE3Niw2
IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXQKICAgICB9KTsKIH0K
IAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotCi12b2lkIERvd25sb2FkUHJveHk6OmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFJlZjxNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6OkRlbGF5ZWRSZXBseT4mJiByZXBs
eSkKLXsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0
cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRl
bnNpb25JZk5lY2Vzc2FyeShtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSA/IGZpbGVuYW1l
IDogbV9zdWdnZXN0ZWRGaWxlbmFtZSwgbWltZVR5cGUpOwotICAgIG1fcHJvY2Vzc1Bvb2wtPmRv
d25sb2FkQ2xpZW50KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoKm1f
cHJvY2Vzc1Bvb2wsICp0aGlzLCBzdWdnZXN0ZWRGaWxlbmFtZSwgW3JlcGx5ID0gV1RGTW92ZShy
ZXBseSldIChBbGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRlc3RpbmF0aW9u
KSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlOwotICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwotICAgICAgICByZXBs
eS0+c2VuZChkZXN0aW5hdGlvbiwgYWxsb3dPdmVyd3JpdGUgPT0gQWxsb3dPdmVyd3JpdGU6Olll
cywgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgfSk7Ci19Ci0KLSNlbmRpZgotCiB2b2lk
IERvd25sb2FkUHJveHk6OmRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHJldmlzaW9uIDIyNzIzMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTg1LDcgKzg1LDYgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRp
ZFN0YXJ0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUpOwpAQCAtOTgsOSArOTcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0g
ICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBSZWY8TWVzc2FnZXM6OkRvd25s
b2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOjpEZWxheWVk
UmVwbHk+JiYpOwotI2VuZGlmCiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZUFzeW5jKERvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUpOwogCiAgICAgRG93bmxvYWRQcm94eU1hcCYgbV9kb3dubG9hZFByb3h5TWFwOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMCArMjgsNiBAQCBtZXNzYWdlcyAtPiBEb3dubG9hZFByb3h5IHsKIAogICAg
IERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQog
ICAgIERpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCkKLSNpZiAhVVNFKE5FVFdPUktfU0VT
U0lPTikKLSAgICBTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShTdHJpbmcgbWltZVR5
cGUpIC0+IChib29sIHJlc3VsdCkKLSAgICBEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyBtaW1lVHlwZSkgLT4gKFN0cmluZyBkZXN0
aW5hdGlvbiwgYm9vbCBhbGxvd092ZXJ3cml0ZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgRGVsYXllZAotI2VuZGlmCiAgICAgRGlkQ3Jl
YXRlRGVzdGluYXRpb24oU3RyaW5nIHBhdGgpCiAgICAgRGlkRmluaXNoKCkKICAgICBEaWRGYWls
KFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVE
YXRhKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMjczNTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg2LDcgKzExODYsNiBAQAog
CQk1M0JBNDdEMDFEQzJFRjVFMDA0REY0QUQgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlFQjU0NjFEQzJF
RTQwMDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgKi87IH07CiAJCTUzQkE0N0Qx
MURDMkVGNUUwMDRERjRBRCAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlFQjU0NzFEQzJFRTQwMDA5RDQ4Q0Yg
LyogTmV0d29ya0RhdGFUYXNrQmxvYi5oICovOyB9OwogCQk1M0RFQTM2NjFEREU0MjMxMDBFODI2
NDggLyoganNvbi5ocHAgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1M0RFQTM2NTFEREU0MjJFMDBFODI2NDggLyoganNvbi5ocHAgKi87IH07Ci0JCTVDMDUy
RjI2MUM2RDNCRDMwMDc2RTkxOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMDUyRjI0MUM2RDNB
QjYwMDc2RTkxOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSAqLzsgfTsKIAkJNUMw
QjE3NzgxRTdDODgwRTAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMw
QjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQk1QzBCMTc3OTFFN0M4ODIxMDBFOTEyM0MgLyogV2ViU29ja2V0U3Ry
ZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1QzBCMTc3QzFFN0M4ODU0MDBFOTEyM0MgLyog
V2ViU29ja2V0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDMEIxNzdBMUU3Qzg4NEYwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW0uY3Bw
ICovOyB9OwpAQCAtMTIwMSw4ICsxMjAwLDYgQEAKIAkJNUMxNDI3MDUxQzIzRjg0QzAwRDQxMTgz
IC8qIERvd25sb2FkSUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDMTQyNkY3MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZElELmggKi87IH07CiAJ
CTVDMTQyNzA2MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2RjgxQzIzRjg0MzAw
RDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgKi87IH07CiAJCTVDMTQyNzA3MUMyM0Y4NEMw
MEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY5MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1h
bmFnZXIuaCAqLzsgfTsKLQkJNUMxNDI3MTExQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkSU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3
MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25sb2FkSU9TLm1tICovOyB9OwotCQk1QzE0MjcxMjFD
MjNGODlFMDBENDExODMgLyogRG93bmxvYWRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwRjFDMjNGODk5MDBENDExODMgLyogRG93bmxv
YWRNYWMubW0gKi87IH07CiAJCTVDMTQyNzEzMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZENv
Y29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMx
NDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0gKi87IH07CiAJCTVDMTQy
NzE4MUMyM0Y4QjcwMEQ0MTE4MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzE0MUMyM0Y4
QjAwMEQ0MTE4MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAqLzsgfTsKIAkJNUMx
NDI3MUQxQzIzRjhDRjAwRDQxMTgzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29h
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3
MUIxQzIzRjhDQzAwRDQxMTgzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1t
ICovOyB9OwpAQCAtMTQxMCw3ICsxNDA3LDYgQEAKIAkJODM0QjI1MTIxQTg0MkM4NzAwQ0ZCMTUw
IC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2Fj
aGVTdGF0aXN0aWNzLmggKi87IH07CiAJCTgzNjAzNDlGMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM2MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFi
YXNlVHJhY2tlci5jcHAgKi87IH07CiAJCTgzNjAzNEEwMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzNjAzNDlFMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuaCAqLzsgfTsKLQkJODM2RUVCODAxQkU5RUM5RTAwNkI0QjgyIC8qIE5ldHdvcmtM
b2FkTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM2RUVCN0YxQkU5RUM5RTAwNkI0QjgyIC8qIE5ldHdvcmtMb2FkTWFjLm1tICovOyB9OwogCQk4
MzcyREIyNTFBNjc0QzhGMDBDNjk3QzUgLyogV0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzJEQjI0
MUE2NzRDOEYwMEM2OTdDNSAvKiBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzJEQjI4MUE2
NzU2MjgwMEM2OTdDNSAvKiBXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMjYxQTY3NTYy
ODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5jcHAgKi87IH07CiAJ
CTgzNzJEQjI5MUE2NzU2MjgwMEM2OTdDNSAvKiBXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzJE
QjI3MUE2NzU2MjgwMEM2OTdDNSAvKiBXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCAq
LzsgfTsKQEAgLTE0MjcsOCArMTQyMyw2IEBACiAJCTgzQTBFRDM0MUY3NDdDQ0QwMDMyOTlFQiAv
KiBQcmVjb25uZWN0VGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0EwRUQzMzFGNzQ3Q0M3MDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suY3Bw
ICovOyB9OwogCQk4M0EwRUQzNTFGNzQ3Q0NGMDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQTBFRDMyMUY3
NDdDQzYwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5oICovOyB9OwogCQk4M0JEQ0NCOTFBQzVG
REI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JEQ0NCODFBQzVGREI2MDAzRjY0NDEg
LyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgKi87IH07Ci0JCTgzQkZBQzQyMUQ5NjEzN0Mw
MDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkZBQzQwMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93
bmxvYWRDbGllbnQuaCAqLzsgfTsKLQkJODNCRkFDNDMxRDk2MTM3QzAwNDMzNDkwIC8qIEJsb2JE
b3dubG9hZENsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0JGQUM0MTFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNw
cCAqLzsgfTsKIAkJODNENDU0RDcxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0Q0NTRE
NjFCRTlEM0M0MDA2QzkzQkQgLyogTmV0d29ya0xvYWRDbGllbnQuaCAqLzsgfTsKIAkJODNFRTU3
NUIxREI3RDYxMTAwQzc0QzUwIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRUU1NzU5MURCN0Q2
MDYwMEM3NEM1MCAvKiBXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5jcHAgKi87IH07CiAJCTgz
RUU1NzVDMURCN0Q2MTEwMEM3NEM1MCAvKiBXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFRTU3NUExREI3
RDYwNjAwQzc0QzUwIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggKi87IH07CkBAIC0y
MDI3LDcgKzIwMjEsNiBAQAogCQlDREMzODJGRTE3MjExNzk5MDA4QTJGQzMgLyogU2VjSXRlbVNo
aW1MaWJyYXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTExRjhBNzgxMzhCNDYwOTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5tbSAqLzsg
fTsKIAkJQ0RDMzgzMDcxNzIxMTdERDAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFy
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMz
ODJGOTE3MjExNkQzMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcCAqLzsg
fTsKIAkJQ0RDMzgzMEMxNzIxMjI4MjAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFy
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMzgz
MEIxNzIxMjFDRTAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oICovOyB9Owot
CQlDREMzODMxMDE3MjEyNDQwMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMzODMwRDE3MjEyNDJE
MDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0ubW0gKi87IH07CiAJCUNEQ0E4NUM4MTMyQUJB
NEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1QzYxMzJBQkE0RTAwRTk2
MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEQ0E4NUM5
MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVDNzEzMkFCQTRF
MDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9OwogCQlDRTEx
QUQ1MDFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyog
Q29kZVNpZ25pbmcubW0gKi87IH07CkBAIC0zNTgwLDcgKzM1NzMsNiBAQAogCQk1MzlFQjU0NjFE
QzJFRTQwMDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MzlFQjU0NzFEQzJFRTQwMDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxv
Yi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrRGF0YVRhc2tCbG9i
Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzREVBMzY1MURERTQyMkUwMEU4MjY0OCAvKiBqc29uLmhw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IG5hbWUgPSBqc29uLmhwcDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvanNvbi5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTVDMDUyRjI0MUM2RDNBQjYwMDc2RTkxOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEF1dGhlbnRpY2F0
aW9uTWFuYWdlckNvY29hLm1tOyBwYXRoID0gQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGlj
YXRpb25NYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMEIx
Nzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtTb2NrZXRT
dHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzBCMTc3NTFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzBCMTc3NjFFN0M4NzlDMDBF
OTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjAzLDggKzM1OTUsNiBAQAogCQk1
QzE0MjZGODFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERvd25sb2FkTWFuYWdlci5jcHA7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI2RjkxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEb3dubG9hZE1hbmFnZXIu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERv
d25sb2FkQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBE
b3dubG9hZENvY29hLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rv
d25sb2FkQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDMTQyNzBEMUMy
M0Y4ODUwMEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IERvd25sb2FkSU9TLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NUMxNDI3MEYxQzIzRjg5OTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRNYWMubW07IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzE0MjcxNDFDMjNGOEIwMDBENDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzE0MjcxNTFDMjNGOEIwMDBENDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzFCMUMyM0Y4Q0MwMEQ0MTE4MyAvKiBMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzgzNyw3ICszODI3
LDYgQEAKIAkJODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3Rp
Y3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlU3RhdGlz
dGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2
MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNjAzNDlFMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgz
NkVFQjdGMUJFOUVDOUUwMDZCNEI4MiAvKiBOZXR3b3JrTG9hZE1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtMb2FkTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MzcyREIyNDFBNjc0QzhGMDBDNjk3QzUgLyogV0tQYWdlRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM3MkRCMjYxQTY3NTYyODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdl
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzcyREIyNzFBNjc1NjI4MDBDNjk3QzUgLyogV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzg1NCw4ICsz
ODQzLDYgQEAKIAkJODNBMEVEMzIxRjc0N0NDNjAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByZWNvbm5lY3RUYXNrLmg7IHBhdGgg
PSBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4M0EwRUQzMzFGNzQ3Q0M3MDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJlY29ubmVjdFRhc2suY3BwOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0JEQ0NCODFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3Jr
Q2FjaGVTdGF0aXN0aWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODNCRkFD
NDAxRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCbG9iRG93bmxvYWRDbGllbnQuaDsgcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJODNCRkFDNDExRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCbG9iRG93bmxvYWRD
bGllbnQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENs
aWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRDQ1NEQ2MUJFOUQzQzQw
MDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBOZXR3b3JrTG9hZENsaWVudC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNFRTU3NTkxREI3
RDYwNjAwQzc0QzUwIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNFRTU3NUExREI3RDYwNjAwQzc0QzUw
IC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00NTAxLDggKzQ0ODgsNiBAQAogCQlDREMzODJGOTE3MjExNkQzMDA4QTJG
QzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENv
b2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQzM4MzA2MTcyMTE3OTkwMDhBMkZDMyAvKiBXZWJQcm9jZXNzU2hpbS5keWxpYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5keWxpYiI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdlYlByb2Nlc3NTaGltLmR5bGli
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDREMzODMwQjE3MjEyMUNF
MDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
b2tpZVN0b3JhZ2VTaGltTGlicmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
REMzODMwRDE3MjEyNDJEMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlU2hpbS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0RDMzgzMEUxNzIxMjQyRDAwOEEyRkMzIC8qIENv
b2tpZVN0b3JhZ2VTaGltLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2VTaGltLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzhGNDg4MTcy
NUU2NzgwMDE2NkY2RSAvKiBDb3JlRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFt
ZSA9IENvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+
IjsgfTsKIAkJQ0RDQTg1QzYxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02Mjk5LDcgKzYyODQs
NiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlFMTdBRTJDMTE2
QjlDMTM5MDAxQzQyRjEgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbiAq
LywKLQkJCQk4MzZFRUI3RjFCRTlFQzlFMDA2QjRCODIgLyogTmV0d29ya0xvYWRNYWMubW0gKi8s
CiAJCQkJNTFBOEE2MTUxNjI3RjNGOTAwMEQ5MEU5IC8qIE5ldHdvcmtQcm9jZXNzTWFjLm1tICov
LAogCQkJCUUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5tbSAqLywKIAkJCSk7CkBAIC02NDk0LDcgKzY0NzgsNiBAQAogCQk1MThFOEVGMTE2QjIwOEYw
MDBFOTE0MjkgLyogQXV0aGVudGljYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAotCQkJCTVDMDUyRjIzMUM2RDNBQTEwMDc2RTkxOSAvKiBjb2NvYSAqLywK
IAkJCQk1MThFOEVGNjE2QjIwOTFDMDBFOTE0MjkgLyogbWFjICovLAogCQkJCTUxOEU4RUYzMTZC
MjA5MUMwMEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwICovLAogCQkJCTUxOEU4
RUY0MTZCMjA5MUMwMEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCAqLywKQEAgLTY2
MzEsMjIgKzY2MTQsMTAgQEAKIAkJCW5hbWUgPSBjYXB0dXJlOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKLQkJNUMwNTJGMjMxQzZEM0FBMTAwNzZFOTE5IC8qIGNvY29hICovID0g
ewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk1QzA1MkYyNDFDNkQz
QUI2MDA3NkU5MTkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0gKi8sCi0JCQkpOwot
CQkJbmFtZSA9IGNvY29hOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJNUMx
NDI2RjExQzIzRjgxNzAwRDQxMTgzIC8qIERvd25sb2FkcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNUMxNDI3MDgxQzIzRjg1MjAwRDQxMTgzIC8qIGNv
Y29hICovLAotCQkJCTVDMTQyNzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBpb3MgKi8sCi0JCQkJNUMx
NDI3MEIxQzIzRjg3MTAwRDQxMTgzIC8qIG1hYyAqLywKLQkJCQk4M0JGQUM0MTFEOTYxMzYwMDA0
MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCAqLywKLQkJCQk4M0JGQUM0MDFEOTYxMzYw
MDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJNUMxNDI2RjMxQzIzRjg0
MzAwRDQxMTgzIC8qIERvd25sb2FkLmNwcCAqLywKIAkJCQk1QzE0MjZGNDFDMjNGODQzMDBENDEx
ODMgLyogRG93bmxvYWQuaCAqLywKIAkJCQk1QzE0MjZGNzFDMjNGODQzMDBENDExODMgLyogRG93
bmxvYWRJRC5oICovLApAQCAtNjY3NywyMiArNjY0OCw2IEBACiAJCQluYW1lID0gY29jb2E7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk1QzE0MjcwQjFDMjNGODcxMDBENDEx
ODMgLyogbWFjICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJ
CQk1QzE0MjcwRjFDMjNGODk5MDBENDExODMgLyogRG93bmxvYWRNYWMubW0gKi8sCi0JCQkpOwot
CQkJbmFtZSA9IG1hYzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTVDMTQy
NzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBpb3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJ
CWNoaWxkcmVuID0gKAotCQkJCTVDMTQyNzBEMUMyM0Y4ODUwMEQ0MTE4MyAvKiBEb3dubG9hZElP
Uy5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gaW9zOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKIAkJNUMxNDI3MUExQzIzRjhCRjAwRDQxMTgzIC8qIENvY29hICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTc1MjQsOCArNzQ3OSw2IEBACiAJ
CQkJQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVTaWduaW5nLm1tICovLAogCQkJCTFB
MkE0QUZFMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5oICovLAogCQkJCTFBMkE0
QUZEMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5tbSAqLywKLQkJCQlDREMzODMw
RTE3MjEyNDJEMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0uaCAqLywKLQkJCQlDREMzODMw
RDE3MjEyNDJEMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0ubW0gKi8sCiAJCQkJQ0RDMzgy
RjkxNzIxMTZEMzAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5jcHAgKi8sCiAJ
CQkJQ0RDMzgzMEIxNzIxMjFDRTAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltTGlicmFyeS5o
ICovLAogCQkJCTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJs
ZXJNYWMubW0gKi8sCkBAIC04Njg0LDcgKzg2MzcsNiBAQAogCQkJCUNEQTA0MUY0MUFDRTIxMDUw
MDRBMTNFQyAvKiBCYWNrQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZB
MkI2MDkxRTU2NzZBNjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE2NEEyRjIxOTFBRjE0RTAwMTA3MzdEIC8qIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywK
LQkJCQk4M0JGQUM0MjFEOTYxMzdDMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMTcwODc2QzE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5
UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGNjAxNDMyMTU1QzVBQTIwMDFGQkRFMCAvKiBC
bG9ja2luZ1Jlc3BvbnNlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDUxMTFCRTQxMEU2
MDA4NzRBRjEgLyogQmxvY2tTUEkuaCBpbiBIZWFkZXJzICovLApAQCAtMTAyNjEsNyArMTAyMTMs
NiBAQAogCQkJCTUxMkY1ODk4MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RThFRjgxNkIyMDkxQzAwRTkx
NDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThF
OEVGQjE2QjIwOTFDMDBFOTE0MjkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbSBpbiBT
b3VyY2VzICovLAotCQkJCTVDMDUyRjI2MUM2RDNCRDMwMDc2RTkxOSAvKiBBdXRoZW50aWNhdGlv
bk1hbmFnZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMkY1OEEyMTJBODgzQUQwMDYy
OTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTk1NUE2RjQxQzc5ODZEQzAwRUI2QTkzIC8qIEF1dG9tYXRpb25CYWNrZW5k
RGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTlDODFENTkxQzIwRTFFNTAwNUM0
QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTEwMjcwLDcgKzEw
MjIxLDYgQEAKIAkJCQk5OTBEMjhCQzFDNjUzOURBMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Np
b25DbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NkEyQjYwODFFNTY3NkE2MDBDM0RFREEg
LyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUxNjRBMkYxMTkxQUYxNEUwMDEwNzM3RCAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VX
aXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4M0JGQUM0MzFEOTYx
MzdDMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxNzA4NzZCMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0YxODYzODE2N0QwNzFFMDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MTg5N0VENzFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAyOTEsNyArMTAyNDEsNiBAQAogCQkJ
CUJDMDMyREFBMTBGNDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBMzBFQUM2MTE1RDdEQTMwMDUzRTkzNyAvKiBDb25uZWN0aW9uTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTEwNkQ3QzIxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29u
dGV4dERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0RDMzgzMTAxNzIxMjQ0MDAwOEEyRkMz
IC8qIENvb2tpZVN0b3JhZ2VTaGltLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNEY1QTIxRjE5
RDdEMjAwNENGODIxIC8qIENvb2tpZVN0b3JhZ2VVdGlsc0NGLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjg3OEI2MTYxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUM1NUY5MTcwMUM1OTVGNjMwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVz
dWx0Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xMDMwMSw4ICsxMDI1MCw2IEBACiAJCQkJNUMxNDI3
MDExQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
REY2MzEyMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTVDMTQyNzEzMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZENvY29hLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJNUMxNDI3MTExQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkSU9TLm1t
IGluIFNvdXJjZXMgKi8sCi0JCQkJNUMxNDI3MTIxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2Fk
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MDYxQzIzRjg0QzAwRDQxMTgzIC8qIERv
d25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDRDQjEyODhBQUE3MDBD
RkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUQyNUU5NTE2
N0FCMDgxMDBFQTlCQ0QgLyogRG93bmxvYWRQcm94eU1hcC5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTEwNDMzLDcgKzEwMzgwLDYgQEAKIAkJCQk1Q0JDOUI4RDFDNjUyNzlDMDBBOEZEQ0YgLyogTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzAyNTg0NjFEQ0JCRDIy
MDBEQTg5QzIgLyogTmV0d29ya0RhdGFUYXNrUmVwbGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTgzOTkwMjAyMUJFOUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk4MzZFRUI4MDFCRTlFQzlFMDA2QjRCODIgLyogTmV0d29ya0xvYWRNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1MTc5NTU2ODE2Mjg3NkNGMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nl
c3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VDNEYwRkIxOEU0QUNCQjAwODA1NkFGIC8qIE5l
dHdvcmtQcm9jZXNzQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTgzRERFQzE2MzBCREZD
MDA4QkU1QzcgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjI3
MjMyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjcsNyArMTI3LDYgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jaW5jbHVkZSAiQ29va2llU3RvcmFnZVNoaW0uaCIKICNpbmNsdWRlICJPYmpDT2JqZWN0R3Jh
cGguaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIgogI2VuZGlmCkBAIC0y
NzIsOSArMjcxLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZQog
CiAgICAgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
IAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Np
b24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgTmV0d29ya1Nlc3Npb246OmNy
ZWF0ZSh7IH0pKTsKLSNlbmRpZgogCiAgICAgLy8gTWF0Y2ggdGhlIFFvUyBvZiB0aGUgVUlQcm9j
ZXNzIGFuZCB0aGUgc2Nyb2xsaW5nIHRocmVhZCBidXQgdXNlIGEgc2xpZ2h0bHkgbG93ZXIgcHJp
b3JpdHkuCiAgICAgV1RGOjpUaHJlYWQ6OnNldEN1cnJlbnRUaHJlYWRJc1VzZXJJbnRlcmFjdGl2
ZSgtMSk7CkBAIC0zODUsOSArMzgyLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2Vi
UHJvY2VzcyhXZQogCiAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCk7CiAKLSNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgQ29va2llU3Rv
cmFnZVNoaW06OnNpbmdsZXRvbigpLmluaXRpYWxpemUoKTsKLSNlbmRpZgogICAgIHNldFRlcm1p
bmF0aW9uVGltZW91dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7CiAKICAgICByZXNl
dFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhwYXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2hlcyk7CkBAIC01NTYsMTIgKzU1MCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldENh
Y2hlTW9kZWwodWludDMyX3QgCiB2b2lkIFdlYlByb2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlh
bHMoKQogewogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxzKCk7Ci0jaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tl
cjo6bmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpCiAg
ICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckNyZWRlbnRpYWxzKCk7CiAgICAgZWxzZQogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgogfQogCiBXZWJQYWdlKiBXZWJQcm9j
ZXNzOjpmb2N1c2VkV2ViUGFnZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDcgQEAgdm9pZCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVXZQogCiAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1
cmVTZXNzaW9uKHNlc3Npb25JRCwgYmFzZSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25J
RC5zZXNzaW9uSUQoKSksIFdURk1vdmUodWlQcm9jZXNzQ29va2llU3RvcmFnZSkpOwogCi0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNz
aW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycykpKTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kgcG9saWN5KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331960</attachid>
            <date>2018-01-22 13:47:34 -0800</date>
            <delta_ts>2018-01-22 13:56:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181944-20180122134738.patch</filename>
            <type>text/plain</type>
            <size>149290</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjczNTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MCBAQAorMjAxOC0wMS0yMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBwcmUt
TmV0d29ya1Nlc3Npb24gbG9hZGluZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODE5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZSB3ZXJlIGtlZXBpbmcgaXQgYXJvdW5kIGZvciBFbCBDYXBp
dGFuLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyUHJvdG9jb2xDbGFzcyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6fkRvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmNh
bmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6c3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZDo6c3RhcnRXaXRoSGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6
OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OndpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkOjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c2V0QmxvYkZpbGVSZWZlcmVuY2VzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlcXVlc3QgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OndpbGxEZWNpZGVQZW5kaW5nRG93bmxv
YWREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y29udmVy
dE5ldHdvcmtMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdl
cjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW06IFJlbW92ZWQuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvYWRQaW5nKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFza0Jsb2IuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZDo6c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRGYWlsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2VBc3luYyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtM
b2FkOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24p
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2Nv
YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOiBSZW1vdmVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNp
dGVEYXRhU3RvcmVTZXNzaW9uKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25N
YW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnVzZUNyZWRlbnRpYWxGb3JTaW5nbGVDaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNvbnRpbnVlV2l0
aG91dENyZWRlbnRpYWxGb3JTaW5nbGVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OmNhbmNlbFNpbmdsZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvclNpbmds
ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVq
ZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JTaW5nbGVDaGFsbGVuZ2UpOgorICAgICAg
ICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29j
b2EubW06IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAqIFNoYXJlZC9T
ZXNzaW9uVHJhY2tlci5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tOiBS
ZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAg
ICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKEFQ
STo6RG93bmxvYWRDbGllbnQ6OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
RG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGll
bnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpzaG91bGREZWNvZGVTb3Vy
Y2VEYXRhT2ZNSU1FVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2hvdWxkRGVjb2Rl
U291cmNlRGF0YU9mTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRh
U3RvcmVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMpOgorICAgICAgICAq
IGNvbmZpZy5oOgorCiAyMDE4LTAxLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIHJlbGVhc2UgbG9nZ2luZyB0byBoZWxwIGRlYnVnIGlzc3VlcyByZWxh
dGVkIHRvIHNlcnZpY2Ugd29ya2VycwpJbmRleDogU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAy
MjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC05Niw3ICs5Niw2IEBAIHNldChXZWJLaXRfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICkK
IAogc2V0KFdlYktpdF9TT1VSQ0VTCi0gICAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JE
b3dubG9hZENsaWVudC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKICAg
ICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcApJbmRleDogU291
cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw2IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbQogCi0gICAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3du
bG9hZE1hYy5tbQotCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJz
Q29jb2EuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29h
Lm1tCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2Eu
bW0KQEAgLTM3LDcgKzM1LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCiAgICAgTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQogCi0gICAgTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtMb2FkTWFjLm1tCiAgICAgTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNz
TWFjLm1tCiAgICAgTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CiAKQEAgLTcyLDggKzY5LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBTaGFy
ZWQvQVBJV2ViQXJjaGl2ZS5tbQogICAgIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0K
IAotICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJD
b2NvYS5tbQotCiAgICAgU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1t
CiAgICAgU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbQogICAgIFNoYXJl
ZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KQEAgLTE0MSw3ICsxMzYsNiBA
QCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNz
TWFjLm1tCiAgICAgU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQogICAgIFNoYXJlZC9tYWMvQ29s
b3JTcGFjZURhdGEubW0KLSAgICBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCiAgICAg
U2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwCiAgICAgU2hhcmVkL21hYy9I
YW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0KICAgICBTaGFyZWQvbWFjL05hdGl2ZVdlYkdlc3R1
cmVFdmVudE1hYy5tbQpJbmRleDogU291cmNlL1dlYktpdC9jb25maWcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2NvbmZpZy5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2Vi
S2l0L2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMCArNzksNiBAQAogI2VuZGlmCiAK
ICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTIwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShBUFBMRVRWKSB8fCBQTEFURk9S
TShXQVRDSE9TKSB8fCBVU0UoU09VUCkKLSNpZm5kZWYgVVNFX05FVFdPUktfU0VTU0lPTgotI2Rl
ZmluZSBVU0VfTkVUV09SS19TRVNTSU9OIDEKLSNlbmRpZgotCiAjaWZuZGVmIEVOQUJMRV9CRUFD
T05fQVBJCiAjZGVmaW5lIEVOQUJMRV9CRUFDT05fQVBJIDEKICNlbmRpZgpAQCAtOTMsNyArODks
NyBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmICgoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkg
fHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKSkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogI2lmbmRlZiBFTkFCTEVfU0VSVkVSX1BSRUNPTk5F
Q1QKICNkZWZpbmUgRU5BQkxFX1NFUlZFUl9QUkVDT05ORUNUIDEKICNlbmRpZgpAQCAtMTEyLDcg
KzEwOCw3IEBACiAjZW5kaWYKIAogI2lmbmRlZiBFTkFCTEVfTkVUV09SS19DQVBUVVJFCi0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAjZGVmaW5lIEVOQUJMRV9ORVRXT1JLX0NBUFRVUkUgMQogI2VuZGlmCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgogCi0jaWYgVVNFKE5FVFdPUktfU0VT
U0lPTikKLQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKQEAgLTEzMyw1ICsx
MzEsMyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6Y2Fubm90CiB9CiAKIH0g
Ly8gTmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCi0KICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgpAQCAtNzUsNSArNzMsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFtLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1NvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRl
ICJQcmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKQEAgLTU3LDEwICs1OCw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+
CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotI2luY2x1ZGUgIlBpbmdMb2FkLmgiCi0jZW5k
aWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MjQzLDE2ICsyNDAsOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2Fk
CiAgICAgICAgIGRpZEZpbmlzaFBpbmdMb2FkKGlkZW50aWZpZXIsIGVycm9yLCByZXNwb25zZSk7
CiAgICAgfTsKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgLy8gUGluZ0xvYWQgbWFu
YWdlcyBpdHMgb3duIGxpZmV0aW1lLCBkZWxldGluZyBpdHNlbGYgd2hlbiBpdHMgcHVycG9zZSBo
YXMgYmVlbiBmdWxmaWxsZWQuCiAgICAgbmV3IFBpbmdMb2FkKFdURk1vdmUobG9hZFBhcmFtZXRl
cnMpLCBXVEZNb3ZlKG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShvcmlnaW5hbFJlcXVlc3RIZWFkZXJz
KTsKLSAgICBhdXRvIGNvbnRleHQgPSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGxv
YWRQYXJhbWV0ZXJzLnNlc3Npb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7Ci0KLSAgICAvLyBQaW5nSGFuZGxlIG1hbmFnZXMgaXRz
IG93biBsaWZldGltZSwgZGVsZXRpbmcgaXRzZWxmIHdoZW4gaXRzIHB1cnBvc2UgaGFzIGJlZW4g
ZnVsZmlsbGVkLgotICAgIG5ldyBQaW5nSGFuZGxlKGNvbnRleHQucHRyKCksIGxvYWRQYXJhbWV0
ZXJzLnJlcXVlc3QsIGxvYWRQYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1Jl
ZGlyZWN0cywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotI2VuZGlmCiB9CiAKIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90
IHBpbmdMb2FkSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAkocmV2aXNpb24gMjI3MjMyKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0RhdGFUYXNrLmgiCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVkZSAi
TmV0d29ya0RhdGFUYXNrQmxvYi5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCkBAIC0xNDAsNSArMTM4LDMgQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2s6OmZhaWx1cmVUaW1lckZpcmVkKAogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDIyNzIz
MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KQEAgLTE2
MCw1ICsxNTgsMyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAJKHJldmlzaW9uIDIy
NzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2tCbG9iLmgiCiAKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNTg0LDUgKzU4MiwzIEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNoKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgJKHJldmlzaW9uIDIyNzIz
MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKLQogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN0cmVhbUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgpAQCAtMTIwLDUgKzExOCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMjI3
MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLQogc3RydWN0
IE5ldHdvcmtMb2FkOjpUaHJvdHRsZSB7CiAgICAgVGhyb3R0bGUoTmV0d29ya0xvYWQmIGxvYWQs
IFNlY29uZHMgZGVsYXksIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiAgICAgICAgIDogdGltZXIobG9hZCwgJk5ldHdvcmtM
b2FkOjp0aHJvdHRsZURlbGF5Q29tcGxldGVkKQpAQCAtMTE3LDI1ICsxMTUsMTEgQEAgdm9pZCBO
ZXR3b3JrTG9hZDo6aW5pdGlhbGl6ZShOZXR3b3JrU2VzcwogICAgICAgICBtX3Rhc2stPnJlc3Vt
ZSgpOwogfQogCi0jZWxzZQotCi1OZXR3b3JrTG9hZDo6TmV0d29ya0xvYWQoTmV0d29ya0xvYWRD
bGllbnQmIGNsaWVudCwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKLSAgICA6
IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMp
KQotICAgICwgbV9uZXR3b3JraW5nQ29udGV4dChSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3Jl
YXRlKG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KSkKLSAgICAsIG1fY3VycmVudFJlcXVlc3QobV9wYXJh
bWV0ZXJzLnJlcXVlc3QpCi17Ci0gICAgbV9oYW5kbGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRl
KG1fbmV0d29ya2luZ0NvbnRleHQuZ2V0KCksIG1fcGFyYW1ldGVycy5yZXF1ZXN0LCB0aGlzLCBt
X3BhcmFtZXRlcnMuZGVmZXJzTG9hZGluZywgbV9wYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1Bv
bGljeSA9PSBTbmlmZkNvbnRlbnQsIG1fcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmlu
Z1BvbGljeSA9PSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwotfQotCi0j
ZW5kaWYKLQogTmV0d29ya0xvYWQ6On5OZXR3b3JrTG9hZCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICBpZiAobV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKQogICAg
ICAgICBtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQogICAgIGlmIChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIG1f
cmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAjaWYgVVNF
KFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKQEAgLTE0NCwxOSArMTI4LDEwIEBAIE5l
dHdvcmtMb2FkOjp+TmV0d29ya0xvYWQoKQogI2VuZGlmCiAgICAgaWYgKG1fdGFzaykKICAgICAg
ICAgbV90YXNrLT5jbGVhckNsaWVudCgpOwotI2Vsc2UKLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFD
RV9BVVRIX0NBTExCQUNLKQotICAgIGlmIChtX2hhbmRsZSAmJiBtX3dhaXRpbmdGb3JDb250aW51
ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpCi0gICAgICAgIG1faGFuZGxl
LT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZmFsc2UpOwot
I2VuZGlmCi0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBtX2hhbmRsZS0+Y2xlYXJDbGllbnQo
KTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wg
ZGVmZXJzKQogewotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKG1fdGFzaykgewog
ICAgICAgICBpZiAoZGVmZXJzKQogICAgICAgICAgICAgbV90YXNrLT5zdXNwZW5kKCk7CkBAIC0x
NjgsMjEgKzE0MywxMiBAQCB2b2lkIE5ldHdvcmtMb2FkOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wg
CiAjZW5kaWYKICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0gICAgaWYgKG1faGFuZGxlKQotICAg
ICAgICBtX2hhbmRsZS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOwotI2VuZGlmCiB9CiAKIHZv
aWQgTmV0d29ya0xvYWQ6OmNhbmNlbCgpCiB7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAg
ICBpZiAobV90YXNrKQogICAgICAgICBtX3Rhc2stPmNhbmNlbCgpOwotI2Vsc2UKLSAgICBpZiAo
bV9oYW5kbGUpCi0gICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKLSNlbmRpZgogfQogCiB2b2lk
IE5ldHdvcmtMb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiBuZXdSZXF1ZXN0KQpAQCAtMTk5LDcgKzE2NSw2IEBAIHZvaWQgTmV0d29ya0xvYWQ6
OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXMKICAgICAgICAgbV9yZWNvcmRlci0+cmVjb3JkUmVkaXJl
Y3RTZW50KG5ld1JlcXVlc3QpOwogI2VuZGlmCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQog
ICAgIGF1dG8gcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9yZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKICAgICBBU1NFUlQocmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlcik7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QuaXNOdWxsKCkpIHsKQEAg
LTIxMiwzOSArMTc3LDIwIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXMKIAogICAgIGlmIChyZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICByZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyKFJlc291cmNlUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0KSk7Ci0j
ZWxzZQotICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmICht
X2hhbmRsZSkKLSAgICAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKLSAgICAgICAgZGlkRmFp
bChtX2hhbmRsZS5nZXQoKSwgY2FuY2VsbGVkRXJyb3IobV9jdXJyZW50UmVxdWVzdCkpOwotICAg
IH0gZWxzZSBpZiAobV9oYW5kbGUpIHsKLSAgICAgICAgYXV0byBjdXJyZW50UmVxdWVzdENvcHkg
PSBtX2N1cnJlbnRSZXF1ZXN0OwotICAgICAgICBhdXRvIHJlZGlyZWN0Q29tcGxldGlvbkhhbmRs
ZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7
Ci0gICAgICAgIEFTU0VSVChyZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgcmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGN1cnJlbnRSZXF1ZXN0Q29weSkpOwotICAg
IH0KLSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSgpCiB7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAobV9yZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGF1dG8gcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsK
ICAgICAgICAgcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiAg
ICAgfQotI2Vsc2UKLSAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgIG1faGFuZGxlLT5jb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZSgpOwotI2VuZGlmCiB9CiAKLSNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQogYm9vbCBOZXR3b3JrTG9hZDo6c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQuZ2V0KCkuc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCk7CiB9Ci0jZW5kaWYKIAogTmV0d29ya0xvYWRDbGllbnQ6
OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIE5ldHdvcmtMb2FkOjpzaGFyZWREaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogewpAQCAtMjc2LDgg
KzIyMiw2IEBAIGJvb2wgTmV0d29ya0xvYWQ6OmlzQWxsb3dlZFRvQXNrVXNlckZvckMKICAgICBy
ZXR1cm4gbV9jbGllbnQuZ2V0KCkuaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKTsK
IH0KIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0KIHZvaWQgTmV0d29ya0xvYWQ6OmNvbnZl
cnRUYXNrVG9Eb3dubG9hZChQZW5kaW5nRG93bmxvYWQmIHBlbmRpbmdEb3dubG9hZCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiB1cGRhdGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgaWYgKCFtX3Rhc2spCkBAIC00NTUsMTI4ICszOTksNCBAQCB2b2lk
IE5ldHdvcmtMb2FkOjpjYW5ub3RTaG93VVJMKCkKICAgICBtX2NsaWVudC5nZXQoKS5kaWRGYWls
TG9hZGluZyhjYW5ub3RTaG93VVJMRXJyb3IobV9jdXJyZW50UmVxdWVzdCkpOwogfQogCi0jZWxz
ZQotCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSkKLXsKLSAg
ICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLSAgICBpZiAoc2hh
cmVkRGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZSkpID09IE5ldHdv
cmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzKQotICAg
ICAgICBtX2hhbmRsZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKLX0KLQotdm9pZCBO
ZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiAv
KiBkYXRhICovLCB1bnNpZ25lZCAvKiBsZW5ndGggKi8sIGludCAvKiBlbmNvZGVkRGF0YUxlbmd0
aCAqLykKLXsKLSAgICAvLyBUaGUgTmV0d29ya1Byb2Nlc3Mgc2hvdWxkIG5ldmVyIGdldCBhIGRp
ZFJlY2VpdmVEYXRhIGNhbGxiYWNrLgotICAgIC8vIFdlIHNob3VsZCBhbHdheXMgYmUgdXNpbmcg
ZGlkUmVjZWl2ZUJ1ZmZlci4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBO
ZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCi17
Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgbV9j
bGllbnQuZ2V0KCkuZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpOwotfQotCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhh
bmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsK
LSAgICBtX2NsaWVudC5nZXQoKS5kaWRGaW5pc2hMb2FkaW5nKGVtcHR5TWV0cmljcyk7Ci19Ci0K
LXZvaWQgTmV0d29ya0xvYWQ6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsICFoYW5k
bGUgfHwgaGFuZGxlID09IG1faGFuZGxlKTsKLSAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpKTsK
LQotICAgIG1fY2xpZW50LmdldCgpLmRpZEZhaWxMb2FkaW5nKGVycm9yKTsKLX0KLQotdm9pZCBO
ZXR3b3JrTG9hZDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVCghbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
KTsKLSAgICBtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsK
LSAgICBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUocmVkaXJlY3RSZXNwb25zZSkpOwotfQotCi0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0Vf
QVVUSF9DQUxMQkFDSykKLXZvaWQgTmV0d29ya0xvYWQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBQcm90ZWN0
aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwotCi0g
ICAgLy8gSGFuZGxlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uIGF0IHBsYXRmb3JtLWxldmVsIGlm
IHJlcXVlc3RlZCwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCi0gICAgaWYgKHByb3RlY3Rpb25T
cGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0
aW9uU2NoZW1lU2VydmVyVHJ1c3RFdmFsdWF0aW9uUmVxdWVzdGVkCi0gICAgICAgICYmICFOZXR3
b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRp
b24oKSkgewotICAgICAgICBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV93YWl0aW5nRm9y
Q29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlID0gdHJ1ZTsKLSAg
ICBtX2NsaWVudC5nZXQoKS5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5
bmMocHJvdGVjdGlvblNwYWNlKTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgcmVzdWx0KQotewotICAgIG1f
d2FpdGluZ0ZvckNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSA9
IGZhbHNlOwotICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUtPmNvbnRpbnVlQ2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShyZXN1bHQpOwotfQotI2VuZGlmCi0K
LXZvaWQgTmV0d29ya0xvYWQ6OmRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
VG9CZVNlbnQpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRs
ZSk7Ci0KLSAgICBtX2NsaWVudC5nZXQoKS5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0
ZXNUb0JlU2VudCk7Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6Ondhc0Jsb2NrZWQoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1f
aGFuZGxlKTsKLQotICAgIGRpZEZhaWwoaGFuZGxlLCBXZWJLaXQ6OmJsb2NrZWRFcnJvcihtX2N1
cnJlbnRSZXF1ZXN0KSk7Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OmNhbm5vdFNob3dVUkwoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxl
ID09IG1faGFuZGxlKTsKLQotICAgIGRpZEZhaWwoaGFuZGxlLCBXZWJLaXQ6OmNhbm5vdFNob3dV
UkxFcnJvcihtX2N1cnJlbnRSZXF1ZXN0KSk7Ci19Ci0KLWJvb2wgTmV0d29ya0xvYWQ6OnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCi17Ci0gICAgQVNT
RVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSB8fCAhbV9oYW5kbGUpOyAvLyBt
X2hhbmRsZSB3aWxsIGJlIDAgaWYgY2FsbGVkIGZyb20gUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCku
Ci0KLSAgICAvLyBXaGVuIHRoZSBXZWJQcm9jZXNzIGlzIGhhbmRsaW5nIGxvYWRpbmcgYSBjbGll
bnQgaXMgY29uc3VsdGVkIGVhY2ggdGltZSB0aGlzIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
IHF1ZXN0aW9uIGlzIGFza2VkLgotICAgIC8vIEluIE5ldHdvcmtQcm9jZXNzIG1vZGUgd2UgYXNr
IHRoZSBXZWJQcm9jZXNzIGNsaWVudCB1cCBmcm9udCBvbmNlIGFuZCB0aGVuIHJldXNlIHRoZSBj
YWNoZWQgYW5zd2VyLgotCi0gICAgLy8gV2Ugc3RpbGwgbmVlZCB0aGlzIHN5bmMgdmVyc2lvbiwg
YmVjYXVzZSBSZXNvdXJjZUhhbmRsZSBpdHNlbGYgdXNlcyBpdCBpbnRlcm5hbGx5LCBldmVuIHdo
ZW4gdGhlIGRlbGVnYXRlIHVzZXMgYW4gYXN5bmMgb25lLgotCi0gICAgcmV0dXJuIG1fcGFyYW1l
dGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
VXNlOwotfQotCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNoYWxsZW5nZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1f
aGFuZGxlKTsKLQotICAgIGlmICghaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSkg
ewotICAgICAgICBjaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKS0+cmVjZWl2ZWRSZXF1
ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5nZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuYXV0aGVudGljYXRp
b25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBjaGFsbGVuZ2UpOwotfQotCi12
b2lkIE5ldHdvcmtMb2FkOjpyZWNlaXZlZENhbmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAgQVNTRVJUX1VOVVNF
RChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0KLSAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7
Ci0gICAgZGlkRmFpbChtX2hhbmRsZS5nZXQoKSwgY2FuY2VsbGVkRXJyb3IobV9jdXJyZW50UmVx
dWVzdCkpOwotfQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCi0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxOSArMjUsMTYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJEb3dubG9hZElELmgiCisjaW5jbHVkZSAiTmV0d29ya0RhdGFU
YXNrLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJOZXR3b3Jr
TG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQotI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKLSNpbmNsdWRlICJOZXR3b3JrRGF0YVRh
c2suaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShORVRXT1JLX0NBUFRVUkUpCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1
cmVSZWNvcmRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYXB0dXJlUmVwbGF5ZXIuaCIKQEAgLTQ1
LDIwICs0MiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTmV0d29ya0xvYWQg
ZmluYWwgOgotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgcHJpdmF0ZSBOZXR3b3JrRGF0
YVRhc2tDbGllbnQKLSNlbHNlCi0gICAgcHJpdmF0ZSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNs
aWVudAotI2VuZGlmCitjbGFzcyBOZXR3b3JrTG9hZCBmaW5hbCA6IHByaXZhdGUgTmV0d29ya0Rh
dGFUYXNrQ2xpZW50CiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0j
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBOZXR3b3JrTG9hZChOZXR3b3JrTG9hZENsaWVu
dCYsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmLCBOZXR3b3JrU2Vzc2lvbiYpOwotI2Vsc2UKLSAg
ICBOZXR3b3JrTG9hZChOZXR3b3JrTG9hZENsaWVudCYsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYm
KTsKLSNlbmRpZgogICAgIH5OZXR3b3JrTG9hZCgpOwogCiAgICAgdm9pZCBzZXREZWZlcnNMb2Fk
aW5nKGJvb2wpOwpAQCAtNzQsNyArNjIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCBjb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAg
ICB2b2lkIGNvbnZlcnRUYXNrVG9Eb3dubG9hZChQZW5kaW5nRG93bmxvYWQmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCBzZXRQZW5kaW5nRG93bmxvYWRJRChEb3dubG9hZElEKTsKICAgICB2b2lkIHNl
dFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwpAQCAtODIsNDkgKzY5LDIxIEBAIHB1
YmxpYzoKICAgICBEb3dubG9hZElEIHBlbmRpbmdEb3dubG9hZElEKCkgeyByZXR1cm4gbV90YXNr
LT5wZW5kaW5nRG93bmxvYWRJRCgpOyB9CiAKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IGZpbmFsOwotI2Vsc2UKLSAgICBXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSogaGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KLQot
I2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdm9pZCBjYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlkZTsKLSNlbmRpZgot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgb3ZlcnJpZGU7Ci0j
ZW5kaWYKLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQogCiAjaWYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKICNlbmRpZgogCiBwcml2YXRlOgotI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FQVFVSRSkKICAgICB2b2lk
IGluaXRpYWxpemVGb3JSZWNvcmQoTmV0d29ya1Nlc3Npb24mKTsKICAgICB2b2lkIGluaXRpYWxp
emVGb3JSZXBsYXkoTmV0d29ya1Nlc3Npb24mKTsKICNlbmRpZgogICAgIHZvaWQgaW5pdGlhbGl6
ZShOZXR3b3JrU2Vzc2lvbiYpOwotI2VuZGlmCiAKICAgICBOZXR3b3JrTG9hZENsaWVudDo6U2hv
dWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ugc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBzaGFyZWRXaWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYpOwogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgLy8gUmVzb3Vy
Y2VIYW5kbGVDbGllbnQKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkaWRTZW5kRGF0
YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSopIGZpbmFsOwotICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKLSAg
ICB2b2lkIHdhc0Jsb2NrZWQoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbDsKLSAgICB2
b2lkIGNhbm5vdFNob3dVUkwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbDsKLSAgICBi
b29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpIGZpbmFsOwotICAgIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIGZpbmFs
OwotICAgIGJvb2wgbG9hZGluZ1N5bmNocm9ub3VzWEhSKCkgZmluYWwgeyByZXR1cm4gbV9jbGll
bnQuZ2V0KCkuaXNTeW5jaHJvbm91cygpOyB9Ci0jZWxzZQogICAgIC8vIE5ldHdvcmtEYXRhVGFz
a0NsaWVudAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKQEAgLTEzOSwxMiArOTgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHRocm90dGxlRGVsYXlDb21wbGV0ZWQoKTsKIAogICAgIHZvaWQgY29tcGxldGVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSNlbmRpZgogCiAg
ICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxOZXR3b3JrTG9hZENsaWVudD4gbV9jbGllbnQ7CiAg
ICAgY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKICAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4gbV9yZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgUmVmUHRyPE5l
dHdvcmtEYXRhVGFzaz4gbV90YXNrOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U+IG1fY2hhbGxlbmdlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNF
X0FVVEhfQ0FMTEJBQ0spCkBAIC0xNTQsMTEgKzExMSw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAg
c3RydWN0IFRocm90dGxlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJvdHRsZT4gbV90aHJvdHRs
ZTsKLSNlbHNlCi0gICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dD4gbV9uZXR3b3JraW5nQ29udGV4dDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU+IG1faGFuZGxlOwotI2VuZGlmCiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgbV9jdXJyZW50UmVxdWVzdDsgLy8gVXBkYXRlZCBvbiByZWRpcmVjdHMuCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFt
ZXRlcnMuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0
d29ya0xvYWRQYXJhbWV0ZXJzX2gKLSNkZWZpbmUgTmV0d29ya0xvYWRQYXJhbWV0ZXJzX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oPgpAQCAtNDksMTIgKzQ4
LDggQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCB7IHRydWUgfTsKICAgICBib29sIGRlZmVyc0xvYWRpbmcgeyBmYWxzZSB9OwogICAg
IGJvb2wgbmVlZHNDZXJ0aWZpY2F0ZUluZm8geyBmYWxzZSB9OwotI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
PiBibG9iRmlsZVJlZmVyZW5jZXM7Ci0jZW5kaWYKICAgICBQcmVjb25uZWN0T25seSBzaG91bGRQ
cmVjb25uZWN0T25seSB7IFByZWNvbm5lY3RPbmx5OjpObyB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBOZXR3b3JrTG9hZFBhcmFtZXRlcnNfaApJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsMTIgKzI1MiwxMCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjppbml0aWFsaXplTmV0d29ya1ByCiAgICAgbV9sb2dDb29raWVJbmZvcm1hdGlvbiA9
IHBhcmFtZXRlcnMubG9nQ29va2llSW5mb3JtYXRpb247CiAjZW5kaWYKIAotI2lmIFVTRShORVRX
T1JLX1NFU1NJT04pCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikK
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHRTZXNzaW9uUGFyYW1ldGVycy5sZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIgPSBzdXBwbGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKTsK
ICNlbmRpZgogICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCksIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0
ZXJzLmRlZmF1bHRTZXNzaW9uUGFyYW1ldGVycykpKTsKLSNlbmRpZgogCiAgICAgZm9yIChhdXRv
JiBzdXBwbGVtZW50IDogbV9zdXBwbGVtZW50cy52YWx1ZXMoKSkKICAgICAgICAgc3VwcGxlbWVu
dC0+aW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKQEAgLTMwMCwxMiArMjk4LDEwIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWMKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNs
ZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQogewogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxz
KCk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSkpCiAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckNyZWRlbnRpYWxz
KCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKQEAgLTU5Myw3ICs1ODksNiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjb250aW51ZUNhbkF1dGhlbnRpCiAKICNlbmRpZgogCi0jaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KERvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCkKIHsKICAgICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChkb3du
bG9hZElELCBXVEZNb3ZlKHJlcXVlc3QpKTsKQEAgLTYxOCw3ICs2MTMsNiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpmaW5kUGVuZGluZ0Rvd25sb2FkCiAKICAgICBkb3dubG9hZFByb3h5Q29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKG5ldHdvcmtEYXRhVGFzay5wZW5kaW5nRG93bmxvYWRJ
RCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSksIGRlc3RpbmF0aW9uSUQpOwogfQotI2VuZGlmCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRp
b24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3Jp
dGUpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw5ICsxMTksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbGVhckhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKTsKICNlbmRpZgogCi0jaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKICAgICB2b2lkIGZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0
YVRhc2smLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKLSNlbmRpZgogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9D
QUxMQkFDSykKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
TmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJik7
CkBAIC0xODQsOSArMTgyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlc3Ryb3lEb3dubG9h
ZCgpIG92ZXJyaWRlOwogICAgIElQQzo6Q29ubmVjdGlvbiogZG93bmxvYWRQcm94eUNvbm5lY3Rp
b24oKSBvdmVycmlkZTsKICAgICBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhl
bnRpY2F0aW9uTWFuYWdlcigpIG92ZXJyaWRlOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAg
ICAgdm9pZCBwZW5kaW5nRG93bmxvYWRDYW5jZWxlZChEb3dubG9hZElEKSBvdmVycmlkZTsKLSNl
bmRpZgogCiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdv
cmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTIx
MCw5ICsyMDYsNyBAQCBwcml2YXRlOgogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgYm9vbCBjYW5BdXRoZW50aWNh
dGUpOwogI2VuZGlmCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIGNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsK
LSNlbmRpZgogICAgIHZvaWQgY29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlv
bihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50
MzJfdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDkgKzQ5LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5
UmVjZWl2ZQogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgQ29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IGxvYWRl
cklELCBib29sIGNhbkF1dGhlbnRpY2F0ZSkKICNlbmRpZgotI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCiAgICAgQ29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQotI2VuZGlmCiAgICAgQ29u
dGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkSUQg
ZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQogCiAg
ICAgU2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIGZsYWcpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiwxNCArMTA2LDYg
QEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogICAgICAgICB9CiAg
ICAgfQogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgaWYgKG9yaWdpbmFsUmVxdWVz
dCgpLnVybCgpLnByb3RvY29sSXNCbG9iKCkpIHsKLSAgICAgICAgQVNTRVJUKCFtX3BhcmFtZXRl
cnMucmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9uKTsKLSAgICAgICAgbV9maWxlUmVmZXJlbmNlcy5h
cHBlbmRWZWN0b3IoTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkuZmlsZXNJbkJsb2Io
Y29ubmVjdGlvbiwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpKTsKLSAgICB9Ci0jZW5kaWYKLQot
CiAgICAgaWYgKHN5bmNocm9ub3VzUmVwbHkpCiAgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNMb2FkRGF0YT4oV1RGTW92ZShzeW5jaHJv
bm91c1JlcGx5KSk7CiB9CkBAIC0yMjksNyArMjIxLDYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnN0YXJ0TmV0d29yawogICAgIHBhcmFtZXRlcnMuZGVmZXJzTG9hZGluZyA9IG1fZGVm
ZXJzTG9hZGluZzsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwogCi0jaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigp
KQogICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IE5ldHdvcmtCbG9iUmVn
aXN0cnk6OnNpbmdsZXRvbigpLmZpbGVzSW5CbG9iKG1fY29ubmVjdGlvbiwgb3JpZ2luYWxSZXF1
ZXN0KCkudXJsKCkpOwogCkBAIC0yNDIsOSArMjMzLDYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnN0YXJ0TmV0d29yawogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbmV0d29y
a0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKLSNlbHNlCi0gICAgbV9uZXR3b3JrTG9hZCA9IHN0
ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
LSNlbmRpZgogCiAgICAgaWYgKG1fZGVmZXJzTG9hZGluZykgewogICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBDcmVhdGVkLCBidXQgZGVmZXJyZWQgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIK
IAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0KICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2su
aCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CkBAIC04Nyw1ICs4NSwzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb246
OmFsbG93c1NwZWNpZmljSFRUUFMKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikK
LQogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTY3LDUgKzY1LDMgQEAgcHJvdGVjdGVkOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJldmlzaW9u
IDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUGluZ0xvYWQuaCIKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0KICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgiCkBAIC0zMzAsNSArMzI4LDMgQEAgQ29u
dGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMgUGluZ0xvYQogI2VuZGlmIC8vIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
VVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0KICNpbmNsdWRlICJOZXR3b3JrRGF0
YVRhc2suaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmg+CkBAIC05OCw1ICs5Niwz
IEBAIHByaXZhdGU6CiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1
c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw4ICs1NSw2IEBAIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6TGVnYWN5
Q3VzdG8KIAogdm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAg
cmVnaXN0ZXJQcm90b2NvbENsYXNzKCk7Ci0KICAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6
IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMpCiAgICAg
ICAgIHJlZ2lzdGVyU2NoZW1lKHNjaGVtZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgc3RvcExvYWRpbmcodWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKE5FVFdPUktf
U0VTU0lPTikKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xD
bGFzcyhOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uKik7CiAjZW5kaWYKIApAQCAtMTExLDggKzEx
MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQpOwogICAgIHZvaWQgd2FzUmVkaXJlY3RlZFRvUmVxdWVzdCh1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKIAotICAgIHZvaWQg
cmVnaXN0ZXJQcm90b2NvbENsYXNzKCk7Ci0KICAgICBDaGlsZFByb2Nlc3MmIG1fY2hpbGRQcm9j
ZXNzOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBDdXN0b21Qcm90b2NvbD4gQ3Vz
dG9tUHJvdG9jb2xNYXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9D
b2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQkocmV2aXNpb24gMjI3MjMy
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2Ev
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
NSwxOSArMTA1LDEwIEBAIC0gKHZvaWQpc3RvcExvYWRpbmcKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLXZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclByb3RvY29sQ2xh
c3MoKQotewotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIFtOU1VSTFByb3RvY29sIHJl
Z2lzdGVyQ2xhc3M6W1dLQ3VzdG9tUHJvdG9jb2wgY2xhc3NdXTsKLSNlbmRpZgotfQotCi0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpy
ZWdpc3RlclByb3RvY29sQ2xhc3MoTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiAqY29uZmlndXJh
dGlvbikKIHsKICAgICBjb25maWd1cmF0aW9uLnByb3RvY29sQ2xhc3NlcyA9IEBbW1dLQ3VzdG9t
UHJvdG9jb2wgY2xhc3NdXTsKIH0KLSNlbmRpZgogCiB2b2lkIExlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Jsb2JEb3dubG9hZENsaWVudC5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxMjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJCbG9iRG93bmxvYWRDbGllbnQuaCIKLQotI2lmICFVU0UoTkVUV09SS19T
RVNTSU9OKQotCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIkRvd25sb2Fk
LmgiCi0jaW5jbHVkZSAiV2ViRXJyb3JzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1CbG9iRG93bmxvYWRDbGllbnQ6
OkJsb2JEb3dubG9hZENsaWVudChEb3dubG9hZCYgZG93bmxvYWQpCi0gICAgOiBtX2Rvd25sb2Fk
KGRvd25sb2FkKQotewotfQotCi12b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Up
Ci17Ci0gICAgbV9kb3dubG9hZC5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkp
OwotICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVu
ZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShtX2Rvd25sb2FkLnN1Z2dlc3RlZE5hbWUoKS5pc0Vt
cHR5KCkgPyBBU0NJSUxpdGVyYWwoInVua25vd24iKSA6IG1fZG93bmxvYWQuc3VnZ2VzdGVkTmFt
ZSgpLCByZXNwb25zZS5taW1lVHlwZSgpKTsKLSAgICBtX2Rvd25sb2FkLmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoc3VnZ2VzdGVkRmlsZW5hbWUpOwotfQotCi12
b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKLXsKLSAgICBB
U1NFUlQoIWRlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpOwotCi0gICAgaWYgKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoZGVzdGluYXRpb25QYXRoKSkgewotICAgICAgICBpZiAoIWFsbG93T3Zlcndy
aXRlKSB7Ci0gICAgICAgICAgICBkaWRGYWlsKG51bGxwdHIsIGNhbmNlbGxlZEVycm9yKG1fZG93
bmxvYWQucmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkZXN0aW5hdGlvblBhdGgpOwotICAgIH0KLQotICAg
IG1fZGVzdGluYXRpb25QYXRoID0gZGVzdGluYXRpb25QYXRoOwotICAgIG1fZGVzdGluYXRpb25G
aWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9kZXN0aW5hdGlvblBhdGgsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwotICAgIG1fZG93bmxvYWQuZGlkQ3JlYXRlRGVzdGluYXRp
b24obV9kZXN0aW5hdGlvblBhdGgpOwotCi0gICAgbV9kb3dubG9hZC5jb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpOwotfQotCi12b2lkIEJsb2JEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1
ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNv
dXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwotfQotCi0jaWYgVVNFKFBST1RF
Q1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLXZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpjYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBQcm90ZWN0aW9uU3BhY2UmKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
I2VuZGlmCi0KLXZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291
cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCkKLXsKLSAgICBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSwgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2Rvd25sb2FkLmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci0+c2l6
ZSgpKTsKLX0KLQotdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VIYW5kbGUqKQotewotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0aW9u
RmlsZSk7Ci0gICAgbV9kb3dubG9hZC5kaWRGaW5pc2goKTsKLX0KLQotdm9pZCBCbG9iRG93bmxv
YWRDbGllbnQ6OmRpZENhbmNlbCgpCi17Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZGVz
dGluYXRpb25GaWxlKTsKLSAgICBpZiAoIW1fZGVzdGluYXRpb25QYXRoLmlzRW1wdHkoKSkKLSAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Rlc3RpbmF0aW9uUGF0aCk7Ci0KLSAgICBt
X2Rvd25sb2FkLmRpZENhbmNlbChJUEM6OkRhdGFSZWZlcmVuY2UoKSk7Ci19Ci0KLXZvaWQgQmxv
YkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCi17Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZGVzdGluYXRpb25G
aWxlKTsKLSAgICBpZiAoIW1fZGVzdGluYXRpb25QYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Rlc3RpbmF0aW9uUGF0aCk7Ci0KLSAgICBtX2Rvd25sb2Fk
LmRpZEZhaWwoZXJyb3IsIElQQzo6RGF0YVJlZmVyZW5jZSgpKTsKLX0KLQotfQotCi0jZW5kaWYg
Ly8gIVVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaAkocmV2
aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
QmxvYkRvd25sb2FkQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLQotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VI
YW5kbGVDbGllbnQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1jbGFzcyBEb3dubG9hZDsKLWNsYXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVyczsKLQot
Y2xhc3MgQmxvYkRvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBCbG9iRG93bmxvYWRDbGllbnQo
RG93bmxvYWQmKTsKLQotICAgIHZvaWQgZGlkQ2FuY2VsKCk7Ci0gICAgdm9pZCBkaWREZWNpZGVE
b3dubG9hZERlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBib29sIGFs
bG93T3ZlcndyaXRlKTsKLQotcHJpdmF0ZToKLSAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAot
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbDsKLSAgICB2b2lk
IGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgZmluYWw7Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmKSBmaW5hbDsKLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExC
QUNLKQotICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5j
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
JikgZmluYWw7Ci0jZW5kaWYKLQotICAgIERvd25sb2FkJiBtX2Rvd25sb2FkOwotICAgIFN0cmlu
ZyBtX2Rlc3RpbmF0aW9uUGF0aDsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgbV9kZXN0aW5hdGlvbkZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlIH07Ci19OwotCi19Ci0KLSNlbmRpZiAvLyAhVVNFKE5FVFdPUktf
U0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAKICNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbk1hbmFnZXIuaCIKLSNpbmNsdWRlICJCbG9iRG93bmxvYWRDbGllbnQuaCIKICNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkRvd25sb2FkTWFuYWdlci5oIgpAQCAtNTAsNyArNDksNiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQog
RG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3du
bG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtEYXRhVGFzayYgZG93bmxvYWQsIGNvbnN0IFBBTDo6
U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKICAgICA6
IG1fZG93bmxvYWRNYW5hZ2VyKGRvd25sb2FkTWFuYWdlcikKICAgICAsIG1fZG93bmxvYWRJRChk
b3dubG9hZElEKQpAQCAtNjIsNiArNjAsNyBAQCBEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRN
YW5hZ2VyJiBkb3duCiAKICAgICBtX2Rvd25sb2FkTWFuYWdlci5kaWRDcmVhdGVEb3dubG9hZCgp
OwogfQorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRN
YW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgTlNVUkxTZXNz
aW9uRG93bmxvYWRUYXNrKiBkb3dubG9hZCwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogICAgIDogbV9kb3dubG9hZE1hbmFnZXIo
ZG93bmxvYWRNYW5hZ2VyKQpAQCAtNzUsOTAgKzc0LDIyIEBAIERvd25sb2FkOjpEb3dubG9hZChE
b3dubG9hZE1hbmFnZXImIGRvd24KICAgICBtX2Rvd25sb2FkTWFuYWdlci5kaWRDcmVhdGVEb3du
bG9hZCgpOwogfQogI2VuZGlmCi0jZWxzZQotRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFu
YWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQotICAgIDog
bV9kb3dubG9hZE1hbmFnZXIoZG93bmxvYWRNYW5hZ2VyKQotICAgICwgbV9kb3dubG9hZElEKGRv
d25sb2FkSUQpCi0gICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKLSAgICAsIG1fc3VnZ2VzdGVkTmFt
ZShzdWdnZXN0ZWROYW1lKQotewotICAgIEFTU0VSVChtX2Rvd25sb2FkSUQuZG93bmxvYWRJRCgp
KTsKLQotICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRpZENyZWF0ZURvd25sb2FkKCk7Ci19Ci0jZW5k
aWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKIAogRG93bmxvYWQ6On5Eb3dubG9hZCgpCiB7Ci0j
aWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgZm9yIChhdXRvJiBmaWxlUmVmZXJlbmNlIDog
bV9ibG9iRmlsZVJlZmVyZW5jZXMpCi0gICAgICAgIGZpbGVSZWZlcmVuY2UtPnJldm9rZUZpbGVB
Y2Nlc3MoKTsKLQotICAgIGlmIChtX3Jlc291cmNlSGFuZGxlKSB7Ci0gICAgICAgIG1fcmVzb3Vy
Y2VIYW5kbGUtPmNsZWFyQ2xpZW50KCk7Ci0gICAgICAgIG1fcmVzb3VyY2VIYW5kbGUtPmNhbmNl
bCgpOwotICAgICAgICBtX3Jlc291cmNlSGFuZGxlID0gbnVsbHB0cjsKLSAgICB9Ci0gICAgbV9k
b3dubG9hZENsaWVudCA9IG51bGxwdHI7Ci0KLSAgICBwbGF0Zm9ybUludmFsaWRhdGUoKTsKLSNl
bmRpZgotCiAgICAgbV9kb3dubG9hZE1hbmFnZXIuZGlkRGVzdHJveURvd25sb2FkKCk7CiB9CiAK
LSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLXZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKLXsKLSAg
ICBpZiAobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpIHsKLSAgICAgICAgbV9kb3du
bG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvYkRvd25sb2FkQ2xpZW50PigqdGhpcyk7
Ci0gICAgICAgIGJvb2wgZGVmZXJzTG9hZGluZyA9IGZhbHNlOwotICAgICAgICBib29sIHNob3Vs
ZENvbnRlbnRTbmlmZiA9IGZhbHNlOwotICAgICAgICBib29sIHNob3VsZENvbnRlbnRFbmNvZGlu
Z1NuaWZmID0gdHJ1ZTsKLSAgICAgICAgbV9yZXNvdXJjZUhhbmRsZSA9IFJlc291cmNlSGFuZGxl
OjpjcmVhdGUobnVsbHB0ciwgbV9yZXF1ZXN0LCBtX2Rvd25sb2FkQ2xpZW50LmdldCgpLCBkZWZl
cnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZm
KTsKLSAgICAgICAgZGlkU3RhcnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN0
YXJ0TmV0d29ya0xvYWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQot
ewotICAgIGlmIChtX3JlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkgewotICAgICAgICBt
X2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9iRG93bmxvYWRDbGllbnQ+KCp0
aGlzKTsKLSAgICAgICAgYm9vbCBkZWZlcnNMb2FkaW5nID0gZmFsc2U7Ci0gICAgICAgIGJvb2wg
c2hvdWxkQ29udGVudFNuaWZmID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYgPSB0cnVlOwotICAgICAgICBtX3Jlc291cmNlSGFuZGxlID0gUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZShudWxscHRyLCBtX3JlcXVlc3QsIG1fZG93bmxvYWRDbGllbnQuZ2V0KCks
IGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5n
U25pZmYpOwotICAgICAgICBkaWRTdGFydCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgc3RhcnROZXR3b3JrTG9hZFdpdGhIYW5kbGUoaGFuZGxlLCByZXNwb25zZSk7Ci19Ci0jZW5k
aWYKLQogdm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKIHsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9O
KQogICAgIGlmIChtX2Rvd25sb2FkKSB7CiAgICAgICAgIG1fZG93bmxvYWQtPmNhbmNlbCgpOwog
ICAgICAgICBkaWRDYW5jZWwoeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbHNlCi0g
ICAgaWYgKG1fcmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKSB7Ci0gICAgICAgIGF1dG8g
cmVzb3VyY2VIYW5kbGUgPSBXVEZNb3ZlKG1fcmVzb3VyY2VIYW5kbGUpOwotICAgICAgICByZXNv
dXJjZUhhbmRsZS0+Y2FuY2VsKCk7Ci0gICAgICAgIHN0YXRpY19jYXN0PEJsb2JEb3dubG9hZENs
aWVudCo+KG1fZG93bmxvYWRDbGllbnQuZ2V0KCkpLT5kaWRDYW5jZWwoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgogICAgIHBsYXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQoKTsKIH0K
IAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIERvd25sb2FkOjpkaWRSZWNlaXZlQ2hh
bGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Us
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5pc1Bhc3N3b3JkQmFzZWQoKSAmJiAhY2hh
bGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmlzRW1wdHkoKSAmJiAhY2hhbGxlbmdlLnByZXZp
b3VzRmFpbHVyZUNvdW50KCkpIHsKQEAgLTE2OCw4MSArOTksNiBAQCB2b2lkIERvd25sb2FkOjpk
aWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0CiAKICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9u
KCkuYXV0aGVudGljYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKCp0aGlzLCBjaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KLSNl
bmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQotCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04p
Ci12b2lkIERvd25sb2FkOjpkaWRTdGFydCgpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6RG93bmxv
YWRQcm94eTo6RGlkU3RhcnQobV9yZXF1ZXN0LCBtX3N1Z2dlc3RlZE5hbWUpKTsKLX0KLQotdm9p
ZCBEb3dubG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlKQotewotICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OldpbGxT
ZW5kUmVxdWVzdChXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNw
b25zZSkpKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkKLXsKLSAgICBtX2Rvd25sb2FkTWFuYWdlci5kb3dubG9hZHNBdXRoZW50aWNhdGlvbk1h
bmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRoaXMsIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogQ3JlYXRlZCAoaWQgPSAlIiBQUkl1NjQgIiki
LCBkb3dubG9hZElEKCkuZG93bmxvYWRJRCgpKTsKLQotICAgIG1fcmVzcG9uc2VNSU1FVHlwZSA9
IHJlc3BvbnNlLm1pbWVUeXBlKCk7Ci0gICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6
RGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKSk7Ci19Ci0KLWJvb2wgRG93bmxvYWQ6OnNob3Vs
ZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0g
ICAgYm9vbCByZXN1bHQ7Ci0gICAgaWYgKCFzZW5kU3luYyhNZXNzYWdlczo6RG93bmxvYWRQcm94
eTo6U2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUobWltZVR5cGUpLCBNZXNzYWdlczo6
RG93bmxvYWRQcm94eTo6U2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU6OlJlcGx5KHJl
c3VsdCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LVN0cmluZyBEb3dubG9hZDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYgYWxsb3dPdmVyd3JpdGUpCi17Ci0gICAgU3Ry
aW5nIGRlc3RpbmF0aW9uOwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlOwotICAgIGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6
OkRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lLCBtX3Jlc3Bv
bnNlTUlNRVR5cGUpLCBNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWU6OlJlcGx5KGRlc3RpbmF0aW9uLCBhbGxvd092ZXJ3cml0ZSwg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAg
ICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7Ci0gICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKLSAg
ICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7Ci0KLSAgICByZXR1cm4gZGVzdGlu
YXRpb247Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lQXN5bmMoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKLXsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZUFzeW5jKGRvd25sb2FkSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUpKTsKLX0KLQot
dm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKLXsKLSAgICBBU1NFUlQoIW1fc2FuZGJv
eEV4dGVuc2lvbik7Ci0gICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwotICAgIGlmIChtX3NhbmRi
b3hFeHRlbnNpb24pCi0gICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwotCi0g
ICAgaWYgKG1fcmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKSB7Ci0gICAgICAgIHN0YXRp
Y19jYXN0PEJsb2JEb3dubG9hZENsaWVudCo+KG1fZG93bmxvYWRDbGllbnQuZ2V0KCkpLT5kaWRE
ZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGRlc3RpbmF0aW9uUGF0aCwgYWxsb3dPdmVyd3JpdGUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRm9yIG5vdywgb25seSBCbG9iIFVS
TCBkb3dubG9hZHMgZ28gdGhyb3VnaCB0aGlzIGNvZGUgcGF0aC4KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Uo
KQotewotICAgIG1fcmVzb3VyY2VIYW5kbGUtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7
Ci19Ci0jZW5kaWYKIAogdm9pZCBEb3dubG9hZDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29uc3Qg
U3RyaW5nJiBwYXRoKQogewpAQCAtMjYzLDEwICsxMTksNiBAQCB2b2lkIERvd25sb2FkOjpkaWRG
aW5pc2goKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaDogKGlkID0g
JSIgUFJJdTY0ICIpIiwgZG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSk7CiAKLSNpZiAhVVNFKE5F
VFdPUktfU0VTU0lPTikKLSAgICBwbGF0Zm9ybURpZEZpbmlzaCgpOwotI2VuZGlmCi0KICAgICBz
ZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRGaW5pc2goKSk7CiAKICAgICBpZiAobV9z
YW5kYm94RXh0ZW5zaW9uKSB7CkBAIC0zMTYsNyArMTY4LDcgQEAgdWludDY0X3QgRG93bmxvYWQ6
Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdAogCiBib29sIERvd25sb2FkOjppc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKSBjb25zdAogewotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmIFBMQVRGT1JN
KENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHJldHVybiBtX3Nlc3Npb25JRC5pc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5o
CShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw5IEBACiAKICNpbmNs
dWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtEYXRhVGFzay5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtMzYsMTggKzM4
LDkgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotI2luY2x1ZGUgIk5ldHdvcmtEYXRh
VGFzay5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNp
ZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwog
I2VuZGlmCi0jZWxzZSAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQotI2lmIFBMQVRGT1JNKENPQ09B
KQotT0JKQ19DTEFTUyBOU1VSTERvd25sb2FkOwotT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxl
Z2F0ZTsKLSNlbmRpZgotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAKIG5hbWVzcGFj
ZSBJUEMgewogY2xhc3MgRGF0YVJlZmVyZW5jZTsKQEAgLTczLDQ1ICs2NiwyMSBAQCBjbGFzcyBX
ZWJQYWdlOwogY2xhc3MgRG93bmxvYWQgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb3dubG9hZCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgRG93bmxvYWQoRG93bmxv
YWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwgTmV0d29ya0RhdGFUYXNrJiwgY29uc3QgUEFMOjpTZXNz
aW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgRG93
bmxvYWRJRCwgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrKiwgY29uc3QgUEFMOjpTZXNzaW9uSUQm
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7CiAjZW5k
aWYKLSNlbHNlCi0gICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
bmFtZSA9IHsgfSk7Ci0jZW5kaWYKIAogICAgIH5Eb3dubG9hZCgpOwogCi0jaWYgIVVTRShORVRX
T1JLX1NFU1NJT04pCi0gICAgdm9pZCBzZXRCbG9iRmlsZVJlZmVyZW5jZXMoVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYmIGZpbGVSZWZlcmVuY2VzKSB7IG1f
YmxvYkZpbGVSZWZlcmVuY2VzID0gV1RGTW92ZShmaWxlUmVmZXJlbmNlcyk7IH0KLQotICAgIHZv
aWQgc3RhcnQoKTsKLSAgICB2b2lkIHN0YXJ0V2l0aEhhbmRsZShXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSNlbmRpZgogICAgIHZv
aWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAgICAgdm9pZCBjYW5jZWwo
KTsKIAogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxv
YWRJRDsgfQogICAgIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3VnZ2VzdGVkTmFtZTsgfQogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lk
IHNldFNhbmRib3hFeHRlbnNpb24oUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4
dGVuc2lvbikgeyBtX3NhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24p
OyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0jZWxzZQot
ICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVxdWVzdDsgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAgdm9pZCBk
aWRTdGFydCgpOwotICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKLSAgICBTdHJpbmcgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYgYWxsb3dPdmVyd3JpdGUpOwotICAgIHZv
aWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhjb25zdCBTdHJp
bmcmKTsKLSAgICB2b2lkIGRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24oY29uc3QgU3RyaW5n
JiBkZXN0aW5hdGlvblBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIGFsbG93
T3ZlcndyaXRlKTsKLSAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7Ci0gICAg
dm9pZCBwbGF0Zm9ybURpZEZpbmlzaCgpOwotI2VuZGlmCiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0
aW5hdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodWlu
dDY0X3QgbGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwpAQCAtMTIzLDExICs5Miw2IEBA
IHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3Zl
cnJpZGU7CiAKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICB2b2lkIHN0YXJ0TmV0d29y
a0xvYWQoKTsKLSAgICB2b2lkIHN0YXJ0TmV0d29ya0xvYWRXaXRoSGFuZGxlKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZv
aWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7Ci0jZW5kaWYKICAgICB2b2lkIHBsYXRmb3JtQ2FuY2Vs
TmV0d29ya0xvYWQoKTsKIAogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29u
c3Q7CkBAIC0xMzgsMjIgKzEwMiwxMSBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gbV9ibG9iRmlsZVJlZmVyZW5jZXM7CiAgICAg
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2FuZGJveEV4dGVuc2lvbjsKIAotI2lmIFVTRShO
RVRXT1JLX1NFU1NJT04pCiAgICAgUmVmUHRyPE5ldHdvcmtEYXRhVGFzaz4gbV9kb3dubG9hZDsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRG93bmxvYWRU
YXNrPiBtX2Rvd25sb2FkVGFzazsKICNlbmRpZgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwotI2Vsc2UgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgbV9yZXF1ZXN0OwotICAgIFN0cmluZyBtX3Jlc3BvbnNlTUlNRVR5cGU7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPE5TVVJMRG93bmxvYWQ+IG1fbnNVUkxEb3du
bG9hZDsKLSAgICBSZXRhaW5QdHI8V0tEb3dubG9hZEFzRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0j
ZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ+
IG1fZG93bmxvYWRDbGllbnQ7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlPiBt
X3Jlc291cmNlSGFuZGxlOwotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgU3Ry
aW5nIG1fc3VnZ2VzdGVkTmFtZTsKICAgICBib29sIG1faGFzUmVjZWl2ZWREYXRhIHsgZmFsc2Ug
fTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgRG93bmxvYWRNYW5hZ2VyOjpEb3dubG9h
ZE1hbmFnZXIoQ2xpZW50JgogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZChO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewotI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCiAgICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKQogICAgICAg
ICByZXR1cm47CkBAIC02MSwyMiArNjAsOCBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnRE
b3dubG9hZChOZXR3CiAgICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNl
IDogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKIAogICAgIG1fcGVuZGluZ0Rvd25sb2Fk
cy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KFdURk1v
dmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwgc3VnZ2VzdGVkTmFt
ZSkpOwotI2Vsc2UKLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9h
ZD4oKnRoaXMsIGRvd25sb2FkSUQsIHJlcXVlc3QsIHN1Z2dlc3RlZE5hbWUpOwotICAgIGlmIChy
ZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkgJiYgY29ubmVjdGlvbikgewotICAgICAgICBh
dXRvIGJsb2JGaWxlUmVmZXJlbmNlcyA9IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigp
LmZpbGVzSW5CbG9iKCpjb25uZWN0aW9uLCByZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgZm9yIChh
dXRvJiBmaWxlUmVmZXJlbmNlIDogYmxvYkZpbGVSZWZlcmVuY2VzKQotICAgICAgICAgICAgZmls
ZVJlZmVyZW5jZS0+cHJlcGFyZUZvckZpbGVBY2Nlc3MoKTsKLSAgICAgICAgZG93bmxvYWQtPnNl
dEJsb2JGaWxlUmVmZXJlbmNlcyhXVEZNb3ZlKGJsb2JGaWxlUmVmZXJlbmNlcykpOwotICAgIH0K
LSAgICBkb3dubG9hZC0+c3RhcnQoKTsKLQotICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFp
bnMoZG93bmxvYWRJRCkpOwotICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3Zl
KGRvd25sb2FkKSk7Ci0jZW5kaWYKIH0KIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lk
IERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCBk
b3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpCiB7CiAgICAg
QVNTRVJUKG1fcGVuZGluZ0Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CkBAIC0xMDAs
MzEgKzg1LDE1IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0QKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uLnNldChk
b3dubG9hZElELCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmV0d29ya0RhdGFUYXNrPiwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlcj4oJm5ldHdvcmtEYXRhVGFzaywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3
RW50cnkpOwogfQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAKIHZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxv
YWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmIG5ldHdvcmtMb2FkLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYgYmxvYkZpbGVSZWZlcmVu
Y2VzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogewotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgQVNTRVJUKCFt
X3BlbmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwogICAgIG1fcGVuZGluZ0Rv
d25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+
KFdURk1vdmUobmV0d29ya0xvYWQpLCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOwot
I2Vsc2UKLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRo
aXMsIGRvd25sb2FkSUQsIHJlcXVlc3QpOwotICAgIGRvd25sb2FkLT5zZXRCbG9iRmlsZVJlZmVy
ZW5jZXMoV1RGTW92ZShibG9iRmlsZVJlZmVyZW5jZXMpKTsKLQotICAgIGF1dG8qIGhhbmRsZSA9
IG5ldHdvcmtMb2FkLT5oYW5kbGUoKTsKLSAgICBBU1NFUlQoaGFuZGxlKTsKLSAgICBkb3dubG9h
ZC0+c3RhcnRXaXRoSGFuZGxlKGhhbmRsZSwgcmVzcG9uc2UpOwotICAgIEFTU0VSVCghbV9kb3du
bG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwotICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9h
ZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7Ci0KLSAgICAvLyBVbmJsb2NrIHRoZSBVUkwgY29ubmVj
dGlvbiBvcGVyYXRpb24gcXVldWUuCi0gICAgaGFuZGxlLT5jb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSgpOwotI2VuZGlmCiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lk
ZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5n
IGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQogewotI2lmIFVTRShORVRXT1JLX1NFU1NJT04p
CiAgICAgaWYgKG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uLmNvbnRhaW5zKGRvd25s
b2FkSUQpKSB7CiAgICAgICAgIGF1dG8gcGFpciA9IG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3Rp
bmF0aW9uLnRha2UoZG93bmxvYWRJRCk7CiAgICAgICAgIGF1dG8gbmV0d29ya0RhdGFUYXNrID0g
V1RGTW92ZShwYWlyLmZpcnN0KTsKQEAgLTE0NiwyMyArMTE1LDE0IEBAIHZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmQKICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkc0Fm
dGVyRGVzdGluYXRpb25EZWNpZGVkLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKICAgICAgICAgbV9k
b3dubG9hZHNBZnRlckRlc3RpbmF0aW9uRGVjaWRlZC5zZXQoZG93bmxvYWRJRCwgbmV0d29ya0Rh
dGFUYXNrKTsKICAgICB9Ci0jZWxzZQotICAgIGlmIChhdXRvKiB3YWl0aW5nRG93bmxvYWQgPSBk
b3dubG9hZChkb3dubG9hZElEKSkKLSAgICAgICAgd2FpdGluZ0Rvd25sb2FkLT5kaWREZWNpZGVE
b3dubG9hZERlc3RpbmF0aW9uKGRlc3RpbmF0aW9uLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFn
ZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBk
b3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkKIHsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKSAmJiAhUExBVEZPUk0oQ09DT0EpCisj
aWYgIVBMQVRGT1JNKENPQ09BKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZWxzZQotI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCiAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8
RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQpOwotI2Vsc2UK
LSAgICAvLyBEb3dubG9hZDo6cmVzdW1lKCkgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhl
IERvd25sb2FkJ3MgcmVzb3VyY2UgcmVxdWVzdC4KLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjpt
YWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIFJlc291cmNlUmVxdWVzdCgp
KTsKLSNlbmRpZgogCiAgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZN
b3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNv
bnRhaW5zKGRvd25sb2FkSUQpKTsKQEAgLTE3MywxNCArMTMzLDExIEBAIHZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUwKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxE
b3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpCiB7CiAgICAgaWYgKERvd25sb2FkKiBkb3du
bG9hZCA9IG1fZG93bmxvYWRzLmdldChkb3dubG9hZElEKSkgewotI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCiAgICAgICAgIEFTU0VSVCghbV9kb3dubG9hZHNXYWl0aW5nRm9yRGVzdGluYXRpb24u
Y29udGFpbnMoZG93bmxvYWRJRCkpOwogICAgICAgICBBU1NFUlQoIW1fcGVuZGluZ0Rvd25sb2Fk
cy5jb250YWlucyhkb3dubG9hZElEKSk7Ci0jZW5kaWYKICAgICAgICAgZG93bmxvYWQtPmNhbmNl
bCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAg
ICAgYXV0byBwZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMudGFrZShkb3dubG9h
ZElEKTsKICAgICBpZiAobV9kb3dubG9hZHNXYWl0aW5nRm9yRGVzdGluYXRpb24uY29udGFpbnMo
ZG93bmxvYWRJRCkpIHsKICAgICAgICAgYXV0byBwYWlyID0gbV9kb3dubG9hZHNXYWl0aW5nRm9y
RGVzdGluYXRpb24udGFrZShkb3dubG9hZElEKTsKQEAgLTE5Nyw3ICsxNTQsNiBAQCB2b2lkIERv
d25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93CiAKICAgICBpZiAocGVuZGluZ0Rvd25s
b2FkKQogICAgICAgICBwZW5kaW5nRG93bmxvYWQtPmNhbmNlbCgpOwotI2VuZGlmCiB9CiAKIHZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKiBkb3dubG9hZCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNzAsMTkgKzcwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZERl
c3Ryb3lEb3dubG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCBJUEM6OkNvbm5lY3Rpb24qIGRv
d25sb2FkUHJveHlDb25uZWN0aW9uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIEF1dGhlbnRpY2F0
aW9uTWFuYWdlciYgZG93bmxvYWRzQXV0aGVudGljYXRpb25NYW5hZ2VyKCkgPSAwOwotI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwZW5kaW5nRG93bmxvYWRD
YW5jZWxlZChEb3dubG9hZElEKSA9IDA7Ci0jZW5kaWYKICAgICB9OwogCiAgICAgZXhwbGljaXQg
RG93bmxvYWRNYW5hZ2VyKENsaWVudCYpOwogCiAgICAgdm9pZCBzdGFydERvd25sb2FkKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFt
ZSA9IHsgfSk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIGRhdGFUYXNrQmVj
YW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJik7
CiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCB3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsK
LSNlbmRpZgogICAgIHZvaWQgY29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElE
LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+JiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgY29udGludWVE
ZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGlu
YXRpb24sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBib29sIGFsbG93T3ZlcndyaXRlKTsK
IApAQCAtMTA0LDExICsxMDAsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQ2xpZW50JiBt
X2NsaWVudDsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIEhhc2hNYXA8RG93bmxvYWRJ
RCwgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdEb3dubG9hZD4+IG1fcGVuZGluZ0Rvd25sb2FkczsK
ICAgICBIYXNoTWFwPERvd25sb2FkSUQsIHN0ZDo6cGFpcjxSZWZQdHI8TmV0d29ya0RhdGFUYXNr
PiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcj4+IG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3Rp
bmF0aW9uOwogICAgIEhhc2hNYXA8RG93bmxvYWRJRCwgUmVmUHRyPE5ldHdvcmtEYXRhVGFzaz4+
IG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lkZWQ7Ci0jZW5kaWYKICAgICBIYXNoTWFw
PERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4+IG1fZG93bmxvYWRzOwogfTsK
IApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUGVuZGluZ0Rvd25sb2FkLmgiCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCkBAIC0xMDEsNSArOTksMyBAQCB1aW50NjRfdCBQ
ZW5kaW5nRG93bmxvYWQ6Om1lc3NhZ2VTZW5kZXJECiB9CiAgICAgCiB9Ci0KLSNlbmRpZgpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2Fk
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
UGVuZGluZ0Rvd25sb2FkLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywxMCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgUGVuZGluZ0Rvd25sb2FkX2gKLSNkZWZpbmUgUGVuZGluZ0Rvd25sb2FkX2gK
LQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgpAQCAtNzUsNyAr
NzIsMyBAQCBwcml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYKLQotI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2Nv
Y29hL0Rvd25sb2FkQ29jb2EubW0JKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRG93
bmxvYWQuaCIKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0KICNpbXBvcnQgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIlNlc3Np
b25UcmFja2VyLmgiCkBAIC03NCw1ICs3MiwzIEBAIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtQ2Fu
Y2VsTmV0d29ya0xvYWQKIH0KIAogfQotCi0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9h
ZElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9pb3MvRG93bmxvYWRJT1MubW0JKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQkobm9uZXhpc3Rl
bnQpCkBAIC0xLDE2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0j
aW1wb3J0ICJEb3dubG9hZC5oIgotCi0jaWYgVVNFKENGTkVUV09SSykgJiYgIVVTRShORVRXT1JL
X1NFU1NJT04pCi0KLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgPENGTmV0d29y
ay9DRlVSTERvd25sb2FkLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KLQotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBGSVhNRTogSWYgcG9z
c2libGUsIHdlIHNob3VsZCBjb25zaWRlciBtb3Zpbmcgc29tZSBjYWxsYmFja3Mgb2ZmIHRoZSBt
YWluIHRocmVhZCBvciBhdCBsZWFzdAotLy8gbWFraW5nIHRoZW0gYXN5bmNob25vdXMgY2FsbHMu
Ci1zdGF0aWMgdm9pZCBkaXNwYXRjaE9uTWFpblRocmVhZCh2b2lkKF5ibG9jaykoKSkKLXsKLSAg
ICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAgYmxvY2soKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgYmxvY2spOwotfQotCi1zdGF0aWMgaW5saW5lIERvd25sb2FkKiB0b0Rvd25sb2FkKGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERvd25sb2FkKj4o
Y29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotfQotCi1zdGF0aWMgdm9pZCBzZXRVcERv
d25sb2FkQ2xpZW50KENGVVJMRG93bmxvYWRDbGllbnQmIGNsaWVudCwgRG93bmxvYWQmIGRvd25s
b2FkKQotewotICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0gICAgY2xp
ZW50LmNsaWVudEluZm8gPSAmZG93bmxvYWQ7Ci0KLSAgICBjbGllbnQuZGlkU3RhcnQgPSBbXShD
RlVSTERvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3Bh
dGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5k
aWRTdGFydCgpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LndpbGxTZW5kUmVx
dWVzdCA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBDRlVS
TFJlc3BvbnNlUmVmLCBjb25zdCB2b2lkKikgLT4gQ0ZVUkxSZXF1ZXN0UmVmIHsKLSAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PENGVVJMUmVxdWVzdFJlZj4oQ0ZSZXRhaW4ocmVxdWVzdCkpOwot
ICAgIH07Ci0KLSAgICBjbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlID0gW10oQ0ZVUkxEb3dubG9h
ZFJlZiwgQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykg
ewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9h
ZChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICAgICAgfSk7
Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRSZWNlaXZlRGF0YSA9IFtdKENGVVJMRG93bmxvYWRS
ZWYsIENGSW5kZXggbGVuZ3RoLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRp
c3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8p
LT5kaWRSZWNlaXZlRGF0YShsZW5ndGgpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xp
ZW50LnNob3VsZERlY29kZURhdGFPZk1JTUVUeXBlID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZT
dHJpbmdSZWYgZW5jb2RpbmdUeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSAtPiBCb29sZWFu
IHsKLSAgICAgICAgX19ibG9jayBCT09MIHJldHVyblZhbHVlID0gTk87Ci0gICAgICAgIGRpc3Bh
dGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRvRG93bmxvYWQo
Y2xpZW50SW5mbyktPnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGVuY29kaW5nVHlw
ZSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgfTsKLQot
ICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRPYmplY3ROYW1lID0gW10o
Q0ZVUkxEb3dubG9hZFJlZiBkb3dubG9hZFJlZiwgQ0ZTdHJpbmdSZWYgb2JqZWN0TmFtZSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewot
ICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZTsKLSAgICAgICAgICAgIFN0cmluZyBkZXN0
aW5hdGlvbiA9IHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKG9iamVjdE5hbWUsIGFsbG93T3ZlcndyaXRlKTsKLSAgICAgICAgICAg
IGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgQ0ZVUkxEb3dubG9h
ZFNldERlc3RpbmF0aW9uKGRvd25sb2FkUmVmLCByZWludGVycHJldF9jYXN0PENGVVJMUmVmPihb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOmRlc3RpbmF0aW9uXSksIGFsbG93T3ZlcndyaXRlKTsKLSAg
ICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IFtd
KENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVmIHBhdGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
IHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxv
YWQoY2xpZW50SW5mbyktPmRpZENyZWF0ZURlc3RpbmF0aW9uKENGVVJMR2V0U3RyaW5nKHBhdGgp
KTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRGaW5pc2ggPSBbXShDRlVS
TERvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNo
T25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRG
aW5pc2goKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRGYWlsID0gW10o
Q0ZVUkxEb3dubG9hZFJlZiBkb3dubG9hZFJlZiwgQ0ZFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAg
ICAgICAgYXV0byByZXN1bWVEYXRhID0gYWRvcHRDRihDRlVSTERvd25sb2FkQ29weVJlc3VtZURh
dGEoZG93bmxvYWRSZWYpKTsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRp
ZEZhaWwoZXJyb3IsIElQQzo6RGF0YVJlZmVyZW5jZShyZXN1bWVEYXRhID8gQ0ZEYXRhR2V0Qnl0
ZVB0cihyZXN1bWVEYXRhLmdldCgpKSA6IG51bGxwdHIsIHJlc3VtZURhdGEgPyBDRkRhdGFHZXRM
ZW5ndGgocmVzdW1lRGF0YS5nZXQoKSkgOiAwKSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci19Ci0K
LXZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0d29ya0xvYWQoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBTdHJpbmcmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJikKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkV2l0aEhh
bmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKLXsKLSAgICBDRlVSTERvd25sb2FkQ2xpZW50IGNsaWVudDsKLSAgICBzZXRVcERvd25s
b2FkQ2xpZW50KGNsaWVudCwgKnRoaXMpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRp
b25zIgotICAgIG1fZG93bmxvYWQgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVBbmRTdGFy
dFdpdGhMb2FkaW5nQ29ubmVjdGlvbihOVUxMLCBoYW5kbGUtPnJlbGVhc2VDb25uZWN0aW9uRm9y
RG93bmxvYWQoKS5nZXQoKSwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSks
IHJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSwgJmNsaWVudCkpOwotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHBvcAotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2Fk
KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9y
bUludmFsaWRhdGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxv
YWQ6OnBsYXRmb3JtRGlkRmluaXNoKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspICYmICFVU0Uo
TkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkocmV2aXNpb24gMjI3MjMy
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2Fk
TWFjLm1tCShub25leGlzdGVudCkKQEAgLTEsMjc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRvd25sb2FkLmgiCi0KLSNpZiAhVVNFKE5F
VFdPUktfU0VTU0lPTikKLQotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCAiV2Vi
UGFnZS5oIgotI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgotI2lt
cG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbk1hYy5oPgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgotI2ltcG9y
dCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TVVJMRG93bmxvYWRTUEku
aD4KLQotQGludGVyZmFjZSBXS0Rvd25sb2FkQXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTERv
d25sb2FkRGVsZWdhdGU+IHsKLSAgICBXZWJLaXQ6OkRvd25sb2FkKiBfZG93bmxvYWQ7Ci19Ci0t
IChpZClpbml0V2l0aERvd25sb2FkOihXZWJLaXQ6OkRvd25sb2FkKilkb3dubG9hZDsKLS0gKHZv
aWQpaW52YWxpZGF0ZTsKLUBlbmQKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi12b2lkIERvd25sb2FkOjpzdGFydE5ldHdvcmtMb2FkKCkKLXsKLSAg
ICBBU1NFUlQoIW1fbnNVUkxEb3dubG9hZCk7Ci0gICAgQVNTRVJUKCFtX2RlbGVnYXRlKTsKLQot
ICAgIG1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tEb3dubG9hZEFzRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoRG93bmxvYWQ6dGhpc10pOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25z
IgotICAgIG1fbnNVUkxEb3dubG9hZCA9IGFkb3B0TlMoW1tOU1VSTERvd25sb2FkIGFsbG9jXSBp
bml0V2l0aFJlcXVlc3Q6bV9yZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkgZGVs
ZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKV0pOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAot
Ci0gICAgLy8gRklYTUU6IEFsbG93IHRoaXMgdG8gYmUgY2hhbmdlZCBieSB0aGUgY2xpZW50Lgot
ICAgIFttX25zVVJMRG93bmxvYWQgc2V0RGVsZXRlc0ZpbGVVcG9uRmFpbHVyZTpOT107Ci19Ci0K
LXZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0d29ya0xvYWRXaXRoSGFuZGxlKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIEFTU0VS
VCghbV9uc1VSTERvd25sb2FkKTsKLSAgICBBU1NFUlQoIW1fZGVsZWdhdGUpOwotCi0gICAgbV9k
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS0Rvd25sb2FkQXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhE
b3dubG9hZDp0aGlzXSk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAg
bV9uc1VSTERvd25sb2FkID0gW05TVVJMRG93bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDb25u
ZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlvbigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Om1fcmVxdWVzdC5uc1VSTFJl
cXVlc3QoVXBkYXRlSFRUUEJvZHkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2Uo
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6bmlsXTsKLSNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLQotICAgIC8vIEZJWE1FOiBBbGxvdyB0aGlzIHRvIGJl
IGNoYW5nZWQgYnkgdGhlIGNsaWVudC4KLSAgICBbbV9uc1VSTERvd25sb2FkIHNldERlbGV0ZXNG
aWxlVXBvbkZhaWx1cmU6Tk9dOwotfQotCi12b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCi17Ci0gICAgQVNTRVJU
KCFtX25zVVJMRG93bmxvYWQpOwotICAgIEFTU0VSVCghbV9kZWxlZ2F0ZSk7Ci0KLSAgICBtX3Nh
bmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKSk7Ci0gICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKLSAgICAgICAg
bV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7Ci0KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRl
Y2xhcmF0aW9ucyIKLSAgICBtX2RlbGVnYXRlID0gYWRvcHROUyhbW1dLRG93bmxvYWRBc0RlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aERvd25sb2FkOnRoaXNdKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKLQotICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5p
dFdpdGhCeXRlczpyZXN1bWVEYXRhLmRhdGEoKSBsZW5ndGg6cmVzdW1lRGF0YS5zaXplKCldKTsK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICBtX25zVVJMRG93bmxvYWQg
PSBhZG9wdE5TKFtbTlNVUkxEb3dubG9hZCBhbGxvY10gaW5pdFdpdGhSZXN1bWVEYXRhOm5zRGF0
YS5nZXQoKSBkZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpIHBhdGg6cGF0aF0pOwotI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHBvcAotCi0gICAgbV9yZXF1ZXN0ID0gW21fbnNVUkxEb3dubG9hZCBy
ZXF1ZXN0XTsKLQotICAgIC8vIEZJWE1FOiBBbGxvdyB0aGlzIHRvIGJlIGNoYW5nZWQgYnkgdGhl
IGNsaWVudC4KLSAgICBbbV9uc1VSTERvd25sb2FkIHNldERlbGV0ZXNGaWxlVXBvbkZhaWx1cmU6
Tk9dOwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKCkKLXsK
LSAgICBbbV9uc1VSTERvd25sb2FkIGNhbmNlbF07Ci0KLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBy
ZXN1bWVEYXRhID0gW21fbnNVUkxEb3dubG9hZCByZXN1bWVEYXRhXTsKLSAgICBkaWRDYW5jZWwo
SVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZXN1
bWVEYXRhIGJ5dGVzXSksIFtyZXN1bWVEYXRhIGxlbmd0aF0pKTsKLX0KLQotdm9pZCBEb3dubG9h
ZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBpZiAobV9kZWxlZ2F0ZSkgewotICAgICAg
ICBbbV9kZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKLSAgICAgICAgbV9kZWxlZ2F0ZSA9IG51bGxwdHI7
Ci0gICAgfQotICAgIG1fbnNVUkxEb3dubG9hZCA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgRG93bmxv
YWQ6OnBsYXRmb3JtRGlkRmluaXNoKCkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LUBpbXBsZW1lbnRhdGlvbiBXS0Rvd25sb2FkQXNEZWxlZ2F0ZQotCi0vLyBGSVhNRTogSXQgd291
bGQgYmUgbmljZSBpZiB0aGVzZSBjYWxsYmFja3Mgd291bGRuJ3QgaGF2ZSB0byBiZSBpbnZva2Vk
IG9uIHRoZSBtYWluIHRocmVhZC4KLXN0YXRpYyB2b2lkIGRpc3BhdGNoT25NYWluVGhyZWFkKHZv
aWQgKF5ibG9jaykoKSkKLXsKLSAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAg
YmxvY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRpc3BhdGNoX3N5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxvY2spOwotfQotCi0tIChpZClpbml0V2l0aERvd25s
b2FkOihXZWJLaXQ6OkRvd25sb2FkKilkb3dubG9hZAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX2Rvd25sb2Fk
ID0gZG93bmxvYWQ7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpaW52YWxpZGF0ZQot
ewotICAgIF9kb3dubG9hZCA9IDA7Ci19Ci0KLS0gKHZvaWQpZG93bmxvYWREaWRCZWdpbjooTlNV
UkxEb3dubG9hZCAqKWRvd25sb2FkCi17Ci0gICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAg
ICAgICAgaWYgKF9kb3dubG9hZCkKLSAgICAgICAgICAgIF9kb3dubG9hZC0+ZGlkU3RhcnQoKTsK
LSAgICB9KTsKLX0KLQotLSAoTlNVUkxSZXF1ZXN0ICopZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQg
Kilkb3dubG9hZCB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJl
Y3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKLXsKLSAgICBkaXNw
YXRjaE9uTWFpblRocmVhZCheIHsKLSAgICAgICAgaWYgKF9kb3dubG9hZCAmJiByZWRpcmVjdFJl
c3BvbnNlICYmICFbcmVxdWVzdC5VUkwgaXNFcXVhbDpyZWRpcmVjdFJlc3BvbnNlLlVSTF0pCi0g
ICAgICAgICAgICBfZG93bmxvYWQtPndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QocmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7Ci19Ci0KLS0g
KEJPT0wpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKiljb25uZWN0aW9uIGNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6KE5TVVJMUHJvdGVjdGlvblNwYWNlICopcHJvdGVjdGlv
blNwYWNlCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiBOTzsKLX0KLQotLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAq
KWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQotewotICAgIGRpc3BhdGNoT25NYWluVGhyZWFk
KF57Ci0gICAgICAgIGlmIChfZG93bmxvYWQpCi0gICAgICAgICAgICBfZG93bmxvYWQtPmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb3JlKGNoYWxsZW5nZSkpOwotICAgIH0pOwot
fQotCi0tIChCT09MKWRvd25sb2FkU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5TVVJMRG93
bmxvYWQgKilkb3dubG9hZAotewotICAgIHJldHVybiBOTzsKLX0KLQotLSAodm9pZClkb3dubG9h
ZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNw
b25zZSAqKXJlc3BvbnNlCi17Ci0gICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAg
aWYgKF9kb3dubG9hZCkKLSAgICAgICAgICAgIF9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KHJlc3BvbnNlKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9h
ZCAqKWRvd25sb2FkIHdpbGxSZXN1bWVXaXRoUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNw
b25zZSBmcm9tQnl0ZToobG9uZyBsb25nKXN0YXJ0aW5nQnl0ZQotewotICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotLSAodm9pZClkb3dubG9hZDoo
TlNVUkxEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVEYXRhT2ZMZW5ndGg6KE5TVUludGVn
ZXIpbGVuZ3RoCi17Ci0gICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgaWYgKF9k
b3dubG9hZCkKLSAgICAgICAgICAgIF9kb3dubG9hZC0+ZGlkUmVjZWl2ZURhdGEobGVuZ3RoKTsK
LSAgICB9KTsKLX0KLQotLSAoQk9PTClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2Fk
IHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlOihOU1N0cmluZyAqKWVuY29kaW5nVHlw
ZQotewotICAgIF9fYmxvY2sgQk9PTCByZXR1cm5WYWx1ZTsKLSAgICBkaXNwYXRjaE9uTWFpblRo
cmVhZCheewotICAgICAgICBpZiAoX2Rvd25sb2FkKQotICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSBfZG93bmxvYWQtPnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGVuY29kaW5nVHlw
ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gWUVTOwotICAgIH0p
OwotCi0gICAgcmV0dXJuIHJldHVyblZhbHVlOwotfQotCi0tICh2b2lkKWRvd25sb2FkOihOU1VS
TERvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWU6KE5TU3RyaW5nICopZmlsZW5hbWUKLXsKLSAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewot
ICAgICAgICBTdHJpbmcgZGVzdGluYXRpb247Ci0gICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7
Ci0gICAgICAgIGlmIChfZG93bmxvYWQpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IF9kb3du
bG9hZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUsIGFs
bG93T3ZlcndyaXRlKTsKLQotICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAg
ICAgICAgICAgW2Rvd25sb2FkIHNldERlc3RpbmF0aW9uOmRlc3RpbmF0aW9uIGFsbG93T3Zlcndy
aXRlOmFsbG93T3ZlcndyaXRlXTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClkb3dubG9hZDooTlNV
UkxEb3dubG9hZCAqKWRvd25sb2FkIGRpZENyZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAqKXBh
dGgKLXsKLSAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICBpZiAoX2Rvd25sb2Fk
KQotICAgICAgICAgICAgX2Rvd25sb2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihwYXRoKTsKLSAg
ICB9KTsKLX0KLQotLSAodm9pZClkb3dubG9hZERpZEZpbmlzaDooTlNVUkxEb3dubG9hZCAqKWRv
d25sb2FkCi17Ci0gICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgaWYgKF9kb3du
bG9hZCkKLSAgICAgICAgICAgIF9kb3dubG9hZC0+ZGlkRmluaXNoKCk7Ci0gICAgfSk7Ci19Ci0K
LS0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAg
ICAgICBpZiAoIV9kb3dubG9hZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBSZXRh
aW5QdHI8TlNEYXRhPiByZXN1bWVEYXRhID0gW2Rvd25sb2FkIHJlc3VtZURhdGFdOwotICAgICAg
ICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbcmVzdW1lRGF0YSBieXRlc10pLCBbcmVzdW1lRGF0YSBsZW5ndGhdKTsKLQot
ICAgICAgICBfZG93bmxvYWQtPmRpZEZhaWwoZXJyb3IsIGRhdGFSZWZlcmVuY2UpOwotICAgIH0p
OwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyAhVVNFKE5FVFdPUktfU0VTU0lPTikKClByb3BlcnR5
IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9E
b3dubG9hZE1hYy5tbQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAs
MCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTEgKzU4LDcgQEAgU3BlY3VsYXRpdmVMb2FkOjpT
cGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIAogICAgIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9s
aWN5ID0gRG9Ob3RTbmlmZkNvbnRlbnQ7CiAgICAgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsKICAg
ICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBtX29yaWdpbmFsUmVxdWVzdDsKLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQogICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtM
b2FkPigqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKlNlc3Npb25UcmFja2VyOjpuZXR3b3Jr
U2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7Ci0jZWxzZQotICAg
IG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSk7Ci0jZW5kaWYKIH0KIAogU3BlY3VsYXRpdmVMb2FkOjp+U3BlY3Vs
YXRpdmVMb2FkKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgJKHJldmlzaW9uIDIyNzIzMikKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lm
IFVTRShORVRXT1JLX1NFU1NJT04pCi0KICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNp
bmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtMb2FkTWV0cmljcy5oPgpAQCAtOTksNSArOTcsMyBAQCBwcml2YXRlOgogV2ViQ29yZTo6Q3Jl
ZGVudGlhbCBzZXJ2ZXJUcnVzdENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0Uo
TkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyMjcy
MzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCiAKLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbXBvcnQg
IkRvd25sb2FkLmgiCiAjaW1wb3J0ICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKQEAgLTQzOSw1
ICs0MzcsMyBAQCBXZWJDb3JlOjpDcmVkZW50aWFsIHNlcnZlclRydXN0Q3JlZGVudGlhCiB9CiAK
IH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyMjcyMzIpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplTgogCiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJC
YXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAKLSNpZiBVU0UoTkVU
V09SS19TRVNTSU9OKQogICAgIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldFNvdXJjZUFwcGxpY2F0
aW9uQXVkaXRUb2tlbkRhdGEoc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSk7CiAgICAgTmV0
d29ya1Nlc3Npb25Db2NvYTo6c2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKHBh
cmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKTsKICAgICBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIocGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpOwpAQCAtODcsNyAr
ODYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAjaWYgUExB
VEZPUk0oSU9TKQogICAgIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldENURGF0YUNvbm5lY3Rpb25T
ZXJ2aWNlVHlwZShwYXJhbWV0ZXJzLmN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSk7CiAjZW5k
aWYKLSNlbmRpZgogCiAgICAgaW5pdGlhbGl6ZU5ldHdvcmtTZXR0aW5ncygpOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQot
CiBPQkpDX0NMQVNTIE5TRGF0YTsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uOwogT0JKQ19DTEFT
UyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7CkBAIC04Nyw1ICs4NSwzIEBAIHByaXZhdGU6CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJ
T04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
TmV0d29ya1Nlc3Npb25Db2NvYS5oIgogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLQogI2lt
cG9ydCAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW1wb3J0ICJEb3dubG9hZC5oIgpAQCAtODAwLDUgKzc5OCwzIEBAIGJvb2wgTmV0d29ya1Nl
c3Npb25Db2NvYTo6YWxsb3dzU3BlY2lmaWMKIH0KIAogfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCShy
ZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3
b3JrTG9hZE1hYy5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIk5ldHdvcmtMb2FkLmgiCi0KLSNpZiAhVVNF
KE5FVFdPUktfU0VTU0lPTikKLQotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgot
I2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2Fj
aGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9u
c2UgKm5zUmVzcG9uc2UpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBt
X2hhbmRsZSk7Ci0KLSAgICBtX2hhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShuc1Jl
c3BvbnNlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyAhVVNFKE5F
VFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1Jl
bW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAyMjcy
MzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5n
Q29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEyLDEwICsxMTIsOCBAQCB2b2lkIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzCiAgICAgICAgIHNlc3Npb24tPnNldENhY2hl
U3RvcmFnZVBlck9yaWdpblF1b3RhKHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVv
dGEpOwogICAgIH0KIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgcGFyYW1ldGVycy5u
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gTmV0
d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8TGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyPigpOwogICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0
d29ya1Nlc3Npb246OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzKSkpOwotI2VuZGlmCiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
c3Npb25UcmFja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNz
aW9uVHJhY2tlci5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1Nlc3Npb25UcmFja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCB2b2lk
IFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShjCiAgICAgaWRlbnRpZmllckJhc2Uo
KSA9IGlkZW50aWZpZXI7CiB9CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogc3RhdGljIEhh
c2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJlZlB0cjxOZXR3b3JrU2Vzc2lvbj4+JiBzdGF0aWNTZXNz
aW9uTWFwKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNzMsMTYgKzcy
LDEzIEBAIHZvaWQgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oUEFMOjpTZXMKIHsKICAgICBz
dGF0aWNTZXNzaW9uTWFwKCkuc2V0KHNlc3Npb25JRCwgV1RGTW92ZShzZXNzaW9uKSk7CiB9Ci0j
ZW5kaWYKIAogdm9pZCBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0jaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKICAgICBhdXRvIHNlc3Npb24gPSBzdGF0aWNTZXNzaW9uTWFwKCku
dGFrZShzZXNzaW9uSUQpOwogICAgIGlmIChzZXNzaW9uKQogICAgICAgICBzZXNzaW9uLT5pbnZh
bGlkYXRlQW5kQ2FuY2VsKCk7Ci0jZW5kaWYKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
c3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1Nlc3Npb25UcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2Vz
c2lvblRyYWNrZXIuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
U2Vzc2lvblRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGdldElkZW50aWZpZXJCYXNlKCk7CiAgICAgc3Rh
dGljIHZvaWQgc2V0SWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7CiAgICAgCi0jaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKICAgICBzdGF0aWMgdm9pZCBzZXRTZXNzaW9uKFBBTDo6U2Vzc2lv
bklELCBSZWY8TmV0d29ya1Nlc3Npb24+JiYpOwogICAgIHN0YXRpYyBOZXR3b3JrU2Vzc2lvbiog
bmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwotI2VuZGlmCiAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogfTsKIApJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTYsMTEgKzExNiw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZl
QXUKICAgICBBU1NFUlQoZnJhbWUtPnBhZ2UoKSk7CiAKICAgICBhdXRvIHBhZ2VJRCA9IGZyYW1l
LT5wYWdlKCktPnBhZ2VJRCgpOwotICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxl
bmdlVG9DaGFsbGVuZ2VNYXAoe3BhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UKLSNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQotICAgICAgICAsIHsgfQotI2VuZGlmCi0gICAgfSk7CisgICAg
dWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7IHBhZ2VJ
RCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIHsgfSB9KTsKIAogICAgIC8vIENvYWxlc2NlIGNo
YWxsZW5nZXMgaW4gdGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFjZSBhbmQgaW4gdGhlIHNhbWUgcGFn
ZS4KICAgICBpZiAoc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UocGFnZUlELCBjaGFsbGVuZ2VJRCwg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKQpAQCAtMTI5LDcgKzEyNSw2IEBAIHZvaWQgQXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXUKICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZnJhbWUt
PmZyYW1lSUQoKSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSwgZnJhbWUt
PnBhZ2UoKS0+cGFnZUlEKCkpOwogfQogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIHZvaWQg
QXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHBhZ2VJRCk7CkBAIC0xNTUs
MzcgKzE1MCw2IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXUKICAg
ICAKICAgICBkb3dubG9hZC5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5n
ZUlEKSk7CiB9Ci0jZW5kaWYKLQotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotdm9pZCBBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLXsKLSAgICBBU1NFUlQocGFnZUlEKTsKLSAg
ICBBU1NFUlQoZnJhbWVJRCk7Ci0KLSAgICB1aW50NjRfdCBjaGFsbGVuZ2VJRCA9IGFkZENoYWxs
ZW5nZVRvQ2hhbGxlbmdlTWFwKHtwYWdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlfSk7Ci0K
LSAgICAvLyBDb2FsZXNjZSBjaGFsbGVuZ2VzIGluIHRoZSBzYW1lIHByb3RlY3Rpb24gc3BhY2Ug
YW5kIGluIHRoZSBzYW1lIHBhZ2UuCi0gICAgaWYgKHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHBh
Z2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocGFnZUlELCBmcmFtZUlELCBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKLX0KLSNlbmRpZgotCi0jaWYg
IVVTRShORVRXT1JLX1NFU1NJT04pCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkJiBkb3dubG9hZCwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotewotICAgIHVp
bnQ2NF90IGR1bW15UGFnZUlEID0gMDsKLSAgICB1aW50NjRfdCBjaGFsbGVuZ2VJRCA9IGFkZENo
YWxsZW5nZVRvQ2hhbGxlbmdlTWFwKHtkdW1teVBhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2V9KTsKLQotICAgIC8vIENvYWxlc2NlIGNoYWxsZW5nZXMgaW4gdGhlIHNhbWUgcHJvdGVjdGlv
biBzcGFjZSBhbmQgaW4gdGhlIHNhbWUgcGFnZS4KLSAgICBpZiAoc2hvdWxkQ29hbGVzY2VDaGFs
bGVuZ2UoZHVtbXlQYWdlSUQsIGNoYWxsZW5nZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGRvd25sb2FkLnNlbmQoTWVzc2FnZXM6OkRvd25sb2Fk
UHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKLX0KLSNlbmRpZgogCiAvLyBDdXJyZW50bHksIG9ubHkg
TWFjIGtub3dzIGhvdyB0byByZXNwb25kIHRvIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZXMgd2l0
aCBjZXJ0aWZpY2F0ZSBpbmZvLgogI2lmICFIQVZFKFNFQ19JREVOVElUWSkKQEAgLTIwOCwxNyAr
MTcyLDEyIEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWEKICAgICBh
dXRvIGNoYWxsZW5nZSA9IG1fY2hhbGxlbmdlcy50YWtlKGNoYWxsZW5nZUlEKTsKICAgICBBU1NF
UlQoIWNoYWxsZW5nZS5jaGFsbGVuZ2UuaXNOdWxsKCkpOwogCi0jaWYgVVNFKE5FVFdPUktfU0VT
U0lPTikKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjaGFsbGVuZ2UuY29t
cGxldGlvbkhhbmRsZXIpOwotI2Vsc2UKLSAgICBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBj
b21wbGV0aW9uSGFuZGxlciA9IG51bGxwdHI7Ci0jZW5kaWYKICAgICAKICAgICBpZiAodHJ5VXNl
Q2VydGlmaWNhdGVJbmZvRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZS5jaGFsbGVuZ2UsIGNlcnRpZmlj
YXRlSW5mbywgY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICByZXR1cm47CiAKICAgICBBdXRo
ZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVudCA9IGNoYWxsZW5nZS5jaGFsbGVuZ2UuYXV0aGVu
dGljYXRpb25DbGllbnQoKTsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIC8vIElmIHRo
ZXJlIGlzIGEgY29tcGxldGlvbiBoYW5kbGVyLCB0aGVuIHRoZXJlIGlzIG5vIEF1dGhlbnRpY2F0
aW9uQ2xpZW50LgogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIHVzZSBvZiBBdXRoZW50aWNhdGlv
bkNsaWVudCBpbiBXZWJLaXQyIG9uY2UgTkVUV09SS19TRVNTSU9OIGlzIHVzZWQgZm9yIGFsbCBs
b2Fkcy4KICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpIHsKQEAgLTIyNywxNCArMTg2LDkgQEAg
dm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnVzZUNyZWRlbnRpYQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIEFTU0VSVChjb3JlQ2xpZW50KTsKLSNlbmRpZgogCiAgICAgaWYgKGNvcmVD
bGllbnQpCiAgICAgICAgIGNvcmVDbGllbnQtPnJlY2VpdmVkQ3JlZGVudGlhbChjaGFsbGVuZ2Uu
Y2hhbGxlbmdlLCBjcmVkZW50aWFsKTsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBl
bHNlCi0gICAgICAgIHJlY2VpdmVkQ3JlZGVudGlhbChjaGFsbGVuZ2UuY2hhbGxlbmdlLCBjcmVk
ZW50aWFsKTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29udGlu
dWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCkKQEAg
LTI1MSwyMSArMjA1LDE1IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51ZVdp
dGgKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5jaGFsbGVuZ2UuaXNOdWxsKCkpOwogCiAgICAgQXV0
aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQgPSBjaGFsbGVuZ2UuY2hhbGxlbmdlLmF1dGhl
bnRpY2F0aW9uQ2xpZW50KCk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAoY2hh
bGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIEFTU0VSVCghY29yZUNsaWVudCk7
CiAgICAgICAgIGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBDcmVkZW50aWFsKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChjb3JlQ2xpZW50KTsKLSNlbmRpZgogCiAgICAgaWYg
KGNvcmVDbGllbnQpCiAgICAgICAgIGNvcmVDbGllbnQtPnJlY2VpdmVkUmVxdWVzdFRvQ29udGlu
dWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKLSNpZiAhVVNFKE5FVFdP
UktfU0VTU0lPTikKLSAgICBlbHNlCi0gICAgICAgIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVX
aXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKLSNlbmRpZgogfQogCiB2b2lk
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5n
ZUlEKQpAQCAtMjgyLDIxICsyMzAsMTUgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNh
bmNlbFNpbmdsZQogICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051bGwoKSk7CiAK
ICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVudCA9IGNoYWxsZW5nZS5jaGFsbGVu
Z2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAg
IGlmIChjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgQVNTRVJUKCFjb3Jl
Q2xpZW50KTsKICAgICAgICAgY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCwgQ3JlZGVudGlhbCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoY29yZUNsaWVudCk7Ci0jZW5kaWYKIAogICAgIGlm
IChjb3JlQ2xpZW50KQogICAgICAgICBjb3JlQ2xpZW50LT5yZWNlaXZlZENhbmNlbGxhdGlvbihj
aGFsbGVuZ2UuY2hhbGxlbmdlKTsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBlbHNl
Ci0gICAgICAgIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNoYWxsZW5nZS5jaGFsbGVuZ2UpOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpwZXJmb3JtRGVmYXVsdEhhbmRs
aW5nKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpAQCAtMzEzLDIxICsyNTUsMTUgQEAgdm9pZCBBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OnBlcmZvcm1EZWZhdQogICAgIEFTU0VSVCghY2hhbGxlbmdlLmNo
YWxsZW5nZS5pc051bGwoKSk7CiAKICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVu
dCA9IGNoYWxsZW5nZS5jaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKLSNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQogICAgIGlmIChjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpIHsK
ICAgICAgICAgQVNTRVJUKCFjb3JlQ2xpZW50KTsKICAgICAgICAgY2hhbGxlbmdlLmNvbXBsZXRp
b25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZh
dWx0SGFuZGxpbmcsIENyZWRlbnRpYWwoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
QVNTRVJUKGNvcmVDbGllbnQpOwotI2VuZGlmCiAKICAgICBpZiAoY29yZUNsaWVudCkKICAgICAg
ICAgY29yZUNsaWVudC0+cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNo
YWxsZW5nZS5jaGFsbGVuZ2UpOwotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIGVsc2UK
LSAgICAgICAgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNoYWxsZW5n
ZS5jaGFsbGVuZ2UpOwotI2VuZGlmCiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpy
ZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCkKQEAg
LTM0NCwyMSArMjgwLDE1IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWplY3RQcm90
ZWMKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5jaGFsbGVuZ2UuaXNOdWxsKCkpOwogCiAgICAgQXV0
aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQgPSBjaGFsbGVuZ2UuY2hhbGxlbmdlLmF1dGhl
bnRpY2F0aW9uQ2xpZW50KCk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAoY2hh
bGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIEFTU0VSVCghY29yZUNsaWVudCk7
CiAgICAgICAgIGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2UsIENyZWRlbnRpYWwoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKGNvcmVDbGllbnQpOwotI2VuZGlmCiAK
ICAgICBpZiAoY29yZUNsaWVudCkKICAgICAgICAgY29yZUNsaWVudC0+cmVjZWl2ZWRDaGFsbGVu
Z2VSZWplY3Rpb24oY2hhbGxlbmdlLmNoYWxsZW5nZSk7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJ
T04pCi0gICAgZWxzZQotICAgICAgICByZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjaGFsbGVu
Z2UuY2hhbGxlbmdlKTsKLSNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uTWFuYWdlci5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNjYsMjIgKzY2LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBzdXBwbGVtZW50TmFtZSgpOwogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
KTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgIHZvaWQgY29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJv
b2wgY2FuQXV0aGVudGljYXRlKTsKICNlbmRpZgotI2VuZGlmCiAgICAgLy8gQ2FsbGVkIGZvciBy
ZXNvdXJjZXMgaW4gdGhlIFdlYlByb2Nlc3MgKE5ldHdvcmtQcm9jZXNzIGRpc2FibGVkKQogICAg
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkZyYW1lKiwgY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAotI2lmICFVU0UoTkVUV09SS19T
RVNTSU9OKQotICAgIC8vIENhbGxlZCBmb3IgcmVzb3VyY2VzIGluIHRoZSBOZXR3b3JrUHJvY2Vz
cyAoTmV0d29ya1Byb2Nlc3MgZW5hYmxlZCkKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWQmLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpOwotI2VuZGlmCi0KICAgICB2b2lkIHVzZUNyZWRlbnRpYWxGb3JDaGFs
bGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmLCBj
b25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mKTsKICAgICB2b2lkIGNvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQpOwogICAgIHZvaWQg
Y2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKQEAgLTEwMCw5ICs5Miw3IEBA
IHByaXZhdGU6CiAgICAgc3RydWN0IENoYWxsZW5nZSB7CiAgICAgICAgIHVpbnQ2NF90IHBhZ2VJ
RDsKICAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlOwot
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgICAgIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyIGNvbXBsZXRpb25IYW5kbGVyOwotI2VuZGlmCiAgICAgfTsKICAgICAKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5h
Z2VyQ29jb2EubW0JKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCShub25leGlz
dGVudCkKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCi0KLSNpZiAhVVNFKE5FVFdPUktfU0VT
U0lPTikKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
dm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0IENyZWRl
bnRpYWwmIGNyZWRlbnRpYWwpCi17Ci0gICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRl
cigpIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKCldOwotfQotCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRS
ZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLXsKLSAgICBbYXV0aGVudGljYXRpb25D
aGFsbGVuZ2Uuc2VuZGVyKCkgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKV07Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENh
bmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpCi17Ci0gICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIGNhbmNl
bEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKV07Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotewotICAgIFthdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpXTsKLX0KLQotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2Vp
dmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSkKLXsKLSAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2Vu
ZGVyKCkgcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOmF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07Ci19Ci0K
LX0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VT
aGltLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nvb2tpZVN0b3Jh
Z2VTaGltLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9D
b29raWVTdG9yYWdlU2hpbS5oCShub25leGlzdGVudCkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0KLSNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIENvb2tpZVN0b3JhZ2VTaGltIHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShDb29raWVTdG9yYWdlU2hpbSk7Ci0gICAgZnJpZW5kIGNsYXNz
IE5ldmVyRGVzdHJveWVkPENvb2tpZVN0b3JhZ2VTaGltPjsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
Q29va2llU3RvcmFnZVNoaW0mIHNpbmdsZXRvbigpOwotCi0gICAgdm9pZCBpbml0aWFsaXplKCk7
Ci0KLXByaXZhdGU6Ci0gICAgQ29va2llU3RvcmFnZVNoaW0oKQotICAgIHsKLSAgICB9Ci19Owot
Ci19Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nvb2tpZVN0b3Jh
Z2VTaGltLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db29raWVT
dG9yYWdlU2hpbS5tbQkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCShub25leGlzdGVudCkKQEAgLTEsMTQwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDb29raWVT
dG9yYWdlU2hpbS5oIgotCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0KLSNpbmNsdWRlICJD
b29raWVTdG9yYWdlU2hpbUxpYnJhcnkuaCIKLSNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZXNTdHJhdGVneS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+Ci0jaW5jbHVkZSA8ZGxmY24uaD4KLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+Ci0j
aW5jbHVkZSA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJl
cXVlc3RSZWY7Ci1AY2xhc3MgTlNVUkxTZXNzaW9uVGFzazsKLQotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci0KLUBpbnRlcmZhY2UgV0tOU1VSTFNlc3Npb25Mb2NhbCA6IE5TT2JqZWN0Ci0tIChD
RkRpY3Rpb25hcnlSZWYpIF9jb3B5Q29va2llc0ZvclJlcXVlc3RVc2luZ0FsbEFwcHJvcHJpYXRl
U3RvcmFnZVNlbWFudGljczooQ0ZVUkxSZXF1ZXN0UmVmKSByZXF1ZXN0OwotLSAodm9pZClfZ2V0
Q29va2llSGVhZGVyc0ZvclRhc2s6KE5TVVJMU2Vzc2lvblRhc2sqKXRhc2sgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKENGRGljdGlvbmFyeVJlZikpY29tcGxldGlvbkhhbmRsZXI7Ci1AZW5k
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIHdlYktpdENv
b2tpZVN0b3JhZ2VDb3B5UmVxdWVzdEhlYWRlckZpZWxkc0ZvclVSTChDRkhUVFBDb29raWVTdG9y
YWdlUmVmIGluQ29va2llU3RvcmFnZSwgQ0ZVUkxSZWYgaW5SZXF1ZXN0VVJMKQotewotICAgIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzID0gVVJMKGluUmVxdWVzdFVS
TCkucHJvdG9jb2xJcygiaHR0cHMiKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNs
dWRlU2VjdXJlQ29va2llczo6Tm87Ci0KLSAgICBTdHJpbmcgY29va2llczsKLSAgICBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwotICAgIFVSTCBmaXJzdFBhcnR5Rm9yQ29va2ll
c1VSTDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIGZpcnN0UGFydHlGb3JDb29raWVzVVJMLCBp
blJlcXVlc3RVUkwsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29v
a2llcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KGNvb2tpZXMsIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCksIDApKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChjb29raWVzLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZDb29raWVz
ID0gY29va2llcy5jcmVhdGVDRlN0cmluZygpOwotICAgIHN0YXRpYyBjb25zdCB2b2lkKiBjb29r
aWVLZXlzW10gPSB7IENGU1RSKCJDb29raWUiKSB9OwotICAgIGNvbnN0IHZvaWQqIGNvb2tpZVZh
bHVlc1tdID0geyBjZkNvb2tpZXMuZ2V0KCkgfTsKLSAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlKDAsIGNvb2tpZUtleXMsIGNvb2tpZVZhbHVlcywgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5
Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci19Ci0KLUNvb2tp
ZVN0b3JhZ2VTaGltJiBDb29raWVTdG9yYWdlU2hpbTo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q29va2llU3RvcmFnZVNoaW0+IHN0b3JhZ2U7Ci0gICAgcmV0dXJu
IHN0b3JhZ2U7Ci19Ci0KLXZvaWQgQ29va2llU3RvcmFnZVNoaW06OmluaXRpYWxpemUoKQotewot
ICAgIENvb2tpZVN0b3JhZ2VTaGltQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsgJndlYktpdENvb2tp
ZVN0b3JhZ2VDb3B5UmVxdWVzdEhlYWRlckZpZWxkc0ZvclVSTCB9OwotICAgIENvb2tpZVN0b3Jh
Z2VTaGltSW5pdGlhbGl6ZUZ1bmMgZnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q29va2llU3RvcmFn
ZVNoaW1Jbml0aWFsaXplRnVuYz4oZGxzeW0oUlRMRF9ERUZBVUxULCAiV2ViS2l0Q29va2llU3Rv
cmFnZVNoaW1Jbml0aWFsaXplIikpOwotICAgIGlmIChmdW5jKQotICAgICAgICBmdW5jKGNhbGxi
YWNrcyk7Ci0KLSAgICBDbGFzcyBfX05TVVJMU2Vzc2lvbkxvY2FsQ2xhc3MgPSBvYmpjX2dldENs
YXNzKCJfX05TVVJMU2Vzc2lvbkxvY2FsIik7Ci0gICAgaWYgKCFfX05TVVJMU2Vzc2lvbkxvY2Fs
Q2xhc3MpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChNZXRob2Qgb3JpZ2luYWwgPSBjbGFz
c19nZXRJbnN0YW5jZU1ldGhvZChfX05TVVJMU2Vzc2lvbkxvY2FsQ2xhc3MsIEBzZWxlY3Rvcihf
Y29weUNvb2tpZXNGb3JSZXF1ZXN0VXNpbmdBbGxBcHByb3ByaWF0ZVN0b3JhZ2VTZW1hbnRpY3M6
KSkpIHsKLSAgICAgICAgTWV0aG9kIHJlcGxhY2VtZW50ID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRo
b2QoW1dLTlNVUkxTZXNzaW9uTG9jYWwgY2xhc3NdLCBAc2VsZWN0b3IoX2NvcHlDb29raWVzRm9y
UmVxdWVzdFVzaW5nQWxsQXBwcm9wcmlhdGVTdG9yYWdlU2VtYW50aWNzOikpOwotICAgICAgICBB
U1NFUlQocmVwbGFjZW1lbnQpOwotICAgICAgICBtZXRob2RfZXhjaGFuZ2VJbXBsZW1lbnRhdGlv
bnMob3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKLSAgICB9Ci0KLSAgICBpZiAoTWV0aG9kIG9yaWdp
bmFsID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QoX19OU1VSTFNlc3Npb25Mb2NhbENsYXNzLCBA
c2VsZWN0b3IoX2dldENvb2tpZUhlYWRlcnNGb3JUYXNrOmNvbXBsZXRpb25IYW5kbGVyOikpKSB7
Ci0gICAgICAgIE1ldGhvZCByZXBsYWNlbWVudCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKFtX
S05TVVJMU2Vzc2lvbkxvY2FsIGNsYXNzXSwgQHNlbGVjdG9yKF9nZXRDb29raWVIZWFkZXJzRm9y
VGFzazpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KTsK
LSAgICAgICAgbWV0aG9kX2V4Y2hhbmdlSW1wbGVtZW50YXRpb25zKG9yaWdpbmFsLCByZXBsYWNl
bWVudCk7Ci0gICAgfQotfQotCi19Ci0KLUBpbXBsZW1lbnRhdGlvbiBXS05TVVJMU2Vzc2lvbkxv
Y2FsCi0tIChDRkRpY3Rpb25hcnlSZWYpX2NvcHlDb29raWVzRm9yUmVxdWVzdFVzaW5nQWxsQXBw
cm9wcmlhdGVTdG9yYWdlU2VtYW50aWNzOihDRlVSTFJlcXVlc3RSZWYpIHJlcXVlc3QKLXsKLSAg
ICBpZiAoIUNGVVJMUmVxdWVzdFNob3VsZEhhbmRsZUhUVFBDb29raWVzKHJlcXVlc3QpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV2ViS2l0Ojp3ZWJLaXRDb29raWVTdG9y
YWdlQ29weVJlcXVlc3RIZWFkZXJGaWVsZHNGb3JVUkwobnVsbHB0ciwgQ0ZVUkxSZXF1ZXN0R2V0
VVJMKHJlcXVlc3QpKTsKLX0KLQotdXNpbmcgQ29tcGxldGlvbkhhbmRsZXJCbG9jayA9IHZvaWQo
XikoQ0ZEaWN0aW9uYXJ5UmVmKTsKLS0gKHZvaWQpX2dldENvb2tpZUhlYWRlcnNGb3JUYXNrOihO
U1VSTFNlc3Npb25UYXNrKil0YXNrIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxl
ckJsb2NrKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFbW3Rhc2sgY3VycmVudFJlcXVlc3RdIEhUVFBT
aG91bGRIYW5kbGVDb29raWVzXSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRy
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENvbXBsZXRpb25IYW5kbGVyQmxvY2sg
Y29tcGxldGlvbkhhbmRsZXJDb3B5ID0gW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldOwotICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGFzayA9IFJldGFpblB0cjxOU1VSTFNlc3Npb25UYXNr
Pih0YXNrKSwgY29tcGxldGlvbkhhbmRsZXJDb3B5XSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IGhlYWRlcnMgPSBhZG9wdENGKFdlYktpdDo6d2ViS2l0Q29va2llU3RvcmFn
ZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzRm9yVVJMKG51bGxwdHIsIChDRlVSTFJlZilbW3Rhc2sg
Y3VycmVudFJlcXVlc3RdIFVSTF0pKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KGhl
YWRlcnMuZ2V0KCkpOwotICAgICAgICBbY29tcGxldGlvbkhhbmRsZXJDb3B5IHJlbGVhc2VdOwot
ICAgIH0pOwotfQotCi1AZW5kCi0KLSNlbmRpZgotCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAkocmV2aXNpb24gMjI3MjMyKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDkgKzUzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktp
dDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2NF90KSB7IH0KLSNp
ZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVjb2RlU291
cmNlRGF0YU9mTUlNRVR5cGUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyByZXR1cm4gdHJ1ZTsgfQotI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6
OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJp
bmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxs
b3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURlc3Rp
bmF0aW9uKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBj
b25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZpc2lvbiAyMjcy
MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDQsMTYgKzIwNCw2IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRD
bGllbnQoV0tDb250ZXgKICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHRvQVBJ
KCZwcm9jZXNzUG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikK
LSAgICAgICAgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShXZWJQcm9jZXNz
UG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGll
bnQuc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGREZWNvZGVTb3Vy
Y2VEYXRhT2ZNSU1FVHlwZSh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxvYWRQcm94
eSksIHRvQVBJKG1pbWVUeXBlLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0g
ICAgICAgIH0KLSNlbmRpZgotCiAgICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFs
bG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9E
b3dubG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0Rvd25sb2FkQ2xpZW50LmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDkg
KzU2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERv
d25sb2FkUHJveHkmKSBmaW5hbDsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JikgZmluYWw7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJ
T04pCi0gICAgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSNlbmRpZgogICAg
IHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5
JiwgY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCShyZXZpc2lvbiAyMjcyMzIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTI0LDE1ICsxMjQsNiBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlQXV0aGVudGljCiAgICAgfSkuZ2V0KCldOwogfQogCi0jaWYgIVVTRShORVRXT1JLX1NF
U1NJT04pCi1ib29sIERvd25sb2FkQ2xpZW50OjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1F
VHlwZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2Fk
U2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUpCi0gICAgICAgIHJldHVybiBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBzaG91bGREZWNvZGVTb3VyY2VE
YXRhT2ZNSU1FVHlwZTptaW1lVHlwZV07Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQog
dm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wm
LCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
KQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0
aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQs
NyArMTM0LDYgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2VuZFJlcXVlc3QoUmVzbwogICAg
IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkud2lsbFNlbmRSZXF1ZXN0KCptX3Byb2Nl
c3NQb29sLCAqdGhpcywgV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNl
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShSZXNvdXJjZVJlcXVlc3Qm
JiBuZXdSZXF1ZXN0KSB7CiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQobmV3UmVxdWVz
dC51cmwoKSk7CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgICAgICBpZiAoIXByb3Rl
Y3RlZFRoaXMtPm1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE0Myw3
ICsxNDIsNiBAQCB2b2lkIERvd25sb2FkUHJveHk6OndpbGxTZW5kUmVxdWVzdChSZXNvCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgbmV0d29ya1Byb2Nlc3NQcm94eS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OkNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KHByb3RlY3RlZFRo
aXMtPm1fZG93bmxvYWRJRCwgbmV3UmVxdWVzdCksIDApOwotI2VuZGlmCiAgICAgfSk7CiB9CiAK
QEAgLTE1MiwxMyArMTUwLDYgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlUmVzcG9u
c2UoYwogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgIVVT
RShORVRXT1JLX1NFU1NJT04pCi0gICAgLy8gQXMgcGVyIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvI2FzLWEtZG93bmxvYWQgKHN0ZXAgMiksIHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBDb250
ZW50LURpc3Bvc2l0aW9uIGhlYWRlcgotICAgIC8vIHNob3VsZCBvdmVycmlkZSB0aGUgc3VnZ2Vz
dGVkIGZpbGVuYW1lIGZyb20gdGhlIGRvd25sb2FkIGF0dHJpYnV0ZS4KLSAgICBpZiAoIW1fc3Vn
Z2VzdGVkRmlsZW5hbWUuaXNOdWxsKCkgJiYgcmVzcG9uc2UuaXNBdHRhY2htZW50V2l0aEZpbGVu
YW1lKCkpCi0gICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBTdHJpbmcoKTsKLSNlbmRpZgot
CiAgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlUmVzcG9uc2Uo
Km1fcHJvY2Vzc1Bvb2wsICp0aGlzLCByZXNwb25zZSk7CiB9CiAKQEAgLTE3MCwxOCArMTYxLDYg
QEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlRGF0YSh1aW50NgogICAgIG1fcHJvY2Vz
c1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZURhdGEoKm1fcHJvY2Vzc1Bvb2wsICp0
aGlzLCBsZW5ndGgpOwogfQogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi12b2lkIERvd25s
b2FkUHJveHk6OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wmIHJlc3VsdCkKLXsKLSAgICByZXN1bHQgPSBmYWxzZTsKLQotICAgIGlm
ICghbV9wcm9jZXNzUG9vbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVzdWx0ID0gbV9wcm9j
ZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIG1pbWVUeXBlKTsKLX0KLSNlbmRpZgotCiB2b2lkIERv
d25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMo
RG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQog
ewogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKQEAgLTE5NywyNCArMTc2LDYgQEAgdm9pZCBEb3du
bG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdAogICAgIH0pOwogfQogCi0jaWYgIVVTRShO
RVRXT1JLX1NFU1NJT04pCi0KLXZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgUmVmPE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQotewotICAgIGlm
ICghbV9wcm9jZXNzUG9vbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lID0gTUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNz
YXJ5KG1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpID8gZmlsZW5hbWUgOiBtX3N1Z2dlc3Rl
ZEZpbGVuYW1lLCBtaW1lVHlwZSk7Ci0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQo
KS5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqbV9wcm9jZXNzUG9vbCwg
KnRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKEFsbG93
T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIHsKLSAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgICAg
IGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCi0gICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRX
cml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgICAgIHJlcGx5LT5zZW5kKGRlc3Rp
bmF0aW9uLCBhbGxvd092ZXJ3cml0ZSA9PSBBbGxvd092ZXJ3cml0ZTo6WWVzLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKLSAgICB9KTsKLX0KLQotI2VuZGlmCi0KIHZvaWQgRG93bmxvYWRQcm94
eTo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIGlmICgh
bV9wcm9jZXNzUG9vbCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
ODUsNyArODUsNiBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJp
ZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkU3RhcnQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSk7CkBAIC05OCw5ICs5Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEpOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1l
RGF0YSk7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKTsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICB2b2lkIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFJlZjxNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6OkRlbGF5ZWRSZXBseT4mJik7Ci0j
ZW5kaWYKICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5
bmMoRG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAKICAgICBE
b3dubG9hZFByb3h5TWFwJiBtX2Rvd25sb2FkUHJveHlNYXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI4LDEw
ICsyOCw2IEBAIG1lc3NhZ2VzIC0+IERvd25sb2FkUHJveHkgewogCiAgICAgRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2
ZURhdGEodWludDY0X3QgbGVuZ3RoKQotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIFNo
b3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKFN0cmluZyBtaW1lVHlwZSkgLT4gKGJvb2wg
cmVzdWx0KQotICAgIERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFN0cmlu
ZyBmaWxlbmFtZSwgU3RyaW5nIG1pbWVUeXBlKSAtPiAoU3RyaW5nIGRlc3RpbmF0aW9uLCBib29s
IGFsbG93T3ZlcndyaXRlLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKSBEZWxheWVkCi0jZW5kaWYKICAgICBEaWRDcmVhdGVEZXN0aW5hdGlv
bihTdHJpbmcgcGF0aCkKICAgICBEaWRGaW5pc2goKQogICAgIERpZEZhaWwoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBlcnJvciwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIyNzM1NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExODYsNyArMTE4Niw2IEBACiAJCTUzQkE0N0QwMURD
MkVGNUUwMDRERjRBRCAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOUVCNTQ2MURDMkVFNDAwMDlENDhDRiAv
KiBOZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCAqLzsgfTsKIAkJNTNCQTQ3RDExREMyRUY1RTAwNERG
NEFEIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzOUVCNTQ3MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0
YVRhc2tCbG9iLmggKi87IH07CiAJCTUzREVBMzY2MURERTQyMzEwMEU4MjY0OCAvKiBqc29uLmhw
cCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzREVBMzY1
MURERTQyMkUwMEU4MjY0OCAvKiBqc29uLmhwcCAqLzsgfTsKLQkJNUMwNTJGMjYxQzZEM0JEMzAw
NzZFOTE5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwNTJGMjQxQzZEM0FCNjAwNzZFOTE5IC8q
IEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tICovOyB9OwogCQk1QzBCMTc3ODFFN0M4ODBF
MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBCMTc3NDFFN0M4NzlD
MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07
CiAJCTVDMEIxNzc5MUU3Qzg4MjEwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMwQjE3NzYxRTdDODc5QzAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCTVDMEIxNzdDMUU3Qzg4NTQwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJl
YW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMw
QjE3N0ExRTdDODg0RjAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbS5jcHAgKi87IH07CkBAIC0x
MjAxLDggKzEyMDAsNiBAQAogCQk1QzE0MjcwNTFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRJ
RC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2
RjcxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkSUQuaCAqLzsgfTsKIAkJNUMxNDI3MDYxQzIz
Rjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZGODFDMjNGODQzMDBENDExODMgLyogRG93
bmxvYWRNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNUMxNDI3MDcxQzIzRjg0QzAwRDQxMTgzIC8qIERv
d25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMxNDI2RjkxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5oICovOyB9
OwotCQk1QzE0MjcxMTFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRJT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwRDFDMjNGODg1MDBE
NDExODMgLyogRG93bmxvYWRJT1MubW0gKi87IH07Ci0JCTVDMTQyNzEyMUMyM0Y4OUUwMEQ0MTE4
MyAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDMTQyNzBGMUMyM0Y4OTkwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSAqLzsg
fTsKIAkJNUMxNDI3MTMxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwOTFDMjNGODY5
MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSAqLzsgfTsKIAkJNUMxNDI3MTgxQzIzRjhCNzAw
RDQxMTgzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MTQxQzIzRjhCMDAwRDQxMTgzIC8q
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oICovOyB9OwogCQk1QzE0MjcxRDFDMjNGOENG
MDBENDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcxQjFDMjNGOENDMDBE
NDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0gKi87IH07CkBAIC0x
NDEwLDcgKzE0MDcsNiBAQAogCQk4MzRCMjUxMjFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0Nh
Y2hlU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3Mu
aCAqLzsgfTsKIAkJODM2MDM0OUYxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNl
VHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNw
cCAqLzsgfTsKIAkJODM2MDM0QTAxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNl
VHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM2MDM0OUUxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oICov
OyB9OwotCQk4MzZFRUI4MDFCRTlFQzlFMDA2QjRCODIgLyogTmV0d29ya0xvYWRNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzZFRUI3RjFCRTlF
QzlFMDA2QjRCODIgLyogTmV0d29ya0xvYWRNYWMubW0gKi87IH07CiAJCTgzNzJEQjI1MUE2NzRD
OEYwMEM2OTdDNSAvKiBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMjQxQTY3NEM4RjAwQzY5
N0M1IC8qIFdLUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3MkRCMjgxQTY3NTYyODAwQzY5N0M1
IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzcyREIyNjFBNjc1NjI4MDBDNjk3QzUgLyog
V2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcCAqLzsgfTsKIAkJODM3MkRCMjkxQTY3
NTYyODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMjcxQTY3NTYyODAw
QzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovOyB9OwpAQCAtMTQy
Nyw4ICsxNDIzLDYgQEAKIAkJODNBMEVEMzQxRjc0N0NDRDAwMzI5OUVCIC8qIFByZWNvbm5lY3RU
YXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
QTBFRDMzMUY3NDdDQzcwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5jcHAgKi87IH07CiAJCTgz
QTBFRDM1MUY3NDdDQ0YwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNBMEVEMzIxRjc0N0NDNjAwMzI5OUVC
IC8qIFByZWNvbm5lY3RUYXNrLmggKi87IH07CiAJCTgzQkRDQ0I5MUFDNUZEQjYwMDNGNjQ0MSAv
KiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkRDQ0I4MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2Fj
aGVTdGF0aXN0aWNzLmNwcCAqLzsgfTsKLQkJODNCRkFDNDIxRDk2MTM3QzAwNDMzNDkwIC8qIEJs
b2JEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODNCRkFDNDAxRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5o
ICovOyB9OwotCQk4M0JGQUM0MzFEOTYxMzdDMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkZB
QzQxMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovOyB9OwogCQk4
M0Q0NTRENzFCRTlEM0M0MDA2QzkzQkQgLyogTmV0d29ya0xvYWRDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRDQ1NEQ2MUJFOUQzQzQwMDZD
OTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oICovOyB9OwogCQk4M0VFNTc1QjFEQjdENjExMDBD
NzRDNTAgLyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFRTU3NTkxREI3RDYwNjAwQzc0QzUwIC8q
IFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmNwcCAqLzsgfTsKIAkJODNFRTU3NUMxREI3RDYx
MTAwQzc0QzUwIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0VFNTc1QTFEQjdENjA2MDBDNzRDNTAg
LyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAqLzsgfTsKQEAgLTIwMjcsNyArMjAyMSw2
IEBACiAJCUNEQzM4MkZFMTcyMTE3OTkwMDhBMkZDMyAvKiBTZWNJdGVtU2hpbUxpYnJhcnkubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGOEE3ODEz
OEI0NjA5MDBBOTVGNDQgLyogU2VjSXRlbVNoaW1MaWJyYXJ5Lm1tICovOyB9OwogCQlDREMzODMw
NzE3MjExN0REMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzM4MkY5MTcyMTE2RDMw
MDhBMkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwICovOyB9OwogCQlDREMzODMw
QzE3MjEyMjgyMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMzODMwQjE3MjEyMUNFMDA4
QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmggKi87IH07Ci0JCUNEQzM4MzEwMTcy
MTI0NDAwMDhBMkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzM4MzBEMTcyMTI0MkQwMDhBMkZDMyAvKiBD
b29raWVTdG9yYWdlU2hpbS5tbSAqLzsgfTsKIAkJQ0RDQTg1QzgxMzJBQkE0RTAwRTk2MURGIC8q
IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2
MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi87IH07CiAJCUNFMTFBRDUwMUNCQzQ3Rjgw
MDY4MUVFNSAvKiBDb2RlU2lnbmluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFMTFBRDRGMUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5t
bSAqLzsgfTsKQEAgLTM1ODAsNyArMzU3Myw2IEBACiAJCTUzOUVCNTQ2MURDMkVFNDAwMDlENDhD
RiAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IE5ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
OUVCNTQ3MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtEYXRhVGFza0Jsb2IuaDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTNERUEzNjUxRERFNDIyRTAwRTgyNjQ4IC8qIGpzb24uaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgbmFtZSA9IGpzb24uaHBwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
Y2FwdHVyZS9qc29uLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMwNTJGMjQx
QzZEM0FCNjAwNzZFOTE5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQXV0aGVudGljYXRpb25NYW5hZ2VyQ29j
b2EubW07IHBhdGggPSBBdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMwQjE3NzQxRTdDODc5QzAw
RTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMEIxNzc1MUU3Qzg3
OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJT
b2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2MDMsOCArMzU5NSw2IEBACiAJCTVDMTQyNkY4MUMyM0Y4
NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRG93bmxvYWRNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzE0MjZGOTFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERvd25sb2FkTWFuYWdlci5oOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzE0MjcwOTFDMjNGODY5MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2FkQ29jb2Eu
bW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgz
IC8qIERvd25sb2FkSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gRG93bmxvYWRJT1MubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rv
d25sb2FkSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzE0MjcwRjFDMjNG
ODk5MDBENDExODMgLyogRG93bmxvYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBEb3dubG9hZE1hYy5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9tYWMvRG93bmxvYWRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
MTQyNzE0MUMyM0Y4QjAwMEQ0MTE4MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzE1
MUMyM0Y4QjAwMEQ0MTE4MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1l
c3NhZ2VzLmluOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUMxNDI3MUIxQzIzRjhDQzAwRDQxMTgzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9D
dXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODM3LDcgKzM4MjcsNiBAQAogCQk4MzRC
MjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODM2MDM0OUUxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJh
Y2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM2RUVCN0YxQkU5RUM5
RTAwNkI0QjgyIC8qIE5ldHdvcmtMb2FkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTmV0d29ya0xvYWRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNzJEQjI0MUE2NzRDOEYwMEM2OTdDNSAvKiBXS1BhZ2VEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzcyREIy
NjFBNjc1NjI4MDBDNjk3QzUgLyogV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2VEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzJEQjI3MUE2
NzU2MjgwMEM2OTdDNSAvKiBXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODU0LDggKzM4NDMsNiBAQAogCQk4
M0EwRUQzMjFGNzQ3Q0M2MDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gUHJlY29ubmVjdFRhc2suaDsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQTBF
RDMzMUY3NDdDQzcwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcmVjb25uZWN0VGFzay5jcHA7IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzQkRDQ0I4MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN0YXRpc3Rp
Y3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0JGQUM0MDFEOTYxMzYwMDA0
MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEJsb2JEb3dubG9hZENsaWVudC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Jsb2JEb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4
M0JGQUM0MTFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEJsb2JEb3dubG9hZENsaWVudC5jcHA7IHBh
dGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNENDU0RDYxQkU5RDNDNDAwNkM5M0JEIC8qIE5l
dHdvcmtMb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdv
cmtMb2FkQ2xpZW50Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0VFNTc1OTFEQjdENjA2MDBDNzRDNTAg
LyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4M0VFNTc1QTFEQjdENjA2MDBDNzRDNTAgLyogV2ViVmFsaWRh
dGlvbk1lc3NhZ2VDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
VmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ1MDEsOCArNDQ4OCw2IEBACiAJCUNEQzM4MkY5MTcyMTE2RDMwMDhBMkZDMyAvKiBDb29raWVT
dG9yYWdlU2hpbUxpYnJhcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29va2llU3RvcmFnZVNo
aW1MaWJyYXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDMzgzMDYxNzIx
MTc5OTAwOEEyRkMzIC8qIFdlYlByb2Nlc3NTaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5j
bHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2ViUHJvY2Vzc1NoaW0uZHlsaWI7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUNEQzM4MzBCMTcyMTIxQ0UwMDhBMkZDMyAvKiBD
b29raWVTdG9yYWdlU2hpbUxpYnJhcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29va2llU3RvcmFnZVNo
aW1MaWJyYXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEQzM4MzBEMTcyMTI0
MkQwMDhBMkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IENvb2tpZVN0b3JhZ2VTaGltLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDREMzODMwRTE3MjEyNDJEMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNo
aW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29va2llU3RvcmFnZVNoaW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDOEY0ODgxNzI1RTY3ODAwMTY2RjZF
IC8qIENvcmVGb3VuZGF0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29yZUZvdW5k
YXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZv
dW5kYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQlDRENB
ODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0E4NUM3MTMy
QUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyOTksNyArNjI4NCw2IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUUxN0FFMkMxMTZCOUMxMzkwMDFDNDJG
MSAvKiBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluICovLAotCQkJCTgzNkVF
QjdGMUJFOUVDOUUwMDZCNEI4MiAvKiBOZXR3b3JrTG9hZE1hYy5tbSAqLywKIAkJCQk1MUE4QTYx
NTE2MjdGM0Y5MDAwRDkwRTkgLyogTmV0d29ya1Byb2Nlc3NNYWMubW0gKi8sCiAJCQkJRTFCNzg0
NzIxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tICovLAogCQkJ
KTsKQEAgLTY0OTQsNyArNjQ3OCw2IEBACiAJCTUxOEU4RUYxMTZCMjA4RjAwMEU5MTQyOSAvKiBB
dXRoZW50aWNhdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJNUMwNTJGMjMxQzZEM0FBMTAwNzZFOTE5IC8qIGNvY29hICovLAogCQkJCTUxOEU4RUY2
MTZCMjA5MUMwMEU5MTQyOSAvKiBtYWMgKi8sCiAJCQkJNTE4RThFRjMxNkIyMDkxQzAwRTkxNDI5
IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgKi8sCiAJCQkJNTE4RThFRjQxNkIyMDkxQzAw
RTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oICovLApAQCAtNjYzMSwyMiArNjYxNCwx
MCBAQAogCQkJbmFtZSA9IGNhcHR1cmU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OwotCQk1QzA1MkYyMzFDNkQzQUExMDA3NkU5MTkgLyogY29jb2EgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTVDMDUyRjI0MUM2RDNBQjYwMDc2RTkxOSAv
KiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gY29j
b2E7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk1QzE0MjZGMTFDMjNGODE3
MDBENDExODMgLyogRG93bmxvYWRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKIAkJCQk1QzE0MjcwODFDMjNGODUyMDBENDExODMgLyogY29jb2EgKi8sCi0JCQkJ
NUMxNDI3MEMxQzIzRjg3NzAwRDQxMTgzIC8qIGlvcyAqLywKLQkJCQk1QzE0MjcwQjFDMjNGODcx
MDBENDExODMgLyogbWFjICovLAotCQkJCTgzQkZBQzQxMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9i
RG93bmxvYWRDbGllbnQuY3BwICovLAotCQkJCTgzQkZBQzQwMUQ5NjEzNjAwMDQzMzQ5MCAvKiBC
bG9iRG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQk1QzE0MjZGMzFDMjNGODQzMDBENDExODMgLyog
RG93bmxvYWQuY3BwICovLAogCQkJCTVDMTQyNkY0MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9h
ZC5oICovLAogCQkJCTVDMTQyNkY3MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZElELmggKi8s
CkBAIC02Njc3LDIyICs2NjQ4LDYgQEAKIAkJCW5hbWUgPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07Ci0JCTVDMTQyNzBCMUMyM0Y4NzEwMEQ0MTE4MyAvKiBtYWMgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTVDMTQyNzBGMUMy
M0Y4OTkwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gbWFj
OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJNUMxNDI3MEMxQzIzRjg3NzAw
RDQxMTgzIC8qIGlvcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25sb2FkSU9TLm1tICovLAotCQkJ
KTsKLQkJCW5hbWUgPSBpb3M7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk1
QzE0MjcxQTFDMjNGOEJGMDBENDExODMgLyogQ29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNzUyNCw4ICs3NDc5LDYgQEAKIAkJCQlDRTExQUQ0RjFD
QkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8sCiAJCQkJMUEyQTRBRkUxNTg2OTM5
MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8sCiAJCQkJMUEyQTRBRkQxNTg2OTM5MjAw
OTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovLAotCQkJCUNEQzM4MzBFMTcyMTI0MkQwMDhB
MkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbS5oICovLAotCQkJCUNEQzM4MzBEMTcyMTI0MkQwMDhB
MkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbS5tbSAqLywKIAkJCQlDREMzODJGOTE3MjExNkQzMDA4
QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcCAqLywKIAkJCQlDREMzODMwQjE3
MjEyMUNFMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmggKi8sCiAJCQkJMUFD
NzVBMUMxQjMzNjk1RTAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLywK
QEAgLTg2ODQsNyArODYzNyw2IEBACiAJCQkJQ0RBMDQxRjQxQUNFMjEwNTAwNEExM0VDIC8qIEJh
Y2tCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkEyQjYwOTFFNTY3NkE2
MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMTY0QTJGMjE5MUFGMTRFMDAxMDczN0QgLyogQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTgzQkZBQzQy
MUQ5NjEzN0MwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxNzA4NzZDMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9u
c2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNTExMUJFNDEwRTYwMDg3NEFGMSAvKiBC
bG9ja1NQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI2MSw3ICsxMDIxMyw2IEBACiAJCQkJNTEy
RjU4OTgxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThFOEVGODE2QjIwOTFDMDBFOTE0MjkgLyogQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOEU4RUZCMTZCMjA5MUMw
MEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJNUMwNTJGMjYxQzZEM0JEMzAwNzZFOTE5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29h
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4QTIxMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhl
bnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
OTU1QTZGNDFDNzk4NkRDMDBFQjZBOTMgLyogQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5OUM4MUQ1OTFDMjBFMUU1MDA1QzRDODIgLyogQXV0b21h
dGlvbkNsaWVudC5tbSBpbiBTb3VyY2VzICovLApAQCAtMTAyNzAsNyArMTAyMjEsNiBAQAogCQkJ
CTk5MEQyOEJDMUM2NTM5REEwMDk4Njk3NyAvKiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTQ2QTJCNjA4MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5k
UHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE2NEEy
RjExOTFBRjE0RTAwMTA3MzdEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0
ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzQkZBQzQzMUQ5NjEzN0MwMDQzMzQ5MCAv
KiBCbG9iRG93bmxvYWRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3MDg3NkIxNkQ2
Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDRjE4NjM4MTY3RDA3MUUwMEExQTg1QSAvKiBDYWNoZU1vZGVsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQxODk3RUQ3MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0xMDI5MSw3ICsxMDI0MSw2IEBACiAJCQkJQkMwMzJEQUExMEY0
MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzMEVB
QzYxMTVEN0RBMzAwNTNFOTM3IC8qIENvbm5lY3Rpb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1MTA2RDdDMjE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlDREMzODMxMDE3MjEyNDQwMDA4QTJGQzMgLyogQ29va2llU3Rv
cmFnZVNoaW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTA0RjVBMjFGMTlEN0QyMDA0Q0Y4MjEg
LyogQ29va2llU3RvcmFnZVV0aWxzQ0YubW0gaW4gU291cmNlcyAqLywKIAkJCQlCODc4QjYxNjEz
MzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzU1RjkxNzAxQzU5NUY2MzAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQubW0gaW4gU291
cmNlcyAqLywKQEAgLTEwMzAxLDggKzEwMjUwLDYgQEAKIAkJCQk1QzE0MjcwMTFDMjNGODRDMDBE
NDExODMgLyogRG93bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFERjYzMTIxOEUwQjdD
ODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3
MTMxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0gaW4gU291cmNlcyAqLywKLQkJ
CQk1QzE0MjcxMTFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRJT1MubW0gaW4gU291cmNlcyAq
LywKLQkJCQk1QzE0MjcxMjFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1QzE0MjcwNjFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdENENCMTI4OEFBQTcwMENGRDA4QyAvKiBEb3du
bG9hZFByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRDI1RTk1MTY3QUIwODEwMEVBOUJD
RCAvKiBEb3dubG9hZFByb3h5TWFwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTA0MzMsNyArMTAz
ODAsNiBAQAogCQkJCTVDQkM5QjhEMUM2NTI3OUMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzMDI1ODQ2MURDQkJEMjIwMERBODlDMiAvKiBO
ZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODM5OTAyMDIxQkU5
QTAyQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzNkVF
QjgwMUJFOUVDOUUwMDZCNEI4MiAvKiBOZXR3b3JrTG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUxNzk1NTY4MTYyODc2Q0YwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3RUM0RjBGQjE4RTRBQ0JCMDA4MDU2QUYgLyogTmV0d29ya1Byb2Nlc3ND
b2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxODNEREVDMTYzMEJERkMwMDhCRTVDNyAvKiBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
Nyw3ICsxMjcsNiBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJD
b29raWVTdG9yYWdlU2hpbS5oIgogI2luY2x1ZGUgIk9iakNPYmplY3RHcmFwaC5oIgogI2luY2x1
ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgiCiAjZW5kaWYKQEAgLTI3Miw5ICsyNzEsNyBA
QCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlCiAKICAgICBwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKFdURk1vdmUocGFyYW1ldGVycykpOwogCi0jaWYgVVNFKE5F
VFdPUktfU0VTU0lPTikKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKHsgfSkpOwot
I2VuZGlmCiAKICAgICAvLyBNYXRjaCB0aGUgUW9TIG9mIHRoZSBVSVByb2Nlc3MgYW5kIHRoZSBz
Y3JvbGxpbmcgdGhyZWFkIGJ1dCB1c2UgYSBzbGlnaHRseSBsb3dlciBwcmlvcml0eS4KICAgICBX
VEY6OlRocmVhZDo6c2V0Q3VycmVudFRocmVhZElzVXNlckludGVyYWN0aXZlKC0xKTsKQEAgLTM4
NSw5ICszODIsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlCiAK
ICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAotI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBDb29raWVTdG9yYWdlU2hpbTo6c2lu
Z2xldG9uKCkuaW5pdGlhbGl6ZSgpOwotI2VuZGlmCiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0
KHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0KTsKIAogICAgIHJlc2V0UGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzKHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKTsK
QEAgLTU1NiwxMiArNTUwLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCh1aW50
MzJfdCAKIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJDYWNoZWRDcmVkZW50aWFscygpCiB7CiAgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFs
U3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQog
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vz
c2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSkKICAgICAgICAgbmV0d29y
a1Nlc3Npb24tPmNsZWFyQ3JlZGVudGlhbHMoKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotI2VuZGlmCiB9CiAKIFdlYlBhZ2UqIFdlYlByb2Nlc3M6OmZvY3VzZWRX
ZWJQYWdlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQubW0JKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsOSArNjcsNyBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVdlCiAKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oc2Vz
c2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgp
KSwgV1RGTW92ZSh1aVByb2Nlc3NDb29raWVTdG9yYWdlKSk7CiAKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQogICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29y
a1Nlc3Npb246OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzKSkpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0
Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBw
b2xpY3kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331962</attachid>
            <date>2018-01-22 13:56:34 -0800</date>
            <delta_ts>2018-01-22 14:26:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181944-20180122135638.patch</filename>
            <type>text/plain</type>
            <size>148237</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjczNTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MCBAQAorMjAxOC0wMS0yMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBwcmUt
TmV0d29ya1Nlc3Npb24gbG9hZGluZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODE5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZSB3ZXJlIGtlZXBpbmcgaXQgYXJvdW5kIGZvciBFbCBDYXBp
dGFuLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyUHJvdG9jb2xDbGFzcyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6fkRvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmNh
bmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6c3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZDo6c3RhcnRXaXRoSGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6
OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OndpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkOjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c2V0QmxvYkZpbGVSZWZlcmVuY2VzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlcXVlc3QgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OndpbGxEZWNpZGVQZW5kaW5nRG93bmxv
YWREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y29udmVy
dE5ldHdvcmtMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdl
cjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW06IFJlbW92ZWQuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvYWRQaW5nKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFza0Jsb2IuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZDo6c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRGYWlsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2VBc3luYyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtM
b2FkOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24p
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2Nv
YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOiBSZW1vdmVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNp
dGVEYXRhU3RvcmVTZXNzaW9uKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25N
YW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnVzZUNyZWRlbnRpYWxGb3JTaW5nbGVDaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNvbnRpbnVlV2l0
aG91dENyZWRlbnRpYWxGb3JTaW5nbGVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OmNhbmNlbFNpbmdsZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvclNpbmds
ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVq
ZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JTaW5nbGVDaGFsbGVuZ2UpOgorICAgICAg
ICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29j
b2EubW06IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAqIFNoYXJlZC9T
ZXNzaW9uVHJhY2tlci5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tOiBS
ZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAg
ICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKEFQ
STo6RG93bmxvYWRDbGllbnQ6OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
RG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGll
bnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpzaG91bGREZWNvZGVTb3Vy
Y2VEYXRhT2ZNSU1FVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2hvdWxkRGVjb2Rl
U291cmNlRGF0YU9mTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRh
U3RvcmVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMpOgorICAgICAgICAq
IGNvbmZpZy5oOgorCiAyMDE4LTAxLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIHJlbGVhc2UgbG9nZ2luZyB0byBoZWxwIGRlYnVnIGlzc3VlcyByZWxh
dGVkIHRvIHNlcnZpY2Ugd29ya2VycwpJbmRleDogU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAy
MjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC05Niw3ICs5Niw2IEBAIHNldChXZWJLaXRfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICkK
IAogc2V0KFdlYktpdF9TT1VSQ0VTCi0gICAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JE
b3dubG9hZENsaWVudC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKICAg
ICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcApJbmRleDogU291
cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw2IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbQogCi0gICAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3du
bG9hZE1hYy5tbQotCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJz
Q29jb2EuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29h
Lm1tCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2Eu
bW0KQEAgLTM3LDcgKzM1LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCiAgICAgTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQogCi0gICAgTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtMb2FkTWFjLm1tCiAgICAgTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNz
TWFjLm1tCiAgICAgTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CiAKQEAgLTcyLDggKzY5LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBTaGFy
ZWQvQVBJV2ViQXJjaGl2ZS5tbQogICAgIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0K
IAotICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJD
b2NvYS5tbQotCiAgICAgU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1t
CiAgICAgU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbQogICAgIFNoYXJl
ZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KQEAgLTE0MSw3ICsxMzYsNiBA
QCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNz
TWFjLm1tCiAgICAgU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQogICAgIFNoYXJlZC9tYWMvQ29s
b3JTcGFjZURhdGEubW0KLSAgICBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCiAgICAg
U2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwCiAgICAgU2hhcmVkL21hYy9I
YW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0KICAgICBTaGFyZWQvbWFjL05hdGl2ZVdlYkdlc3R1
cmVFdmVudE1hYy5tbQpJbmRleDogU291cmNlL1dlYktpdC9jb25maWcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2NvbmZpZy5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2Vi
S2l0L2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMCArNzksNiBAQAogI2VuZGlmCiAK
ICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTIwMCkgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShBUFBMRVRWKSB8fCBQTEFURk9S
TShXQVRDSE9TKSB8fCBVU0UoU09VUCkKLSNpZm5kZWYgVVNFX05FVFdPUktfU0VTU0lPTgotI2Rl
ZmluZSBVU0VfTkVUV09SS19TRVNTSU9OIDEKLSNlbmRpZgotCiAjaWZuZGVmIEVOQUJMRV9CRUFD
T05fQVBJCiAjZGVmaW5lIEVOQUJMRV9CRUFDT05fQVBJIDEKICNlbmRpZgpAQCAtOTMsNyArODks
NyBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmICgoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkg
fHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKSkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQogI2lmbmRlZiBFTkFCTEVfU0VSVkVSX1BSRUNPTk5F
Q1QKICNkZWZpbmUgRU5BQkxFX1NFUlZFUl9QUkVDT05ORUNUIDEKICNlbmRpZgpAQCAtMTEyLDcg
KzEwOCw3IEBACiAjZW5kaWYKIAogI2lmbmRlZiBFTkFCTEVfTkVUV09SS19DQVBUVVJFCi0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikgJiYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAjZGVmaW5lIEVOQUJMRV9ORVRXT1JLX0NBUFRVUkUgMQogI2VuZGlmCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgogCi0jaWYgVVNFKE5FVFdPUktfU0VT
U0lPTikKLQogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKQEAgLTEzMyw1ICsx
MzEsMyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6Y2Fubm90CiB9CiAKIH0g
Ly8gTmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCi0KICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgpAQCAtNzUsNSArNzMsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrU29ja2V0U3RyZWFtLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1NvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRl
ICJQcmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKQEAgLTU3LDEwICs1OCw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+
CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotI2luY2x1ZGUgIlBpbmdMb2FkLmgiCi0jZW5k
aWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MjQzLDE2ICsyNDAsOCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2Fk
CiAgICAgICAgIGRpZEZpbmlzaFBpbmdMb2FkKGlkZW50aWZpZXIsIGVycm9yLCByZXNwb25zZSk7
CiAgICAgfTsKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgLy8gUGluZ0xvYWQgbWFu
YWdlcyBpdHMgb3duIGxpZmV0aW1lLCBkZWxldGluZyBpdHNlbGYgd2hlbiBpdHMgcHVycG9zZSBo
YXMgYmVlbiBmdWxmaWxsZWQuCiAgICAgbmV3IFBpbmdMb2FkKFdURk1vdmUobG9hZFBhcmFtZXRl
cnMpLCBXVEZNb3ZlKG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShvcmlnaW5hbFJlcXVlc3RIZWFkZXJz
KTsKLSAgICBhdXRvIGNvbnRleHQgPSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGxv
YWRQYXJhbWV0ZXJzLnNlc3Npb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7Ci0KLSAgICAvLyBQaW5nSGFuZGxlIG1hbmFnZXMgaXRz
IG93biBsaWZldGltZSwgZGVsZXRpbmcgaXRzZWxmIHdoZW4gaXRzIHB1cnBvc2UgaGFzIGJlZW4g
ZnVsZmlsbGVkLgotICAgIG5ldyBQaW5nSGFuZGxlKGNvbnRleHQucHRyKCksIGxvYWRQYXJhbWV0
ZXJzLnJlcXVlc3QsIGxvYWRQYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1Jl
ZGlyZWN0cywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotI2VuZGlmCiB9CiAKIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90
IHBpbmdMb2FkSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAkocmV2aXNpb24gMjI3MjMyKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0RhdGFUYXNrLmgiCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVkZSAi
TmV0d29ya0RhdGFUYXNrQmxvYi5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCkBAIC0xNDAsNSArMTM4LDMgQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2s6OmZhaWx1cmVUaW1lckZpcmVkKAogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHJldmlzaW9uIDIyNzIz
MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KQEAgLTE2
MCw1ICsxNTgsMyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAJKHJldmlzaW9uIDIy
NzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2tCbG9iLmgiCiAKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNTg0LDUgKzU4MiwzIEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNoKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgJKHJldmlzaW9uIDIyNzIz
MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKLQogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN0cmVhbUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgpAQCAtMTIwLDUgKzExOCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMjI3
MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLQogc3RydWN0
IE5ldHdvcmtMb2FkOjpUaHJvdHRsZSB7CiAgICAgVGhyb3R0bGUoTmV0d29ya0xvYWQmIGxvYWQs
IFNlY29uZHMgZGVsYXksIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiAgICAgICAgIDogdGltZXIobG9hZCwgJk5ldHdvcmtM
b2FkOjp0aHJvdHRsZURlbGF5Q29tcGxldGVkKQpAQCAtMTE3LDI1ICsxMTUsMTEgQEAgdm9pZCBO
ZXR3b3JrTG9hZDo6aW5pdGlhbGl6ZShOZXR3b3JrU2VzcwogICAgICAgICBtX3Rhc2stPnJlc3Vt
ZSgpOwogfQogCi0jZWxzZQotCi1OZXR3b3JrTG9hZDo6TmV0d29ya0xvYWQoTmV0d29ya0xvYWRD
bGllbnQmIGNsaWVudCwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKLSAgICA6
IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMp
KQotICAgICwgbV9uZXR3b3JraW5nQ29udGV4dChSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3Jl
YXRlKG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KSkKLSAgICAsIG1fY3VycmVudFJlcXVlc3QobV9wYXJh
bWV0ZXJzLnJlcXVlc3QpCi17Ci0gICAgbV9oYW5kbGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRl
KG1fbmV0d29ya2luZ0NvbnRleHQuZ2V0KCksIG1fcGFyYW1ldGVycy5yZXF1ZXN0LCB0aGlzLCBt
X3BhcmFtZXRlcnMuZGVmZXJzTG9hZGluZywgbV9wYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1Bv
bGljeSA9PSBTbmlmZkNvbnRlbnQsIG1fcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmlu
Z1BvbGljeSA9PSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwotfQotCi0j
ZW5kaWYKLQogTmV0d29ya0xvYWQ6On5OZXR3b3JrTG9hZCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICBpZiAobV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKQogICAg
ICAgICBtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQogICAgIGlmIChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIG1f
cmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAjaWYgVVNF
KFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKQEAgLTE0NCwxOSArMTI4LDEwIEBAIE5l
dHdvcmtMb2FkOjp+TmV0d29ya0xvYWQoKQogI2VuZGlmCiAgICAgaWYgKG1fdGFzaykKICAgICAg
ICAgbV90YXNrLT5jbGVhckNsaWVudCgpOwotI2Vsc2UKLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFD
RV9BVVRIX0NBTExCQUNLKQotICAgIGlmIChtX2hhbmRsZSAmJiBtX3dhaXRpbmdGb3JDb250aW51
ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpCi0gICAgICAgIG1faGFuZGxl
LT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZmFsc2UpOwot
I2VuZGlmCi0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBtX2hhbmRsZS0+Y2xlYXJDbGllbnQo
KTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wg
ZGVmZXJzKQogewotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKG1fdGFzaykgewog
ICAgICAgICBpZiAoZGVmZXJzKQogICAgICAgICAgICAgbV90YXNrLT5zdXNwZW5kKCk7CkBAIC0x
NjgsMjEgKzE0MywxMiBAQCB2b2lkIE5ldHdvcmtMb2FkOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wg
CiAjZW5kaWYKICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0gICAgaWYgKG1faGFuZGxlKQotICAg
ICAgICBtX2hhbmRsZS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOwotI2VuZGlmCiB9CiAKIHZv
aWQgTmV0d29ya0xvYWQ6OmNhbmNlbCgpCiB7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAg
ICBpZiAobV90YXNrKQogICAgICAgICBtX3Rhc2stPmNhbmNlbCgpOwotI2Vsc2UKLSAgICBpZiAo
bV9oYW5kbGUpCi0gICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKLSNlbmRpZgogfQogCiB2b2lk
IE5ldHdvcmtMb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiBuZXdSZXF1ZXN0KQpAQCAtMTk5LDcgKzE2NSw2IEBAIHZvaWQgTmV0d29ya0xvYWQ6
OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXMKICAgICAgICAgbV9yZWNvcmRlci0+cmVjb3JkUmVkaXJl
Y3RTZW50KG5ld1JlcXVlc3QpOwogI2VuZGlmCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQog
ICAgIGF1dG8gcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9yZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKICAgICBBU1NFUlQocmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlcik7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QuaXNOdWxsKCkpIHsKQEAg
LTIxMiwzOSArMTc3LDIwIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXMKIAogICAgIGlmIChyZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICByZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyKFJlc291cmNlUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0KSk7Ci0j
ZWxzZQotICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmICht
X2hhbmRsZSkKLSAgICAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKLSAgICAgICAgZGlkRmFp
bChtX2hhbmRsZS5nZXQoKSwgY2FuY2VsbGVkRXJyb3IobV9jdXJyZW50UmVxdWVzdCkpOwotICAg
IH0gZWxzZSBpZiAobV9oYW5kbGUpIHsKLSAgICAgICAgYXV0byBjdXJyZW50UmVxdWVzdENvcHkg
PSBtX2N1cnJlbnRSZXF1ZXN0OwotICAgICAgICBhdXRvIHJlZGlyZWN0Q29tcGxldGlvbkhhbmRs
ZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7
Ci0gICAgICAgIEFTU0VSVChyZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgcmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGN1cnJlbnRSZXF1ZXN0Q29weSkpOwotICAg
IH0KLSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSgpCiB7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAobV9yZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGF1dG8gcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsK
ICAgICAgICAgcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiAg
ICAgfQotI2Vsc2UKLSAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgIG1faGFuZGxlLT5jb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZSgpOwotI2VuZGlmCiB9CiAKLSNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQogYm9vbCBOZXR3b3JrTG9hZDo6c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQuZ2V0KCkuc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCk7CiB9Ci0jZW5kaWYKIAogTmV0d29ya0xvYWRDbGllbnQ6
OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIE5ldHdvcmtMb2FkOjpzaGFyZWREaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogewpAQCAtMjc2LDgg
KzIyMiw2IEBAIGJvb2wgTmV0d29ya0xvYWQ6OmlzQWxsb3dlZFRvQXNrVXNlckZvckMKICAgICBy
ZXR1cm4gbV9jbGllbnQuZ2V0KCkuaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKTsK
IH0KIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0KIHZvaWQgTmV0d29ya0xvYWQ6OmNvbnZl
cnRUYXNrVG9Eb3dubG9hZChQZW5kaW5nRG93bmxvYWQmIHBlbmRpbmdEb3dubG9hZCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiB1cGRhdGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgaWYgKCFtX3Rhc2spCkBAIC00NTUsMTI4ICszOTksNCBAQCB2b2lk
IE5ldHdvcmtMb2FkOjpjYW5ub3RTaG93VVJMKCkKICAgICBtX2NsaWVudC5nZXQoKS5kaWRGYWls
TG9hZGluZyhjYW5ub3RTaG93VVJMRXJyb3IobV9jdXJyZW50UmVxdWVzdCkpOwogfQogCi0jZWxz
ZQotCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSkKLXsKLSAg
ICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLSAgICBpZiAoc2hh
cmVkRGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZSkpID09IE5ldHdv
cmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzKQotICAg
ICAgICBtX2hhbmRsZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKLX0KLQotdm9pZCBO
ZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiAv
KiBkYXRhICovLCB1bnNpZ25lZCAvKiBsZW5ndGggKi8sIGludCAvKiBlbmNvZGVkRGF0YUxlbmd0
aCAqLykKLXsKLSAgICAvLyBUaGUgTmV0d29ya1Byb2Nlc3Mgc2hvdWxkIG5ldmVyIGdldCBhIGRp
ZFJlY2VpdmVEYXRhIGNhbGxiYWNrLgotICAgIC8vIFdlIHNob3VsZCBhbHdheXMgYmUgdXNpbmcg
ZGlkUmVjZWl2ZUJ1ZmZlci4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBO
ZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCi17
Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgbV9j
bGllbnQuZ2V0KCkuZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpOwotfQotCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhh
bmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsK
LSAgICBtX2NsaWVudC5nZXQoKS5kaWRGaW5pc2hMb2FkaW5nKGVtcHR5TWV0cmljcyk7Ci19Ci0K
LXZvaWQgTmV0d29ya0xvYWQ6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsICFoYW5k
bGUgfHwgaGFuZGxlID09IG1faGFuZGxlKTsKLSAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpKTsK
LQotICAgIG1fY2xpZW50LmdldCgpLmRpZEZhaWxMb2FkaW5nKGVycm9yKTsKLX0KLQotdm9pZCBO
ZXR3b3JrTG9hZDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVCghbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
KTsKLSAgICBtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsK
LSAgICBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUocmVkaXJlY3RSZXNwb25zZSkpOwotfQotCi0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0Vf
QVVUSF9DQUxMQkFDSykKLXZvaWQgTmV0d29ya0xvYWQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBQcm90ZWN0
aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwotCi0g
ICAgLy8gSGFuZGxlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uIGF0IHBsYXRmb3JtLWxldmVsIGlm
IHJlcXVlc3RlZCwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCi0gICAgaWYgKHByb3RlY3Rpb25T
cGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0
aW9uU2NoZW1lU2VydmVyVHJ1c3RFdmFsdWF0aW9uUmVxdWVzdGVkCi0gICAgICAgICYmICFOZXR3
b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRp
b24oKSkgewotICAgICAgICBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV93YWl0aW5nRm9y
Q29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlID0gdHJ1ZTsKLSAg
ICBtX2NsaWVudC5nZXQoKS5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5
bmMocHJvdGVjdGlvblNwYWNlKTsKLX0KLQotdm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgcmVzdWx0KQotewotICAgIG1f
d2FpdGluZ0ZvckNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSA9
IGZhbHNlOwotICAgIGlmIChtX2hhbmRsZSkKLSAgICAgICAgbV9oYW5kbGUtPmNvbnRpbnVlQ2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShyZXN1bHQpOwotfQotI2VuZGlmCi0K
LXZvaWQgTmV0d29ya0xvYWQ6OmRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
VG9CZVNlbnQpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRs
ZSk7Ci0KLSAgICBtX2NsaWVudC5nZXQoKS5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0
ZXNUb0JlU2VudCk7Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6Ondhc0Jsb2NrZWQoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1f
aGFuZGxlKTsKLQotICAgIGRpZEZhaWwoaGFuZGxlLCBXZWJLaXQ6OmJsb2NrZWRFcnJvcihtX2N1
cnJlbnRSZXF1ZXN0KSk7Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OmNhbm5vdFNob3dVUkwoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxl
ID09IG1faGFuZGxlKTsKLQotICAgIGRpZEZhaWwoaGFuZGxlLCBXZWJLaXQ6OmNhbm5vdFNob3dV
UkxFcnJvcihtX2N1cnJlbnRSZXF1ZXN0KSk7Ci19Ci0KLWJvb2wgTmV0d29ya0xvYWQ6OnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCi17Ci0gICAgQVNT
RVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSB8fCAhbV9oYW5kbGUpOyAvLyBt
X2hhbmRsZSB3aWxsIGJlIDAgaWYgY2FsbGVkIGZyb20gUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCku
Ci0KLSAgICAvLyBXaGVuIHRoZSBXZWJQcm9jZXNzIGlzIGhhbmRsaW5nIGxvYWRpbmcgYSBjbGll
bnQgaXMgY29uc3VsdGVkIGVhY2ggdGltZSB0aGlzIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
IHF1ZXN0aW9uIGlzIGFza2VkLgotICAgIC8vIEluIE5ldHdvcmtQcm9jZXNzIG1vZGUgd2UgYXNr
IHRoZSBXZWJQcm9jZXNzIGNsaWVudCB1cCBmcm9udCBvbmNlIGFuZCB0aGVuIHJldXNlIHRoZSBj
YWNoZWQgYW5zd2VyLgotCi0gICAgLy8gV2Ugc3RpbGwgbmVlZCB0aGlzIHN5bmMgdmVyc2lvbiwg
YmVjYXVzZSBSZXNvdXJjZUhhbmRsZSBpdHNlbGYgdXNlcyBpdCBpbnRlcm5hbGx5LCBldmVuIHdo
ZW4gdGhlIGRlbGVnYXRlIHVzZXMgYW4gYXN5bmMgb25lLgotCi0gICAgcmV0dXJuIG1fcGFyYW1l
dGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
VXNlOwotfQotCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNoYWxsZW5nZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1f
aGFuZGxlKTsKLQotICAgIGlmICghaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSkg
ewotICAgICAgICBjaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKS0+cmVjZWl2ZWRSZXF1
ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5nZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuYXV0aGVudGljYXRp
b25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBjaGFsbGVuZ2UpOwotfQotCi12
b2lkIE5ldHdvcmtMb2FkOjpyZWNlaXZlZENhbmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAgQVNTRVJUX1VOVVNF
RChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0KLSAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7
Ci0gICAgZGlkRmFpbChtX2hhbmRsZS5nZXQoKSwgY2FuY2VsbGVkRXJyb3IobV9jdXJyZW50UmVx
dWVzdCkpOwotfQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCi0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxOSArMjUsMTYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJEb3dubG9hZElELmgiCisjaW5jbHVkZSAiTmV0d29ya0RhdGFU
YXNrLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJOZXR3b3Jr
TG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQotI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKLSNpbmNsdWRlICJOZXR3b3JrRGF0YVRh
c2suaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShORVRXT1JLX0NBUFRVUkUpCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1
cmVSZWNvcmRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYXB0dXJlUmVwbGF5ZXIuaCIKQEAgLTQ1
LDIwICs0MiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTmV0d29ya0xvYWQg
ZmluYWwgOgotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgcHJpdmF0ZSBOZXR3b3JrRGF0
YVRhc2tDbGllbnQKLSNlbHNlCi0gICAgcHJpdmF0ZSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNs
aWVudAotI2VuZGlmCitjbGFzcyBOZXR3b3JrTG9hZCBmaW5hbCA6IHByaXZhdGUgTmV0d29ya0Rh
dGFUYXNrQ2xpZW50CiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0j
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBOZXR3b3JrTG9hZChOZXR3b3JrTG9hZENsaWVu
dCYsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmLCBOZXR3b3JrU2Vzc2lvbiYpOwotI2Vsc2UKLSAg
ICBOZXR3b3JrTG9hZChOZXR3b3JrTG9hZENsaWVudCYsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYm
KTsKLSNlbmRpZgogICAgIH5OZXR3b3JrTG9hZCgpOwogCiAgICAgdm9pZCBzZXREZWZlcnNMb2Fk
aW5nKGJvb2wpOwpAQCAtNzQsNyArNjIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCBjb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAg
ICB2b2lkIGNvbnZlcnRUYXNrVG9Eb3dubG9hZChQZW5kaW5nRG93bmxvYWQmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCBzZXRQZW5kaW5nRG93bmxvYWRJRChEb3dubG9hZElEKTsKICAgICB2b2lkIHNl
dFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwpAQCAtODIsNDkgKzY5LDIxIEBAIHB1
YmxpYzoKICAgICBEb3dubG9hZElEIHBlbmRpbmdEb3dubG9hZElEKCkgeyByZXR1cm4gbV90YXNr
LT5wZW5kaW5nRG93bmxvYWRJRCgpOyB9CiAKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IGZpbmFsOwotI2Vsc2UKLSAgICBXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSogaGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KLQot
I2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdm9pZCBjYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlkZTsKLSNlbmRpZgot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgb3ZlcnJpZGU7Ci0j
ZW5kaWYKLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQogCiAjaWYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKICNlbmRpZgogCiBwcml2YXRlOgotI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FQVFVSRSkKICAgICB2b2lk
IGluaXRpYWxpemVGb3JSZWNvcmQoTmV0d29ya1Nlc3Npb24mKTsKICAgICB2b2lkIGluaXRpYWxp
emVGb3JSZXBsYXkoTmV0d29ya1Nlc3Npb24mKTsKICNlbmRpZgogICAgIHZvaWQgaW5pdGlhbGl6
ZShOZXR3b3JrU2Vzc2lvbiYpOwotI2VuZGlmCiAKICAgICBOZXR3b3JrTG9hZENsaWVudDo6U2hv
dWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ugc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBzaGFyZWRXaWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYpOwogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgLy8gUmVzb3Vy
Y2VIYW5kbGVDbGllbnQKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkaWRTZW5kRGF0
YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSopIGZpbmFsOwotICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKLSAg
ICB2b2lkIHdhc0Jsb2NrZWQoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbDsKLSAgICB2
b2lkIGNhbm5vdFNob3dVUkwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbDsKLSAgICBi
b29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpIGZpbmFsOwotICAgIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIGZpbmFs
OwotICAgIGJvb2wgbG9hZGluZ1N5bmNocm9ub3VzWEhSKCkgZmluYWwgeyByZXR1cm4gbV9jbGll
bnQuZ2V0KCkuaXNTeW5jaHJvbm91cygpOyB9Ci0jZWxzZQogICAgIC8vIE5ldHdvcmtEYXRhVGFz
a0NsaWVudAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKQEAgLTEzOSwxMiArOTgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHRocm90dGxlRGVsYXlDb21wbGV0ZWQoKTsKIAogICAgIHZvaWQgY29tcGxldGVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSNlbmRpZgogCiAg
ICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxOZXR3b3JrTG9hZENsaWVudD4gbV9jbGllbnQ7CiAg
ICAgY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKICAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4gbV9yZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgUmVmUHRyPE5l
dHdvcmtEYXRhVGFzaz4gbV90YXNrOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U+IG1fY2hhbGxlbmdlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNF
X0FVVEhfQ0FMTEJBQ0spCkBAIC0xNTQsMTEgKzExMSw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAg
c3RydWN0IFRocm90dGxlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJvdHRsZT4gbV90aHJvdHRs
ZTsKLSNlbHNlCi0gICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dD4gbV9uZXR3b3JraW5nQ29udGV4dDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU+IG1faGFuZGxlOwotI2VuZGlmCiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgbV9jdXJyZW50UmVxdWVzdDsgLy8gVXBkYXRlZCBvbiByZWRpcmVjdHMuCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFt
ZXRlcnMuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0
d29ya0xvYWRQYXJhbWV0ZXJzX2gKLSNkZWZpbmUgTmV0d29ya0xvYWRQYXJhbWV0ZXJzX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oPgpAQCAtNDksMTIgKzQ4
LDggQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCB7IHRydWUgfTsKICAgICBib29sIGRlZmVyc0xvYWRpbmcgeyBmYWxzZSB9OwogICAg
IGJvb2wgbmVlZHNDZXJ0aWZpY2F0ZUluZm8geyBmYWxzZSB9OwotI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
PiBibG9iRmlsZVJlZmVyZW5jZXM7Ci0jZW5kaWYKICAgICBQcmVjb25uZWN0T25seSBzaG91bGRQ
cmVjb25uZWN0T25seSB7IFByZWNvbm5lY3RPbmx5OjpObyB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBOZXR3b3JrTG9hZFBhcmFtZXRlcnNfaApJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsMTIgKzI1MiwxMCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjppbml0aWFsaXplTmV0d29ya1ByCiAgICAgbV9sb2dDb29raWVJbmZvcm1hdGlvbiA9
IHBhcmFtZXRlcnMubG9nQ29va2llSW5mb3JtYXRpb247CiAjZW5kaWYKIAotI2lmIFVTRShORVRX
T1JLX1NFU1NJT04pCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikK
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHRTZXNzaW9uUGFyYW1ldGVycy5sZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIgPSBzdXBwbGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKTsK
ICNlbmRpZgogICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCksIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0
ZXJzLmRlZmF1bHRTZXNzaW9uUGFyYW1ldGVycykpKTsKLSNlbmRpZgogCiAgICAgZm9yIChhdXRv
JiBzdXBwbGVtZW50IDogbV9zdXBwbGVtZW50cy52YWx1ZXMoKSkKICAgICAgICAgc3VwcGxlbWVu
dC0+aW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKQEAgLTMwMCwxMiArMjk4LDEwIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWMKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNs
ZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQogewogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxz
KCk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSkpCiAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckNyZWRlbnRpYWxz
KCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKQEAgLTU5Myw3ICs1ODksNiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjb250aW51ZUNhbkF1dGhlbnRpCiAKICNlbmRpZgogCi0jaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KERvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCkKIHsKICAgICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChkb3du
bG9hZElELCBXVEZNb3ZlKHJlcXVlc3QpKTsKQEAgLTYxOCw3ICs2MTMsNiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpmaW5kUGVuZGluZ0Rvd25sb2FkCiAKICAgICBkb3dubG9hZFByb3h5Q29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKG5ldHdvcmtEYXRhVGFzay5wZW5kaW5nRG93bmxvYWRJ
RCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSksIGRlc3RpbmF0aW9uSUQpOwogfQotI2VuZGlmCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRp
b24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3Jp
dGUpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw5ICsxMTksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbGVhckhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKTsKICNlbmRpZgogCi0jaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKICAgICB2b2lkIGZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0
YVRhc2smLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKLSNlbmRpZgogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9D
QUxMQkFDSykKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
TmV0d29ya1Jlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJik7
CkBAIC0xODQsOSArMTgyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlc3Ryb3lEb3dubG9h
ZCgpIG92ZXJyaWRlOwogICAgIElQQzo6Q29ubmVjdGlvbiogZG93bmxvYWRQcm94eUNvbm5lY3Rp
b24oKSBvdmVycmlkZTsKICAgICBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhl
bnRpY2F0aW9uTWFuYWdlcigpIG92ZXJyaWRlOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAg
ICAgdm9pZCBwZW5kaW5nRG93bmxvYWRDYW5jZWxlZChEb3dubG9hZElEKSBvdmVycmlkZTsKLSNl
bmRpZgogCiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdv
cmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTIx
MCw5ICsyMDYsNyBAQCBwcml2YXRlOgogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgYm9vbCBjYW5BdXRoZW50aWNh
dGUpOwogI2VuZGlmCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIGNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsK
LSNlbmRpZgogICAgIHZvaWQgY29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlv
bihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50
MzJfdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDkgKzQ5LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5
UmVjZWl2ZQogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgQ29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IGxvYWRl
cklELCBib29sIGNhbkF1dGhlbnRpY2F0ZSkKICNlbmRpZgotI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCiAgICAgQ29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQotI2VuZGlmCiAgICAgQ29u
dGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkSUQg
ZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQogCiAg
ICAgU2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIGZsYWcpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiwxNCArMTA2LDYg
QEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogICAgICAgICB9CiAg
ICAgfQogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgaWYgKG9yaWdpbmFsUmVxdWVz
dCgpLnVybCgpLnByb3RvY29sSXNCbG9iKCkpIHsKLSAgICAgICAgQVNTRVJUKCFtX3BhcmFtZXRl
cnMucmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9uKTsKLSAgICAgICAgbV9maWxlUmVmZXJlbmNlcy5h
cHBlbmRWZWN0b3IoTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkuZmlsZXNJbkJsb2Io
Y29ubmVjdGlvbiwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpKTsKLSAgICB9Ci0jZW5kaWYKLQot
CiAgICAgaWYgKHN5bmNocm9ub3VzUmVwbHkpCiAgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNMb2FkRGF0YT4oV1RGTW92ZShzeW5jaHJv
bm91c1JlcGx5KSk7CiB9CkBAIC0yMjksNyArMjIxLDYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnN0YXJ0TmV0d29yawogICAgIHBhcmFtZXRlcnMuZGVmZXJzTG9hZGluZyA9IG1fZGVm
ZXJzTG9hZGluZzsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwogCi0jaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigp
KQogICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IE5ldHdvcmtCbG9iUmVn
aXN0cnk6OnNpbmdsZXRvbigpLmZpbGVzSW5CbG9iKG1fY29ubmVjdGlvbiwgb3JpZ2luYWxSZXF1
ZXN0KCkudXJsKCkpOwogCkBAIC0yNDIsOSArMjMzLDYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnN0YXJ0TmV0d29yawogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbmV0d29y
a0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKLSNlbHNlCi0gICAgbV9uZXR3b3JrTG9hZCA9IHN0
ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
LSNlbmRpZgogCiAgICAgaWYgKG1fZGVmZXJzTG9hZGluZykgewogICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBDcmVhdGVkLCBidXQgZGVmZXJyZWQgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIK
IAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0KICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2su
aCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CkBAIC04Nyw1ICs4NSwzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb246
OmFsbG93c1NwZWNpZmljSFRUUFMKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikK
LQogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTY3LDUgKzY1LDMgQEAgcHJvdGVjdGVkOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJldmlzaW9u
IDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUGluZ0xvYWQuaCIKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0KICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgiCkBAIC0zMzAsNSArMzI4LDMgQEAgQ29u
dGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMgUGluZ0xvYQogI2VuZGlmIC8vIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
VVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0KICNpbmNsdWRlICJOZXR3b3JrRGF0
YVRhc2suaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmg+CkBAIC05OCw1ICs5Niwz
IEBAIHByaXZhdGU6CiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJ
KHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9t
UHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0TG9hZGluZyh1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2
b2lkIHN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpICYmIFVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCByZWdpc3RlclByb3RvY29sQ2xhc3MoTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiop
OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29h
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCShyZXZpc2lvbiAyMjcyMzIpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA3LDE3
ICsxMDcsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpyZWdpc3RlclByb3RvY29sQ2xhc3MoKQogewotI2lmICFVU0UoTkVUV09SS19T
RVNTSU9OKQotICAgIFtOU1VSTFByb3RvY29sIHJlZ2lzdGVyQ2xhc3M6W1dLQ3VzdG9tUHJvdG9j
b2wgY2xhc3NdXTsKLSNlbmRpZgogfQogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIHZvaWQg
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclByb3RvY29sQ2xhc3MoTlNVUkxT
ZXNzaW9uQ29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikKIHsKICAgICBjb25maWd1cmF0aW9u
LnByb3RvY29sQ2xhc3NlcyA9IEBbW1dLQ3VzdG9tUHJvdG9jb2wgY2xhc3NdXTsKIH0KLSNlbmRp
ZgogCiB2b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUoY29u
c3QgU3RyaW5nJiBzY2hlbWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAJKHJl
dmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Jsb2JEb3dubG9hZENsaWVudC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMjAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJCbG9iRG93bmxvYWRD
bGllbnQuaCIKLQotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgotI2luY2x1ZGUgIkRvd25sb2FkLmgiCi0jaW5jbHVkZSAiV2ViRXJyb3JzLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCi1CbG9iRG93bmxvYWRDbGllbnQ6OkJsb2JEb3dubG9hZENsaWVudChEb3dubG9h
ZCYgZG93bmxvYWQpCi0gICAgOiBtX2Rvd25sb2FkKGRvd25sb2FkKQotewotfQotCi12b2lkIEJs
b2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUq
LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCi17Ci0gICAgbV9kb3dubG9hZC5kaWRSZWNl
aXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOwotICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeSht
X2Rvd25sb2FkLnN1Z2dlc3RlZE5hbWUoKS5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoInVua25v
d24iKSA6IG1fZG93bmxvYWQuc3VnZ2VzdGVkTmFtZSgpLCByZXNwb25zZS5taW1lVHlwZSgpKTsK
LSAgICBtX2Rvd25sb2FkLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5
bmMoc3VnZ2VzdGVkRmlsZW5hbWUpOwotfQotCi12b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlk
RGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwg
Ym9vbCBhbGxvd092ZXJ3cml0ZSkKLXsKLSAgICBBU1NFUlQoIWRlc3RpbmF0aW9uUGF0aC5pc0Vt
cHR5KCkpOwotCi0gICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGVzdGluYXRpb25QYXRo
KSkgewotICAgICAgICBpZiAoIWFsbG93T3ZlcndyaXRlKSB7Ci0gICAgICAgICAgICBkaWRGYWls
KG51bGxwdHIsIGNhbmNlbGxlZEVycm9yKG1fZG93bmxvYWQucmVxdWVzdCgpKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShk
ZXN0aW5hdGlvblBhdGgpOwotICAgIH0KLQotICAgIG1fZGVzdGluYXRpb25QYXRoID0gZGVzdGlu
YXRpb25QYXRoOwotICAgIG1fZGVzdGluYXRpb25GaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
bV9kZXN0aW5hdGlvblBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwotICAg
IG1fZG93bmxvYWQuZGlkQ3JlYXRlRGVzdGluYXRpb24obV9kZXN0aW5hdGlvblBhdGgpOwotCi0g
ICAgbV9kb3dubG9hZC5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwotfQotCi12b2lkIEJs
b2JEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOwotfQotCi0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykK
LXZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKQotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotI2VuZGlmCi0KLXZvaWQgQmxvYkRvd25sb2Fk
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCkKLXsKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rlc3Rp
bmF0aW9uRmlsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2Rvd25s
b2FkLmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci0+c2l6ZSgpKTsKLX0KLQotdm9pZCBCbG9iRG93bmxv
YWRDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqKQotewotICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7Ci0gICAgbV9kb3dubG9hZC5kaWRG
aW5pc2goKTsKLX0KLQotdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbCgpCi17Ci0g
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZGVzdGluYXRpb25GaWxlKTsKLSAgICBpZiAoIW1f
ZGVzdGluYXRpb25QYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShtX2Rlc3RpbmF0aW9uUGF0aCk7Ci0KLSAgICBtX2Rvd25sb2FkLmRpZENhbmNlbChJUEM6OkRh
dGFSZWZlcmVuY2UoKSk7Ci19Ci0KLXZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKG1fZGVzdGluYXRpb25GaWxlKTsKLSAgICBpZiAoIW1fZGVzdGluYXRp
b25QYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Rlc3Rp
bmF0aW9uUGF0aCk7Ci0KLSAgICBtX2Rvd25sb2FkLmRpZEZhaWwoZXJyb3IsIElQQzo6RGF0YVJl
ZmVyZW5jZSgpKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gIVVTRShORVRXT1JLX1NFU1NJT04pCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLQotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBEb3dubG9hZDsKLWNs
YXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVyczsKLQotY2xhc3MgQmxvYkRvd25sb2FkQ2xpZW50IGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50IHsKLXB1YmxpYzoKLSAg
ICBleHBsaWNpdCBCbG9iRG93bmxvYWRDbGllbnQoRG93bmxvYWQmKTsKLQotICAgIHZvaWQgZGlk
Q2FuY2VsKCk7Ci0gICAgdm9pZCBkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25QYXRoLCBib29sIGFsbG93T3ZlcndyaXRlKTsKLQotcHJpdmF0ZToK
LSAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
QXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7Ci0gICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3RBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKLSNpZiBV
U0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIHZvaWQgY2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
Y29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJikgZmluYWw7Ci0jZW5kaWYKLQotICAgIERv
d25sb2FkJiBtX2Rvd25sb2FkOwotICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uUGF0aDsKLSAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kZXN0aW5hdGlvbkZpbGUg
eyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07Ci19Owot
Ci19Ci0KLSNlbmRpZiAvLyAhVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAJKHJldmlz
aW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkRv
d25sb2FkLmgiCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKLSNpbmNsdWRl
ICJCbG9iRG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgpAQCAtNTAs
NyArNDksNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2Fk
TWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtE
YXRhVGFzayYgZG93bmxvYWQsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKICAgICA6IG1fZG93bmxvYWRNYW5hZ2VyKGRvd25sb2Fk
TWFuYWdlcikKICAgICAsIG1fZG93bmxvYWRJRChkb3dubG9hZElEKQpAQCAtNjIsNiArNjAsNyBA
QCBEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3duCiAKICAgICBtX2Rvd25s
b2FkTWFuYWdlci5kaWRDcmVhdGVEb3dubG9hZCgpOwogfQorCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrKiBkb3dubG9hZCwg
Y29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRO
YW1lKQogICAgIDogbV9kb3dubG9hZE1hbmFnZXIoZG93bmxvYWRNYW5hZ2VyKQpAQCAtNzUsOTAg
Kzc0LDIyIEBAIERvd25sb2FkOjpEb3dubG9hZChEb3dubG9hZE1hbmFnZXImIGRvd24KICAgICBt
X2Rvd25sb2FkTWFuYWdlci5kaWRDcmVhdGVEb3dubG9hZCgpOwogfQogI2VuZGlmCi0jZWxzZQot
RG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCBEb3du
bG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWROYW1lKQotICAgIDogbV9kb3dubG9hZE1hbmFnZXIoZG93bmxvYWRN
YW5hZ2VyKQotICAgICwgbV9kb3dubG9hZElEKGRvd25sb2FkSUQpCi0gICAgLCBtX3JlcXVlc3Qo
cmVxdWVzdCkKLSAgICAsIG1fc3VnZ2VzdGVkTmFtZShzdWdnZXN0ZWROYW1lKQotewotICAgIEFT
U0VSVChtX2Rvd25sb2FkSUQuZG93bmxvYWRJRCgpKTsKLQotICAgIG1fZG93bmxvYWRNYW5hZ2Vy
LmRpZENyZWF0ZURvd25sb2FkKCk7Ci19Ci0jZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikK
IAogRG93bmxvYWQ6On5Eb3dubG9hZCgpCiB7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0g
ICAgZm9yIChhdXRvJiBmaWxlUmVmZXJlbmNlIDogbV9ibG9iRmlsZVJlZmVyZW5jZXMpCi0gICAg
ICAgIGZpbGVSZWZlcmVuY2UtPnJldm9rZUZpbGVBY2Nlc3MoKTsKLQotICAgIGlmIChtX3Jlc291
cmNlSGFuZGxlKSB7Ci0gICAgICAgIG1fcmVzb3VyY2VIYW5kbGUtPmNsZWFyQ2xpZW50KCk7Ci0g
ICAgICAgIG1fcmVzb3VyY2VIYW5kbGUtPmNhbmNlbCgpOwotICAgICAgICBtX3Jlc291cmNlSGFu
ZGxlID0gbnVsbHB0cjsKLSAgICB9Ci0gICAgbV9kb3dubG9hZENsaWVudCA9IG51bGxwdHI7Ci0K
LSAgICBwbGF0Zm9ybUludmFsaWRhdGUoKTsKLSNlbmRpZgotCiAgICAgbV9kb3dubG9hZE1hbmFn
ZXIuZGlkRGVzdHJveURvd25sb2FkKCk7CiB9CiAKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikK
LXZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKLXsKLSAgICBpZiAobV9yZXF1ZXN0LnVybCgpLnByb3Rv
Y29sSXNCbG9iKCkpIHsKLSAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8QmxvYkRvd25sb2FkQ2xpZW50PigqdGhpcyk7Ci0gICAgICAgIGJvb2wgZGVmZXJzTG9hZGlu
ZyA9IGZhbHNlOwotICAgICAgICBib29sIHNob3VsZENvbnRlbnRTbmlmZiA9IGZhbHNlOwotICAg
ICAgICBib29sIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmID0gdHJ1ZTsKLSAgICAgICAgbV9y
ZXNvdXJjZUhhbmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUobnVsbHB0ciwgbV9yZXF1ZXN0
LCBtX2Rvd25sb2FkQ2xpZW50LmdldCgpLCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25p
ZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKTsKLSAgICAgICAgZGlkU3RhcnQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN0YXJ0TmV0d29ya0xvYWQoKTsKLX0KLQotdm9p
ZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIGlmIChtX3JlcXVlc3QudXJsKCku
cHJvdG9jb2xJc0Jsb2IoKSkgewotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxCbG9iRG93bmxvYWRDbGllbnQ+KCp0aGlzKTsKLSAgICAgICAgYm9vbCBkZWZlcnNM
b2FkaW5nID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmID0gZmFsc2U7
Ci0gICAgICAgIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYgPSB0cnVlOwotICAgICAg
ICBtX3Jlc291cmNlSGFuZGxlID0gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShudWxscHRyLCBtX3Jl
cXVlc3QsIG1fZG93bmxvYWRDbGllbnQuZ2V0KCksIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRl
bnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpOwotICAgICAgICBkaWRTdGFydCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RhcnROZXR3b3JrTG9hZFdpdGhIYW5k
bGUoaGFuZGxlLCByZXNwb25zZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBEb3dubG9hZDo6Y2FuY2Vs
KCkKIHsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmIChtX2Rvd25sb2FkKSB7CiAg
ICAgICAgIG1fZG93bmxvYWQtPmNhbmNlbCgpOwogICAgICAgICBkaWRDYW5jZWwoeyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSNlbHNlCi0gICAgaWYgKG1fcmVxdWVzdC51cmwoKS5wcm90
b2NvbElzQmxvYigpKSB7Ci0gICAgICAgIGF1dG8gcmVzb3VyY2VIYW5kbGUgPSBXVEZNb3ZlKG1f
cmVzb3VyY2VIYW5kbGUpOwotICAgICAgICByZXNvdXJjZUhhbmRsZS0+Y2FuY2VsKCk7Ci0gICAg
ICAgIHN0YXRpY19jYXN0PEJsb2JEb3dubG9hZENsaWVudCo+KG1fZG93bmxvYWRDbGllbnQuZ2V0
KCkpLT5kaWRDYW5jZWwoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgogICAgIHBs
YXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQoKTsKIH0KIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04p
CiB2b2lkIERvd25sb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKS5pc1Bhc3N3b3JkQmFzZWQoKSAmJiAhY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgp
LmlzRW1wdHkoKSAmJiAhY2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKQEAgLTE2
OCw4MSArOTksNiBAQCB2b2lkIERvd25sb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0CiAK
ICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuYXV0aGVudGljYXRpb25NYW5hZ2VyKCku
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBjaGFsbGVuZ2UsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9O
KQotCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi12b2lkIERvd25sb2FkOjpkaWRTdGFydCgp
Ci17Ci0gICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkU3RhcnQobV9yZXF1ZXN0
LCBtX3N1Z2dlc3RlZE5hbWUpKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6d2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQotewotICAgIHNlbmQo
TWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OldpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlZGlyZWN0
UmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSkpKTsKLX0KLQotdm9pZCBEb3dubG9h
ZDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLXsKLSAgICBtX2Rvd25sb2FkTWFu
YWdlci5kb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKLX0KLQotdm9p
ZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQotewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25z
ZTogQ3JlYXRlZCAoaWQgPSAlIiBQUkl1NjQgIikiLCBkb3dubG9hZElEKCkuZG93bmxvYWRJRCgp
KTsKLQotICAgIG1fcmVzcG9uc2VNSU1FVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7Ci0gICAg
c2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNl
KSk7Ci19Ci0KLWJvb2wgRG93bmxvYWQ6OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgYm9vbCByZXN1bHQ7Ci0gICAgaWYgKCFz
ZW5kU3luYyhNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6U2hvdWxkRGVjb2RlU291cmNlRGF0YU9m
TUlNRVR5cGUobWltZVR5cGUpLCBNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6U2hvdWxkRGVjb2Rl
U291cmNlRGF0YU9mTUlNRVR5cGU6OlJlcGx5KHJlc3VsdCkpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cmluZyBEb3dubG9hZDo6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9v
bCYgYWxsb3dPdmVyd3JpdGUpCi17Ci0gICAgU3RyaW5nIGRlc3RpbmF0aW9uOwotICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghc2Vu
ZFN5bmMoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKGZpbGVuYW1lLCBtX3Jlc3BvbnNlTUlNRVR5cGUpLCBNZXNzYWdlczo6RG93
bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6OlJlcGx5
KGRlc3RpbmF0aW9uLCBhbGxvd092ZXJ3cml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7Ci0g
ICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKLSAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5j
b25zdW1lKCk7Ci0KLSAgICByZXR1cm4gZGVzdGluYXRpb247Ci19Ci0KLXZvaWQgRG93bmxvYWQ6
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5
OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKGRvd25sb2FkSUQo
KSwgc3VnZ2VzdGVkRmlsZW5hbWUpKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRG93
bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3
cml0ZSkKLXsKLSAgICBBU1NFUlQoIW1fc2FuZGJveEV4dGVuc2lvbik7Ci0gICAgbV9zYW5kYm94
RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSkpOwotICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCi0gICAgICAgIG1fc2Fu
ZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwotCi0gICAgaWYgKG1fcmVxdWVzdC51cmwoKS5wcm90
b2NvbElzQmxvYigpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PEJsb2JEb3dubG9hZENsaWVudCo+
KG1fZG93bmxvYWRDbGllbnQuZ2V0KCkpLT5kaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGRl
c3RpbmF0aW9uUGF0aCwgYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgLy8gRm9yIG5vdywgb25seSBCbG9iIFVSTCBkb3dubG9hZHMgZ28gdGhyb3VnaCB0aGlz
IGNvZGUgcGF0aC4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBEb3dubG9h
ZDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQotewotICAgIG1fcmVzb3VyY2VIYW5kbGUt
PmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7Ci19Ci0jZW5kaWYKIAogdm9pZCBEb3dubG9h
ZDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewpAQCAtMjYzLDEw
ICsxMTksNiBAQCB2b2lkIERvd25sb2FkOjpkaWRGaW5pc2goKQogewogICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZEZpbmlzaDogKGlkID0gJSIgUFJJdTY0ICIpIiwgZG93bmxvYWRJRCgp
LmRvd25sb2FkSUQoKSk7CiAKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBwbGF0Zm9y
bURpZEZpbmlzaCgpOwotI2VuZGlmCi0KICAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5
OjpEaWRGaW5pc2goKSk7CiAKICAgICBpZiAobV9zYW5kYm94RXh0ZW5zaW9uKSB7CkBAIC0zMTYs
NyArMTY4LDcgQEAgdWludDY0X3QgRG93bmxvYWQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdAogCiBi
b29sIERvd25sb2FkOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAogewotI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pICYmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHJldHVybiBtX3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKICNl
bHNlCiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw5IEBACiAKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVxdWVzdC5oPgpAQCAtMzYsMTggKzM4LDkgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQotI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xB
U1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlmCi0jZWxzZSAvLyBVU0UoTkVUV09S
S19TRVNTSU9OKQotI2lmIFBMQVRGT1JNKENPQ09BKQotT0JKQ19DTEFTUyBOU1VSTERvd25sb2Fk
OwotT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsKLSNlbmRpZgotI2VuZGlmIC8vIFVT
RShORVRXT1JLX1NFU1NJT04pCiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKQEAgLTczLDQ1ICs2NiwyMSBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgRG93bmxvYWQgOiBw
dWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb3du
bG9hZCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCiAgICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwgTmV0
d29ya0RhdGFUYXNrJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwgTlNVUkxTZXNzaW9uRG93bmxv
YWRUYXNrKiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7CiAjZW5kaWYKLSNlbHNlCi0gICAgRG93bmxvYWQoRG93
bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7Ci0jZW5kaWYKIAogICAg
IH5Eb3dubG9hZCgpOwogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgdm9pZCBzZXRC
bG9iRmlsZVJlZmVyZW5jZXMoVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiYmIGZpbGVSZWZlcmVuY2VzKSB7IG1fYmxvYkZpbGVSZWZlcmVuY2VzID0gV1RGTW92
ZShmaWxlUmVmZXJlbmNlcyk7IH0KLQotICAgIHZvaWQgc3RhcnQoKTsKLSAgICB2b2lkIHN0YXJ0
V2l0aEhhbmRsZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKLSNlbmRpZgogICAgIHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIERvd25sb2FkSUQgZG93bmxv
YWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQogICAgIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VnZ2VzdGVkTmFtZTsgfQogCi0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIHNldFNhbmRib3hFeHRlbnNpb24oUmVmUHRy
PFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikgeyBtX3NhbmRib3hFeHRlbnNp
b24gPSBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXImJik7Ci0jZWxzZQotICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQotICAgIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAgdm9pZCBkaWRTdGFydCgpOwotICAgIHZvaWQgd2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VE
YXRhT2ZNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLSAgICBTdHJpbmcgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Ym9vbCYgYWxsb3dPdmVyd3JpdGUpOwotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWVBc3luYyhjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGRpZERlY2lkZURv
d25sb2FkRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKLSAgICB2b2lkIGNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7Ci0gICAgdm9pZCBwbGF0Zm9ybURpZEZpbmlzaCgpOwot
I2VuZGlmCiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIHBhdGgp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKTsKICAgICB2b2lkIGRp
ZEZpbmlzaCgpOwpAQCAtMTIzLDExICs5Miw2IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJpZGU7CiAKLSNpZiAhVVNFKE5FVFdPUktf
U0VTU0lPTikKLSAgICB2b2lkIHN0YXJ0TmV0d29ya0xvYWQoKTsKLSAgICB2b2lkIHN0YXJ0TmV0
d29ya0xvYWRXaXRoSGFuZGxlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7Ci0j
ZW5kaWYKICAgICB2b2lkIHBsYXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQoKTsKIAogICAgIGJvb2wg
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CkBAIC0xMzgsMjIgKzEwMiwxMSBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNl
Pj4gbV9ibG9iRmlsZVJlZmVyZW5jZXM7CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1f
c2FuZGJveEV4dGVuc2lvbjsKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgUmVmUHRy
PE5ldHdvcmtEYXRhVGFzaz4gbV9kb3dubG9hZDsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBS
ZXRhaW5QdHI8TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrPiBtX2Rvd25sb2FkVGFzazsKICNlbmRp
ZgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwotI2Vsc2UgLy8gVVNFKE5FVFdPUktf
U0VTU0lPTikKLSAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwotICAgIFN0
cmluZyBtX3Jlc3BvbnNlTUlNRVR5cGU7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWlu
UHRyPE5TVVJMRG93bmxvYWQ+IG1fbnNVUkxEb3dubG9hZDsKLSAgICBSZXRhaW5QdHI8V0tEb3du
bG9hZEFzRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0jZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlPiBtX3Jlc291cmNlSGFuZGxlOwotI2VuZGlmIC8v
IFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkTmFtZTsKICAgICBi
b29sIG1faGFzUmVjZWl2ZWREYXRhIHsgZmFsc2UgfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3
LDYgQEAgRG93bmxvYWRNYW5hZ2VyOjpEb3dubG9hZE1hbmFnZXIoQ2xpZW50JgogCiB2b2lkIERv
d25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyogY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25s
b2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWROYW1lKQogewotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgYXV0byogbmV0d29y
a1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKICAg
ICBpZiAoIW5ldHdvcmtTZXNzaW9uKQogICAgICAgICByZXR1cm47CkBAIC02MSwyMiArNjAsOCBA
QCB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZChOZXR3CiAgICAgcGFyYW1ldGVy
cy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OlVzZTsKIAogICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtl
X3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQs
ICpuZXR3b3JrU2Vzc2lvbiwgc3VnZ2VzdGVkTmFtZSkpOwotI2Vsc2UKLSAgICBhdXRvIGRvd25s
b2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIHJlcXVl
c3QsIHN1Z2dlc3RlZE5hbWUpOwotICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9i
KCkgJiYgY29ubmVjdGlvbikgewotICAgICAgICBhdXRvIGJsb2JGaWxlUmVmZXJlbmNlcyA9IE5l
dHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigpLmZpbGVzSW5CbG9iKCpjb25uZWN0aW9uLCBy
ZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBmaWxlUmVmZXJlbmNlIDogYmxvYkZp
bGVSZWZlcmVuY2VzKQotICAgICAgICAgICAgZmlsZVJlZmVyZW5jZS0+cHJlcGFyZUZvckZpbGVB
Y2Nlc3MoKTsKLSAgICAgICAgZG93bmxvYWQtPnNldEJsb2JGaWxlUmVmZXJlbmNlcyhXVEZNb3Zl
KGJsb2JGaWxlUmVmZXJlbmNlcykpOwotICAgIH0KLSAgICBkb3dubG9hZC0+c3RhcnQoKTsKLQot
ICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwotICAgIG1fZG93
bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7Ci0jZW5kaWYKIH0KIAot
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tC
ZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8
RG93bmxvYWQ+JiYgZG93bmxvYWQpCiB7CiAgICAgQVNTRVJUKG1fcGVuZGluZ0Rvd25sb2Fkcy5j
b250YWlucyhkb3dubG9hZElEKSk7CkBAIC0xMDAsMzEgKzg1LDE1IEBAIHZvaWQgRG93bmxvYWRN
YW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0QKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZG93bmxv
YWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uLnNldChkb3dubG9hZElELCBzdGQ6Om1ha2VfcGFpcjxS
ZWZQdHI8TmV0d29ya0RhdGFUYXNrPiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcj4oJm5ldHdv
cmtEYXRhVGFzaywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICBBU1NFUlRfVU5V
U0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQotI2VuZGlmIC8vIFVTRShO
RVRXT1JLX1NFU1NJT04pCiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0TmV0d29ya0xv
YWRUb0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtMb2FkPiYmIG5ldHdvcmtMb2FkLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+JiYgYmxvYkZpbGVSZWZlcmVuY2VzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotI2lmIFVTRShO
RVRXT1JLX1NFU1NJT04pCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdEb3dubG9hZHMuY29udGFpbnMo
ZG93bmxvYWRJRCkpOwogICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KFdURk1vdmUobmV0d29ya0xvYWQpLCBkb3du
bG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOwotI2Vsc2UKLSAgICBhdXRvIGRvd25sb2FkID0g
c3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIHJlcXVlc3QpOwot
ICAgIGRvd25sb2FkLT5zZXRCbG9iRmlsZVJlZmVyZW5jZXMoV1RGTW92ZShibG9iRmlsZVJlZmVy
ZW5jZXMpKTsKLQotICAgIGF1dG8qIGhhbmRsZSA9IG5ldHdvcmtMb2FkLT5oYW5kbGUoKTsKLSAg
ICBBU1NFUlQoaGFuZGxlKTsKLSAgICBkb3dubG9hZC0+c3RhcnRXaXRoSGFuZGxlKGhhbmRsZSwg
cmVzcG9uc2UpOwotICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkp
OwotICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7Ci0K
LSAgICAvLyBVbmJsb2NrIHRoZSBVUkwgY29ubmVjdGlvbiBvcGVyYXRpb24gcXVldWUuCi0gICAg
aGFuZGxlLT5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwotI2VuZGlmCiB9CiAKIHZvaWQg
RG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9u
KERvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRl
KQogewotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKG1fZG93bmxvYWRzV2FpdGlu
Z0ZvckRlc3RpbmF0aW9uLmNvbnRhaW5zKGRvd25sb2FkSUQpKSB7CiAgICAgICAgIGF1dG8gcGFp
ciA9IG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uLnRha2UoZG93bmxvYWRJRCk7CiAg
ICAgICAgIGF1dG8gbmV0d29ya0RhdGFUYXNrID0gV1RGTW92ZShwYWlyLmZpcnN0KTsKQEAgLTE0
NiwyMyArMTE1LDE0IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmQK
ICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkc0FmdGVyRGVzdGluYXRpb25EZWNpZGVkLmNvbnRh
aW5zKGRvd25sb2FkSUQpKTsKICAgICAgICAgbV9kb3dubG9hZHNBZnRlckRlc3RpbmF0aW9uRGVj
aWRlZC5zZXQoZG93bmxvYWRJRCwgbmV0d29ya0RhdGFUYXNrKTsKICAgICB9Ci0jZWxzZQotICAg
IGlmIChhdXRvKiB3YWl0aW5nRG93bmxvYWQgPSBkb3dubG9hZChkb3dubG9hZElEKSkKLSAgICAg
ICAgd2FpdGluZ0Rvd25sb2FkLT5kaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGRlc3RpbmF0
aW9uLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7Ci0j
ZW5kaWYKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKSAmJiAhUExBVEZPUk0oQ09DT0EpCisjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAjZWxzZQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgYXV0
byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElE
LCBudWxscHRyLCBzZXNzaW9uSUQpOwotI2Vsc2UKLSAgICAvLyBEb3dubG9hZDo6cmVzdW1lKCkg
aXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIERvd25sb2FkJ3MgcmVzb3VyY2UgcmVxdWVz
dC4KLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMs
IGRvd25sb2FkSUQsIFJlc291cmNlUmVxdWVzdCgpKTsKLSNlbmRpZgogCiAgICAgZG93bmxvYWQt
PnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
KTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKQEAgLTE3
MywxNCArMTMzLDExIEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUwK
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRvd25sb2Fk
SUQpCiB7CiAgICAgaWYgKERvd25sb2FkKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChkb3du
bG9hZElEKSkgewotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgICAgIEFTU0VSVCghbV9k
b3dubG9hZHNXYWl0aW5nRm9yRGVzdGluYXRpb24uY29udGFpbnMoZG93bmxvYWRJRCkpOwogICAg
ICAgICBBU1NFUlQoIW1fcGVuZGluZ0Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7Ci0j
ZW5kaWYKICAgICAgICAgZG93bmxvYWQtPmNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgYXV0byBwZW5kaW5nRG93bmxvYWQgPSBt
X3BlbmRpbmdEb3dubG9hZHMudGFrZShkb3dubG9hZElEKTsKICAgICBpZiAobV9kb3dubG9hZHNX
YWl0aW5nRm9yRGVzdGluYXRpb24uY29udGFpbnMoZG93bmxvYWRJRCkpIHsKICAgICAgICAgYXV0
byBwYWlyID0gbV9kb3dubG9hZHNXYWl0aW5nRm9yRGVzdGluYXRpb24udGFrZShkb3dubG9hZElE
KTsKQEAgLTE5Nyw3ICsxNTQsNiBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxv
YWQoRG93CiAKICAgICBpZiAocGVuZGluZ0Rvd25sb2FkKQogICAgICAgICBwZW5kaW5nRG93bmxv
YWQtPmNhbmNlbCgpOwotI2VuZGlmCiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9h
ZEZpbmlzaGVkKERvd25sb2FkKiBkb3dubG9hZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCShyZXZp
c2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTkgKzcwLDE1IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lEb3dubG9hZCgpID0gMDsKICAgICAg
ICAgdmlydHVhbCBJUEM6OkNvbm5lY3Rpb24qIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCkgPSAw
OwogICAgICAgICB2aXJ0dWFsIEF1dGhlbnRpY2F0aW9uTWFuYWdlciYgZG93bmxvYWRzQXV0aGVu
dGljYXRpb25NYW5hZ2VyKCkgPSAwOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwZW5kaW5nRG93bmxvYWRDYW5jZWxlZChEb3dubG9hZElEKSA9IDA7Ci0j
ZW5kaWYKICAgICB9OwogCiAgICAgZXhwbGljaXQgRG93bmxvYWRNYW5hZ2VyKENsaWVudCYpOwog
CiAgICAgdm9pZCBzdGFydERvd25sb2FkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwg
UEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7Ci0jaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKICAgICB2b2lkIGRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQs
IHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJik7CiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5k
UmVxdWVzdChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9p
ZCB3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSNlbmRpZgogICAgIHZvaWQgY29udmVydE5l
dHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xv
YWQ+JiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHZvaWQgY29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5h
dGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKIApAQCAtMTA0LDExICsxMDAsOSBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgQ2xpZW50JiBtX2NsaWVudDsKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQogICAgIEhhc2hNYXA8RG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdE
b3dubG9hZD4+IG1fcGVuZGluZ0Rvd25sb2FkczsKICAgICBIYXNoTWFwPERvd25sb2FkSUQsIHN0
ZDo6cGFpcjxSZWZQdHI8TmV0d29ya0RhdGFUYXNrPiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
cj4+IG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uOwogICAgIEhhc2hNYXA8RG93bmxv
YWRJRCwgUmVmUHRyPE5ldHdvcmtEYXRhVGFzaz4+IG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlv
bkRlY2lkZWQ7Ci0jZW5kaWYKICAgICBIYXNoTWFwPERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0
cjxEb3dubG9hZD4+IG1fZG93bmxvYWRzOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3Bw
CShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGVuZGluZ0Rvd25sb2FkLmgiCiAKLSNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgi
CkBAIC0xMDEsNSArOTksMyBAQCB1aW50NjRfdCBQZW5kaW5nRG93bmxvYWQ6Om1lc3NhZ2VTZW5k
ZXJECiB9CiAgICAgCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHJldmlzaW9u
IDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRp
bmdEb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsNyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUGVuZGluZ0Rvd25sb2Fk
X2gKLSNkZWZpbmUgUGVuZGluZ0Rvd25sb2FkX2gKLQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04p
CisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJO
ZXR3b3JrTG9hZENsaWVudC5oIgpAQCAtNzUsNyArNzIsMyBAQCBwcml2YXRlOgogfTsKIAogfQot
Ci0jZW5kaWYKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0JKHJldmlz
aW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2Nv
Y29hL0Rvd25sb2FkQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIKIAotI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCi0KICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIk5ldHdvcmtT
ZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIlNlc3Npb25UcmFja2VyLmgiCkBAIC03NCw1ICs3Miwz
IEBAIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQKIH0KIAogfQotCi0j
ZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0JKHJl
dmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2lvcy9Eb3dubG9hZElPUy5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDE2MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEb3dubG9hZC5oIgotCi0jaWYg
VVNFKENGTkVUV09SSykgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0KLSNpbXBvcnQgIkRhdGFS
ZWZlcmVuY2UuaCIKLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTERvd25sb2FkLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJy
b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VSZXNwb25zZS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9y
dCA8d3RmL1J1bkxvb3AuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi0vLyBGSVhNRTogSWYgcG9zc2libGUsIHdlIHNob3VsZCBjb25zaWRlciBt
b3Zpbmcgc29tZSBjYWxsYmFja3Mgb2ZmIHRoZSBtYWluIHRocmVhZCBvciBhdCBsZWFzdAotLy8g
bWFraW5nIHRoZW0gYXN5bmNob25vdXMgY2FsbHMuCi1zdGF0aWMgdm9pZCBkaXNwYXRjaE9uTWFp
blRocmVhZCh2b2lkKF5ibG9jaykoKSkKLXsKLSAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpIHsK
LSAgICAgICAgYmxvY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRpc3BhdGNo
X3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxvY2spOwotfQotCi1zdGF0aWMgaW5s
aW5lIERvd25sb2FkKiB0b0Rvd25sb2FkKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PERvd25sb2FkKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpOwotfQotCi1zdGF0aWMgdm9pZCBzZXRVcERvd25sb2FkQ2xpZW50KENGVVJMRG93bmxvYWRD
bGllbnQmIGNsaWVudCwgRG93bmxvYWQmIGRvd25sb2FkKQotewotICAgIG1lbXNldCgmY2xpZW50
LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0gICAgY2xpZW50LmNsaWVudEluZm8gPSAmZG93bmxvYWQ7
Ci0KLSAgICBjbGllbnQuZGlkU3RhcnQgPSBbXShDRlVSTERvd25sb2FkUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAg
ICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRTdGFydCgpOwotICAgICAgICB9KTsKLSAg
ICB9OwotCi0gICAgY2xpZW50LndpbGxTZW5kUmVxdWVzdCA9IFtdKENGVVJMRG93bmxvYWRSZWYs
IENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmLCBjb25zdCB2b2lkKikg
LT4gQ0ZVUkxSZXF1ZXN0UmVmIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGVVJMUmVx
dWVzdFJlZj4oQ0ZSZXRhaW4ocmVxdWVzdCkpOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlkUmVj
ZWl2ZVJlc3BvbnNlID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZXNwb25zZVJlZiByZXNw
b25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRo
cmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKHJlc3BvbnNlKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRS
ZWNlaXZlRGF0YSA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGSW5kZXggbGVuZ3RoLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAg
ICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRSZWNlaXZlRGF0YShsZW5ndGgpOwot
ICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LnNob3VsZERlY29kZURhdGFPZk1JTUVU
eXBlID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZTdHJpbmdSZWYgZW5jb2RpbmdUeXBlLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKSAtPiBCb29sZWFuIHsKLSAgICAgICAgX19ibG9jayBCT09MIHJl
dHVyblZhbHVlID0gTk87Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAg
ICAgICByZXR1cm5WYWx1ZSA9IHRvRG93bmxvYWQoY2xpZW50SW5mbyktPnNob3VsZERlY29kZVNv
dXJjZURhdGFPZk1JTUVUeXBlKGVuY29kaW5nVHlwZSk7Ci0gICAgICAgIH0pOwotICAgICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRPYmplY3ROYW1lID0gW10oQ0ZVUkxEb3dubG9hZFJlZiBkb3dubG9hZFJl
ZiwgQ0ZTdHJpbmdSZWYgb2JqZWN0TmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAg
ICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3
cml0ZTsKLSAgICAgICAgICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHRvRG93bmxvYWQoY2xpZW50
SW5mbyktPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG9iamVjdE5hbWUs
IGFsbG93T3ZlcndyaXRlKTsKLSAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkp
Ci0gICAgICAgICAgICAgICAgQ0ZVUkxEb3dubG9hZFNldERlc3RpbmF0aW9uKGRvd25sb2FkUmVm
LCByZWludGVycHJldF9jYXN0PENGVVJMUmVmPihbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmRlc3Rp
bmF0aW9uXSksIGFsbG93T3ZlcndyaXRlKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNs
aWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVm
IHBhdGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5U
aHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZENyZWF0ZURl
c3RpbmF0aW9uKENGVVJMR2V0U3RyaW5nKHBhdGgpKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQot
ICAgIGNsaWVudC5kaWRGaW5pc2ggPSBbXShDRlVSTERvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAg
ICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRGaW5pc2goKTsKLSAgICAgICAgfSk7Ci0gICAg
fTsKLQotICAgIGNsaWVudC5kaWRGYWlsID0gW10oQ0ZVUkxEb3dubG9hZFJlZiBkb3dubG9hZFJl
ZiwgQ0ZFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBk
aXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgYXV0byByZXN1bWVEYXRhID0gYWRv
cHRDRihDRlVSTERvd25sb2FkQ29weVJlc3VtZURhdGEoZG93bmxvYWRSZWYpKTsKLSAgICAgICAg
ICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZEZhaWwoZXJyb3IsIElQQzo6RGF0YVJlZmVy
ZW5jZShyZXN1bWVEYXRhID8gQ0ZEYXRhR2V0Qnl0ZVB0cihyZXN1bWVEYXRhLmdldCgpKSA6IG51
bGxwdHIsIHJlc3VtZURhdGEgPyBDRkRhdGFHZXRMZW5ndGgocmVzdW1lRGF0YS5nZXQoKSkgOiAw
KSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0d29y
a0xvYWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJl
c3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERv
d25sb2FkOjpzdGFydE5ldHdvcmtMb2FkV2l0aEhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICBDRlVSTERvd25sb2Fk
Q2xpZW50IGNsaWVudDsKLSAgICBzZXRVcERvd25sb2FkQ2xpZW50KGNsaWVudCwgKnRoaXMpOwot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgIG1fZG93bmxvYWQgPSBhZG9w
dENGKENGVVJMRG93bmxvYWRDcmVhdGVBbmRTdGFydFdpdGhMb2FkaW5nQ29ubmVjdGlvbihOVUxM
LCBoYW5kbGUtPnJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKS5nZXQoKSwgbV9yZXF1ZXN0
LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSksIHJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSwg
JmNsaWVudCkpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotfQotCi12b2lkIERvd25s
b2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtRGlkRmluaXNoKCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIFVTRShDRk5FVFdPUkspICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9E
b3dubG9hZE1hYy5tbQkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShub25leGlzdGVudCkKQEAgLTEs
Mjc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIkRvd25sb2FkLmgiCi0KLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLQotI2ltcG9ydCAi
RGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCAiV2ViUGFnZS5oIgotI2ltcG9ydCA8V2ViQ29yZS9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlv
bk1hYy5oPgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9SZXNvdXJjZUhhbmRsZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNs
aWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW1wb3J0IDxw
YWwvc3BpL2NvY29hL05TVVJMRG93bmxvYWRTUEkuaD4KLQotQGludGVyZmFjZSBXS0Rvd25sb2Fk
QXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTERvd25sb2FkRGVsZWdhdGU+IHsKLSAgICBXZWJL
aXQ6OkRvd25sb2FkKiBfZG93bmxvYWQ7Ci19Ci0tIChpZClpbml0V2l0aERvd25sb2FkOihXZWJL
aXQ6OkRvd25sb2FkKilkb3dubG9hZDsKLS0gKHZvaWQpaW52YWxpZGF0ZTsKLUBlbmQKLQotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIERvd25s
b2FkOjpzdGFydE5ldHdvcmtMb2FkKCkKLXsKLSAgICBBU1NFUlQoIW1fbnNVUkxEb3dubG9hZCk7
Ci0gICAgQVNTRVJUKCFtX2RlbGVnYXRlKTsKLQotICAgIG1fZGVsZWdhdGUgPSBhZG9wdE5TKFtb
V0tEb3dubG9hZEFzRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRG93bmxvYWQ6dGhpc10pOwotI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgIG1fbnNVUkxEb3dubG9hZCA9IGFk
b3B0TlMoW1tOU1VSTERvd25sb2FkIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6bV9yZXF1ZXN0Lm5z
VVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkgZGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKV0pOwot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi0gICAgLy8gRklYTUU6IEFsbG93IHRoaXMg
dG8gYmUgY2hhbmdlZCBieSB0aGUgY2xpZW50LgotICAgIFttX25zVVJMRG93bmxvYWQgc2V0RGVs
ZXRlc0ZpbGVVcG9uRmFpbHVyZTpOT107Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0d29y
a0xvYWRXaXRoSGFuZGxlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQotewotICAgIEFTU0VSVCghbV9uc1VSTERvd25sb2FkKTsKLSAgICBB
U1NFUlQoIW1fZGVsZWdhdGUpOwotCi0gICAgbV9kZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS0Rvd25s
b2FkQXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEb3dubG9hZDp0aGlzXSk7Ci0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgbV9uc1VSTERvd25sb2FkID0gW05TVVJMRG93
bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlvbigp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0Om1fcmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6bV9kZWxlZ2F0ZS5n
ZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJveHk6bmlsXTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLQot
ICAgIC8vIEZJWE1FOiBBbGxvdyB0aGlzIHRvIGJlIGNoYW5nZWQgYnkgdGhlIGNsaWVudC4KLSAg
ICBbbV9uc1VSTERvd25sb2FkIHNldERlbGV0ZXNGaWxlVXBvbkZhaWx1cmU6Tk9dOwotfQotCi12
b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCi17Ci0gICAgQVNTRVJUKCFtX25zVVJMRG93bmxvYWQpOwotICAgIEFT
U0VSVCghbV9kZWxlZ2F0ZSk7Ci0KLSAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7Ci0gICAgaWYg
KG1fc2FuZGJveEV4dGVuc2lvbikKLSAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1l
KCk7Ci0KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICBtX2RlbGVnYXRl
ID0gYWRvcHROUyhbW1dLRG93bmxvYWRBc0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERvd25sb2Fk
OnRoaXNdKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLQotICAgIGF1dG8gbnNEYXRh
ID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpyZXN1bWVEYXRhLmRhdGEo
KSBsZW5ndGg6cmVzdW1lRGF0YS5zaXplKCldKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
dXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xh
cmF0aW9ucyIKLSAgICBtX25zVVJMRG93bmxvYWQgPSBhZG9wdE5TKFtbTlNVUkxEb3dubG9hZCBh
bGxvY10gaW5pdFdpdGhSZXN1bWVEYXRhOm5zRGF0YS5nZXQoKSBkZWxlZ2F0ZTptX2RlbGVnYXRl
LmdldCgpIHBhdGg6cGF0aF0pOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi0gICAg
bV9yZXF1ZXN0ID0gW21fbnNVUkxEb3dubG9hZCByZXF1ZXN0XTsKLQotICAgIC8vIEZJWE1FOiBB
bGxvdyB0aGlzIHRvIGJlIGNoYW5nZWQgYnkgdGhlIGNsaWVudC4KLSAgICBbbV9uc1VSTERvd25s
b2FkIHNldERlbGV0ZXNGaWxlVXBvbkZhaWx1cmU6Tk9dOwotfQotCi12b2lkIERvd25sb2FkOjpw
bGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKCkKLXsKLSAgICBbbV9uc1VSTERvd25sb2FkIGNhbmNl
bF07Ci0KLSAgICBSZXRhaW5QdHI8TlNEYXRhPiByZXN1bWVEYXRhID0gW21fbnNVUkxEb3dubG9h
ZCByZXN1bWVEYXRhXTsKLSAgICBkaWRDYW5jZWwoSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZXN1bWVEYXRhIGJ5dGVzXSksIFtyZXN1bWVEYXRh
IGxlbmd0aF0pKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsK
LSAgICBpZiAobV9kZWxlZ2F0ZSkgewotICAgICAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlkYXRlXTsK
LSAgICAgICAgbV9kZWxlZ2F0ZSA9IG51bGxwdHI7Ci0gICAgfQotICAgIG1fbnNVUkxEb3dubG9h
ZCA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtRGlkRmluaXNoKCkKLXsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLUBpbXBsZW1lbnRhdGlvbiBXS0Rvd25sb2Fk
QXNEZWxlZ2F0ZQotCi0vLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB0aGVzZSBjYWxsYmFj
a3Mgd291bGRuJ3QgaGF2ZSB0byBiZSBpbnZva2VkIG9uIHRoZSBtYWluIHRocmVhZC4KLXN0YXRp
YyB2b2lkIGRpc3BhdGNoT25NYWluVGhyZWFkKHZvaWQgKF5ibG9jaykoKSkKLXsKLSAgICBpZiAo
UnVuTG9vcDo6aXNNYWluKCkpIHsKLSAgICAgICAgYmxvY2soKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxv
Y2spOwotfQotCi0tIChpZClpbml0V2l0aERvd25sb2FkOihXZWJLaXQ6OkRvd25sb2FkKilkb3du
bG9hZAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgX2Rvd25sb2FkID0gZG93bmxvYWQ7Ci0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLS0gKHZvaWQpaW52YWxpZGF0ZQotewotICAgIF9kb3dubG9hZCA9IDA7Ci19Ci0K
LS0gKHZvaWQpZG93bmxvYWREaWRCZWdpbjooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkCi17Ci0g
ICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgaWYgKF9kb3dubG9hZCkKLSAgICAg
ICAgICAgIF9kb3dubG9hZC0+ZGlkU3RhcnQoKTsKLSAgICB9KTsKLX0KLQotLSAoTlNVUkxSZXF1
ZXN0ICopZG93bmxvYWQ6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZCB3aWxsU2VuZFJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAq
KXJlZGlyZWN0UmVzcG9uc2UKLXsKLSAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheIHsKLSAgICAg
ICAgaWYgKF9kb3dubG9hZCAmJiByZWRpcmVjdFJlc3BvbnNlICYmICFbcmVxdWVzdC5VUkwgaXNF
cXVhbDpyZWRpcmVjdFJlc3BvbnNlLlVSTF0pCi0gICAgICAgICAgICBfZG93bmxvYWQtPndpbGxT
ZW5kUmVkaXJlY3RlZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgfSk7
Ci0gICAgcmV0dXJuIHJlcXVlc3Q7Ci19Ci0KLS0gKEJPT0wpZG93bmxvYWQ6KE5TVVJMRG93bmxv
YWQgKiljb25uZWN0aW9uIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6KE5T
VVJMUHJvdGVjdGlvblNwYWNlICopcHJvdGVjdGlvblNwYWNlCi17Ci0gICAgLy8gRklYTUU6IElt
cGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBOTzsKLX0KLQotLSAo
dm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5n
ZQotewotICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgIGlmIChfZG93bmxvYWQp
Ci0gICAgICAgICAgICBfZG93bmxvYWQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb3JlKGNoYWxsZW5nZSkpOwotICAgIH0pOwotfQotCi0tIChCT09MKWRvd25sb2FkU2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5TVVJMRG93bmxvYWQgKilkb3dubG9hZAotewotICAgIHJl
dHVybiBOTzsKLX0KLQotLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2Fk
IGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCi17Ci0gICAgZGlz
cGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgaWYgKF9kb3dubG9hZCkKLSAgICAgICAgICAg
IF9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICB9KTsKLX0KLQot
LSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkIHdpbGxSZXN1bWVXaXRo
UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBmcm9tQnl0ZToobG9uZyBsb25nKXN0
YXJ0aW5nQnl0ZQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkIGRp
ZFJlY2VpdmVEYXRhT2ZMZW5ndGg6KE5TVUludGVnZXIpbGVuZ3RoCi17Ci0gICAgZGlzcGF0Y2hP
bk1haW5UaHJlYWQoXnsKLSAgICAgICAgaWYgKF9kb3dubG9hZCkKLSAgICAgICAgICAgIF9kb3du
bG9hZC0+ZGlkUmVjZWl2ZURhdGEobGVuZ3RoKTsKLSAgICB9KTsKLX0KLQotLSAoQk9PTClkb3du
bG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkIHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1J
TUVUeXBlOihOU1N0cmluZyAqKWVuY29kaW5nVHlwZQotewotICAgIF9fYmxvY2sgQk9PTCByZXR1
cm5WYWx1ZTsKLSAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICBpZiAoX2Rvd25s
b2FkKQotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBfZG93bmxvYWQtPnNob3VsZERlY29kZVNv
dXJjZURhdGFPZk1JTUVUeXBlKGVuY29kaW5nVHlwZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJldHVyblZhbHVlID0gWUVTOwotICAgIH0pOwotCi0gICAgcmV0dXJuIHJldHVyblZhbHVl
OwotfQotCi0tICh2b2lkKWRvd25sb2FkOihOU1VSTERvd25sb2FkICopZG93bmxvYWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUKLXsK
LSAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICBTdHJpbmcgZGVzdGluYXRpb247
Ci0gICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGU7Ci0gICAgICAgIGlmIChfZG93bmxvYWQpCi0g
ICAgICAgICAgICBkZXN0aW5hdGlvbiA9IF9kb3dubG9hZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsKLQotICAgICAgICBp
ZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICAgICAgW2Rvd25sb2FkIHNldERlc3Rp
bmF0aW9uOmRlc3RpbmF0aW9uIGFsbG93T3ZlcndyaXRlOmFsbG93T3ZlcndyaXRlXTsKLSAgICB9
KTsKLX0KLQotLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkIGRpZENy
ZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAqKXBhdGgKLXsKLSAgICBkaXNwYXRjaE9uTWFpblRo
cmVhZCheewotICAgICAgICBpZiAoX2Rvd25sb2FkKQotICAgICAgICAgICAgX2Rvd25sb2FkLT5k
aWRDcmVhdGVEZXN0aW5hdGlvbihwYXRoKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClkb3dubG9h
ZERpZEZpbmlzaDooTlNVUkxEb3dubG9hZCAqKWRvd25sb2FkCi17Ci0gICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoXnsKLSAgICAgICAgaWYgKF9kb3dubG9hZCkKLSAgICAgICAgICAgIF9kb3dubG9h
ZC0+ZGlkRmluaXNoKCk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93
bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAg
ICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICBpZiAoIV9kb3dubG9hZCkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiByZXN1bWVEYXRhID0g
W2Rvd25sb2FkIHJlc3VtZURhdGFdOwotICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVzdW1lRGF0YSBieXRl
c10pLCBbcmVzdW1lRGF0YSBsZW5ndGhdKTsKLQotICAgICAgICBfZG93bmxvYWQtPmRpZEZhaWwo
ZXJyb3IsIGRhdGFSZWZlcmVuY2UpOwotICAgIH0pOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyAh
VVNFKE5FVFdPUktfU0VTU0lPTikKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRl
bGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgs
MTEgKzU4LDcgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIAogICAg
IHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID0gRG9Ob3RTbmlmZkNvbnRlbnQ7CiAg
ICAgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBtX29y
aWdpbmFsUmVxdWVzdDsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIG1fbmV0d29ya0xv
YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgKlNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKSk7Ci0jZWxzZQotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci0jZW5kaWYK
IH0KIAogU3BlY3VsYXRpdmVMb2FkOjp+U3BlY3VsYXRpdmVMb2FkKCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgJKHJldmlzaW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCAr
MjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0KICNp
bmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgpAQCAtOTksNSAr
OTcsMyBAQCBwcml2YXRlOgogV2ViQ29yZTo6Q3JlZGVudGlhbCBzZXJ2ZXJUcnVzdENyZWRlbnRp
YWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5ldHdvcmtEYXRh
VGFza0NvY29hLmgiCiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiAjaW1wb3J0ICJBdXRo
ZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbXBvcnQgIkRvd25sb2FkLmgiCiAjaW1wb3J0ICJEb3du
bG9hZFByb3h5TWVzc2FnZXMuaCIKQEAgLTQzOSw1ICs0MzcsMyBAQCBXZWJDb3JlOjpDcmVkZW50
aWFsIHNlcnZlclRydXN0Q3JlZGVudGlhCiB9CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vz
c0NvY29hLm1tCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc5LDcg
Kzc5LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTgogCiAgICAg
U2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVu
ZGxlSWRlbnRpZmllcik7CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OnNldFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbkRhdGEoc291cmNlQXBw
bGljYXRpb25BdWRpdERhdGEoKSk7CiAgICAgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0U291cmNl
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKHBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKTsKICAgICBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRTb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIocGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXIpOwpAQCAtODcsNyArODYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVOCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIE5ldHdvcmtTZXNz
aW9uQ29jb2E6OnNldENURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShwYXJhbWV0ZXJzLmN0RGF0
YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSk7CiAjZW5kaWYKLSNlbmRpZgogCiAgICAgaW5pdGlhbGl6
ZU5ldHdvcmtTZXR0aW5ncygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkocmV2aXNpb24gMjI3
MjMyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotCiBPQkpDX0NMQVNTIE5TRGF0YTsKIE9CSkNf
Q0xBU1MgTlNVUkxTZXNzaW9uOwogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7
CkBAIC04Nyw1ICs4NSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgogCi0j
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEb3dubG9hZC5oIgpAQCAt
ODAwLDUgKzc5OCwzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWxsb3dzU3BlY2lmaWMK
IH0KIAogfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtMb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQkobm9uZXhpc3RlbnQp
CkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIk5ldHdvcmtMb2FkLmgiCi0KLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLQotI2ltcG9y
dCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwotCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UpCi17Ci0gICAgQVNT
RVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0KLSAgICBtX2hhbmRsZS0+
Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShuc1Jlc3BvbnNlKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyAhVVNFKE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTEyLDEwICsxMTIsOCBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVX
ZWJzCiAgICAgICAgIHNlc3Npb24tPnNldENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKHBhcmFt
ZXRlcnMuY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEpOwogICAgIH0KIAotI2lmIFVTRShORVRX
T1JLX1NFU1NJT04pCiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnN1
cHBsZW1lbnQ8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyPigpOwogICAgIFNlc3Npb25UcmFj
a2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShXVEZNb3Zl
KHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOwotI2VuZGlmCiB9CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAJKHJldmlzaW9uIDIy
NzIzMikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCB2b2lkIFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlm
aWVyQmFzZShjCiAgICAgaWRlbnRpZmllckJhc2UoKSA9IGlkZW50aWZpZXI7CiB9CiAKLSNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQogc3RhdGljIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJlZlB0
cjxOZXR3b3JrU2Vzc2lvbj4+JiBzdGF0aWNTZXNzaW9uTWFwKCkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwpAQCAtNzMsMTYgKzcyLDEzIEBAIHZvaWQgU2Vzc2lvblRyYWNrZXI6
OnNldFNlc3Npb24oUEFMOjpTZXMKIHsKICAgICBzdGF0aWNTZXNzaW9uTWFwKCkuc2V0KHNlc3Np
b25JRCwgV1RGTW92ZShzZXNzaW9uKSk7CiB9Ci0jZW5kaWYKIAogdm9pZCBTZXNzaW9uVHJhY2tl
cjo6ZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBhdXRv
IHNlc3Npb24gPSBzdGF0aWNTZXNzaW9uTWFwKCkudGFrZShzZXNzaW9uSUQpOwogICAgIGlmIChz
ZXNzaW9uKQogICAgICAgICBzZXNzaW9uLT5pbnZhbGlkYXRlQW5kQ2FuY2VsKCk7Ci0jZW5kaWYK
ICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuaAkocmV2aXNpb24gMjI3
MjMyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsMTAgKzQ1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcm
IGdldElkZW50aWZpZXJCYXNlKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0SWRlbnRpZmllckJhc2Uo
Y29uc3QgU3RyaW5nJik7CiAgICAgCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBzdGF0
aWMgdm9pZCBzZXRTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBSZWY8TmV0d29ya1Nlc3Npb24+JiYp
OwogICAgIHN0YXRpYyBOZXR3b3JrU2Vzc2lvbiogbmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9u
SUQpOwotI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9u
SUQpOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRpb25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMjcy
MzIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMTEgKzExNiw3IEBAIHZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXUKICAgICBBU1NFUlQoZnJhbWUtPnBhZ2Uo
KSk7CiAKICAgICBhdXRvIHBhZ2VJRCA9IGZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpOwotICAgIHVp
bnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoe3BhZ2VJRCwg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgICAg
ICAsIHsgfQotI2VuZGlmCi0gICAgfSk7CisgICAgdWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRD
aGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7IHBhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IHsgfSB9KTsKIAogICAgIC8vIENvYWxlc2NlIGNoYWxsZW5nZXMgaW4gdGhlIHNhbWUgcHJvdGVj
dGlvbiBzcGFjZSBhbmQgaW4gdGhlIHNhbWUgcGFnZS4KICAgICBpZiAoc2hvdWxkQ29hbGVzY2VD
aGFsbGVuZ2UocGFnZUlELCBjaGFsbGVuZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKQpA
QCAtMTI5LDcgKzEyNSw2IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZl
QXUKICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZnJhbWUtPmZyYW1lSUQoKSwgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSwgZnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCkpOwogfQogCi0j
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKHBhZ2VJRCk7CkBAIC0xNTUsMzcgKzE1MCw2IEBAIHZvaWQgQXV0aGVudGlj
YXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXUKICAgICAKICAgICBkb3dubG9hZC5zZW5kKE1lc3Nh
Z2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CiB9Ci0jZW5kaWYKLQotI2lmICFV
U0UoTkVUV09SS19TRVNTSU9OKQotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkKLXsKLSAgICBBU1NFUlQocGFnZUlEKTsKLSAgICBBU1NFUlQoZnJhbWVJRCk7Ci0KLSAgICB1
aW50NjRfdCBjaGFsbGVuZ2VJRCA9IGFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFwKHtwYWdlSUQs
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlfSk7Ci0KLSAgICAvLyBDb2FsZXNjZSBjaGFsbGVuZ2Vz
IGluIHRoZSBzYW1lIHByb3RlY3Rpb24gc3BhY2UgYW5kIGluIHRoZSBzYW1lIHBhZ2UuCi0gICAg
aWYgKHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHBhZ2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fcHJvY2Vzcy5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UocGFnZUlELCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hh
bGxlbmdlSUQpKTsKLX0KLSNlbmRpZgotCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi12b2lk
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KERvd25sb2FkJiBkb3dubG9hZCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKQotewotICAgIHVpbnQ2NF90IGR1bW15UGFnZUlEID0gMDsKLSAg
ICB1aW50NjRfdCBjaGFsbGVuZ2VJRCA9IGFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFwKHtkdW1t
eVBhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2V9KTsKLQotICAgIC8vIENvYWxlc2NlIGNo
YWxsZW5nZXMgaW4gdGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFjZSBhbmQgaW4gdGhlIHNhbWUgcGFn
ZS4KLSAgICBpZiAoc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UoZHVtbXlQYWdlSUQsIGNoYWxsZW5n
ZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRv
d25sb2FkLnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKLX0K
LSNlbmRpZgogCiAvLyBDdXJyZW50bHksIG9ubHkgTWFjIGtub3dzIGhvdyB0byByZXNwb25kIHRv
IGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZXMgd2l0aCBjZXJ0aWZpY2F0ZSBpbmZvLgogI2lmICFI
QVZFKFNFQ19JREVOVElUWSkKQEAgLTIwOCwxNyArMTcyLDEyIEBAIHZvaWQgQXV0aGVudGljYXRp
b25NYW5hZ2VyOjp1c2VDcmVkZW50aWEKICAgICBhdXRvIGNoYWxsZW5nZSA9IG1fY2hhbGxlbmdl
cy50YWtlKGNoYWxsZW5nZUlEKTsKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5jaGFsbGVuZ2UuaXNO
dWxsKCkpOwogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpOwotI2Vsc2UKLSAg
ICBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlciA9IG51bGxwdHI7
Ci0jZW5kaWYKICAgICAKICAgICBpZiAodHJ5VXNlQ2VydGlmaWNhdGVJbmZvRm9yQ2hhbGxlbmdl
KGNoYWxsZW5nZS5jaGFsbGVuZ2UsIGNlcnRpZmljYXRlSW5mbywgY29tcGxldGlvbkhhbmRsZXIp
KQogICAgICAgICByZXR1cm47CiAKICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVu
dCA9IGNoYWxsZW5nZS5jaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKLSNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKQogICAgIC8vIElmIHRoZXJlIGlzIGEgY29tcGxldGlvbiBoYW5kbGVy
LCB0aGVuIHRoZXJlIGlzIG5vIEF1dGhlbnRpY2F0aW9uQ2xpZW50LgogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhlIHVzZSBvZiBBdXRoZW50aWNhdGlvbkNsaWVudCBpbiBXZWJLaXQyIG9uY2UgTkVU
V09SS19TRVNTSU9OIGlzIHVzZWQgZm9yIGFsbCBsb2Fkcy4KICAgICBpZiAoY29tcGxldGlvbkhh
bmRsZXIpIHsKQEAgLTIyNywxNCArMTg2LDkgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OnVzZUNyZWRlbnRpYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChjb3JlQ2xp
ZW50KTsKLSNlbmRpZgogCiAgICAgaWYgKGNvcmVDbGllbnQpCiAgICAgICAgIGNvcmVDbGllbnQt
PnJlY2VpdmVkQ3JlZGVudGlhbChjaGFsbGVuZ2UuY2hhbGxlbmdlLCBjcmVkZW50aWFsKTsKLSNp
ZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBlbHNlCi0gICAgICAgIHJlY2VpdmVkQ3JlZGVu
dGlhbChjaGFsbGVuZ2UuY2hhbGxlbmdlLCBjcmVkZW50aWFsKTsKLSNlbmRpZgogfQogCiB2b2lk
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxs
ZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTI1MSwyMSArMjA1LDE1IEBAIHZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51ZVdpdGgKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5j
aGFsbGVuZ2UuaXNOdWxsKCkpOwogCiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGll
bnQgPSBjaGFsbGVuZ2UuY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7Ci0jaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKSB7
CiAgICAgICAgIEFTU0VSVCghY29yZUNsaWVudCk7CiAgICAgICAgIGNoYWxsZW5nZS5jb21wbGV0
aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50
aWFsLCBDcmVkZW50aWFsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChj
b3JlQ2xpZW50KTsKLSNlbmRpZgogCiAgICAgaWYgKGNvcmVDbGllbnQpCiAgICAgICAgIGNvcmVD
bGllbnQtPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVu
Z2UuY2hhbGxlbmdlKTsKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBlbHNlCi0gICAg
ICAgIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2Uu
Y2hhbGxlbmdlKTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y2Fu
Y2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpAQCAtMjgyLDIxICsyMzAsMTUgQEAg
dm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNhbmNlbFNpbmdsZQogICAgIEFTU0VSVCghY2hh
bGxlbmdlLmNoYWxsZW5nZS5pc051bGwoKSk7CiAKICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCog
Y29yZUNsaWVudCA9IGNoYWxsZW5nZS5jaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsK
LSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmIChjaGFsbGVuZ2UuY29tcGxldGlvbkhh
bmRsZXIpIHsKICAgICAgICAgQVNTRVJUKCFjb3JlQ2xpZW50KTsKICAgICAgICAgY2hhbGxlbmdl
LmNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNh
bmNlbCwgQ3JlZGVudGlhbCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQo
Y29yZUNsaWVudCk7Ci0jZW5kaWYKIAogICAgIGlmIChjb3JlQ2xpZW50KQogICAgICAgICBjb3Jl
Q2xpZW50LT5yZWNlaXZlZENhbmNlbGxhdGlvbihjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKLSNpZiAh
VVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBlbHNlCi0gICAgICAgIHJlY2VpdmVkQ2FuY2VsbGF0
aW9uKGNoYWxsZW5nZS5jaGFsbGVuZ2UpOwotI2VuZGlmCiB9CiAKIHZvaWQgQXV0aGVudGljYXRp
b25NYW5hZ2VyOjpwZXJmb3JtRGVmYXVsdEhhbmRsaW5nKHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpA
QCAtMzEzLDIxICsyNTUsMTUgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnBlcmZvcm1E
ZWZhdQogICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051bGwoKSk7CiAKICAgICBB
dXRoZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVudCA9IGNoYWxsZW5nZS5jaGFsbGVuZ2UuYXV0
aGVudGljYXRpb25DbGllbnQoKTsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmIChj
aGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgQVNTRVJUKCFjb3JlQ2xpZW50
KTsKICAgICAgICAgY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIENyZWRlbnRpYWwoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKGNvcmVDbGllbnQpOwotI2VuZGlm
CiAKICAgICBpZiAoY29yZUNsaWVudCkKICAgICAgICAgY29yZUNsaWVudC0+cmVjZWl2ZWRSZXF1
ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNoYWxsZW5nZS5jaGFsbGVuZ2UpOwotI2lmICFV
U0UoTkVUV09SS19TRVNTSU9OKQotICAgIGVsc2UKLSAgICAgICAgcmVjZWl2ZWRSZXF1ZXN0VG9Q
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNoYWxsZW5nZS5jaGFsbGVuZ2UpOwotI2VuZGlmCiB9CiAK
IHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250
aW51ZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTM0NCwyMSArMjgwLDE1IEBAIHZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpyZWplY3RQcm90ZWMKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5j
aGFsbGVuZ2UuaXNOdWxsKCkpOwogCiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGll
bnQgPSBjaGFsbGVuZ2UuY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7Ci0jaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKSB7
CiAgICAgICAgIEFTU0VSVCghY29yZUNsaWVudCk7CiAgICAgICAgIGNoYWxsZW5nZS5jb21wbGV0
aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90
ZWN0aW9uU3BhY2UsIENyZWRlbnRpYWwoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
QVNTRVJUKGNvcmVDbGllbnQpOwotI2VuZGlmCiAKICAgICBpZiAoY29yZUNsaWVudCkKICAgICAg
ICAgY29yZUNsaWVudC0+cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY2hhbGxlbmdlLmNoYWxs
ZW5nZSk7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgZWxzZQotICAgICAgICByZWNl
aXZlZENoYWxsZW5nZVJlamVjdGlvbihjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKLSNlbmRpZgogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCShyZXZp
c2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsMjIgKzY2LDE0IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0jaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdl
U2VuZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
LCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFD
RV9BVVRIX0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKICNlbmRp
ZgotI2VuZGlmCiAgICAgLy8gQ2FsbGVkIGZvciByZXNvdXJjZXMgaW4gdGhlIFdlYlByb2Nlc3Mg
KE5ldHdvcmtQcm9jZXNzIGRpc2FibGVkKQogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKIAotI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIC8vIENhbGxlZCBmb3Ig
cmVzb3VyY2VzIGluIHRoZSBOZXR3b3JrUHJvY2VzcyAoTmV0d29ya1Byb2Nlc3MgZW5hYmxlZCkK
LSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxv
YWQmLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotI2VuZGlmCi0K
ICAgICB2b2lkIHVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQs
IGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8mKTsKICAgICB2b2lkIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWlu
dDY0X3QgY2hhbGxlbmdlSUQpOwogICAgIHZvaWQgY2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNo
YWxsZW5nZUlEKTsKQEAgLTEwMCw5ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IENoYWxs
ZW5nZSB7CiAgICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKICAgICAgICAgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAg
ICAgICAgIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyOwotI2Vu
ZGlmCiAgICAgfTsKICAgICAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5h
Z2VyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGlj
YXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0JKHJldmlzaW9uIDIyNzIz
MikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlckNvY29hLm1tCShub25leGlzdGVudCkKQEAgLTEsNjAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYW5h
Z2VyLmgiCi0KLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCi17Ci0gICAg
W2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlh
bC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotfQotCi12b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVk
ZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkKLXsKLSAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgY29udGludWVX
aXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07Ci19Ci0KLXZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi17Ci0gICAgW2F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07Ci19
Ci0KLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1E
ZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKQotewotICAgIFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBw
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKLX0KLQotdm9p
ZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLXsKLSAg
ICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgcmVqZWN0UHJvdGVjdGlvblNwYWNl
QW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKV07Ci19Ci0KLX0KLSNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmgJKHJldmlzaW9uIDIyNzIzMikK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5oCShub25leGlz
dGVudCkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
IVVTRShORVRXT1JLX1NFU1NJT04pCi0KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIENvb2tpZVN0b3JhZ2VTaGltIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb29raWVT
dG9yYWdlU2hpbSk7Ci0gICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPENvb2tpZVN0b3Jh
Z2VTaGltPjsKLXB1YmxpYzoKLSAgICBzdGF0aWMgQ29va2llU3RvcmFnZVNoaW0mIHNpbmdsZXRv
bigpOwotCi0gICAgdm9pZCBpbml0aWFsaXplKCk7Ci0KLXByaXZhdGU6Ci0gICAgQ29va2llU3Rv
cmFnZVNoaW0oKQotICAgIHsKLSAgICB9Ci19OwotCi19Ci0KLSNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbQkocmV2aXNpb24gMjI3
MjMyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCShu
b25leGlzdGVudCkKQEAgLTEsMTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlU2hpbS5oIgotCi0jaWYgIVVTRShO
RVRXT1JLX1NFU1NJT04pCi0KLSNpbmNsdWRlICJDb29raWVTdG9yYWdlU2hpbUxpYnJhcnkuaCIK
LSNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZXNT
dHJhdGVneS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8ZGxmY24uaD4K
LSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi10eXBlZGVmIGNvbnN0
IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJlcXVlc3RSZWY7Ci1AY2xhc3MgTlNVUkxTZXNz
aW9uVGFzazsKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLUBpbnRlcmZhY2UgV0tOU1VS
TFNlc3Npb25Mb2NhbCA6IE5TT2JqZWN0Ci0tIChDRkRpY3Rpb25hcnlSZWYpIF9jb3B5Q29va2ll
c0ZvclJlcXVlc3RVc2luZ0FsbEFwcHJvcHJpYXRlU3RvcmFnZVNlbWFudGljczooQ0ZVUkxSZXF1
ZXN0UmVmKSByZXF1ZXN0OwotLSAodm9pZClfZ2V0Q29va2llSGVhZGVyc0ZvclRhc2s6KE5TVVJM
U2Vzc2lvblRhc2sqKXRhc2sgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKENGRGljdGlvbmFy
eVJlZikpY29tcGxldGlvbkhhbmRsZXI7Ci1AZW5kCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1z
dGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIHdlYktpdENvb2tpZVN0b3JhZ2VDb3B5UmVxdWVzdEhlYWRl
ckZpZWxkc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGluQ29va2llU3RvcmFnZSwgQ0ZV
UkxSZWYgaW5SZXF1ZXN0VVJMKQotewotICAgIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzID0gVVJMKGluUmVxdWVzdFVSTCkucHJvdG9jb2xJcygiaHR0cHMiKSA/IElu
Y2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm87Ci0KLSAg
ICBTdHJpbmcgY29va2llczsKLSAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNl
OwotICAgIFVSTCBmaXJzdFBhcnR5Rm9yQ29va2llc1VSTDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCksIGZpcnN0UGFydHlGb3JDb29raWVzVVJMLCBpblJlcXVlc3RVUkwsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29va2llcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5
KGNvb2tpZXMsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIGlmIChjb29raWVzLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZDb29raWVzID0gY29va2llcy5jcmVhdGVDRlN0cmluZygp
OwotICAgIHN0YXRpYyBjb25zdCB2b2lkKiBjb29raWVLZXlzW10gPSB7IENGU1RSKCJDb29raWUi
KSB9OwotICAgIGNvbnN0IHZvaWQqIGNvb2tpZVZhbHVlc1tdID0geyBjZkNvb2tpZXMuZ2V0KCkg
fTsKLSAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKDAsIGNvb2tpZUtleXMsIGNvb2tpZVZh
bHVlcywgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcyk7Ci19Ci0KLUNvb2tpZVN0b3JhZ2VTaGltJiBDb29raWVTdG9yYWdl
U2hpbTo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q29va2llU3Rv
cmFnZVNoaW0+IHN0b3JhZ2U7Ci0gICAgcmV0dXJuIHN0b3JhZ2U7Ci19Ci0KLXZvaWQgQ29va2ll
U3RvcmFnZVNoaW06OmluaXRpYWxpemUoKQotewotICAgIENvb2tpZVN0b3JhZ2VTaGltQ2FsbGJh
Y2tzIGNhbGxiYWNrcyA9IHsgJndlYktpdENvb2tpZVN0b3JhZ2VDb3B5UmVxdWVzdEhlYWRlckZp
ZWxkc0ZvclVSTCB9OwotICAgIENvb2tpZVN0b3JhZ2VTaGltSW5pdGlhbGl6ZUZ1bmMgZnVuYyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Q29va2llU3RvcmFnZVNoaW1Jbml0aWFsaXplRnVuYz4oZGxzeW0o
UlRMRF9ERUZBVUxULCAiV2ViS2l0Q29va2llU3RvcmFnZVNoaW1Jbml0aWFsaXplIikpOwotICAg
IGlmIChmdW5jKQotICAgICAgICBmdW5jKGNhbGxiYWNrcyk7Ci0KLSAgICBDbGFzcyBfX05TVVJM
U2Vzc2lvbkxvY2FsQ2xhc3MgPSBvYmpjX2dldENsYXNzKCJfX05TVVJMU2Vzc2lvbkxvY2FsIik7
Ci0gICAgaWYgKCFfX05TVVJMU2Vzc2lvbkxvY2FsQ2xhc3MpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChNZXRob2Qgb3JpZ2luYWwgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChfX05TVVJM
U2Vzc2lvbkxvY2FsQ2xhc3MsIEBzZWxlY3RvcihfY29weUNvb2tpZXNGb3JSZXF1ZXN0VXNpbmdB
bGxBcHByb3ByaWF0ZVN0b3JhZ2VTZW1hbnRpY3M6KSkpIHsKLSAgICAgICAgTWV0aG9kIHJlcGxh
Y2VtZW50ID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QoW1dLTlNVUkxTZXNzaW9uTG9jYWwgY2xh
c3NdLCBAc2VsZWN0b3IoX2NvcHlDb29raWVzRm9yUmVxdWVzdFVzaW5nQWxsQXBwcm9wcmlhdGVT
dG9yYWdlU2VtYW50aWNzOikpOwotICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQpOwotICAgICAg
ICBtZXRob2RfZXhjaGFuZ2VJbXBsZW1lbnRhdGlvbnMob3JpZ2luYWwsIHJlcGxhY2VtZW50KTsK
LSAgICB9Ci0KLSAgICBpZiAoTWV0aG9kIG9yaWdpbmFsID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRo
b2QoX19OU1VSTFNlc3Npb25Mb2NhbENsYXNzLCBAc2VsZWN0b3IoX2dldENvb2tpZUhlYWRlcnNG
b3JUYXNrOmNvbXBsZXRpb25IYW5kbGVyOikpKSB7Ci0gICAgICAgIE1ldGhvZCByZXBsYWNlbWVu
dCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKFtXS05TVVJMU2Vzc2lvbkxvY2FsIGNsYXNzXSwg
QHNlbGVjdG9yKF9nZXRDb29raWVIZWFkZXJzRm9yVGFzazpjb21wbGV0aW9uSGFuZGxlcjopKTsK
LSAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KTsKLSAgICAgICAgbWV0aG9kX2V4Y2hhbmdlSW1w
bGVtZW50YXRpb25zKG9yaWdpbmFsLCByZXBsYWNlbWVudCk7Ci0gICAgfQotfQotCi19Ci0KLUBp
bXBsZW1lbnRhdGlvbiBXS05TVVJMU2Vzc2lvbkxvY2FsCi0tIChDRkRpY3Rpb25hcnlSZWYpX2Nv
cHlDb29raWVzRm9yUmVxdWVzdFVzaW5nQWxsQXBwcm9wcmlhdGVTdG9yYWdlU2VtYW50aWNzOihD
RlVSTFJlcXVlc3RSZWYpIHJlcXVlc3QKLXsKLSAgICBpZiAoIUNGVVJMUmVxdWVzdFNob3VsZEhh
bmRsZUhUVFBDb29raWVzKHJlcXVlc3QpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gV2ViS2l0Ojp3ZWJLaXRDb29raWVTdG9yYWdlQ29weVJlcXVlc3RIZWFkZXJGaWVsZHNG
b3JVUkwobnVsbHB0ciwgQ0ZVUkxSZXF1ZXN0R2V0VVJMKHJlcXVlc3QpKTsKLX0KLQotdXNpbmcg
Q29tcGxldGlvbkhhbmRsZXJCbG9jayA9IHZvaWQoXikoQ0ZEaWN0aW9uYXJ5UmVmKTsKLS0gKHZv
aWQpX2dldENvb2tpZUhlYWRlcnNGb3JUYXNrOihOU1VSTFNlc3Npb25UYXNrKil0YXNrIGNvbXBs
ZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlckJsb2NrKWNvbXBsZXRpb25IYW5kbGVyCi17
Ci0gICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KCFbW3Rhc2sgY3VycmVudFJlcXVlc3RdIEhUVFBTaG91bGRIYW5kbGVDb29raWVzXSkgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIENvbXBsZXRpb25IYW5kbGVyQmxvY2sgY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gW2Nv
bXBsZXRpb25IYW5kbGVyIGNvcHldOwotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGFz
ayA9IFJldGFpblB0cjxOU1VSTFNlc3Npb25UYXNrPih0YXNrKSwgY29tcGxldGlvbkhhbmRsZXJD
b3B5XSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlcnMgPSBhZG9w
dENGKFdlYktpdDo6d2ViS2l0Q29va2llU3RvcmFnZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzRm9y
VVJMKG51bGxwdHIsIChDRlVSTFJlZilbW3Rhc2sgY3VycmVudFJlcXVlc3RdIFVSTF0pKTsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KGhlYWRlcnMuZ2V0KCkpOwotICAgICAgICBbY29t
cGxldGlvbkhhbmRsZXJDb3B5IHJlbGVhc2VdOwotICAgIH0pOwotfQotCi1AZW5kCi0KLSNlbmRp
ZgotCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRD
bGllbnQuaAkocmV2aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSURvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93
bmxvYWRQcm94eSYsIHVpbnQ2NF90KSB7IH0KLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5n
JikgeyByZXR1cm4gdHJ1ZTsgfQotI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2Vi
S2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6
RG93bmxvYWRQcm94eSYpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsMTYgKzIwNCw2
IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXgKICAgICAgICAgICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHRvQVBJKCZwcm9jZXNzUG9vbCksIHRvQVBJKCZkb3du
bG9hZFByb3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9
CiAKLSNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICAgICAgYm9vbCBzaG91bGREZWNvZGVT
b3VyY2VEYXRhT2ZNSU1FVHlwZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGZpbmFsCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuc2hvdWxkRGVjb2RlU291cmNlRGF0YU9m
TUlNRVR5cGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIHJl
dHVybiBtX2NsaWVudC5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSh0b0FQSSgmcHJv
Y2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxvYWRQcm94eSksIHRvQVBJKG1pbWVUeXBlLmltcGwoKSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSNlbmRpZgotCiAgICAgICAg
IHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgJKHJldmlz
aW9uIDIyNzIzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDkgKzU2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9j
ZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Jikg
ZmluYWw7Ci0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgYm9vbCBzaG91bGREZWNvZGVT
b3VyY2VEYXRhT2ZNSU1FVHlwZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25z
dCBTdHJpbmcmKSBmaW5hbDsKLSNlbmRpZgogICAgIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24o
V2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5Jikg
ZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xp
ZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25s
b2FkQ2xpZW50Lm1tCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI0LDE1ICsxMjQs
NiBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgfSkuZ2V0
KCldOwogfQogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi1ib29sIERvd25sb2FkQ2xpZW50
OjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShXZWJQcm9jZXNzUG9vbCYsIERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlN
RVR5cGUpCi0gICAgICAgIHJldHVybiBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZFByb3h5KSBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTptaW1lVHlwZV07Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQogdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3Jl
YXRlRGVzdGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkocmV2aXNpb24g
MjI3MjMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDYgQEAgdm9pZCBEb3dubG9hZFBy
b3h5Ojp3aWxsU2VuZFJlcXVlc3QoUmVzbwogICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xp
ZW50KCkud2lsbFNlbmRSZXF1ZXN0KCptX3Byb2Nlc3NQb29sLCAqdGhpcywgV1RGTW92ZShwcm9w
b3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KSB7CiAgICAgICAgIG1f
cmVkaXJlY3RDaGFpbi5hcHBlbmQobmV3UmVxdWVzdC51cmwoKSk7CiAKLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPm1fcHJvY2Vzc1Bvb2wpCiAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTE0Myw3ICsxNDIsNiBAQCB2b2lkIERvd25sb2FkUHJv
eHk6OndpbGxTZW5kUmVxdWVzdChSZXNvCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
bmV0d29ya1Byb2Nlc3NQcm94eS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNvbnRp
bnVlV2lsbFNlbmRSZXF1ZXN0KHByb3RlY3RlZFRoaXMtPm1fZG93bmxvYWRJRCwgbmV3UmVxdWVz
dCksIDApOwotI2VuZGlmCiAgICAgfSk7CiB9CiAKQEAgLTE1MiwxMyArMTUwLDYgQEAgdm9pZCBE
b3dubG9hZFByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoYwogICAgIGlmICghbV9wcm9jZXNzUG9v
bCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgLy8g
QXMgcGVyIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2FzLWEtZG93bmxvYWQgKHN0ZXAg
MiksIHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlcgotICAg
IC8vIHNob3VsZCBvdmVycmlkZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGZyb20gdGhlIGRvd25s
b2FkIGF0dHJpYnV0ZS4KLSAgICBpZiAoIW1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNOdWxsKCkgJiYg
cmVzcG9uc2UuaXNBdHRhY2htZW50V2l0aEZpbGVuYW1lKCkpCi0gICAgICAgIG1fc3VnZ2VzdGVk
RmlsZW5hbWUgPSBTdHJpbmcoKTsKLSNlbmRpZgotCiAgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxv
YWRDbGllbnQoKS5kaWRSZWNlaXZlUmVzcG9uc2UoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCByZXNw
b25zZSk7CiB9CiAKQEAgLTE3MCwxOCArMTYxLDYgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRS
ZWNlaXZlRGF0YSh1aW50NgogICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlk
UmVjZWl2ZURhdGEoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBsZW5ndGgpOwogfQogCi0jaWYgIVVT
RShORVRXT1JLX1NFU1NJT04pCi12b2lkIERvd25sb2FkUHJveHk6OnNob3VsZERlY29kZVNvdXJj
ZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wmIHJlc3VsdCkKLXsK
LSAgICByZXN1bHQgPSBmYWxzZTsKLQotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgcmVzdWx0ID0gbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5z
aG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIG1p
bWVUeXBlKTsKLX0KLSNlbmRpZgotCiB2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewogICAgIGlmICghbV9wcm9jZXNzUG9vbCkK
QEAgLTE5NywyNCArMTc2LDYgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlv
bldpdAogICAgIH0pOwogfQogCi0jaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0KLXZvaWQgRG93
bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUmVmPE1lc3NhZ2VzOjpE
b3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTo6RGVs
YXllZFJlcGx5PiYmIHJlcGx5KQotewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gTUlNRVR5cGVSZWdpc3Ry
eTo6YXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KG1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNF
bXB0eSgpID8gZmlsZW5hbWUgOiBtX3N1Z2dlc3RlZEZpbGVuYW1lLCBtaW1lVHlwZSk7Ci0gICAg
bV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBb
cmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBT
dHJpbmcgZGVzdGluYXRpb24pIHsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNh
bmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkp
Ci0gICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRpb24s
IFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk7Ci0gICAgICAgIHJlcGx5LT5zZW5kKGRlc3RpbmF0aW9uLCBhbGxvd092ZXJ3cml0ZSA9PSBB
bGxvd092ZXJ3cml0ZTo6WWVzLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICB9KTsKLX0K
LQotI2VuZGlmCi0KIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAkocmV2
aXNpb24gMjI3MjMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNiBAQCBwcml2YXRlOgogCiAg
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRs
ZXJzLgogICAgIHZvaWQgZGlkU3RhcnQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7CkBAIC05OCw5ICs5Nyw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7CiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKLSNpZiAhVVNFKE5F
VFdPUktfU0VTU0lPTikKLSAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFJl
ZjxNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU6OkRlbGF5ZWRSZXBseT4mJik7Ci0jZW5kaWYKICAgICB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAKICAgICBEb3dubG9hZFByb3h5TWFwJiBtX2Rvd25sb2Fk
UHJveHlNYXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjI3MjMyKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCw2IEBAIG1lc3NhZ2VzIC0+IERvd25s
b2FkUHJveHkgewogCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQotI2lm
ICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVU
eXBlKFN0cmluZyBtaW1lVHlwZSkgLT4gKGJvb2wgcmVzdWx0KQotICAgIERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIG1pbWVUeXBl
KSAtPiAoU3RyaW5nIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRlLCBXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSBEZWxheWVkCi0j
ZW5kaWYKICAgICBEaWRDcmVhdGVEZXN0aW5hdGlvbihTdHJpbmcgcGF0aCkKICAgICBEaWRGaW5p
c2goKQogICAgIERpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgSVBDOjpEYXRh
UmVmZXJlbmNlIHJlc3VtZURhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNzM1NCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEx
ODYsNyArMTE4Niw2IEBACiAJCTUzQkE0N0QwMURDMkVGNUUwMDRERjRBRCAvKiBOZXR3b3JrRGF0
YVRhc2tCbG9iLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzOUVCNTQ2MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCAq
LzsgfTsKIAkJNTNCQTQ3RDExREMyRUY1RTAwNERGNEFEIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOUVCNTQ3
MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggKi87IH07CiAJCTUzREVB
MzY2MURERTQyMzEwMEU4MjY0OCAvKiBqc29uLmhwcCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzREVBMzY1MURERTQyMkUwMEU4MjY0OCAvKiBqc29uLmhw
cCAqLzsgfTsKLQkJNUMwNTJGMjYxQzZEM0JEMzAwNzZFOTE5IC8qIEF1dGhlbnRpY2F0aW9uTWFu
YWdlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUMwNTJGMjQxQzZEM0FCNjAwNzZFOTE5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29h
Lm1tICovOyB9OwogCQk1QzBCMTc3ODFFN0M4ODBFMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0
cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzBCMTc3NDFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0
cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTVDMEIxNzc5MUU3Qzg4MjEwMEU5MTIz
QyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwQjE3NzYxRTdDODc5QzAwRTkxMjNDIC8q
IFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTVDMEIxNzdDMUU3
Qzg4NTQwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwQjE3N0ExRTdDODg0RjAwRTkxMjNDIC8qIFdl
YlNvY2tldFN0cmVhbS5jcHAgKi87IH07CkBAIC0xMjAxLDggKzEyMDAsNiBAQAogCQk1QzE0Mjcw
NTFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2RjcxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25s
b2FkSUQuaCAqLzsgfTsKIAkJNUMxNDI3MDYxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzE0MjZGODFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJ
NUMxNDI3MDcxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2RjkxQzIzRjg0MzAwRDQx
MTgzIC8qIERvd25sb2FkTWFuYWdlci5oICovOyB9OwotCQk1QzE0MjcxMTFDMjNGODlFMDBENDEx
ODMgLyogRG93bmxvYWRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzE0MjcwRDFDMjNGODg1MDBENDExODMgLyogRG93bmxvYWRJT1MubW0gKi87
IH07Ci0JCTVDMTQyNzEyMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzBGMUMyM0Y4OTkw
MEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSAqLzsgfTsKIAkJNUMxNDI3MTMxQzIzRjg5RTAwRDQx
MTgzIC8qIERvd25sb2FkQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzE0MjcwOTFDMjNGODY5MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5t
bSAqLzsgfTsKIAkJNUMxNDI3MTgxQzIzRjhCNzAwRDQxMTgzIC8qIExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUMxNDI3MTQxQzIzRjhCMDAwRDQxMTgzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ci5oICovOyB9OwogCQk1QzE0MjcxRDFDMjNGOENGMDBENDExODMgLyogTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzE0MjcxQjFDMjNGOENDMDBENDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ29jb2EubW0gKi87IH07CkBAIC0xNDEwLDcgKzE0MDcsNiBAQAogCQk4MzRCMjUx
MjFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0QjI1MTAxQTg0MkM4NzAwQ0ZC
MTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLzsgfTsKIAkJODM2MDM0OUYxQUNCMzRE
NjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkg
LyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLzsgfTsKIAkJODM2MDM0QTAxQUNCMzRE
NjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2MDM0OUUxQUNCMzRENjAwNjI2NTQ5IC8q
IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oICovOyB9OwotCQk4MzZFRUI4MDFCRTlFQzlFMDA2
QjRCODIgLyogTmV0d29ya0xvYWRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzZFRUI3RjFCRTlFQzlFMDA2QjRCODIgLyogTmV0d29ya0xvYWRN
YWMubW0gKi87IH07CiAJCTgzNzJEQjI1MUE2NzRDOEYwMEM2OTdDNSAvKiBXS1BhZ2VEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODM3MkRCMjQxQTY3NEM4RjAwQzY5N0M1IC8qIFdLUGFnZURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODM3MkRCMjgxQTY3NTYyODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzcyREIyNjFBNjc1NjI4MDBDNjk3QzUgLyogV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50LmNwcCAqLzsgfTsKIAkJODM3MkRCMjkxQTY3NTYyODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM3MkRCMjcxQTY3NTYyODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudC5oICovOyB9OwpAQCAtMTQyNyw4ICsxNDIzLDYgQEAKIAkJODNBMEVEMzQx
Rjc0N0NDRDAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQTBFRDMzMUY3NDdDQzcwMDMyOTlFQiAvKiBQ
cmVjb25uZWN0VGFzay5jcHAgKi87IH07CiAJCTgzQTBFRDM1MUY3NDdDQ0YwMDMyOTlFQiAvKiBQ
cmVjb25uZWN0VGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODNBMEVEMzIxRjc0N0NDNjAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmggKi87IH07
CiAJCTgzQkRDQ0I5MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkRDQ0I4
MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCAqLzsgfTsKLQkJ
ODNCRkFDNDIxRDk2MTM3QzAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRkFDNDAxRDk2MTM2MDAw
NDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oICovOyB9OwotCQk4M0JGQUM0MzFEOTYxMzdD
MDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkZBQzQxMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9i
RG93bmxvYWRDbGllbnQuY3BwICovOyB9OwogCQk4M0Q0NTRENzFCRTlEM0M0MDA2QzkzQkQgLyog
TmV0d29ya0xvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzRDQ1NEQ2MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5o
ICovOyB9OwogCQk4M0VFNTc1QjFEQjdENjExMDBDNzRDNTAgLyogV2ViVmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNFRTU3NTkxREI3RDYwNjAwQzc0QzUwIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50
LmNwcCAqLzsgfTsKIAkJODNFRTU3NUMxREI3RDYxMTAwQzc0QzUwIC8qIFdlYlZhbGlkYXRpb25N
ZXNzYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0VFNTc1QTFEQjdENjA2MDBDNzRDNTAgLyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGll
bnQuaCAqLzsgfTsKQEAgLTIwMjcsNyArMjAyMSw2IEBACiAJCUNEQzM4MkZFMTcyMTE3OTkwMDhB
MkZDMyAvKiBTZWNJdGVtU2hpbUxpYnJhcnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGOEE3ODEzOEI0NjA5MDBBOTVGNDQgLyogU2VjSXRlbVNo
aW1MaWJyYXJ5Lm1tICovOyB9OwogCQlDREMzODMwNzE3MjExN0REMDA4QTJGQzMgLyogQ29va2ll
U3RvcmFnZVNoaW1MaWJyYXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEQzM4MkY5MTcyMTE2RDMwMDhBMkZDMyAvKiBDb29raWVTdG9yYWdlU2hp
bUxpYnJhcnkuY3BwICovOyB9OwogCQlDREMzODMwQzE3MjEyMjgyMDA4QTJGQzMgLyogQ29va2ll
U3RvcmFnZVNoaW1MaWJyYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREMzODMwQjE3MjEyMUNFMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1M
aWJyYXJ5LmggKi87IH07Ci0JCUNEQzM4MzEwMTcyMTI0NDAwMDhBMkZDMyAvKiBDb29raWVTdG9y
YWdlU2hpbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQzM4MzBEMTcyMTI0MkQwMDhBMkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbS5tbSAqLzsgfTsK
IAkJQ0RDQTg1QzgxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENB
ODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAq
LzsgfTsKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
LmggKi87IH07CiAJCUNFMTFBRDUwMUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTFBRDRGMUNC
QzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5tbSAqLzsgfTsKQEAgLTM1ODAsNyArMzU3Myw2
IEBACiAJCTUzOUVCNTQ2MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtEYXRhVGFza0Js
b2IuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOUVCNTQ3MURDMkVFNDAwMDlENDhDRiAvKiBO
ZXR3b3JrRGF0YVRhc2tCbG9iLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5l
dHdvcmtEYXRhVGFza0Jsb2IuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNERUEzNjUxRERFNDIyRTAw
RTgyNjQ4IC8qIGpzb24uaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgbmFtZSA9IGpz
b24uaHBwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9qc29uLmhwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMwNTJGMjQxQzZEM0FCNjAwNzZFOTE5IC8qIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW07IHBhdGggPSBBdXRoZW50aWNhdGlv
bi9jb2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJl
YW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDMEIxNzc1MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0
U3RyZWFtTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29y
a1NvY2tldFN0cmVhbU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
MEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0U3RyZWFt
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2MDMs
OCArMzU5NSw2IEBACiAJCTVDMTQyNkY4MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRG93bmxvYWRNYW5h
Z2VyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjZGOTFDMjNGODQzMDBENDEx
ODMgLyogRG93bmxvYWRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERvd25sb2FkTWFuYWdlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjcwOTFDMjNG
ODY5MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IERvd25sb2FkQ29jb2EubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25sb2FkSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRJT1MubW07IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1QzE0MjcwRjFDMjNGODk5MDBENDExODMgLyogRG93bmxvYWRNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEb3dubG9hZE1hYy5t
bTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzE0MUMyM0Y4QjAwMEQ0MTE4MyAvKiBM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzE1MUMyM0Y4QjAwMEQ0MTE4MyAvKiBMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MUIxQzIzRjhDQzAwRDQx
MTgzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29j
b2EubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zODM3LDcgKzM4MjcsNiBAQAogCQk4MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0
d29ya0NhY2hlU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
ZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
NjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM2MDM0OUUxQUNCMzRENjAw
NjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODM2RUVCN0YxQkU5RUM5RTAwNkI0QjgyIC8qIE5ldHdvcmtMb2FkTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0xvYWRN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzJEQjI0MUE2NzRDOEYwMEM2
OTdDNSAvKiBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzcyREIyNjFBNjc1NjI4MDBDNjk3QzUgLyogV2ViUGFn
ZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzNzJEQjI3MUE2NzU2MjgwMEM2OTdDNSAvKiBXZWJQYWdlRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zODU0LDggKzM4NDMsNiBAQAogCQk4M0EwRUQzMjFGNzQ3Q0M2MDAzMjk5RUIgLyog
UHJlY29ubmVjdFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJlY29u
bmVjdFRhc2suaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQTBFRDMzMUY3NDdDQzcwMDMyOTlFQiAvKiBQcmVj
b25uZWN0VGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcmVj
b25uZWN0VGFzay5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkRDQ0I4MUFDNUZEQjYwMDNGNjQ0MSAv
KiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk4M0JGQUM0MDFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJsb2JEb3dubG9hZENsaWVudC5o
OyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0JGQUM0MTFEOTYxMzYwMDA0MzM0OTAgLyog
QmxvYkRvd25sb2FkQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEJsb2JEb3dubG9hZENsaWVudC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNENDU0RDYxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtMb2FkQ2xpZW50Lmg7IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4M0VFNTc1OTFEQjdENjA2MDBDNzRDNTAgLyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGll
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVmFsaWRhdGlv
bk1lc3NhZ2VDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0VFNTc1
QTFEQjdENjA2MDBDNzRDNTAgLyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1MDEsOCArNDQ4OCw2IEBACiAJCUNEQzM4
MkY5MTcyMTE2RDMwMDhBMkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDMzgzMDYxNzIxMTc5OTAwOEEyRkMzIC8qIFdlYlByb2Nlc3NT
aGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2Vi
UHJvY2Vzc1NoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CUNEQzM4MzBCMTcyMTIxQ0UwMDhBMkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbUxpYnJhcnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUNEQzM4MzBEMTcyMTI0MkQwMDhBMkZDMyAvKiBDb29raWVTdG9yYWdl
U2hpbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvb2tpZVN0
b3JhZ2VTaGltLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDREMzODMwRTE3MjEy
NDJEMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29va2llU3RvcmFnZVNoaW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RDOEY0ODgxNzI1RTY3ODAwMTY2RjZFIC8qIENvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBw
ZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VU
cmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQlDRENBODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTYyOTksNyArNjI4NCw2IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCUUxN0FFMkMxMTZCOUMxMzkwMDFDNDJGMSAvKiBjb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtQcm9jZXNzLnNiLmluICovLAotCQkJCTgzNkVFQjdGMUJFOUVDOUUwMDZCNEI4MiAvKiBOZXR3
b3JrTG9hZE1hYy5tbSAqLywKIAkJCQk1MUE4QTYxNTE2MjdGM0Y5MDAwRDkwRTkgLyogTmV0d29y
a1Byb2Nlc3NNYWMubW0gKi8sCiAJCQkJRTFCNzg0NzIxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tICovLAogCQkJKTsKQEAgLTY0OTQsNyArNjQ3OCw2IEBACiAJ
CTUxOEU4RUYxMTZCMjA4RjAwMEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbiAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNUMwNTJGMjMxQzZEM0FBMTAwNzZF
OTE5IC8qIGNvY29hICovLAogCQkJCTUxOEU4RUY2MTZCMjA5MUMwMEU5MTQyOSAvKiBtYWMgKi8s
CiAJCQkJNTE4RThFRjMxNkIyMDkxQzAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5j
cHAgKi8sCiAJCQkJNTE4RThFRjQxNkIyMDkxQzAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFu
YWdlci5oICovLApAQCAtNjYzMSwyMiArNjYxNCwxMCBAQAogCQkJbmFtZSA9IGNhcHR1cmU7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk1QzA1MkYyMzFDNkQzQUExMDA3NkU5
MTkgLyogY29jb2EgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAot
CQkJCTVDMDUyRjI0MUM2RDNBQjYwMDc2RTkxOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2Nv
YS5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gY29jb2E7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwotCQl9OwogCQk1QzE0MjZGMTFDMjNGODE3MDBENDExODMgLyogRG93bmxvYWRzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1QzE0MjcwODFDMjNG
ODUyMDBENDExODMgLyogY29jb2EgKi8sCi0JCQkJNUMxNDI3MEMxQzIzRjg3NzAwRDQxMTgzIC8q
IGlvcyAqLywKLQkJCQk1QzE0MjcwQjFDMjNGODcxMDBENDExODMgLyogbWFjICovLAotCQkJCTgz
QkZBQzQxMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovLAotCQkJ
CTgzQkZBQzQwMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCAqLywKIAkJ
CQk1QzE0MjZGMzFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWQuY3BwICovLAogCQkJCTVDMTQy
NkY0MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZC5oICovLAogCQkJCTVDMTQyNkY3MUMyM0Y4
NDMwMEQ0MTE4MyAvKiBEb3dubG9hZElELmggKi8sCkBAIC02Njc3LDIyICs2NjQ4LDYgQEAKIAkJ
CW5hbWUgPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTVDMTQy
NzBCMUMyM0Y4NzEwMEQ0MTE4MyAvKiBtYWMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJ
CWNoaWxkcmVuID0gKAotCQkJCTVDMTQyNzBGMUMyM0Y4OTkwMEQ0MTE4MyAvKiBEb3dubG9hZE1h
Yy5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gbWFjOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKLQkJNUMxNDI3MEMxQzIzRjg3NzAwRDQxMTgzIC8qIGlvcyAqLyA9IHsKLQkJCWlz
YSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNUMxNDI3MEQxQzIzRjg4NTAwRDQx
MTgzIC8qIERvd25sb2FkSU9TLm1tICovLAotCQkJKTsKLQkJCW5hbWUgPSBpb3M7Ci0JCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk1QzE0MjcxQTFDMjNGOEJGMDBENDExODMgLyog
Q29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNzUy
NCw4ICs3NDc5LDYgQEAKIAkJCQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25p
bmcubW0gKi8sCiAJCQkJMUEyQTRBRkUxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRh
LmggKi8sCiAJCQkJMUEyQTRBRkQxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1t
ICovLAotCQkJCUNEQzM4MzBFMTcyMTI0MkQwMDhBMkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbS5o
ICovLAotCQkJCUNEQzM4MzBEMTcyMTI0MkQwMDhBMkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbS5t
bSAqLywKIAkJCQlDREMzODJGOTE3MjExNkQzMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW1M
aWJyYXJ5LmNwcCAqLywKIAkJCQlDREMzODMwQjE3MjEyMUNFMDA4QTJGQzMgLyogQ29va2llU3Rv
cmFnZVNoaW1MaWJyYXJ5LmggKi8sCiAJCQkJMUFDNzVBMUMxQjMzNjk1RTAwNTY3NDVCIC8qIEhh
bmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLywKQEAgLTg2ODQsNyArODYzNyw2IEBACiAJCQkJ
Q0RBMDQxRjQxQUNFMjEwNTAwNEExM0VDIC8qIEJhY2tCb2FyZFNlcnZpY2VzU1BJLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nl
c3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTY0QTJGMjE5MUFG
MTRFMDAxMDczN0QgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24u
aCBpbiBIZWFkZXJzICovLAotCQkJCTgzQkZBQzQyMUQ5NjEzN0MwMDQzMzQ5MCAvKiBCbG9iRG93
bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzA4NzZDMTZENkNBNjkwMEY5OTIy
NiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEY2MDE0MzIxNTVD
NUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNTcwNTExMUJFNDEwRTYwMDg3NEFGMSAvKiBCbG9ja1NQSS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDI2MSw3ICsxMDIxMyw2IEBACiAJCQkJNTEyRjU4OTgxMkE4ODM4ODAwNjI5NTMwIC8qIEF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThF
OEVGODE2QjIwOTFDMDBFOTE0MjkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxOEU4RUZCMTZCMjA5MUMwMEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1h
bmFnZXIubWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNUMwNTJGMjYxQzZEM0JEMzAwNzZFOTE5
IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEy
RjU4QTIxMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OTU1QTZGNDFDNzk4NkRDMDBFQjZBOTMgLyog
QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OUM4
MUQ1OTFDMjBFMUU1MDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSBpbiBTb3VyY2VzICov
LApAQCAtMTAyNzAsNyArMTAyMjEsNiBAQAogCQkJCTk5MEQyOEJDMUM2NTM5REEwMDk4Njk3NyAv
KiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2QTJCNjA4
MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE2NEEyRjExOTFBRjE0RTAwMTA3MzdEIC8qIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTgzQkZBQzQzMUQ5NjEzN0MwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTE3MDg3NkIxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3Ry
eVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRjE4NjM4MTY3RDA3MUUwMEExQTg1QSAv
KiBDYWNoZU1vZGVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxODk3RUQ3MUY0MTVEOEEwMDE2
RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI5MSw3
ICsxMDI0MSw2IEBACiAJCQkJQkMwMzJEQUExMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzMEVBQzYxMTVEN0RBMzAwNTNFOTM3IC8qIENvbm5l
Y3Rpb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTA2RDdDMjE4QkRCRTczMDAwQUIxNjYg
LyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDREMzODMx
MDE3MjEyNDQwMDA4QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0ubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTA0RjVBMjFGMTlEN0QyMDA0Q0Y4MjEgLyogQ29va2llU3RvcmFnZVV0aWxzQ0YubW0g
aW4gU291cmNlcyAqLywKIAkJCQlCODc4QjYxNjEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlv
blBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU1RjkxNzAxQzU5NUY2MzAwMjlFOTJEIC8q
IERhdGFEZXRlY3Rpb25SZXN1bHQubW0gaW4gU291cmNlcyAqLywKQEAgLTEwMzAxLDggKzEwMjUw
LDYgQEAKIAkJCQk1QzE0MjcwMTFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTFERjYzMTIxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MTMxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25s
b2FkQ29jb2EubW0gaW4gU291cmNlcyAqLywKLQkJCQk1QzE0MjcxMTFDMjNGODlFMDBENDExODMg
LyogRG93bmxvYWRJT1MubW0gaW4gU291cmNlcyAqLywKLQkJCQk1QzE0MjcxMjFDMjNGODlFMDBE
NDExODMgLyogRG93bmxvYWRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcwNjFDMjNG
ODRDMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
QjdENENCMTI4OEFBQTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBRDI1RTk1MTY3QUIwODEwMEVBOUJDRCAvKiBEb3dubG9hZFByb3h5TWFwLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMTA0MzMsNyArMTAzODAsNiBAQAogCQkJCTVDQkM5QjhEMUM2NTI3
OUMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUzMDI1ODQ2MURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODM5OTAyMDIxQkU5QTAyQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2Fk
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzNkVFQjgwMUJFOUVDOUUwMDZCNEI4MiAvKiBOZXR3
b3JrTG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNzk1NTY4MTYyODc2Q0YwMEZBNDNC
NiAvKiBOZXR3b3JrUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUM0RjBGQjE4RTRB
Q0JCMDA4MDU2QUYgLyogTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxODNEREVDMTYzMEJERkMwMDhCRTVDNyAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAyMjcyMzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNiBAQAogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlU2hpbS5oIgogI2luY2x1
ZGUgIk9iakNPYmplY3RHcmFwaC5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
LmgiCiAjZW5kaWYKQEAgLTI3Miw5ICsyNzEsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxp
emVXZWJQcm9jZXNzKFdlCiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdURk1v
dmUocGFyYW1ldGVycykpOwogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBTZXNzaW9u
VHJhY2tlcjo6c2V0U2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBO
ZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKHsgfSkpOwotI2VuZGlmCiAKICAgICAvLyBNYXRjaCB0aGUg
UW9TIG9mIHRoZSBVSVByb2Nlc3MgYW5kIHRoZSBzY3JvbGxpbmcgdGhyZWFkIGJ1dCB1c2UgYSBz
bGlnaHRseSBsb3dlciBwcmlvcml0eS4KICAgICBXVEY6OlRocmVhZDo6c2V0Q3VycmVudFRocmVh
ZElzVXNlckludGVyYWN0aXZlKC0xKTsKQEAgLTM4NSw5ICszODIsNiBAQCB2b2lkIFdlYlByb2Nl
c3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlCiAKICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lP
TikKLSAgICBDb29raWVTdG9yYWdlU2hpbTo6c2luZ2xldG9uKCkuaW5pdGlhbGl6ZSgpOwotI2Vu
ZGlmCiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1l
b3V0KTsKIAogICAgIHJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKHBhcmFtZXRlcnMu
cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKTsKQEAgLTU1NiwxMiArNTUwLDEwIEBAIHZvaWQg
V2ViUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCAKIHZvaWQgV2ViUHJvY2Vzczo6Y2xl
YXJDYWNoZWRDcmVkZW50aWFscygpCiB7CiAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMo
KTsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpKSkKICAgICAgICAgbmV0d29ya1Nlc3Npb24tPmNsZWFyQ3JlZGVudGlhbHMo
KTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlmCiB9CiAK
IFdlYlBhZ2UqIFdlYlByb2Nlc3M6OmZvY3VzZWRXZWJQYWdlKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDIyNzIz
MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjcsOSArNjcsNyBAQCB2
b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlCiAKICAgICBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oc2Vzc2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5n
OjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSwgV1RGTW92ZSh1aVByb2Nlc3NDb29raWVT
dG9yYWdlKSk7CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFNlc3Npb25UcmFja2Vy
OjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShXVEZNb3ZlKHBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOwotI2VuZGlmCiB9CiAKIHZvaWQg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29u
dGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCg==
</data>
<flag name="review"
          id="350945"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>