<?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>12228</bug_id>
          
          <creation_ts>2007-01-12 12:15:40 -0800</creation_ts>
          <short_desc>Cleanup assorted CSS classes</short_desc>
          <delta_ts>2007-01-14 17:26:21 -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>CSS</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>35415</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-01-12 12:15:40 -0800</bug_when>
    <thetext>Patch forthcoming does cleanup of about half of the css files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35416</commentid>
    <comment_count>1</comment_count>
      <attachid>12395</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-01-12 12:21:46 -0800</bug_when>
    <thetext>Created attachment 12395
cleanup patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35256</commentid>
    <comment_count>2</comment_count>
      <attachid>12395</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-13 07:25:17 -0800</bug_when>
    <thetext>Comment on attachment 12395
cleanup patch

The word &quot;Hand&quot; really shouldn&apos;t be capitalized in &quot;shorthand&quot;.

Do we really want braces for the for statements that don&apos;t need them? I wish our style guidelines were clear on that.

If anything I&apos;d like to see you applying even more of the m_ prefix. Hyatt was just talking about how it&apos;s hard to work on certain classes because it&apos;s so hard to tell the members apart from local variables.

Fine to land this.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35126</commentid>
    <comment_count>3</comment_count>
      <attachid>12419</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-01-13 12:18:59 -0800</bug_when>
    <thetext>Created attachment 12419
updated patch

This patch updates the previous version to address Darin&apos;s comments.  Specifically, the member variables in CSSSelector have been prefixed with m_ and uses of ShortHand have been replaced with Shorthand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35127</commentid>
    <comment_count>4</comment_count>
      <attachid>12420</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-01-13 12:20:40 -0800</bug_when>
    <thetext>Created attachment 12420
patch without white space changes

This version is made using svn diff -x -w for easier reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35129</commentid>
    <comment_count>5</comment_count>
      <attachid>12395</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-01-13 13:11:39 -0800</bug_when>
    <thetext>Comment on attachment 12395
cleanup patch

Yeah, please make sure not to capitalize the H in shorthand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35134</commentid>
    <comment_count>6</comment_count>
      <attachid>12420</attachid>
    <who name="">mitz</who>
    <bug_when>2007-01-13 14:49:21 -0800</bug_when>
    <thetext>Comment on attachment 12420
patch without white space changes

Misplaced *:

+    DashboardRegion *getDashboardRegionValue () const { return m_type != CSS_DASHBOARD_REGION ? 0 : m_value.region; }

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34943</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-01-14 17:26:21 -0800</bug_when>
    <thetext>Landed in r18850.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12395</attachid>
            <date>2007-01-12 12:21:46 -0800</date>
            <delta_ts>2007-01-13 12:18:59 -0800</delta_ts>
            <desc>cleanup patch</desc>
            <filename>cssCleanup.diff</filename>
            <type>text/plain</type>
            <size>195611</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODgwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIxIEBACisyMDA3LTAxLTEyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2gg
Zm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjI4CisgICAgICAg
IENsZWFudXAgYXNzb3J0ZWQgQ1NTIGNsYXNzZXMKKworICAgICAgICAqIGNzcy9DU1NCb3JkZXJJ
bWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0JvcmRlckltYWdlVmFsdWU6OkNT
U0JvcmRlckltYWdlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQm9yZGVySW1hZ2VWYWx1
ZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yQm9yZGVyU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JUZXh0QWxpZ24pOgorICAgICAgICAoV2Vi
Q29yZTo6dmFsdWVGb3JTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UG9zaXRpb25PZmZz
ZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OmNzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6cHJpbWl0aXZlVmFsdWVGcm9tTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVy
dHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5UHJpb3JpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6aXRlbSk6CisgICAgICAgICogY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OkNTU0N1cnNv
ckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU0dyYW1tYXIueToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6
CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW5oZXJp
dGVkVmFsdWUuY3BwOgorICAgICAgICAqIGNzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oOgorICAgICAg
ICAqIGNzcy9DU1NJbml0aWFsVmFsdWUuY3BwOgorICAgICAgICAqIGNzcy9DU1NJbml0aWFsVmFs
dWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmdldDRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmdldFNob3J0SGFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlQcmlvcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlTaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmlzUHJvcGVydHlJbXBsaWNpdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldEltYWdlUHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnBhcnNlRGVjbGFyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmFkZFBh
cnNlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OnNldExlbmd0aFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjptZXJnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydGllc0luU2V0KToKKyAgICAgICAgKiBjc3MvQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NO
YW1lc3BhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU05hbWVzcGFjZTo6Q1NTTmFtZXNwYWNl
KToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Y29tcHV0ZUxlbmd0aEludCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aFNob3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6OnNldEZsb2F0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6c2NhbGVG
YWN0b3JGb3JDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpnZXRGbG9hdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpz
ZXRTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0
U3RyaW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OnBhcnNl
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRJZGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpnZXRSZWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmdldFJHQkNvbG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmdldFBhaXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
Z2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVy
dHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpvcGVyYXRvcj0pOgorICAgICAg
ICAqIGNzcy9DU1NRdWlya1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NR
dWlya1ByaW1pdGl2ZVZhbHVlOjpDU1NRdWlya1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTUnVsZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZUxpc3Q6OkNTU1J1
bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVMaXN0OjpkZWxldGVSdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1J1bGVMaXN0OjppbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3Mv
Q1NTUnVsZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVMaXN0OjppdGVtKToKKyAg
ICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OnNwZWNpZmljaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0
UHNldWRvVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KToKKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpDU1NT
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6fkNTU1NlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3I6OnBzZXVkb1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OnJlbGF0aW9uKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oOgorICAg
ICAgICAqIGNzcy9Db3VudGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyOjpDb3VudGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXI6Omxpc3RTdHlsZU51bWJlcik6CisgICAgICAg
ICogY3NzL2Nzc2hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVVSTCk6CisgICAg
ICAgICogY3NzL2Nzc2hlbHBlci5oOgorICAgICAgICAqIGNzcy9jc3NwYXJzZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjphdG9taWNTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpvcGVyYXRvcnwpOgorCiAyMDA3LTAxLTEy
ICBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
WmFjawpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDE4ODA0
KQorKysgV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5LDYgKzE5LDcgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgogICovCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NCb3JkZXJJbWFn
ZVZhbHVlLmgiCiAKQEAgLTI4LDggKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1D
U1NCb3JkZXJJbWFnZVZhbHVlOjpDU1NCb3JkZXJJbWFnZVZhbHVlKFBhc3NSZWZQdHI8Q1NTSW1h
Z2VWYWx1ZT4gaW1hZ2UsCi0gICAgUGFzc1JlZlB0cjxSZWN0SW1wbD4gaW1hZ2VSZWN0LCBpbnQg
aG9yaXpvbnRhbFJ1bGUsIGludCB2ZXJ0aWNhbFJ1bGUpCitDU1NCb3JkZXJJbWFnZVZhbHVlOjpD
U1NCb3JkZXJJbWFnZVZhbHVlKFBhc3NSZWZQdHI8Q1NTSW1hZ2VWYWx1ZT4gaW1hZ2UsIFBhc3NS
ZWZQdHI8UmVjdEltcGw+IGltYWdlUmVjdCwgaW50IGhvcml6b250YWxSdWxlLCBpbnQgdmVydGlj
YWxSdWxlKQogICAgIDogbV9pbWFnZShpbWFnZSkKICAgICAsIG1faW1hZ2VTbGljZVJlY3QoaW1h
Z2VSZWN0KQogICAgICwgbV9ob3Jpem9udGFsU2l6ZVJ1bGUoaG9yaXpvbnRhbFJ1bGUpCkBAIC00
Miw3ICs0Miw3IEBAIFN0cmluZyBDU1NCb3JkZXJJbWFnZVZhbHVlOjpjc3NUZXh0KCkgY28KICAg
ICAvLyBJbWFnZSBmaXJzdC4KICAgICBTdHJpbmcgdGV4dChtX2ltYWdlLT5jc3NUZXh0KCkpOwog
ICAgIHRleHQgKz0gIiAiOwotICAgIAorCiAgICAgLy8gTm93IHRoZSByZWN0LCBidXQgaXQgaXNu
J3QgcmVhbGx5IGEgcmVjdCwgc28gd2UgZHVtcCBtYW51YWxseQogICAgIHRleHQgKz0gbV9pbWFn
ZVNsaWNlUmVjdC0+dG9wKCktPmNzc1RleHQoKTsKICAgICB0ZXh0ICs9ICIgIjsKQEAgLTUxLDcg
KzUxLDcgQEAgU3RyaW5nIENTU0JvcmRlckltYWdlVmFsdWU6OmNzc1RleHQoKSBjbwogICAgIHRl
eHQgKz0gbV9pbWFnZVNsaWNlUmVjdC0+Ym90dG9tKCktPmNzc1RleHQoKTsKICAgICB0ZXh0ICs9
ICIgIjsKICAgICB0ZXh0ICs9IG1faW1hZ2VTbGljZVJlY3QtPmxlZnQoKS0+Y3NzVGV4dCgpOwot
ICAgIAorCiAgICAgLy8gTm93IHRoZSBrZXl3b3Jkcy4KICAgICB0ZXh0ICs9ICIgIjsKICAgICB0
ZXh0ICs9IENTU1ByaW1pdGl2ZVZhbHVlKG1faG9yaXpvbnRhbFNpemVSdWxlKS5jc3NUZXh0KCk7
CkBAIC02MSw0ICs2MSw0IEBAIFN0cmluZyBDU1NCb3JkZXJJbWFnZVZhbHVlOjpjc3NUZXh0KCkg
Y28KICAgICByZXR1cm4gdGV4dDsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuaAkocmV2aXNpb24gMTg4MDQpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDgg
QEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCiAKLSNpZm5kZWYgQ1NTQm9y
ZGVySW1hZ2VWYWx1ZV9ICi0jZGVmaW5lIENTU0JvcmRlckltYWdlVmFsdWVfSAorI2lmbmRlZiBD
U1NCb3JkZXJJbWFnZVZhbHVlX2gKKyNkZWZpbmUgQ1NTQm9yZGVySW1hZ2VWYWx1ZV9oCiAKICNp
bmNsdWRlICJDU1NWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0zMiw4
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU0ltYWdlVmFsdWU7CiBjbGFz
cyBSZWN0SW1wbDsKIAotY2xhc3MgQ1NTQm9yZGVySW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1
ZQoteworY2xhc3MgQ1NTQm9yZGVySW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJs
aWM6CiAgICAgQ1NTQm9yZGVySW1hZ2VWYWx1ZSgpOwogICAgIENTU0JvcmRlckltYWdlVmFsdWUo
UGFzc1JlZlB0cjxDU1NJbWFnZVZhbHVlPiwgUGFzc1JlZlB0cjxSZWN0SW1wbD4sIGludCBob3Jp
em9udGFsUnVsZSwgaW50IHZlcnRpY2FsUnVsZSk7CkBAIC00NywxMiArNDYsMTIgQEAgcHVibGlj
OgogICAgIC8vIFRoZXNlIGZvdXIgdmFsdWVzIGFyZSB1c2VkIHRvIG1ha2UgImN1dHMiIGluIHRo
ZSBpbWFnZS4gIFRoZXkgY2FuIGJlIG51bWJlcnMKICAgICAvLyBvciBwZXJjZW50YWdlcy4KICAg
ICBSZWZQdHI8UmVjdEltcGw+IG1faW1hZ2VTbGljZVJlY3Q7Ci0gICAgCisKICAgICAvLyBWYWx1
ZXMgZm9yIGhvdyB0byBoYW5kbGUgdGhlIHNjYWxpbmcvc3RyZXRjaGluZy90aWxpbmcgb2YgdGhl
IGltYWdlIHNsaWNlcy4KICAgICBpbnQgbV9ob3Jpem9udGFsU2l6ZVJ1bGU7IC8vIFJ1bGUgZm9y
IGhvdyB0byBhZGp1c3QgdGhlIHdpZHRocyBvZiB0aGUgdG9wL21pZGRsZS9ib3R0b20KICAgICBp
bnQgbV92ZXJ0aWNhbFNpemVSdWxlOyAvLyBSdWxlIGZvciBob3cgdG8gYWRqdXN0IHRoZSBoZWln
aHRzIG9mIHRoZSBsZWZ0L21pZGRsZS9yaWdodAogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ1NTQm9yZGVySW1hZ2VWYWx1
ZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJ
KHJldmlzaW9uIDE4ODA0KQorKysgV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDQgQEAKIC8qKgotICogQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAogICoKICAqIENvcHlyaWdodCAoQykgMjAwNCBaYWNrIFJ1
c2luIDx6YWNrQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4KQEAgLTIzLDE1ICsyMiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogCi0jaW5jbHVkZSAi
Q2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlICJEYXNoYm9hcmRSZWdpb24uaCIKLSNpbmNsdWRlICJE
b2N1bWVudC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMu
aCIKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgor
I2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKICNpbmNsdWRlICJTaGFkb3dWYWx1ZS5oIgpAQCAtMTgyLDExICsxODEsMTAg
QEAgc3RhdGljIENTU1ZhbHVlKiB2YWx1ZUZvckxlbmd0aChjb25zdCBMZQogICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShsZW5ndGgucGVyY2VudCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgICAgICBjYXNlIFJlbGF0aXZlOgogICAgICAg
ICBjYXNlIFN0YXRpYzoKLSAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBiZSByZWFjaGVkLgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIC8vIFNob3VsZCBuZXZlciBiZSByZWFjaGVk
LCBidXQgaWYgd2UgZG8sIGp1c3QgcmV0dXJuICJhdXRvIi4KLSAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIDA7CiB9CiAKIC8vIEhhbmRsZXMgc3BlY2lhbCB2YWx1ZSBmb3IgIm5vbmUiLgpA
QCAtMTk3LDcgKzE5NSw3IEBAIHN0YXRpYyBDU1NWYWx1ZSogdmFsdWVGb3JNYXhMZW5ndGgoY29u
c3QKICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgobGVuZ3RoKTsKIH0KIAotc3RhdGljIENTU1Zh
bHVlICp2YWx1ZUZvckJvcmRlclN0eWxlKEVCb3JkZXJTdHlsZSBzdHlsZSkKK3N0YXRpYyBDU1NW
YWx1ZSogdmFsdWVGb3JCb3JkZXJTdHlsZShFQm9yZGVyU3R5bGUgc3R5bGUpCiB7CiAgICAgc3dp
dGNoIChzdHlsZSkgewogICAgICAgICBjYXNlIEJOT05FOgpAQCAtMjI1LDcgKzIyMyw3IEBAIHN0
YXRpYyBDU1NWYWx1ZSAqdmFsdWVGb3JCb3JkZXJTdHlsZShFQm8KICAgICByZXR1cm4gMDsKIH0K
IAotc3RhdGljIENTU1ZhbHVlICp2YWx1ZUZvclRleHRBbGlnbihFVGV4dEFsaWduIGFsaWduKQor
c3RhdGljIENTU1ZhbHVlKiB2YWx1ZUZvclRleHRBbGlnbihFVGV4dEFsaWduIGFsaWduKQogewog
ICAgIHN3aXRjaCAoYWxpZ24pIHsKICAgICAgICAgY2FzZSBUQUFVVE86CkBAIC0yNTMsNiArMjUx
LDcgQEAgc3RhdGljIENTU1ZhbHVlKiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaAogewogICAgIGlm
ICghc2hhZG93KQogICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
Tk9ORSk7CisKICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBuZXcgQ1NTVmFsdWVMaXN0OwogICAg
IGZvciAoY29uc3QgU2hhZG93RGF0YSogcyA9IHNoYWRvdzsgczsgcyA9IHMtPm5leHQpIHsKICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHggPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocy0+eCwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CkBAIC0yNjQsNDIgKzI2Myw0MiBAQCBzdGF0aWMg
Q1NTVmFsdWUqIHZhbHVlRm9yU2hhZG93KGNvbnN0IFNoCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAK
LXN0YXRpYyBDU1NWYWx1ZSAqZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShSZW5kZXJPYmplY3QgKnJl
bmRlcmVyLCBpbnQgcHJvcGVydHlJRCkKK3N0YXRpYyBDU1NWYWx1ZSogZ2V0UG9zaXRpb25PZmZz
ZXRWYWx1ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBpbnQgcHJvcGVydHlJRCkKIHsKICAgICBp
ZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlbmRlclN0eWxlICpzdHls
ZSA9IHJlbmRlcmVyLT5zdHlsZSgpOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVy
LT5zdHlsZSgpOwogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgTGVu
Z3RoIGw7CiAgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7Ci0gICAgY2FzZSBDU1NfUFJPUF9MRUZU
OgotICAgICAgICBsID0gc3R5bGUtPmxlZnQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NfUFJPUF9SSUdIVDoKLSAgICAgICAgbCA9IHN0eWxlLT5yaWdodCgpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU19QUk9QX1RPUDoKLSAgICAgICAgbCA9IHN0eWxlLT50b3AoKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1RUT006Ci0gICAgICAgIGwgPSBzdHls
ZS0+Ym90dG9tKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biAwOworICAgICAgICBjYXNlIENTU19QUk9QX0xFRlQ6CisgICAgICAgICAgICBsID0gc3R5bGUt
PmxlZnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19QUk9QX1JJR0hU
OgorICAgICAgICAgICAgbCA9IHN0eWxlLT5yaWdodCgpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ1NTX1BST1BfVE9QOgorICAgICAgICAgICAgbCA9IHN0eWxlLT50b3AoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19QUk9QX0JPVFRPTToKKyAgICAg
ICAgICAgIGwgPSBzdHlsZS0+Ym90dG9tKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIGlmIChyZW5kZXJl
ci0+aXNQb3NpdGlvbmVkKCkpCiAgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChsKTsKLSAg
ICAKKwogICAgIGlmIChyZW5kZXJlci0+aXNSZWxQb3NpdGlvbmVkKCkpCiAgICAgICAgIC8vIEZJ
WE1FOiBJdCdzIG5vdCBlbm91Z2ggdG8gc2ltcGx5IHJldHVybiAiYXV0byIgdmFsdWVzIGZvciBv
bmUgb2Zmc2V0IGlmIHRoZSBvdGhlciBzaWRlIGlzIGRlZmluZWQuCiAgICAgICAgIC8vIEluIG90
aGVyIHdvcmRzIGlmIGxlZnQgaXMgYXV0byBhbmQgcmlnaHQgaXMgbm90IGF1dG8sIHRoZW4gbGVm
dCdzIGNvbXB1dGVkIHZhbHVlIGlzIG5lZ2F0aXZlIHJpZ2h0LgogICAgICAgICAvLyBTbyB3ZSBz
aG91bGQgZ2V0IHRoZSBvcHBvc2l0ZSBsZW5ndGggdW5pdCBhbmQgc2VlIGlmIGl0IGlzIGF1dG8u
CiAgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChsKTsKLSAgICAKKwogICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKIH0KIApAQCAtMzIyLDE2ICszMjEs
MTYgQEAgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjp+Q1NTQ29tcHV0ZQogU3RyaW5nIENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5n
IHJlc3VsdCgiIik7Ci0gICAgCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ29t
cHV0ZWRQcm9wZXJ0aWVzOyBpKyspIHsKLSAgICAgICAgaWYgKGkgIT0gMCkKKyAgICAgICAgaWYg
KGkpCiAgICAgICAgICAgICByZXN1bHQgKz0gIiAiOwogICAgICAgICByZXN1bHQgKz0gZ2V0UHJv
cGVydHlOYW1lKGNvbXB1dGVkUHJvcGVydGllc1tpXSk7CiAgICAgICAgIHJlc3VsdCArPSAiOiAi
OwogICAgICAgICByZXN1bHQgKz0gZ2V0UHJvcGVydHlWYWx1ZShjb21wdXRlZFByb3BlcnRpZXNb
aV0pOwogICAgICAgICByZXN1bHQgKz0gIjsiOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTM1NSwxMiArMzU0LDE5IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U0NvbXB1dGVkU3R5bGVEZWMKIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZUZyb21M
ZW5ndGgoTGVuZ3RoIGxlbmd0aCwgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyU3R5bGUq
IHN0eWxlKQogewogICAgIFN0cmluZyBzdHJpbmc7Ci0gICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQo
KSkKLSAgICAgICAgc3RyaW5nID0gbnVtYmVyQXNTdHJpbmcobGVuZ3RoLnBlcmNlbnQoKSkgKyAi
JSI7Ci0gICAgZWxzZSBpZiAobGVuZ3RoLmlzRml4ZWQoKSkKLSAgICAgICAgc3RyaW5nID0gbnVt
YmVyQXNTdHJpbmcobGVuZ3RoLmNhbGNNaW5WYWx1ZSgwKSk7Ci0gICAgZWxzZSBpZiAobGVuZ3Ro
LmlzQXV0bygpKQotICAgICAgICBzdHJpbmcgPSAiYXV0byI7CisgICAgc3dpdGNoIChsZW5ndGgu
dHlwZSgpKSB7CisgICAgICAgIGNhc2UgUGVyY2VudDoKKyAgICAgICAgICAgIHN0cmluZyA9IG51
bWJlckFzU3RyaW5nKGxlbmd0aC5wZXJjZW50KCkpICsgIiUiOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRml4ZWQ6CisgICAgICAgICAgICBzdHJpbmcgPSBudW1iZXJBc1N0cmlu
ZyhsZW5ndGguY2FsY01pblZhbHVlKDApKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEF1dG86CisgICAgICAgICAgICBzdHJpbmcgPSAiYXV0byI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0cmluZywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19T
VFJJTkcpOwogfQogCkBAIC0zNzgsMTA5NSArMzg0LDEwNjkgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2Rl
LT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiAwOworCiAg
ICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgaWYgKCFzdHls
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBzd2l0Y2ggKHByb3BlcnR5SUQpCi0gICAgewot
ICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9DT0xPUjoKLSAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+YmFja2dyb3VuZENvbG9yKCkucmdiKCkpOwotICAgIGNh
c2UgQ1NTX1BST1BfQkFDS0dST1VORF9JTUFHRToKLSAgICAgICAgaWYgKHN0eWxlLT5iYWNrZ3Jv
dW5kSW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5
bGUtPmJhY2tncm91bmRJbWFnZSgpLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkp
OwotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0g
ICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRfU0laRTogewotICAgICAgICBMZW5n
dGggd2lkdGhMZW5ndGggPSBzdHlsZS0+YmFja2dyb3VuZFNpemUoKS53aWR0aDsKLSAgICAgICAg
TGVuZ3RoIGhlaWdodExlbmd0aCA9IHN0eWxlLT5iYWNrZ3JvdW5kU2l6ZSgpLmhlaWdodDsKLSAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJnV2lkdGggPSBwcmltaXRpdmVWYWx1ZUZyb21MZW5n
dGgod2lkdGhMZW5ndGgsIHJlbmRlcmVyLCBzdHlsZSk7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBiZ0hlaWdodCA9IHByaW1pdGl2ZVZhbHVlRnJvbUxlbmd0aChoZWlnaHRMZW5ndGgsIHJl
bmRlcmVyLCBzdHlsZSk7Ci0gICAgICAgIFBhaXIqIHBhaXIgPSBuZXcgUGFpcihiZ1dpZHRoLCBi
Z0hlaWdodCk7Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocGFpcik7Ci0g
ICAgfQotICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9SRVBFQVQ6Ci0gICAgICAgIHN3aXRj
aCAoc3R5bGUtPmJhY2tncm91bmRSZXBlYXQoKSkgewotICAgICAgICAgICAgY2FzZSBSRVBFQVQ6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JF
UEVBVCk7Ci0gICAgICAgICAgICBjYXNlIFJFUEVBVF9YOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRVBFQVRfWCk7Ci0gICAgICAgICAgICBj
YXNlIFJFUEVBVF9ZOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9SRVBFQVRfWSk7Ci0gICAgICAgICAgICBjYXNlIE5PX1JFUEVBVDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9fUkVQRUFU
KTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRfQ09NUE9TSVRFOgot
ICAgICAgICBzd2l0Y2ggKHN0eWxlLT5iYWNrZ3JvdW5kQ29tcG9zaXRlKCkpIHsKLSAgICAgICAg
ICAgIGNhc2UgQ29tcG9zaXRlQ2xlYXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0NMRUFSKTsKLSAgICAgICAgICAgIGNhc2UgQ29tcG9zaXRl
Q29weToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfQ09QWSk7Ci0gICAgICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZU92ZXI6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NPVVJDRV9PVkVS
KTsKLSAgICAgICAgICAgIGNhc2UgQ29tcG9zaXRlU291cmNlSW46Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NPVVJDRV9JTik7Ci0gICAgICAg
ICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZU91dDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU09VUkNFX09VVCk7Ci0gICAgICAgICAgICBjYXNl
IENvbXBvc2l0ZVNvdXJjZUF0b3A6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX1NPVVJDRV9BVE9QKTsKLSAgICAgICAgICAgIGNhc2UgQ29tcG9z
aXRlRGVzdGluYXRpb25PdmVyOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9ERVNUSU5BVElPTl9PVkVSKTsKLSAgICAgICAgICAgIGNhc2UgQ29t
cG9zaXRlRGVzdGluYXRpb25JbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfREVTVElOQVRJT05fSU4pOwotICAgICAgICAgICAgY2FzZSBDb21w
b3NpdGVEZXN0aW5hdGlvbk91dDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfREVTVElOQVRJT05fT1VUKTsKLSAgICAgICAgICAgIGNhc2UgQ29t
cG9zaXRlRGVzdGluYXRpb25BdG9wOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERVNUSU5BVElPTl9BVE9QKTsKLSAgICAgICAgICAgIGNhc2Ug
Q29tcG9zaXRlWE9SOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9YT1IpOwotICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVQbHVzRGFya2VyOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QTFVT
X0RBUktFUik7Ci0gICAgICAgICAgICBjYXNlIENvbXBvc2l0ZUhpZ2hsaWdodDoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSElHSExJR0hUKTsK
LSAgICAgICAgICAgIGNhc2UgQ29tcG9zaXRlUGx1c0xpZ2h0ZXI6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BMVVNfTElHSFRFUik7CisgICAg
c3dpdGNoIChwcm9wZXJ0eUlEKSB7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9D
T0xPUjoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJh
Y2tncm91bmRDb2xvcigpLnJnYigpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5E
X0lNQUdFOgorICAgICAgICAgICAgaWYgKHN0eWxlLT5iYWNrZ3JvdW5kSW1hZ2UoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5iYWNrZ3JvdW5k
SW1hZ2UoKS0+dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKKyAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKKyAgICAgICAgY2Fz
ZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRfU0laRTogeworICAgICAgICAgICAgTGVuZ3Ro
IHdpZHRoTGVuZ3RoID0gc3R5bGUtPmJhY2tncm91bmRTaXplKCkud2lkdGg7CisgICAgICAgICAg
ICBMZW5ndGggaGVpZ2h0TGVuZ3RoID0gc3R5bGUtPmJhY2tncm91bmRTaXplKCkuaGVpZ2h0Owor
ICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJnV2lkdGggPSBwcmltaXRpdmVWYWx1ZUZy
b21MZW5ndGgod2lkdGhMZW5ndGgsIHJlbmRlcmVyLCBzdHlsZSk7CisgICAgICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogYmdIZWlnaHQgPSBwcmltaXRpdmVWYWx1ZUZyb21MZW5ndGgoaGVpZ2h0
TGVuZ3RoLCByZW5kZXJlciwgc3R5bGUpOworICAgICAgICAgICAgUGFpciogcGFpciA9IG5ldyBQ
YWlyKGJnV2lkdGgsIGJnSGVpZ2h0KTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUocGFpcik7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JP
VU5EX1JFUEVBVDoKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmJhY2tncm91bmRSZXBlYXQo
KSkgeworICAgICAgICAgICAgICAgIGNhc2UgUkVQRUFUOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUkVQRUFUKTsKKyAgICAgICAgICAg
ICAgICBjYXNlIFJFUEVBVF9YOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfUkVQRUFUX1gpOworICAgICAgICAgICAgICAgIGNhc2UgUkVQ
RUFUX1k6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9SRVBFQVRfWSk7CisgICAgICAgICAgICAgICAgY2FzZSBOT19SRVBFQVQ6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT19S
RVBFQVQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JB
Q0tHUk9VTkRfQ09NUE9TSVRFOgorICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+YmFja2dyb3Vu
ZENvbXBvc2l0ZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVDbGVhcjoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NM
RUFSKTsKKyAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZUNvcHk6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT1BZKTsKKyAgICAg
ICAgICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZU92ZXI6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TT1VSQ0VfT1ZFUik7CisgICAg
ICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VJbjoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NPVVJDRV9JTik7CisgICAgICAg
ICAgICAgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VPdXQ6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TT1VSQ0VfT1VUKTsKKyAgICAgICAg
ICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUF0b3A6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TT1VSQ0VfQVRPUCk7CisgICAgICAg
ICAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXI6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERVNUSU5BVElPTl9PVkVS
KTsKKyAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uSW46CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERVNUSU5B
VElPTl9JTik7CisgICAgICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0RFU1RJTkFUSU9OX09VVCk7CisgICAgICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5h
dGlvbkF0b3A6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9ERVNUSU5BVElPTl9BVE9QKTsKKyAgICAgICAgICAgICAgICBjYXNlIENvbXBv
c2l0ZVhPUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1hPUik7CisgICAgICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVQbHVzRGFya2Vy
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfUExVU19EQVJLRVIpOworICAgICAgICAgICAgICAgIGNhc2UgQ29tcG9zaXRlSGlnaGxpZ2h0
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfSElHSExJR0hUKTsKKyAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZVBsdXNMaWdodGVy
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfUExVU19MSUdIVEVSKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1Bf
QkFDS0dST1VORF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgaWYgKHN0eWxlLT5iYWNrZ3JvdW5k
QXR0YWNobWVudCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9TQ1JPTEwpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0ZJWEVEKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tH
Uk9VTkRfQ0xJUDoKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRfT1JJ
R0lOOiB7CisgICAgICAgICAgICBFQmFja2dyb3VuZEJveCBib3ggPSAocHJvcGVydHlJRCA9PSBD
U1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRfQ0xJUCA/IHN0eWxlLT5iYWNrZ3JvdW5kQ2xpcCgp
IDogc3R5bGUtPmJhY2tncm91bmRPcmlnaW4oKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGJveCkg
eworICAgICAgICAgICAgICAgIGNhc2UgQkdCT1JERVI6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CT1JERVIpOworICAgICAgICAgICAg
ICAgIGNhc2UgQkdQQURESU5HOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfUEFERElORyk7CisgICAgICAgICAgICAgICAgY2FzZSBCR0NP
TlRFTlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9DT05URU5UKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1Bf
QkFDS0dST1VORF9BVFRBQ0hNRU5UOgotICAgICAgICBpZiAoc3R5bGUtPmJhY2tncm91bmRBdHRh
Y2htZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfU0NST0xMKTsKLSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0ZJWEVEKTsKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQkFDS0dST1VORF9DTElQOgotICAg
IGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CQUNLR1JPVU5EX09SSUdJTjogewotICAgICAgICBFQmFj
a2dyb3VuZEJveCBib3ggPSAocHJvcGVydHlJRCA9PSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9V
TkRfQ0xJUCA/IHN0eWxlLT5iYWNrZ3JvdW5kQ2xpcCgpIDogc3R5bGUtPmJhY2tncm91bmRPcmln
aW4oKSk7Ci0gICAgICAgIGlmIChib3ggPT0gQkdCT1JERVIpCi0gICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQk9SREVSKTsKLSAgICAgICAgaWYgKGJveCA9
PSBCR1BBRERJTkcpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfUEFERElORyk7Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9DT05URU5UKTsKLSAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX1BPU0lU
SU9OOgotICAgIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZzsKLSAgICAgICAgTGVuZ3RoIGxlbmd0
aChzdHlsZS0+YmFja2dyb3VuZFhQb3NpdGlvbigpKTsKLSAgICAgICAgaWYgKGxlbmd0aC5pc1Bl
cmNlbnQoKSkKLSAgICAgICAgICAgIHN0cmluZyA9IG51bWJlckFzU3RyaW5nKGxlbmd0aC5wZXJj
ZW50KCkpICsgIiUiOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHJpbmcgPSBudW1iZXJB
c1N0cmluZyhsZW5ndGguY2FsY01pblZhbHVlKHJlbmRlcmVyLT5jb250ZW50V2lkdGgoKSkpOwot
ICAgICAgICBzdHJpbmcgKz0gIiAiOwotICAgICAgICBsZW5ndGggPSBzdHlsZS0+YmFja2dyb3Vu
ZFlQb3NpdGlvbigpOwotICAgICAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQotICAgICAgICAg
ICAgc3RyaW5nICs9IG51bWJlckFzU3RyaW5nKGxlbmd0aC5wZXJjZW50KCkpICsgIiUiOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBzdHJpbmcgKz0gbnVtYmVyQXNTdHJpbmcobGVuZ3RoLmNh
bGNNaW5WYWx1ZShyZW5kZXJlci0+Y29udGVudFdpZHRoKCkpKTsKLSAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShzdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX1BPU0lUSU9OX1g6Ci0gICAg
ICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+YmFja2dyb3VuZFhQb3NpdGlvbigpKTsK
LSAgICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkRfUE9TSVRJT05fWToKLSAgICAgICAgcmV0dXJu
IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5iYWNrZ3JvdW5kWVBvc2l0aW9uKCkpOworICAgICAgICBj
YXNlIENTU19QUk9QX0JBQ0tHUk9VTkRfUE9TSVRJT046IHsKKyAgICAgICAgICAgIFN0cmluZyBz
dHJpbmc7CisgICAgICAgICAgICBMZW5ndGggbGVuZ3RoKHN0eWxlLT5iYWNrZ3JvdW5kWFBvc2l0
aW9uKCkpOworICAgICAgICAgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkKKyAgICAgICAgICAg
ICAgICBzdHJpbmcgPSBudW1iZXJBc1N0cmluZyhsZW5ndGgucGVyY2VudCgpKSArICIlIjsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdHJpbmcgPSBudW1iZXJBc1N0cmluZyhs
ZW5ndGguY2FsY01pblZhbHVlKHJlbmRlcmVyLT5jb250ZW50V2lkdGgoKSkpOworICAgICAgICAg
ICAgc3RyaW5nICs9ICIgIjsKKyAgICAgICAgICAgIGxlbmd0aCA9IHN0eWxlLT5iYWNrZ3JvdW5k
WVBvc2l0aW9uKCk7CisgICAgICAgICAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQorICAgICAg
ICAgICAgICAgIHN0cmluZyArPSBudW1iZXJBc1N0cmluZyhsZW5ndGgucGVyY2VudCgpKSArICIl
IjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdHJpbmcgKz0gbnVtYmVyQXNT
dHJpbmcobGVuZ3RoLmNhbGNNaW5WYWx1ZShyZW5kZXJlci0+Y29udGVudFdpZHRoKCkpKTsKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3RyaW5nLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORyk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NfUFJPUF9C
QUNLR1JPVU5EX1BPU0lUSU9OX1g6CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgo
c3R5bGUtPmJhY2tncm91bmRYUG9zaXRpb24oKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQkFD
S0dST1VORF9QT1NJVElPTl9ZOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0
eWxlLT5iYWNrZ3JvdW5kWVBvc2l0aW9uKCkpOwogI2lmZGVmIFhCTF9TVVBQT1JUCi0gICAgY2Fz
ZSBDU1NfUFJPUF9fV0VCS0lUX0JJTkRJTkc6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVu
dGVkCi0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQklORElO
RzoKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisgICAgICAgICAgICBicmVh
azsKICNlbmRpZgotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0NPTExBUFNFOgotICAgICAgICBp
ZiAoc3R5bGUtPmJvcmRlckNvbGxhcHNlKCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfQ09MTEFQU0UpOwotICAgICAgICBlbHNlCisgICAgICAgIGNh
c2UgQ1NTX1BST1BfQk9SREVSX0NPTExBUFNFOgorICAgICAgICAgICAgaWYgKHN0eWxlLT5ib3Jk
ZXJDb2xsYXBzZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9DT0xMQVBTRSk7CiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfU0VQQVJBVEUpOwotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX1NQQUNJ
Tkc6Ci0gICAgewotICAgICAgICBTdHJpbmcgc3RyaW5nKG51bWJlckFzU3RyaW5nKHN0eWxlLT5o
b3Jpem9udGFsQm9yZGVyU3BhY2luZygpKSArICJweCAiICsgbnVtYmVyQXNTdHJpbmcoc3R5bGUt
PnZlcnRpY2FsQm9yZGVyU3BhY2luZygpKSArICJweCIpOwotICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKHN0cmluZywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwot
ICAgIH0KLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9SREVSX0hPUklaT05UQUxfU1BBQ0lO
RzoKLSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+aG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAgY2FzZSBD
U1NfUFJPUF9fV0VCS0lUX0JPUkRFUl9WRVJUSUNBTF9TUEFDSU5HOgotICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfVE9QX0NP
TE9SOgotICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLCBzdHls
ZS0+Ym9yZGVyVG9wQ29sb3IoKSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfUklHSFRfQ09M
T1I6Ci0gICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN0eWxl
LT5ib3JkZXJSaWdodENvbG9yKCkpOwotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0JPVFRPTV9D
T0xPUjoKLSAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5
bGUtPmJvcmRlckJvdHRvbUNvbG9yKCkpOwotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0xFRlRf
Q09MT1I6Ci0gICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN0
eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfVE9QX1NU
WUxFOgotICAgICAgICByZXR1cm4gdmFsdWVGb3JCb3JkZXJTdHlsZShzdHlsZS0+Ym9yZGVyVG9w
U3R5bGUoKSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfUklHSFRfU1RZTEU6Ci0gICAgICAg
IHJldHVybiB2YWx1ZUZvckJvcmRlclN0eWxlKHN0eWxlLT5ib3JkZXJSaWdodFN0eWxlKCkpOwot
ICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0JPVFRPTV9TVFlMRToKLSAgICAgICAgcmV0dXJuIHZh
bHVlRm9yQm9yZGVyU3R5bGUoc3R5bGUtPmJvcmRlckJvdHRvbVN0eWxlKCkpOwotICAgIGNhc2Ug
Q1NTX1BST1BfQk9SREVSX0xFRlRfU1RZTEU6Ci0gICAgICAgIHJldHVybiB2YWx1ZUZvckJvcmRl
clN0eWxlKHN0eWxlLT5ib3JkZXJMZWZ0U3R5bGUoKSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JE
RVJfVE9QX1dJRFRIOgotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxl
LT5ib3JkZXJUb3BXaWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBjYXNl
IENTU19QUk9QX0JPUkRFUl9SSUdIVF9XSURUSDoKLSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYKTsKLSAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9CT1RUT01fV0lEVEg6Ci0gICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0xF
RlRfV0lEVEg6Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJv
cmRlckxlZnRXaWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBjYXNlIENT
U19QUk9QX0JPVFRPTToKLSAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUocmVu
ZGVyZXIsIENTU19QUk9QX0JPVFRPTSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JPWF9B
TElHTjoKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+Ym94QWxpZ24oKSkgewotICAgICAgICAgICAg
Y2FzZSBCU1RSRVRDSDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfU1RSRVRDSCk7Ci0gICAgICAgICAgICBjYXNlIEJTVEFSVDoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1RBUlQpOwotICAg
ICAgICAgICAgY2FzZSBCQ0VOVEVSOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9DRU5URVIpOwotICAgICAgICAgICAgY2FzZSBCRU5EOgotICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FTkQpOwot
ICAgICAgICAgICAgY2FzZSBCQkFTRUxJTkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JBU0VMSU5FKTsKLSAgICAgICAgICAgIGNhc2UgQkpV
U1RJRlk6Ci0gICAgICAgICAgICAgICAgYnJlYWs7IC8vIG5vdCBhbGxvd2VkCi0gICAgICAgIH0K
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNh
c2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfRElSRUNUSU9OOgotICAgICAgICBzd2l0Y2ggKHN0eWxl
LT5ib3hEaXJlY3Rpb24oKSkgewotICAgICAgICAgICAgY2FzZSBCTk9STUFMOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOwotICAg
ICAgICAgICAgY2FzZSBCUkVWRVJTRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfUkVWRVJTRSk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfX1dF
QktJVF9CT1hfRkxFWDoKLSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHls
ZS0+Ym94RmxleCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgY2FzZSBD
U1NfUFJPUF9fV0VCS0lUX0JPWF9GTEVYX0dST1VQOgotICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHN0eWxlLT5ib3hGbGV4R3JvdXAoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfTElORVM6Ci0gICAgICAg
IHN3aXRjaCAoc3R5bGUtPmJveExpbmVzKCkpIHsKLSAgICAgICAgICAgIGNhc2UgU0lOR0xFOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TSU5H
TEUpOwotICAgICAgICAgICAgY2FzZSBNVUxUSVBMRToKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTVVMVElQTEUpOwotICAgICAgICB9Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENT
U19QUk9QX19XRUJLSVRfQk9YX09SRElOQUxfR1JPVVA6Ci0gICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJveE9yZGluYWxHcm91cCgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUik7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JPWF9PUklFTlQ6Ci0g
ICAgICAgIHN3aXRjaCAoc3R5bGUtPmJveE9yaWVudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIEhP
UklaT05UQUw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0hPUklaT05UQUwpOwotICAgICAgICAgICAgY2FzZSBWRVJUSUNBTDoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVkVSVElDQUwpOwot
ICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
MDsKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX1BBQ0s6Ci0gICAgICAgIHN3aXRjaCAo
c3R5bGUtPmJveFBhY2soKSkgewotICAgICAgICAgICAgY2FzZSBCU1RBUlQ6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NUQVJUKTsKLSAgICAg
ICAgICAgIGNhc2UgQkVORDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfRU5EKTsKLSAgICAgICAgICAgIGNhc2UgQkNFTlRFUjoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ0VOVEVSKTsKLSAg
ICAgICAgICAgIGNhc2UgQkpVU1RJRlk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0pVU1RJRlkpOwotICAgICAgICAgICAgY2FzZSBCU1RSRVRD
SDoKLSAgICAgICAgICAgIGNhc2UgQkJBU0VMSU5FOgotICAgICAgICAgICAgICAgIGJyZWFrOyAv
LyBub3QgYWxsb3dlZAotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX1NIQURPVzoK
LSAgICAgICAgcmV0dXJuIHZhbHVlRm9yU2hhZG93KHN0eWxlLT5ib3hTaGFkb3coKSk7Ci0gICAg
Y2FzZSBDU1NfUFJPUF9DQVBUSU9OX1NJREU6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPmNhcHRp
b25TaWRlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ0FQTEVGVDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTEVGVCk7Ci0gICAgICAgICAgICBj
YXNlIENBUFJJR0hUOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9SSUdIVCk7Ci0gICAgICAgICAgICBjYXNlIENBUFRPUDoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVE9QKTsKLSAgICAgICAg
ICAgIGNhc2UgQ0FQQk9UVE9NOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9CT1RUT00pOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENTU19QUk9QX0NMRUFSOgot
ICAgICAgICBzd2l0Y2ggKHN0eWxlLT5jbGVhcigpKSB7Ci0gICAgICAgICAgICBjYXNlIENOT05F
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
T05FKTsKLSAgICAgICAgICAgIGNhc2UgQ0xFRlQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xFRlQpOwotICAgICAgICAgICAgY2FzZSBDUklH
SFQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1JJR0hUKTsKLSAgICAgICAgICAgIGNhc2UgQ0JPVEg6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JPVEgpOwotICAgICAgICB9Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENTU19Q
Uk9QX0NMSVA6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCi0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTX1BST1BfQ09MT1I6Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoc3R5bGUtPmNvbG9yKCkucmdiKCkpOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJ
VF9DT0xVTU5fQ09VTlQ6Ci0gICAgICAgIGlmIChzdHlsZS0+aGFzQXV0b0NvbHVtbkNvdW50KCkp
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7
Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmNvbHVtbkNvdW50
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSAgICBjYXNlIENTU19QUk9QX19X
RUJLSVRfQ09MVU1OX0dBUDoKLSAgICAgICAgaWYgKHN0eWxlLT5oYXNOb3JtYWxDb2x1bW5HYXAo
KSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1JN
QUwpOwotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5jb2x1bW5H
YXAoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotICAgIGNhc2UgQ1NTX1BST1Bf
X1dFQktJVF9DT0xVTU5fUlVMRV9DT0xPUjoKLSAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9y
VmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPmNvbHVtblJ1bGVDb2xvcigpKTsKLSAgICBjYXNlIENT
U19QUk9QX19XRUJLSVRfQ09MVU1OX1JVTEVfU1RZTEU6Ci0gICAgICAgIHJldHVybiB2YWx1ZUZv
ckJvcmRlclN0eWxlKHN0eWxlLT5jb2x1bW5SdWxlU3R5bGUoKSk7Ci0gICAgY2FzZSBDU1NfUFJP
UF9fV0VCS0lUX0NPTFVNTl9SVUxFX1dJRFRIOgotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHN0eWxlLT5jb2x1bW5SdWxlV2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9CUkVBS19BRlRFUjoKLSAg
ICAgICAgc3dpdGNoIChzdHlsZS0+Y29sdW1uQnJlYWtBZnRlcigpKSB7Ci0gICAgICAgICAgICBj
YXNlIFBCQVVUTzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfQVVUTyk7Ci0gICAgICAgICAgICBjYXNlIFBCQUxXQVlTOgotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BTFdBWVMpOwotICAgICAg
ICAgICAgY2FzZSBQQkFWT0lEOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9BVk9JRCk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9D
T0xVTU5fQlJFQUtfQkVGT1JFOgotICAgICAgICBzd2l0Y2ggKHN0eWxlLT5jb2x1bW5CcmVha0Jl
Zm9yZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFBCQVVUTzoKKyAgICAgICAgY2FzZSBDU1NfUFJP
UF9CT1JERVJfU1BBQ0lORzogeworICAgICAgICAgICAgU3RyaW5nIHN0cmluZyhudW1iZXJBc1N0
cmluZyhzdHlsZS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSkgKyAicHggIiArIG51bWJlckFz
U3RyaW5nKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSkgKyAicHgiKTsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1NUUklORyk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lU
X0JPUkRFUl9IT1JJWk9OVEFMX1NQQUNJTkc6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHN0eWxlLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JPUkRFUl9W
RVJUSUNBTF9TUEFDSU5HOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShzdHlsZS0+dmVydGljYWxCb3JkZXJTcGFjaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOworICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9UT1BfQ09MT1I6CisgICAgICAgICAg
ICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLCBzdHlsZS0+Ym9yZGVyVG9w
Q29sb3IoKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX1JJR0hUX0NPTE9SOgorICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPmJv
cmRlclJpZ2h0Q29sb3IoKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0JPVFRPTV9D
T0xPUjoKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUs
IHN0eWxlLT5ib3JkZXJCb3R0b21Db2xvcigpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JE
RVJfTEVGVF9DT0xPUjoKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29s
b3Ioc3R5bGUsIHN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKSk7CisgICAgICAgIGNhc2UgQ1NTX1BS
T1BfQk9SREVSX1RPUF9TVFlMRToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckJvcmRlclN0
eWxlKHN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JE
RVJfUklHSFRfU1RZTEU6CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JCb3JkZXJTdHlsZShz
dHlsZS0+Ym9yZGVyUmlnaHRTdHlsZSgpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJf
Qk9UVE9NX1NUWUxFOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yQm9yZGVyU3R5bGUoc3R5
bGUtPmJvcmRlckJvdHRvbVN0eWxlKCkpOworICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9M
RUZUX1NUWUxFOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yQm9yZGVyU3R5bGUoc3R5bGUt
PmJvcmRlckxlZnRTdHlsZSgpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfVE9QX1dJ
RFRIOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Ym9y
ZGVyVG9wV2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgIGNhc2Ug
Q1NTX1BST1BfQk9SREVSX1JJR0hUX1dJRFRIOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BYKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX1dJRFRIOgor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Ym9yZGVyQm90
dG9tV2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgIGNhc2UgQ1NT
X1BST1BfQk9SREVSX0xFRlRfV0lEVEg6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9UVE9NOgorICAgICAgICAgICAgcmV0dXJu
IGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUocmVuZGVyZXIsIENTU19QUk9QX0JPVFRPTSk7CisgICAg
ICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfQUxJR046CisgICAgICAgICAgICBzd2l0Y2gg
KHN0eWxlLT5ib3hBbGlnbigpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBCU1RSRVRDSDoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NU
UkVUQ0gpOworICAgICAgICAgICAgICAgIGNhc2UgQlNUQVJUOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1RBUlQpOworICAgICAgICAg
ICAgICAgIGNhc2UgQkNFTlRFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0NFTlRFUik7CisgICAgICAgICAgICAgICAgY2FzZSBCRU5E
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfRU5EKTsKKyAgICAgICAgICAgICAgICBjYXNlIEJCQVNFTElORToKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JBU0VMSU5FKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIEJKVVNUSUZZOgorICAgICAgICAgICAgICAgICAgICBicmVhazsg
Ly8gbm90IGFsbG93ZWQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dF
QktJVF9CT1hfRElSRUNUSU9OOgorICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+Ym94RGlyZWN0
aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEJOT1JNQUw6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOworICAgICAg
ICAgICAgICAgIGNhc2UgQlJFVkVSU0U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRVZFUlNFKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfRkxFWDoKKyAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJveEZsZXgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX0ZMRVhfR1JP
VVA6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5ib3hG
bGV4R3JvdXAoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICBjYXNl
IENTU19QUk9QX19XRUJLSVRfQk9YX0xJTkVTOgorICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+
Ym94TGluZXMoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgU0lOR0xFOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0lOR0xFKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIE1VTFRJUExFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTVVMVElQTEUpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JPWF9PUkRJTkFMX0dST1VQOgorICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Ym94T3JkaW5hbEdyb3Vw
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgY2FzZSBDU1NfUFJP
UF9fV0VCS0lUX0JPWF9PUklFTlQ6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5ib3hPcmll
bnQoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgSE9SSVpPTlRBTDoKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hPUklaT05UQUwpOwor
ICAgICAgICAgICAgICAgIGNhc2UgVkVSVElDQUw6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9WRVJUSUNBTCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX1BBQ0s6CisgICAgICAgICAgICBz
d2l0Y2ggKHN0eWxlLT5ib3hQYWNrKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEJTVEFSVDoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1NUQVJUKTsKKyAgICAgICAgICAgICAgICBjYXNlIEJFTkQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FTkQpOworICAgICAgICAgICAg
ICAgIGNhc2UgQkNFTlRFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0NFTlRFUik7CisgICAgICAgICAgICAgICAgY2FzZSBCSlVTVElG
WToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0pVU1RJRlkpOworICAgICAgICAgICAgICAgIGNhc2UgQlNUUkVUQ0g6CisgICAgICAgICAg
ICAgICAgY2FzZSBCQkFTRUxJTkU6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBub3Qg
YWxsb3dlZAorICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JP
WF9TSEFET1c6CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3R5bGUtPmJveFNo
YWRvdygpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9DQVBUSU9OX1NJREU6CisgICAgICAgICAg
ICBzd2l0Y2ggKHN0eWxlLT5jYXB0aW9uU2lkZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBD
QVBMRUZUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTEVGVCk7CisgICAgICAgICAgICAgICAgY2FzZSBDQVBSSUdIVDoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JJR0hUKTsK
KyAgICAgICAgICAgICAgICBjYXNlIENBUFRPUDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RPUCk7CisgICAgICAgICAgICAgICAgY2Fz
ZSBDQVBCT1RUT006CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9CT1RUT00pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1Nf
UFJPUF9DTEVBUjoKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmNsZWFyKCkpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIENOT05FOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7CisgICAgICAgICAgICAgICAgY2FzZSBDTEVG
VDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0xFRlQpOworICAgICAgICAgICAgICAgIGNhc2UgQ1JJR0hUOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUklHSFQpOworICAgICAg
ICAgICAgICAgIGNhc2UgQ0JPVEg6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CT1RIKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNh
c2UgQ1NTX1BST1BfQ0xJUDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9DT0xPUjoKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmNvbG9yKCkucmdiKCkpOwor
ICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQ09MVU1OX0NPVU5UOgorICAgICAgICAgICAg
aWYgKHN0eWxlLT5oYXNBdXRvQ29sdW1uQ291bnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAgICAgICAgICBjYXNlIFBC
QUxXQVlTOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9BTFdBWVMpOwotICAgICAgICAgICAgY2FzZSBQQkFWT0lEOgotICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVk9JRCk7Ci0gICAgICAgIH0K
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNh
c2UgQ1NTX1BST1BfX1dFQktJVF9DT0xVTU5fQlJFQUtfSU5TSURFOgotICAgICAgICBzd2l0Y2gg
KHN0eWxlLT5jb2x1bW5CcmVha0luc2lkZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFBCQVVUTzoK
KyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmNvbHVtbkNv
dW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgY2FzZSBDU1Nf
UFJPUF9fV0VCS0lUX0NPTFVNTl9HQVA6CisgICAgICAgICAgICBpZiAoc3R5bGUtPmhhc05vcm1h
bENvbHVtbkdhcCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9OT1JNQUwpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShzdHlsZS0+Y29sdW1uR2FwKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsK
KyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9SVUxFX0NPTE9SOgorICAgICAg
ICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPmNvbHVt
blJ1bGVDb2xvcigpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9SVUxF
X1NUWUxFOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yQm9yZGVyU3R5bGUoc3R5bGUtPmNv
bHVtblJ1bGVTdHlsZSgpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9S
VUxFX1dJRFRIOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHls
ZS0+Y29sdW1uUnVsZVdpZHRoKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAg
ICBjYXNlIENTU19QUk9QX19XRUJLSVRfQ09MVU1OX0JSRUFLX0FGVEVSOgorICAgICAgICAgICAg
c3dpdGNoIChzdHlsZS0+Y29sdW1uQnJlYWtBZnRlcigpKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBQQkFVVE86CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9BVVRPKTsKKyAgICAgICAgICAgICAgICBjYXNlIFBCQUxXQVlTOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQUxXQVlT
KTsKKyAgICAgICAgICAgICAgICBjYXNlIFBCQVZPSUQ6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVk9JRCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQ09MVU1OX0JSRUFLX0JFRk9SRToKKyAg
ICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmNvbHVtbkJyZWFrQmVmb3JlKCkpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIFBCQVVUTzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOworICAgICAgICAgICAgICAgIGNhc2UgUEJBTFdB
WVM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9BTFdBWVMpOworICAgICAgICAgICAgICAgIGNhc2UgUEJBVk9JRDoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FWT0lEKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9DT0xVTU5fQlJFQUtf
SU5TSURFOgorICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+Y29sdW1uQnJlYWtJbnNpZGUoKSkg
eworICAgICAgICAgICAgICAgIGNhc2UgUEJBVVRPOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CisgICAgICAgICAgICAgICAg
Y2FzZSBQQkFWT0lEOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfQVZPSUQpOworICAgICAgICAgICAgICAgIGNhc2UgUEJBTFdBWVM6Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBub3QgYWxsb3dlZAorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9XSURUSDoKKyAgICAgICAgICAg
IGlmIChzdHlsZS0+aGFzQXV0b0NvbHVtbldpZHRoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgY2FzZSBQ
QkFWT0lEOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9BVk9JRCk7Ci0gICAgICAgICAgICBjYXNlIFBCQUxXQVlTOgotICAgICAgICAgICAgICAg
IGJyZWFrOyAvLyBub3QgYWxsb3dlZAotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQ09M
VU1OX1dJRFRIOgotICAgICAgICBpZiAoc3R5bGUtPmhhc0F1dG9Db2x1bW5XaWR0aCgpKQotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5jb2x1bW5XaWR0aCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgY2FzZSBDU1NfUFJPUF9DT05URU5U
OgotICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU19QUk9QX0NPVU5URVJfSU5DUkVNRU5UOgotICAgICAgICAvLyBGSVhNRTogdW5pbXBs
ZW1lbnRlZAotICAgICAgICAvLyBTcGVjaWZpY2F0aW9uIHNheXMgImFzIHNwZWNpZmllZCIsIHdo
aWNoIG1lYW5zIHdlJ2QgbmVlZCB0byBrZWVwIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgQ1NTIGxp
c3QgYXJvdW5kLgotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU19QUk9QX0NPVU5URVJfUkVT
RVQ6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCi0gICAgICAgIC8vIFNwZWNpZmlj
YXRpb24gc2F5cyAiYXMgc3BlY2lmaWVkIiwgd2hpY2ggbWVhbnMgd2UnZCBuZWVkIHRvIGtlZXAg
YSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBDU1MgbGlzdCBhcm91bmQuCi0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOiB7Ci0gICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9
IDA7Ci0gICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IDA7Ci0gICAgICAgIEN1cnNvckxpc3QqIGN1
cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygpOwotICAgICAgICBpZiAoY3Vyc29ycyAmJiBjdXJzb3Jz
LT5zaXplKCkgPiAwKSB7Ci0gICAgICAgICAgICBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdDsKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjdXJzb3JzLT5zaXplKCk7ICsraSkK
LSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKCgqY3Vy
c29ycylbaV0uY3Vyc29ySW1hZ2UtPnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkp
OwotICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPmN1cnNvcigpKSB7Ci0gICAgICAg
ICAgICBjYXNlIENVUlNPUl9BVVRPOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIENVUlNPUl9DUk9TUzoKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NST1NTSEFJUik7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9ERUZBVUxUOgotICAgICAgICAgICAgICAgIHZh
bHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREVGQVVMVCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9QT0lOVEVSOgotICAgICAgICAg
ICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUE9JTlRFUik7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9NT1ZFOgotICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTU9WRSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9DRUxMOgot
ICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ0VM
TCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9WRVJU
SUNBTF9URVhUOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfVkVSVElDQUxfVEVYVCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIENVUlNPUl9DT05URVhUX01FTlU6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT05URVhUX01FTlUpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfQUxJQVM6Ci0gICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BTElBUyk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9DT1BZOgotICAgICAgICAg
ICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ09QWSk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9OT05FOgotICAgICAg
ICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9QUk9HUkVTUzoK
LSAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BS
T0dSRVNTKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1VSU09S
X05PX0RST1A6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9OT19EUk9QKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgQ1VSU09SX05PVF9BTExPV0VEOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfTk9UX0FMTE9XRUQpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfRV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgdmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FX1JFU0laRSk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9ORV9SRVNJWkU6Ci0gICAgICAg
ICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ORV9SRVNJWkUp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfTldfUkVT
SVpFOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfTldfUkVTSVpFKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
Q1VSU09SX05fUkVTSVpFOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTl9SRVNJWkUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBDVVJTT1JfU0VfUkVTSVpFOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0VfUkVTSVpFKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1VSU09SX1NXX1JFU0laRToKLSAgICAgICAgICAgICAg
ICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NXX1JFU0laRSk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9TX1JFU0laRToKLSAg
ICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NfUkVT
SVpFKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1VSU09SX1df
UkVTSVpFOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfV19SRVNJWkUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBDVVJTT1JfRVdfUkVTSVpFOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfRVdfUkVTSVpFKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX05TX1JFU0laRToKLSAgICAgICAgICAgICAgICB2YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05TX1JFU0laRSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9ORVNXX1JFU0laRToKLSAgICAgICAg
ICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05FU1dfUkVTSVpF
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1VSU09SX05XU0Vf
UkVTSVpFOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfTldTRV9SRVNJWkUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBDVVJTT1JfQ09MX1JFU0laRToKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTF9SRVNJWkUpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfUk9XX1JFU0laRToKLSAgICAgICAgICAgICAgICB2
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JPV19SRVNJWkUpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfVEVYVDoKLSAgICAgICAg
ICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RFWFQpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfV0FJVDoKLSAgICAg
ICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1dBSVQpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfSEVMUDoKLSAg
ICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hFTFAp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfQUxMX1ND
Uk9MTDoKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0FMTF9TQ1JPTEwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIEFTU0VSVCh2YWx1ZSk7Ci0gICAgICAgIGlmIChsaXN0KSB7Ci0gICAgICAgICAgICBsaXN0
LT5hcHBlbmQodmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLSAgICBjYXNlIENTU19QUk9QX0RJUkVDVElPTjoK
LSAgICAgICAgc3dpdGNoIChzdHlsZS0+ZGlyZWN0aW9uKCkpIHsKLSAgICAgICAgICAgIGNhc2Ug
TFRSOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9MVFIpOwotICAgICAgICAgICAgY2FzZSBSVEw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JUTCk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1Bf
RElTUExBWToKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+ZGlzcGxheSgpKSB7Ci0gICAgICAgICAg
ICBjYXNlIElOTElORToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfSU5MSU5FKTsKLSAgICAgICAgICAgIGNhc2UgQkxPQ0s6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JMT0NLKTsKLSAgICAg
ICAgICAgIGNhc2UgTElTVF9JVEVNOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9MSVNUX0lURU0pOwotICAgICAgICAgICAgY2FzZSBSVU5fSU46
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JV
Tl9JTik7Ci0gICAgICAgICAgICBjYXNlIENPTVBBQ1Q6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTVBBQ1QpOwotICAgICAgICAgICAgY2Fz
ZSBJTkxJTkVfQkxPQ0s6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0lOTElORV9CTE9DSyk7Ci0gICAgICAgICAgICBjYXNlIFRBQkxFOgotICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRSk7
Ci0gICAgICAgICAgICBjYXNlIElOTElORV9UQUJMRToKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSU5MSU5FX1RBQkxFKTsKLSAgICAgICAgICAg
IGNhc2UgVEFCTEVfUk9XX0dST1VQOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRV9ST1dfR1JPVVApOwotICAgICAgICAgICAgY2FzZSBU
QUJMRV9IRUFERVJfR1JPVVA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1RBQkxFX0hFQURFUl9HUk9VUCk7Ci0gICAgICAgICAgICBjYXNlIFRB
QkxFX0ZPT1RFUl9HUk9VUDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfVEFCTEVfRk9PVEVSX0dST1VQKTsKLSAgICAgICAgICAgIGNhc2UgVEFC
TEVfUk9XOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9UQUJMRV9ST1cpOwotICAgICAgICAgICAgY2FzZSBUQUJMRV9DT0xVTU5fR1JPVVA6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RBQkxF
X0NPTFVNTl9HUk9VUCk7Ci0gICAgICAgICAgICBjYXNlIFRBQkxFX0NPTFVNTjoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEFCTEVfQ09MVU1O
KTsKLSAgICAgICAgICAgIGNhc2UgVEFCTEVfQ0VMTDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEFCTEVfQ0VMTCk7Ci0gICAgICAgICAgICBj
YXNlIFRBQkxFX0NBUFRJT046Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1RBQkxFX0NBUFRJT04pOwotICAgICAgICAgICAgY2FzZSBCT1g6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX19XRUJL
SVRfQk9YKTsKLSAgICAgICAgICAgIGNhc2UgSU5MSU5FX0JPWDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfX1dFQktJVF9JTkxJTkVfQk9YKTsK
LSAgICAgICAgICAgIGNhc2UgTk9ORToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfRU1QVFlf
Q0VMTFM6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPmVtcHR5Q2VsbHMoKSkgewotICAgICAgICAg
ICAgY2FzZSBTSE9XOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9TSE9XKTsKLSAgICAgICAgICAgIGNhc2UgSElERToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSElERSk7Ci0gICAgICAgIH0K
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNh
c2UgQ1NTX1BST1BfRkxPQVQ6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPmZsb2F0aW5nKCkpIHsK
LSAgICAgICAgICAgIGNhc2UgRk5PTkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwotICAgICAgICAgICAgY2FzZSBGTEVGVDoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTEVGVCk7
Ci0gICAgICAgICAgICBjYXNlIEZSSUdIVDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUklHSFQpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Y29sdW1uV2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpOworICAgICAgICBjYXNlIENTU19QUk9QX0NPTlRFTlQ6CisgICAgICAgICAg
ICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ1NTX1BST1BfQ09VTlRFUl9JTkNSRU1FTlQ6CisgICAgICAgICAgICAvLyBGSVhNRTogdW5p
bXBsZW1lbnRlZAorICAgICAgICAgICAgLy8gU3BlY2lmaWNhdGlvbiBzYXlzICJhcyBzcGVjaWZp
ZWQiLCB3aGljaCBtZWFucyB3ZSdkIG5lZWQgdG8ga2VlcCBhIGNvcHkgb2YgdGhlIG9yaWdpbmFs
IENTUyBsaXN0IGFyb3VuZC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19Q
Uk9QX0NPVU5URVJfUkVTRVQ6CisgICAgICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAor
ICAgICAgICAgICAgLy8gU3BlY2lmaWNhdGlvbiBzYXlzICJhcyBzcGVjaWZpZWQiLCB3aGljaCBt
ZWFucyB3ZSdkIG5lZWQgdG8ga2VlcCBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIENTUyBsaXN0IGFy
b3VuZC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19QUk9QX0NVUlNPUjog
eworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gMDsKKyAgICAgICAgICAgIEN1cnNv
ckxpc3QqIGN1cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygpOworICAgICAgICAgICAgaWYgKGN1cnNv
cnMgJiYgY3Vyc29ycy0+c2l6ZSgpID4gMCkgeworICAgICAgICAgICAgICAgIGxpc3QgPSBuZXcg
Q1NTVmFsdWVMaXN0OworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
dXJzb3JzLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5l
dyBDU1NQcmltaXRpdmVWYWx1ZSgoKmN1cnNvcnMpW2ldLmN1cnNvckltYWdlLT51cmwoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIENT
U1ZhbHVlKiB2YWx1ZSA9IDA7CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5jdXJzb3IoKSkg
eworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0FVVE86CisgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0NST1NTOgorICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NS
T1NTSEFJUik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgQ1VSU09SX0RFRkFVTFQ6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfREVGQVVMVCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1BPSU5URVI6CisgICAgICAgICAgICAgICAg
ICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUE9JTlRFUik7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX01PVkU6
CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfTU9WRSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgQ1VSU09SX0NFTEw6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfQ0VMTCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1ZFUlRJQ0FMX1RFWFQ6CisgICAgICAgICAgICAgICAg
ICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVkVSVElDQUxfVEVYVCk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09S
X0NPTlRFWFRfTUVOVToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9DT05URVhUX01FTlUpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9BTElBUzoKKyAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BTElBUyk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0NPUFk6Cisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
Q09QWSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
Q1VSU09SX05PTkU6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTk9ORSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX1BST0dSRVNTOgorICAgICAgICAgICAgICAgICAgICB2YWx1
ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BST0dSRVNTKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfTk9fRFJPUDoKKyAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
T19EUk9QKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBDVVJTT1JfTk9UX0FMTE9XRUQ6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9UX0FMTE9XRUQpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9FX1JFU0laRToKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FX1JFU0la
RSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1VS
U09SX05FX1JFU0laRToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9ORV9SRVNJWkUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9OV19SRVNJWkU6CisgICAgICAgICAgICAgICAg
ICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTldfUkVTSVpFKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfTl9S
RVNJWkU6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTl9SRVNJWkUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIENVUlNPUl9TRV9SRVNJWkU6CisgICAgICAgICAgICAgICAgICAgIHZhbHVl
ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0VfUkVTSVpFKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfU1dfUkVTSVpFOgor
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1NXX1JFU0laRSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgQ1VSU09SX1NfUkVTSVpFOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfV19SRVNJWkU6CisgICAgICAgICAg
ICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV19SRVNJWkUp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENVUlNP
Ul9FV19SRVNJWkU6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfRVdfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfTlNfUkVTSVpFOgorICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05TX1JFU0laRSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX05FU1df
UkVTSVpFOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX05FU1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBDVVJTT1JfTldTRV9SRVNJWkU6CisgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTldTRV9SRVNJWkUpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9DT0xf
UkVTSVpFOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX0NPTF9SRVNJWkUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIENVUlNPUl9ST1dfUkVTSVpFOgorICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JPV19SRVNJWkUpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9URVhUOgor
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1RFWFQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IENVUlNPUl9XQUlUOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1dBSVQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIENVUlNPUl9IRUxQOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hFTFApOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9BTExfU0NST0xMOgorICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FMTF9T
Q1JPTEwpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgICAgICAgICBpZiAobGlzdCkgeworICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3Q7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIH0KLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2Ug
Q1NTX1BST1BfRk9OVF9GQU1JTFk6Ci0gICAgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBvbmx5
IHJldHVybnMgdGhlIGZpcnN0IGZhbWlseS4KLSAgICAgICAgY29uc3QgRm9udERlc2NyaXB0aW9u
JiBkZXNjID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKGRlc2MuZmFtaWx5KCkuZmFtaWx5KCkuZG9tU3RyaW5nKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKLSAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9GT05U
X1NJWkU6Ci0gICAgewotICAgICAgICBGb250RGVzY3JpcHRpb24gZGVzYyA9IHN0eWxlLT5mb250
RGVzY3JpcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShkZXNj
LmNvbXB1dGVkUGl4ZWxTaXplKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgIH0K
LSAgICBjYXNlIENTU19QUk9QX0ZPTlRfU1RSRVRDSDoKLSAgICAgICAgLy8gRklYTUU6IHVuaW1w
bGVtZW50ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9GT05UX1NUWUxFOgot
ICAgIHsKLSAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBvYmxpcXVlPwotICAgICAgICBjb25zdCBG
b250RGVzY3JpcHRpb24mIGRlc2MgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAg
IGlmIChkZXNjLml0YWxpYygpKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0lUQUxJQyk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgY2FzZSBDU1NfUFJP
UF9ESVJFQ1RJT046CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5kaXJlY3Rpb24oKSkgewor
ICAgICAgICAgICAgICAgIGNhc2UgTFRSOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTFRSKTsKKyAgICAgICAgICAgICAgICBjYXNlIFJU
TDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX1JUTCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENTU19QUk9QX0RJU1BMQVk6
CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5kaXNwbGF5KCkpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIElOTElORToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0lOTElORSk7CisgICAgICAgICAgICAgICAgY2FzZSBCTE9DSzoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JM
T0NLKTsKKyAgICAgICAgICAgICAgICBjYXNlIExJU1RfSVRFTToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xJU1RfSVRFTSk7CisgICAg
ICAgICAgICAgICAgY2FzZSBSVU5fSU46CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SVU5fSU4pOworICAgICAgICAgICAgICAgIGNhc2Ug
Q09NUEFDVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX0NPTVBBQ1QpOworICAgICAgICAgICAgICAgIGNhc2UgSU5MSU5FX0JMT0NLOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
SU5MSU5FX0JMT0NLKTsKKyAgICAgICAgICAgICAgICBjYXNlIFRBQkxFOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEFCTEUpOworICAg
ICAgICAgICAgICAgIGNhc2UgSU5MSU5FX1RBQkxFOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSU5MSU5FX1RBQkxFKTsKKyAgICAgICAg
ICAgICAgICBjYXNlIFRBQkxFX1JPV19HUk9VUDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RBQkxFX1JPV19HUk9VUCk7CisgICAgICAg
ICAgICAgICAgY2FzZSBUQUJMRV9IRUFERVJfR1JPVVA6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRV9IRUFERVJfR1JPVVApOwor
ICAgICAgICAgICAgICAgIGNhc2UgVEFCTEVfRk9PVEVSX0dST1VQOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEFCTEVfRk9PVEVSX0dS
T1VQKTsKKyAgICAgICAgICAgICAgICBjYXNlIFRBQkxFX1JPVzoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RBQkxFX1JPVyk7CisgICAg
ICAgICAgICAgICAgY2FzZSBUQUJMRV9DT0xVTU5fR1JPVVA6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRV9DT0xVTU5fR1JPVVAp
OworICAgICAgICAgICAgICAgIGNhc2UgVEFCTEVfQ09MVU1OOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEFCTEVfQ09MVU1OKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIFRBQkxFX0NFTEw6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRV9DRUxMKTsKKyAgICAgICAgICAg
ICAgICBjYXNlIFRBQkxFX0NBUFRJT046CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRV9DQVBUSU9OKTsKKyAgICAgICAgICAgICAg
ICBjYXNlIEJPWDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX19XRUJLSVRfQk9YKTsKKyAgICAgICAgICAgICAgICBjYXNlIElOTElORV9C
T1g6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9fV0VCS0lUX0lOTElORV9CT1gpOworICAgICAgICAgICAgICAgIGNhc2UgTk9ORToKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05P
TkUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9FTVBUWV9DRUxMUzoK
KyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmVtcHR5Q2VsbHMoKSkgeworICAgICAgICAgICAg
ICAgIGNhc2UgU0hPVzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1NIT1cpOworICAgICAgICAgICAgICAgIGNhc2UgSElERToKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hJREUp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9GTE9BVDoKKyAgICAgICAg
ICAgIHN3aXRjaCAoc3R5bGUtPmZsb2F0aW5nKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZO
T05FOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfTk9ORSk7CisgICAgICAgICAgICAgICAgY2FzZSBGTEVGVDoKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xFRlQpOworICAgICAg
ICAgICAgICAgIGNhc2UgRlJJR0hUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUklHSFQpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
Y2FzZSBDU1NfUFJPUF9GT05UX0ZBTUlMWToKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG9u
bHkgcmV0dXJucyB0aGUgZmlyc3QgZmFtaWx5LgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuZmFtaWx5KCkuZmFtaWx5KCku
ZG9tU3RyaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKKyAgICAgICAgY2Fz
ZSBDU1NfUFJPUF9GT05UX1NJWkU6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFBpeGVsU2l6ZSgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9GT05UX1NUUkVU
Q0g6CisgICAgICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfRk9OVF9TVFlMRToKKyAgICAgICAgICAgIGlmIChz
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0lUQUxJQyk7CiAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKLSAgICB9Ci0gICAgY2Fz
ZSBDU1NfUFJPUF9GT05UX1ZBUklBTlQ6Ci0gICAgewotICAgICAgICBjb25zdCBGb250RGVzY3Jp
cHRpb24mIGRlc2MgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGlmIChkZXNj
LnNtYWxsQ2FwcygpKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX1NNQUxMX0NBUFMpOwotICAgICAgICBlbHNlCisgICAgICAgIGNhc2UgQ1NTX1BST1Bf
Rk9OVF9WQVJJQU5UOgorICAgICAgICAgICAgaWYgKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5z
bWFsbENhcHMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfU01BTExfQ0FQUyk7CiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKLSAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9GT05UX1dF
SUdIVDoKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgbm90IHJlZmxlY3QgdGhl
IGZ1bGwgcmFuZ2Ugb2Ygd2VpZ2h0cwotICAgICAgICAvLyB0aGF0IGNhbiBiZSBleHByZXNzZWQg
d2l0aCBDU1MKLSAgICAgICAgY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjID0gc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpOwotICAgICAgICBpZiAoZGVzYy53ZWlnaHQoKSA9PSBjQm9sZFdlaWdo
dCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CT0xE
KTsKLSAgICAgICAgZWxzZQorICAgICAgICBjYXNlIENTU19QUk9QX0ZPTlRfV0VJR0hUOgorICAg
ICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3QgcmVmbGVjdCB0aGUgZnVsbCByYW5nZSBv
ZiB3ZWlnaHRzCisgICAgICAgICAgICAvLyB0aGF0IGNhbiBiZSBleHByZXNzZWQgd2l0aCBDU1MK
KyAgICAgICAgICAgIGlmIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkgPT0gY0Jv
bGRXZWlnaHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0JPTEQpOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX05PUk1BTCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTX1BST1BfSEVJR0hUOgotICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5jb250ZW50SGVpZ2h0KCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9I
SUdITElHSFQ6IHsKLSAgICAgICAgaWYgKHN0eWxlLT5oaWdobGlnaHQoKSA9PSBudWxsQXRvbSkK
LSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsK
LSAgICAgICAgZWxzZQorICAgICAgICBjYXNlIENTU19QUk9QX0hFSUdIVDoKKyAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVyZXItPmNvbnRlbnRIZWlnaHQoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJ
VF9ISUdITElHSFQ6CisgICAgICAgICAgICBpZiAoc3R5bGUtPmhpZ2hsaWdodCgpID09IG51bGxB
dG9tKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9OT05FKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUt
PmhpZ2hsaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7Ci0gICAgfQotICAg
IGNhc2UgQ1NTX1BST1BfTEVGVDoKLSAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFs
dWUocmVuZGVyZXIsIENTU19QUk9QX0xFRlQpOwotICAgIGNhc2UgQ1NTX1BST1BfTEVUVEVSX1NQ
QUNJTkc6Ci0gICAgICAgIGlmIChzdHlsZS0+bGV0dGVyU3BhY2luZygpID09IDApCi0gICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKLSAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+bGV0dGVyU3BhY2luZygpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTElO
RV9DTEFNUDoKLSAgICAgICAgaWYgKHN0eWxlLT5saW5lQ2xhbXAoKSA9PSAtMSkKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+bGluZUNsYW1wKCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9MSU5FX0hFSUdI
VDogewotICAgICAgICBMZW5ndGggbGVuZ3RoKHN0eWxlLT5saW5lSGVpZ2h0KCkpOwotICAgICAg
ICBpZiAobGVuZ3RoLmlzTmVnYXRpdmUoKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOwotICAgICAgICBpZiAobGVuZ3RoLmlzUGVyY2Vu
dCgpKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIGltcGVyZmVjdCwgYmVjYXVzZSBpdCBkb2Vz
bid0IGluY2x1ZGUgdGhlIHpvb20gZmFjdG9yIGFuZCB0aGUgcmVhbCBjb21wdXRhdGlvbgotICAg
ICAgICAgICAgLy8gZm9yIGhvdyBoaWdoIHRvIGJlIGluIHBpeGVscyBkb2VzIGluY2x1ZGUgdGhp
bmdzIGxpa2UgbWluaW11bSBmb250IHNpemUgYW5kIHRoZSB6b29tIGZhY3Rvci4KLSAgICAgICAg
ICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBzaW5jZSBmb250LXNpemUgZG9lc24ndCBpbmNsdWRl
IHRoZSB6b29tIGZhY3Rvciwgd2UgcmVhbGx5IGNhbid0IGRvCi0gICAgICAgICAgICAvLyB0aGF0
IGhlcmUgZWl0aGVyLgotICAgICAgICAgICAgZmxvYXQgZm9udFNpemUgPSBzdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZSgoaW50KShsZW5ndGgucGVyY2VudCgpICogZm9udFNpemUpIC8gMTAwLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUobGVuZ3RoLnZhbHVlKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhc2UgQ1NT
X1BST1BfTElTVF9TVFlMRV9JTUFHRToKLSAgICAgICAgaWYgKHN0eWxlLT5saXN0U3R5bGVJbWFn
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+bGlz
dFN0eWxlSW1hZ2UoKS0+dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKLSAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwotICAgIGNhc2Ug
Q1NTX1BST1BfTElTVF9TVFlMRV9QT1NJVElPTjoKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+bGlz
dFN0eWxlUG9zaXRpb24oKSkgewotICAgICAgICAgICAgY2FzZSBPVVRTSURFOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9PVVRTSURFKTsKLSAg
ICAgICAgICAgIGNhc2UgSU5TSURFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9JTlNJREUpOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENTU19QUk9QX0xJU1Rf
U1RZTEVfVFlQRToKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+bGlzdFN0eWxlVHlwZSgpKSB7Ci0g
ICAgICAgICAgICBjYXNlIExOT05FOgorICAgICAgICBjYXNlIENTU19QUk9QX0xFRlQ6CisgICAg
ICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShyZW5kZXJlciwgQ1NTX1BST1Bf
TEVGVCk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfTEVUVEVSX1NQQUNJTkc6CisgICAgICAgICAg
ICBpZiAoIXN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7CisgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5sZXR0ZXJTcGFjaW5nKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTElORV9DTEFN
UDoKKyAgICAgICAgICAgIGlmIChzdHlsZS0+bGluZUNsYW1wKCkgPT0gLTEpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwotICAgICAg
ICAgICAgY2FzZSBESVNDOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9ESVNDKTsKLSAgICAgICAgICAgIGNhc2UgQ0lSQ0xFOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DSVJDTEUpOwotICAg
ICAgICAgICAgY2FzZSBTUVVBUkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX1NRVUFSRSk7Ci0gICAgICAgICAgICBjYXNlIExERUNJTUFMOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERUNJ
TUFMKTsKLSAgICAgICAgICAgIGNhc2UgREVDSU1BTF9MRUFESU5HX1pFUk86Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RFQ0lNQUxfTEVBRElO
R19aRVJPKTsKLSAgICAgICAgICAgIGNhc2UgTE9XRVJfUk9NQU46Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xPV0VSX1JPTUFOKTsKLSAgICAg
ICAgICAgIGNhc2UgVVBQRVJfUk9NQU46Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX1VQUEVSX1JPTUFOKTsKLSAgICAgICAgICAgIGNhc2UgTE9X
RVJfR1JFRUs6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0xPV0VSX0dSRUVLKTsKLSAgICAgICAgICAgIGNhc2UgTE9XRVJfQUxQSEE6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xPV0VSX0FM
UEhBKTsKLSAgICAgICAgICAgIGNhc2UgTE9XRVJfTEFUSU46Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xPV0VSX0xBVElOKTsKLSAgICAgICAg
ICAgIGNhc2UgVVBQRVJfQUxQSEE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX1VQUEVSX0FMUEhBKTsKLSAgICAgICAgICAgIGNhc2UgVVBQRVJf
TEFUSU46Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX1VQUEVSX0xBVElOKTsKLSAgICAgICAgICAgIGNhc2UgSEVCUkVXOgotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9IRUJSRVcpOwotICAgICAg
ICAgICAgY2FzZSBBUk1FTklBTjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfQVJNRU5JQU4pOwotICAgICAgICAgICAgY2FzZSBHRU9SR0lBTjoK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfR0VP
UkdJQU4pOwotICAgICAgICAgICAgY2FzZSBDSktfSURFT0dSQVBISUM6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NKS19JREVPR1JBUEhJQyk7
Ci0gICAgICAgICAgICBjYXNlIEhJUkFHQU5BOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ISVJBR0FOQSk7Ci0gICAgICAgICAgICBjYXNlIEtB
VEFLQU5BOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9LQVRBS0FOQSk7Ci0gICAgICAgICAgICBjYXNlIEhJUkFHQU5BX0lST0hBOgotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ISVJBR0FOQV9J
Uk9IQSk7Ci0gICAgICAgICAgICBjYXNlIEtBVEFLQU5BX0lST0hBOgotICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9LQVRBS0FOQV9JUk9IQSk7Cisg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5saW5lQ2xhbXAo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICAgICAgY2FzZSBDU1Nf
UFJPUF9MSU5FX0hFSUdIVDogeworICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aCA9IHN0eWxlLT5s
aW5lSGVpZ2h0KCk7CisgICAgICAgICAgICBpZiAobGVuZ3RoLmlzTmVnYXRpdmUoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsK
KyAgICAgICAgICAgIGlmIChsZW5ndGguaXNQZXJjZW50KCkpCisgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBpbXBlcmZlY3QsIGJlY2F1c2UgaXQgZG9lc24ndCBpbmNsdWRlIHRoZSB6b29tIGZh
Y3RvciBhbmQgdGhlIHJlYWwgY29tcHV0YXRpb24KKyAgICAgICAgICAgICAgICAvLyBmb3IgaG93
IGhpZ2ggdG8gYmUgaW4gcGl4ZWxzIGRvZXMgaW5jbHVkZSB0aGluZ3MgbGlrZSBtaW5pbXVtIGZv
bnQgc2l6ZSBhbmQgdGhlIHpvb20gZmFjdG9yLgorICAgICAgICAgICAgICAgIC8vIE9uIHRoZSBv
dGhlciBoYW5kLCBzaW5jZSBmb250LXNpemUgZG9lc24ndCBpbmNsdWRlIHRoZSB6b29tIGZhY3Rv
ciwgd2UgcmVhbGx5IGNhbid0IGRvCisgICAgICAgICAgICAgICAgLy8gdGhhdCBoZXJlIGVpdGhl
ci4KKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0YXRpY19j
YXN0PGludD4obGVuZ3RoLnBlcmNlbnQoKSAqIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVj
aWZpZWRTaXplKCkpIC8gMTAwLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUobGVuZ3RoLnZhbHVlKCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUFgpOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENTU19QUk9QX01BUkdJTl9UT1A6Ci0g
ICAgICAgIC8vIEZJWE1FOiBTdXBwb3NlZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVy
Y2VudGFnZSB3YXMgc3BlY2lmaWVkLgotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHJlbmRlcmVyLT5tYXJnaW5Ub3AoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0g
ICAgY2FzZSBDU1NfUFJPUF9NQVJHSU5fUklHSFQ6Ci0gICAgICAgIC8vIEZJWE1FOiBTdXBwb3Nl
ZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3BlY2lmaWVkLgot
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5tYXJnaW5SaWdo
dCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBjYXNlIENTU19QUk9QX01BUkdJ
Tl9CT1RUT006Ci0gICAgICAgIC8vIEZJWE1FOiBTdXBwb3NlZCB0byByZXR1cm4gdGhlIHBlcmNl
bnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3BlY2lmaWVkLgotICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5tYXJnaW5Cb3R0b20oKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QWCk7Ci0gICAgY2FzZSBDU1NfUFJPUF9NQVJHSU5fTEVGVDoKLSAgICAgICAgLy8g
RklYTUU6IFN1cHBvc2VkIHRvIHJldHVybiB0aGUgcGVyY2VudGFnZSBpZiBwZXJjZW50YWdlIHdh
cyBzcGVjaWZpZWQuCi0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVy
ZXItPm1hcmdpbkxlZnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAgY2FzZSBD
U1NfUFJPUF9fV0VCS0lUX01BUlFVRUU6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVk
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJRVUVFX0RJUkVD
VElPTjoKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+bWFycXVlZURpcmVjdGlvbigpKSB7Ci0gICAg
ICAgICAgICBjYXNlIE1GT1JXQVJEOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9GT1JXQVJEUyk7Ci0gICAgICAgICAgICBjYXNlIE1CQUNLV0FS
RDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
QkFDS1dBUkRTKTsKLSAgICAgICAgICAgIGNhc2UgTUFVVE86CisgICAgICAgIGNhc2UgQ1NTX1BS
T1BfTElTVF9TVFlMRV9JTUFHRToKKyAgICAgICAgICAgIGlmIChzdHlsZS0+bGlzdFN0eWxlSW1h
Z2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxl
LT5saXN0U3R5bGVJbWFnZSgpLT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOwor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwor
ICAgICAgICBjYXNlIENTU19QUk9QX0xJU1RfU1RZTEVfUE9TSVRJT046CisgICAgICAgICAgICBz
d2l0Y2ggKHN0eWxlLT5saXN0U3R5bGVQb3NpdGlvbigpKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBPVVRTSURFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfT1VUU0lERSk7CisgICAgICAgICAgICAgICAgY2FzZSBJTlNJREU6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9JTlNJ
REUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9MSVNUX1NUWUxFX1RZ
UEU6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5saXN0U3R5bGVUeXBlKCkpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIExOT05FOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7CisgICAgICAgICAgICAgICAgY2FzZSBESVND
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfRElTQyk7CisgICAgICAgICAgICAgICAgY2FzZSBDSVJDTEU6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DSVJDTEUpOworICAgICAg
ICAgICAgICAgIGNhc2UgU1FVQVJFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1FVQVJFKTsKKyAgICAgICAgICAgICAgICBjYXNlIExE
RUNJTUFMOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfREVDSU1BTCk7CisgICAgICAgICAgICAgICAgY2FzZSBERUNJTUFMX0xFQURJTkdf
WkVSTzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0RFQ0lNQUxfTEVBRElOR19aRVJPKTsKKyAgICAgICAgICAgICAgICBjYXNlIExPV0VS
X1JPTUFOOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTE9XRVJfUk9NQU4pOworICAgICAgICAgICAgICAgIGNhc2UgVVBQRVJfUk9NQU46
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9VUFBFUl9ST01BTik7CisgICAgICAgICAgICAgICAgY2FzZSBMT1dFUl9HUkVFSzoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xPV0VS
X0dSRUVLKTsKKyAgICAgICAgICAgICAgICBjYXNlIExPV0VSX0FMUEhBOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTE9XRVJfQUxQSEEp
OworICAgICAgICAgICAgICAgIGNhc2UgTE9XRVJfTEFUSU46CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9MT1dFUl9MQVRJTik7CisgICAg
ICAgICAgICAgICAgY2FzZSBVUFBFUl9BTFBIQToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1VQUEVSX0FMUEhBKTsKKyAgICAgICAgICAg
ICAgICBjYXNlIFVQUEVSX0xBVElOOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVVBQRVJfTEFUSU4pOworICAgICAgICAgICAgICAgIGNh
c2UgSEVCUkVXOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfSEVCUkVXKTsKKyAgICAgICAgICAgICAgICBjYXNlIEFSTUVOSUFOOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVJN
RU5JQU4pOworICAgICAgICAgICAgICAgIGNhc2UgR0VPUkdJQU46CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9HRU9SR0lBTik7CisgICAg
ICAgICAgICAgICAgY2FzZSBDSktfSURFT0dSQVBISUM6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DSktfSURFT0dSQVBISUMpOworICAg
ICAgICAgICAgICAgIGNhc2UgSElSQUdBTkE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ISVJBR0FOQSk7CisgICAgICAgICAgICAgICAg
Y2FzZSBLQVRBS0FOQToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0tBVEFLQU5BKTsKKyAgICAgICAgICAgICAgICBjYXNlIEhJUkFHQU5B
X0lST0hBOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfSElSQUdBTkFfSVJPSEEpOworICAgICAgICAgICAgICAgIGNhc2UgS0FUQUtBTkFf
SVJPSEE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9LQVRBS0FOQV9JUk9IQSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENT
U19QUk9QX01BUkdJTl9UT1A6CisgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9zZWQgdG8gcmV0
dXJuIHRoZSBwZXJjZW50YWdlIGlmIHBlcmNlbnRhZ2Ugd2FzIHNwZWNpZmllZC4KKyAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVyZXItPm1hcmdpblRvcCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9NQVJHSU5f
UklHSFQ6CisgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9zZWQgdG8gcmV0dXJuIHRoZSBwZXJj
ZW50YWdlIGlmIHBlcmNlbnRhZ2Ugd2FzIHNwZWNpZmllZC4KKyAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVyZXItPm1hcmdpblJpZ2h0KCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBjYXNlIENTU19QUk9QX01BUkdJTl9CT1RUT006Cisg
ICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9zZWQgdG8gcmV0dXJuIHRoZSBwZXJjZW50YWdlIGlm
IHBlcmNlbnRhZ2Ugd2FzIHNwZWNpZmllZC4KKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUocmVuZGVyZXItPm1hcmdpbkJvdHRvbSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9NQVJHSU5fTEVGVDoKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBTdXBwb3NlZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFn
ZSB3YXMgc3BlY2lmaWVkLgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShyZW5kZXJlci0+bWFyZ2luTGVmdCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAg
ICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX01BUlFVRUU6CisgICAgICAgICAgICAvLyBGSVhN
RTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1BS
T1BfX1dFQktJVF9NQVJRVUVFX0RJUkVDVElPTjoKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUt
Pm1hcnF1ZWVEaXJlY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIGNhc2UgTUZPUldBUkQ6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9G
T1JXQVJEUyk7CisgICAgICAgICAgICAgICAgY2FzZSBNQkFDS1dBUkQ6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CQUNLV0FSRFMpOwor
ICAgICAgICAgICAgICAgIGNhc2UgTUFVVE86CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKKyAgICAgICAgICAgICAgICBjYXNl
IE1VUDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX1VQKTsKKyAgICAgICAgICAgICAgICBjYXNlIE1ET1dOOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRE9XTik7CisgICAgICAg
ICAgICAgICAgY2FzZSBNTEVGVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0xFRlQpOworICAgICAgICAgICAgICAgIGNhc2UgTVJJR0hU
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfUklHSFQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lU
X01BUlFVRUVfSU5DUkVNRU5UOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0
eWxlLT5tYXJxdWVlSW5jcmVtZW50KCkpOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRf
TUFSUVVFRV9SRVBFVElUSU9OOgorICAgICAgICAgICAgaWYgKHN0eWxlLT5tYXJxdWVlTG9vcENv
dW50KCkgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9JTkZJTklURSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN0eWxlLT5tYXJxdWVlTG9vcENvdW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX01BUlFVRUVfU1BFRUQ6CisgICAg
ICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJRVUVFX1NUWUxFOgorICAgICAgICAgICAgc3dp
dGNoIChzdHlsZS0+bWFycXVlZUJlaGF2aW9yKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIE1O
T05FOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfTk9ORSk7CisgICAgICAgICAgICAgICAgY2FzZSBNU0NST0xMOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0NST0xMKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIE1TTElERToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NMSURFKTsKKyAgICAgICAgICAgICAgICBjYXNl
IE1BTFRFUk5BVEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9BTFRFUk5BVEUpOworICAgICAgICAgICAgICAgIGNhc2UgTVVORlVSTDoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1VORlVSTCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRf
VVNFUl9NT0RJRlk6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT51c2VyTW9kaWZ5KCkpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIFJFQURfT05MWToKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JFQURfT05MWSk7CisgICAgICAgICAg
ICAgICAgY2FzZSBSRUFEX1dSSVRFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUkVBRF9XUklURSk7CisgICAgICAgICAgICAgICAgY2Fz
ZSBSRUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUkVBRF9XUklURV9QTEFJTlRFWFRfT05MWSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENTU19QUk9QX01BWF9IRUlHSFQ6CisgICAg
ICAgICAgICByZXR1cm4gdmFsdWVGb3JNYXhMZW5ndGgoc3R5bGUtPm1heEhlaWdodCgpKTsKKyAg
ICAgICAgY2FzZSBDU1NfUFJPUF9NQVhfV0lEVEg6CisgICAgICAgICAgICByZXR1cm4gdmFsdWVG
b3JNYXhMZW5ndGgoc3R5bGUtPm1heFdpZHRoKCkpOworICAgICAgICBjYXNlIENTU19QUk9QX01J
Tl9IRUlHSFQ6CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1pbkhl
aWdodCgpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9NSU5fV0lEVEg6CisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1pbldpZHRoKCkpOworICAgICAgICBjYXNlIENT
U19QUk9QX09QQUNJVFk6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KHN0eWxlLT5vcGFjaXR5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAg
ICAgY2FzZSBDU1NfUFJPUF9PUlBIQU5TOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShzdHlsZS0+b3JwaGFucygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
Uik7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfT1VUTElORV9DT0xPUjoKKyAgICAgICAgICAgIHJl
dHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN0eWxlLT5vdXRsaW5lQ29sb3Io
KSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfT1VUTElORV9PRkZTRVQ6CisgICAgICAgICAgICAv
LyBGSVhNRTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q1NTX1BST1BfT1VUTElORV9TVFlMRToKKyAgICAgICAgICAgIGlmIChzdHlsZS0+b3V0bGluZVN0
eWxlSXNBdXRvKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgY2FzZSBNVVA6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1VQKTsKLSAgICAgICAgICAgIGNh
c2UgTURPV046Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0RPV04pOwotICAgICAgICAgICAgY2FzZSBNTEVGVDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTEVGVCk7Ci0gICAgICAgICAgICBj
YXNlIE1SSUdIVDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfUklHSFQpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yQm9yZGVyU3R5bGUo
c3R5bGUtPm91dGxpbmVTdHlsZSgpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9PVVRMSU5FX1dJ
RFRIOgorICAgICAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIENTU19QUk9QX09WRVJGTE9XOgorICAgICAgICBjYXNlIENTU19Q
Uk9QX09WRVJGTE9XX1g6CisgICAgICAgIGNhc2UgQ1NTX1BST1BfT1ZFUkZMT1dfWTogeworICAg
ICAgICAgICAgRU92ZXJmbG93IG92ZXJmbG93OworICAgICAgICAgICAgc3dpdGNoIChwcm9wZXJ0
eUlEKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDU1NfUFJPUF9PVkVSRkxPV19YOgorICAgICAg
ICAgICAgICAgICAgICBvdmVyZmxvdyA9IHN0eWxlLT5vdmVyZmxvd1goKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDU1NfUFJPUF9PVkVSRkxPV19Z
OgorICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IHN0eWxlLT5vdmVyZmxvd1koKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBtYXgoc3R5bGUtPm92ZXJmbG93WCgpLCBzdHlsZS0+
b3ZlcmZsb3dZKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3dpdGNoIChvdmVyZmxv
dykgeworICAgICAgICAgICAgICAgIGNhc2UgT1ZJU0lCTEU6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9WSVNJQkxFKTsKKyAgICAgICAg
ICAgICAgICBjYXNlIE9ISURERU46CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ISURERU4pOworICAgICAgICAgICAgICAgIGNhc2UgT1ND
Uk9MTDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX1NDUk9MTCk7CisgICAgICAgICAgICAgICAgY2FzZSBPQVVUTzoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOworICAg
ICAgICAgICAgICAgIGNhc2UgT01BUlFVRUU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9fV0VCS0lUX01BUlFVRUUpOworICAgICAgICAg
ICAgICAgIGNhc2UgT09WRVJMQVk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9PVkVSTEFZKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJRVUVFX0lOQ1JFTUVOVDoKLSAgICAgICAgcmV0dXJu
IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJxdWVlSW5jcmVtZW50KCkpOwotICAgIGNhc2UgQ1NT
X1BST1BfX1dFQktJVF9NQVJRVUVFX1JFUEVUSVRJT046Ci0gICAgICAgIGlmIChzdHlsZS0+bWFy
cXVlZUxvb3BDb3VudCgpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9JTkZJTklURSk7Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoc3R5bGUtPm1hcnF1ZWVMb29wQ291bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJRVUVFX1NQRUVEOgotICAgICAg
ICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU19Q
Uk9QX19XRUJLSVRfTUFSUVVFRV9TVFlMRToKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+bWFycXVl
ZUJlaGF2aW9yKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTU5PTkU6CisgICAgICAgIGNhc2UgQ1NT
X1BST1BfUEFERElOR19UT1A6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHJlbmRlcmVyLT5wYWRkaW5nVG9wKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwor
ICAgICAgICBjYXNlIENTU19QUk9QX1BBRERJTkdfUklHSFQ6CisgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5wYWRkaW5nUmlnaHQoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfUEFERElOR19CT1RUT006
CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5wYWRk
aW5nQm90dG9tKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBjYXNlIENT
U19QUk9QX1BBRERJTkdfTEVGVDoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUocmVuZGVyZXItPnBhZGRpbmdMZWZ0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgp
OworICAgICAgICBjYXNlIENTU19QUk9QX1BBR0U6CisgICAgICAgICAgICAvLyBGSVhNRTogdW5p
bXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfUEFH
RV9CUkVBS19BRlRFUjoKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPnBhZ2VCcmVha0FmdGVy
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBCQVVUTzoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOworICAgICAgICAgICAg
ICAgIGNhc2UgUEJBTFdBWVM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9BTFdBWVMpOworICAgICAgICAgICAgICAgIGNhc2UgUEJBVk9J
RDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0FWT0lEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfUEFHRV9C
UkVBS19CRUZPUkU6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5wYWdlQnJlYWtCZWZvcmUo
KSkgeworICAgICAgICAgICAgICAgIGNhc2UgUEJBVVRPOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CisgICAgICAgICAgICAg
ICAgY2FzZSBQQkFMV0FZUzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0FMV0FZUyk7CisgICAgICAgICAgICAgICAgY2FzZSBQQkFWT0lE
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfQVZPSUQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9QQUdFX0JS
RUFLX0lOU0lERToKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPnBhZ2VCcmVha0luc2lkZSgp
KSB7CisgICAgICAgICAgICAgICAgY2FzZSBQQkFVVE86CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKKyAgICAgICAgICAgICAg
ICBjYXNlIFBCQVZPSUQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9BVk9JRCk7CisgICAgICAgICAgICAgICAgY2FzZSBQQkFMV0FZUzoK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIG5vdCBhbGxvd2VkCisgICAgICAgICAgICB9
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICBjYXNlIENTU19QUk9QX1BPU0lUSU9OOgorICAgICAgICAgICAgc3dpdGNoIChz
dHlsZS0+cG9zaXRpb24oKSkgeworICAgICAgICAgICAgICAgIGNhc2UgU3RhdGljUG9zaXRpb246
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9TVEFUSUMpOworICAgICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmVQb3NpdGlvbjoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JFTEFU
SVZFKTsKKyAgICAgICAgICAgICAgICBjYXNlIEFic29sdXRlUG9zaXRpb246CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BQlNPTFVURSk7
CisgICAgICAgICAgICAgICAgY2FzZSBGaXhlZFBvc2l0aW9uOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRklYRUQpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9RVU9URVM6CisgICAgICAgICAgICAvLyBGSVhN
RTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1BS
T1BfUklHSFQ6CisgICAgICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShyZW5k
ZXJlciwgQ1NTX1BST1BfUklHSFQpOworICAgICAgICBjYXNlIENTU19QUk9QX1NJWkU6CisgICAg
ICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ1NTX1BST1BfVEFCTEVfTEFZT1VUOgorICAgICAgICAgICAgc3dpdGNoIChzdHls
ZS0+dGFibGVMYXlvdXQoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgVEFVVE86CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsK
KyAgICAgICAgICAgICAgICBjYXNlIFRGSVhFRDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0ZJWEVEKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgQ1NTX1BST1BfVEVYVF9BTElHTjoKKyAgICAgICAgICAgIHJldHVybiB2YWx1
ZUZvclRleHRBbGlnbihzdHlsZS0+dGV4dEFsaWduKCkpOworICAgICAgICBjYXNlIENTU19QUk9Q
X1RFWFRfREVDT1JBVElPTjogeworICAgICAgICAgICAgU3RyaW5nIHN0cmluZzsKKyAgICAgICAg
ICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIFVOREVSTElORSkKKyAgICAgICAgICAg
ICAgICBzdHJpbmcgKz0gInVuZGVybGluZSI7CisgICAgICAgICAgICBpZiAoc3R5bGUtPnRleHRE
ZWNvcmF0aW9uKCkgJiBPVkVSTElORSkgeworICAgICAgICAgICAgICAgIGlmIChzdHJpbmcubGVu
Z3RoKCkpCisgICAgICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7CisgICAgICAgICAgICAg
ICAgc3RyaW5nICs9ICJvdmVybGluZSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
c3R5bGUtPnRleHREZWNvcmF0aW9uKCkgJiBMSU5FX1RIUk9VR0gpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAi
OworICAgICAgICAgICAgICAgIHN0cmluZyArPSAibGluZS10aHJvdWdoIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIEJMSU5LKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICAgICAg
c3RyaW5nICs9ICIgIjsKKyAgICAgICAgICAgICAgICBzdHJpbmcgKz0gImJsaW5rIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICAgICAg
ICAgIGNhc2UgTVNDUk9MTDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfU0NST0xMKTsKLSAgICAgICAgICAgIGNhc2UgTVNMSURFOgotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TTElERSk7Ci0g
ICAgICAgICAgICBjYXNlIE1BTFRFUk5BVEU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FMVEVSTkFURSk7Ci0gICAgICAgICAgICBjYXNlIE1V
TkZVUkw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX1VORlVSTCk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9VU0VSX01PRElGWToK
LSAgICAgICAgc3dpdGNoIChzdHlsZS0+dXNlck1vZGlmeSgpKSB7Ci0gICAgICAgICAgICBjYXNl
IFJFQURfT05MWToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfUkVBRF9PTkxZKTsKLSAgICAgICAgICAgIGNhc2UgUkVBRF9XUklURToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUkVBRF9XUklU
RSk7Ci0gICAgICAgICAgICBjYXNlIFJFQURfV1JJVEVfUExBSU5URVhUX09OTFk6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JFQURfV1JJVEVf
UExBSU5URVhUX09OTFkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShzdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKICAgICAgICAgfQotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBD
U1NfUFJPUF9NQVhfSEVJR0hUOgotICAgICAgICByZXR1cm4gdmFsdWVGb3JNYXhMZW5ndGgoc3R5
bGUtPm1heEhlaWdodCgpKTsKLSAgICBjYXNlIENTU19QUk9QX01BWF9XSURUSDoKLSAgICAgICAg
cmV0dXJuIHZhbHVlRm9yTWF4TGVuZ3RoKHN0eWxlLT5tYXhXaWR0aCgpKTsKLSAgICBjYXNlIENT
U19QUk9QX01JTl9IRUlHSFQ6Ci0gICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+
bWluSGVpZ2h0KCkpOwotICAgIGNhc2UgQ1NTX1BST1BfTUlOX1dJRFRIOgotICAgICAgICByZXR1
cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1pbldpZHRoKCkpOwotICAgIGNhc2UgQ1NTX1BST1Bf
T1BBQ0lUWToKLSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+b3Bh
Y2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgY2FzZSBDU1NfUFJP
UF9PUlBIQU5TOgotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5v
cnBoYW5zKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSAgICBjYXNlIENTU19Q
Uk9QX09VVExJTkVfQ09MT1I6Ci0gICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29s
b3Ioc3R5bGUsIHN0eWxlLT5vdXRsaW5lQ29sb3IoKSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9PVVRM
SU5FX09GRlNFVDoKLSAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9PVVRMSU5FX1NUWUxFOgotICAgICAgICBpZiAoc3R5bGUt
Pm91dGxpbmVTdHlsZUlzQXV0bygpKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICByZXR1cm4gdmFsdWVGb3JCb3JkZXJTdHls
ZShzdHlsZS0+b3V0bGluZVN0eWxlKCkpOwotICAgIGNhc2UgQ1NTX1BST1BfT1VUTElORV9XSURU
SDoKLSAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NfUFJPUF9PVkVSRkxPVzoKLSAgICBjYXNlIENTU19QUk9QX09WRVJGTE9XX1g6Ci0g
ICAgY2FzZSBDU1NfUFJPUF9PVkVSRkxPV19ZOgotICAgICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3c7
Ci0gICAgICAgIHN3aXRjaCAocHJvcGVydHlJRCkgewotICAgICAgICAgICAgY2FzZSBDU1NfUFJP
UF9PVkVSRkxPV19YOgotICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gc3R5bGUtPm92ZXJmbG93
WCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NfUFJPUF9P
VkVSRkxPV19ZOgotICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gc3R5bGUtPm92ZXJmbG93WSgp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBvdmVyZmxvdyA9IG1heChzdHlsZS0+b3ZlcmZsb3dYKCksIHN0eWxlLT5vdmVyZmxv
d1koKSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChvdmVyZmxvdykgewotICAgICAgICAg
ICAgY2FzZSBPVklTSUJMRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfVklTSUJMRSk7Ci0gICAgICAgICAgICBjYXNlIE9ISURERU46Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hJRERFTik7
Ci0gICAgICAgICAgICBjYXNlIE9TQ1JPTEw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NDUk9MTCk7Ci0gICAgICAgICAgICBjYXNlIE9BVVRP
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9B
VVRPKTsKLSAgICAgICAgICAgIGNhc2UgT01BUlFVRUU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX19XRUJLSVRfTUFSUVVFRSk7Ci0gICAgICAg
ICAgICBjYXNlIE9PVkVSTEFZOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9PVkVSTEFZKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9QQURESU5H
X1RPUDoKLSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShyZW5kZXJlci0+cGFk
ZGluZ1RvcCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBjYXNlIENTU19QUk9Q
X1BBRERJTkdfUklHSFQ6Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVu
ZGVyZXItPnBhZGRpbmdSaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBj
YXNlIENTU19QUk9QX1BBRERJTkdfQk9UVE9NOgotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHJlbmRlcmVyLT5wYWRkaW5nQm90dG9tKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFgpOwotICAgIGNhc2UgQ1NTX1BST1BfUEFERElOR19MRUZUOgotICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBjYXNlIENTU19QUk9QX1BBR0U6Ci0gICAgICAgIC8vIEZJ
WE1FOiB1bmltcGxlbWVudGVkCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfUEFH
RV9CUkVBS19BRlRFUjoKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+cGFnZUJyZWFrQWZ0ZXIoKSkg
ewotICAgICAgICAgICAgY2FzZSBQQkFVVE86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgY2FzZSBQQkFMV0FZ
UzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
QUxXQVlTKTsKLSAgICAgICAgICAgIGNhc2UgUEJBVk9JRDoKLSAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVZPSUQpOwotICAgICAgICB9Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENT
U19QUk9QX1BBR0VfQlJFQUtfQkVGT1JFOgotICAgICAgICBzd2l0Y2ggKHN0eWxlLT5wYWdlQnJl
YWtCZWZvcmUoKSkgewotICAgICAgICAgICAgY2FzZSBQQkFVVE86Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAg
Y2FzZSBQQkFMV0FZUzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfQUxXQVlTKTsKLSAgICAgICAgICAgIGNhc2UgUEJBVk9JRDoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVZPSUQpOwotICAg
ICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsK
LSAgICBjYXNlIENTU19QUk9QX1BBR0VfQlJFQUtfSU5TSURFOgotICAgICAgICBzd2l0Y2ggKHN0
eWxlLT5wYWdlQnJlYWtJbnNpZGUoKSkgewotICAgICAgICAgICAgY2FzZSBQQkFVVE86Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwot
ICAgICAgICAgICAgY2FzZSBQQkFWT0lEOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVk9JRCk7Ci0gICAgICAgICAgICBjYXNlIFBCQUxXQVlT
OgotICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBub3QgYWxsb3dlZAotICAgICAgICB9Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENT
U19QUk9QX1BPU0lUSU9OOgotICAgICAgICBzd2l0Y2ggKHN0eWxlLT5wb3NpdGlvbigpKSB7Ci0g
ICAgICAgICAgICBjYXNlIFN0YXRpY1Bvc2l0aW9uOgotICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TVEFUSUMpOwotICAgICAgICAgICAgY2FzZSBS
ZWxhdGl2ZVBvc2l0aW9uOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9SRUxBVElWRSk7Ci0gICAgICAgICAgICBjYXNlIEFic29sdXRlUG9zaXRp
b246Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0FCU09MVVRFKTsKLSAgICAgICAgICAgIGNhc2UgRml4ZWRQb3NpdGlvbjoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRklYRUQpOwotICAgICAg
ICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAg
ICBjYXNlIENTU19QUk9QX1FVT1RFUzoKLSAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9SSUdIVDoKLSAgICAgICAgcmV0dXJu
IGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUocmVuZGVyZXIsIENTU19QUk9QX1JJR0hUKTsKLSAgICBj
YXNlIENTU19QUk9QX1NJWkU6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCi0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfVEFCTEVfTEFZT1VUOgotICAgICAgICBzd2l0
Y2ggKHN0eWxlLT50YWJsZUxheW91dCgpKSB7Ci0gICAgICAgICAgICBjYXNlIFRBVVRPOgotICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsK
LSAgICAgICAgICAgIGNhc2UgVEZJWEVEOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9GSVhFRCk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfVEVY
VF9BTElHTjoKLSAgICAgICAgcmV0dXJuIHZhbHVlRm9yVGV4dEFsaWduKHN0eWxlLT50ZXh0QWxp
Z24oKSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9URVhUX0RFQ09SQVRJT046Ci0gICAgewotICAgICAg
ICBTdHJpbmcgc3RyaW5nOwotICAgICAgICBpZiAoc3R5bGUtPnRleHREZWNvcmF0aW9uKCkgJiBV
TkRFUkxJTkUpCi0gICAgICAgICAgICBzdHJpbmcgKz0gInVuZGVybGluZSI7Ci0gICAgICAgIGlm
IChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIE9WRVJMSU5FKSB7Ci0gICAgICAgICAgICBpZiAo
c3RyaW5nLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAiOwotICAg
ICAgICAgICAgc3RyaW5nICs9ICJvdmVybGluZSI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0
eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgTElORV9USFJPVUdIKSB7Ci0gICAgICAgICAgICBpZiAo
c3RyaW5nLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAiOwotICAg
ICAgICAgICAgc3RyaW5nICs9ICJsaW5lLXRocm91Z2giOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIEJMSU5LKSB7Ci0gICAgICAgICAgICBpZiAoc3Ry
aW5nLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAiOwotICAgICAg
ICAgICAgc3RyaW5nICs9ICJibGluayI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0cmluZy5s
ZW5ndGgoKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX05PTkUpOwotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0cmlu
ZywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgIH0KLSAgICBjYXNlIENTU19Q
Uk9QX19XRUJLSVRfVEVYVF9ERUNPUkFUSU9OU19JTl9FRkZFQ1Q6Ci0gICAgewotICAgICAgICBT
dHJpbmcgc3RyaW5nOwotICAgICAgICBpZiAoc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0
KCkgJiBVTkRFUkxJTkUpCi0gICAgICAgICAgICBzdHJpbmcgKz0gInVuZGVybGluZSI7Ci0gICAg
ICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIE9WRVJMSU5FKSB7Ci0g
ICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICAgICAgICBzdHJp
bmcgKz0gIiAiOwotICAgICAgICAgICAgc3RyaW5nICs9ICJvdmVybGluZSI7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgTElORV9USFJP
VUdIKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gMCkKLSAgICAgICAgICAg
ICAgICBzdHJpbmcgKz0gIiAiOwotICAgICAgICAgICAgc3RyaW5nICs9ICJsaW5lLXRocm91Z2gi
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3Qo
KSAmIEJMSU5LKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gMCkKLSAgICAg
ICAgICAgICAgICBzdHJpbmcgKz0gIiAiOwotICAgICAgICAgICAgc3RyaW5nICs9ICJibGluayI7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA9PSAwKQotICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwotICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0cmluZywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpOwotICAgIH0KLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfVEVYVF9GSUxMX0NP
TE9SOgotICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLCBzdHls
ZS0+dGV4dEZpbGxDb2xvcigpKTsKLSAgICBjYXNlIENTU19QUk9QX1RFWFRfSU5ERU5UOgotICAg
ICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJbmRlbnQoKSk7Ci0gICAgY2Fz
ZSBDU1NfUFJPUF9URVhUX1NIQURPVzoKLSAgICAgICAgcmV0dXJuIHZhbHVlRm9yU2hhZG93KHN0
eWxlLT50ZXh0U2hhZG93KCkpOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9URVhUX1NFQ1VS
SVRZOgotICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+dGV4dFNlY3VyaXR5KCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgVFNOT05FOgorICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfVEVY
VF9ERUNPUkFUSU9OU19JTl9FRkZFQ1Q6IHsKKyAgICAgICAgICAgIFN0cmluZyBzdHJpbmc7Cisg
ICAgICAgICAgICBpZiAoc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBVTkRFUkxJ
TkUpCisgICAgICAgICAgICAgICAgc3RyaW5nICs9ICJ1bmRlcmxpbmUiOworICAgICAgICAgICAg
aWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgT1ZFUkxJTkUpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgICAgICBzdHJp
bmcgKz0gIiAiOworICAgICAgICAgICAgICAgIHN0cmluZyArPSAib3ZlcmxpbmUiOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgp
ICYgTElORV9USFJPVUdIKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSkK
KyAgICAgICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgIjsKKyAgICAgICAgICAgICAgICBzdHJp
bmcgKz0gImxpbmUtdGhyb3VnaCI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3R5
bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBCTElOSykgeworICAgICAgICAgICAgICAg
IGlmIChzdHJpbmcubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7
CisgICAgICAgICAgICAgICAgc3RyaW5nICs9ICJibGluayI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0gICAgICAgICAgICBjYXNlIFRTRElT
QzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
RElTQyk7Ci0gICAgICAgICAgICBjYXNlIFRTQ0lSQ0xFOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DSVJDTEUpOwotICAgICAgICAgICAgY2Fz
ZSBUU1NRVUFSRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfU1FVQVJFKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoc3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiAgICAgICAgIH0KLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAg
ICBjYXNlIENTU19QUk9QX19XRUJLSVRfVEVYVF9TSVpFX0FESlVTVDoKLSAgICAgICAgaWYgKHN0
eWxlLT50ZXh0U2l6ZUFkanVzdCgpKSAKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgZWxzZQorICAgICAgICBjYXNlIENTU19Q
Uk9QX19XRUJLSVRfVEVYVF9GSUxMX0NPTE9SOgorICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRD
b2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPnRleHRGaWxsQ29sb3IoKSk7CisgICAgICAg
IGNhc2UgQ1NTX1BST1BfVEVYVF9JTkRFTlQ6CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JM
ZW5ndGgoc3R5bGUtPnRleHRJbmRlbnQoKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfVEVYVF9T
SEFET1c6CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3R5bGUtPnRleHRTaGFk
b3coKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9URVhUX1NFQ1VSSVRZOgorICAg
ICAgICAgICAgc3dpdGNoIChzdHlsZS0+dGV4dFNlY3VyaXR5KCkpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIFRTTk9ORToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX05PTkUpOworICAgICAgICAgICAgICAgIGNhc2UgVFNESVNDOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRElT
Qyk7CisgICAgICAgICAgICAgICAgY2FzZSBUU0NJUkNMRToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NJUkNMRSk7CisgICAgICAgICAg
ICAgICAgY2FzZSBUU1NRVUFSRToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX1NRVUFSRSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBj
YXNlIENTU19QUk9QX19XRUJLSVRfVEVYVF9TSVpFX0FESlVTVDoKKyAgICAgICAgICAgIGlmIChz
dHlsZS0+dGV4dFNpemVBZGp1c3QoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX1RF
WFRfU1RST0tFX0NPTE9SOgotICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9y
KHN0eWxlLCBzdHlsZS0+dGV4dFN0cm9rZUNvbG9yKCkpOwotICAgIGNhc2UgQ1NTX1BST1BfX1dF
QktJVF9URVhUX1NUUk9LRV9XSURUSDoKLSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShzdHlsZS0+dGV4dFN0cm9rZVdpZHRoKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKTsKLSAgICBjYXNlIENTU19QUk9QX1RFWFRfVFJBTlNGT1JNOgotICAgICAgICBzd2l0Y2gg
KHN0eWxlLT50ZXh0VHJhbnNmb3JtKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ0FQSVRBTElaRToK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ0FQ
SVRBTElaRSk7Ci0gICAgICAgICAgICBjYXNlIFVQUEVSQ0FTRToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVVBQRVJDQVNFKTsKLSAgICAgICAg
ICAgIGNhc2UgTE9XRVJDQVNFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9MT1dFUkNBU0UpOwotICAgICAgICAgICAgY2FzZSBUVE5PTkU6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUp
OwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gMDsKLSAgICBjYXNlIENTU19QUk9QX1RPUDoKLSAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9u
T2Zmc2V0VmFsdWUocmVuZGVyZXIsIENTU19QUk9QX1RPUCk7Ci0gICAgY2FzZSBDU1NfUFJPUF9V
TklDT0RFX0JJREk6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPnVuaWNvZGVCaWRpKCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgVUJOb3JtYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7Ci0gICAgICAgICAgICBjYXNlIEVtYmVkOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FTUJF
RCk7Ci0gICAgICAgICAgICBjYXNlIE92ZXJyaWRlOgotICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CSURJX09WRVJSSURFKTsKLSAgICAgICAgfQot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2Fz
ZSBDU1NfUFJPUF9WRVJUSUNBTF9BTElHTjoKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+dmVydGlj
YWxBbGlnbigpKSB7Ci0gICAgICAgICAgICBjYXNlIEJBU0VMSU5FOgotICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CQVNFTElORSk7Ci0gICAgICAg
ICAgICBjYXNlIE1JRERMRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTUlERExFKTsKLSAgICAgICAgICAgIGNhc2UgU1VCOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TVUIpOwotICAgICAg
ICAgICAgY2FzZSBTVVBFUjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfU1VQRVIpOwotICAgICAgICAgICAgY2FzZSBURVhUX1RPUDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVF9UT1Ap
OwotICAgICAgICAgICAgY2FzZSBURVhUX0JPVFRPTToKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVF9CT1RUT00pOwotICAgICAgICAgICAg
Y2FzZSBUT1A6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX1RPUCk7Ci0gICAgICAgICAgICBjYXNlIEJPVFRPTToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQk9UVE9NKTsKLSAgICAgICAgICAg
IGNhc2UgQkFTRUxJTkVfTUlERExFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9fV0VCS0lUX0JBU0VMSU5FX01JRERMRSk7Ci0gICAgICAgICAg
ICBjYXNlIExFTkdUSDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5
bGUtPnZlcnRpY2FsQWxpZ25MZW5ndGgoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfVklTSUJJ
TElUWToKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+dmlzaWJpbGl0eSgpKSB7Ci0gICAgICAgICAg
ICBjYXNlIFZJU0lCTEU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1ZJU0lCTEUpOwotICAgICAgICAgICAgY2FzZSBISURERU46Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hJRERFTik7Ci0g
ICAgICAgICAgICBjYXNlIENPTExBUFNFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT0xMQVBTRSk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1Bf
V0hJVEVfU1BBQ0U6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPndoaXRlU3BhY2UoKSkgewotICAg
ICAgICAgICAgY2FzZSBOT1JNQUw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7Ci0gICAgICAgICAgICBjYXNlIFBSRToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUFJFKTsKLSAg
ICAgICAgICAgIGNhc2UgUFJFX1dSQVA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX1BSRV9XUkFQKTsKLSAgICAgICAgICAgIGNhc2UgUFJFX0xJ
TkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1BSRV9MSU5FKTsKLSAgICAgICAgICAgIGNhc2UgTk9XUkFQOgotICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1dSQVApOwotICAgICAgICAgICAg
Y2FzZSBLSFRNTF9OT1dSQVA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX19XRUJLSVRfTk9XUkFQKTsKLSAgICAgICAgfQotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9X
SURPV1M6Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPndpZG93
cygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgY2FzZSBDU1NfUFJPUF9X
SURUSDoKLSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShyZW5kZXJlci0+Y29u
dGVudFdpZHRoKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgIGNhc2UgQ1NTX1BS
T1BfV09SRF9TUEFDSU5HOgotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0
eWxlLT53b3JkU3BhY2luZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBjYXNl
IENTU19QUk9QX1dPUkRfV1JBUDoKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+d29yZFdyYXAoKSkg
ewotICAgICAgICAgICAgY2FzZSBXQk5PUk1BTDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKLSAgICAgICAgICAgIGNhc2UgQlJF
QUtfV09SRDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfQlJFQUtfV09SRCk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9MSU5FX0JS
RUFLOgotICAgICAgICBzd2l0Y2ggKHN0eWxlLT5raHRtbExpbmVCcmVhaygpKSB7Ci0gICAgICAg
ICAgICBjYXNlIExCTk9STUFMOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOwotICAgICAgICAgICAgY2FzZSBBRlRFUl9XSElURV9T
UEFDRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfQUZURVJfV0hJVEVfU1BBQ0UpOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTkJT
UF9NT0RFOgotICAgICAgICBzd2l0Y2ggKHN0eWxlLT5uYnNwTW9kZSgpKSB7Ci0gICAgICAgICAg
ICBjYXNlIE5CTk9STUFMOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOwotICAgICAgICAgICAgY2FzZSBTUEFDRToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1BBQ0UpOwotICAg
ICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsK
LSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTUFUQ0hfTkVBUkVTVF9NQUlMX0JMT0NLUVVPVEVf
Q09MT1I6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPm1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3Rl
Q29sb3IoKSkgewotICAgICAgICAgICAgY2FzZSBCQ05PUk1BTDoKKyAgICAgICAgY2FzZSBDU1Nf
UFJPUF9fV0VCS0lUX1RFWFRfU1RST0tFX0NPTE9SOgorICAgICAgICAgICAgcmV0dXJuIGN1cnJl
bnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPnRleHRTdHJva2VDb2xvcigpKTsKKyAg
ICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX1RFWFRfU1RST0tFX1dJRFRIOgorICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+dGV4dFN0cm9rZVdpZHRoKCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9U
RVhUX1RSQU5TRk9STToKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPnRleHRUcmFuc2Zvcm0o
KSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ0FQSVRBTElaRToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NBUElUQUxJWkUpOworICAg
ICAgICAgICAgICAgIGNhc2UgVVBQRVJDQVNFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVVBQRVJDQVNFKTsKKyAgICAgICAgICAgICAg
ICBjYXNlIExPV0VSQ0FTRToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0xPV0VSQ0FTRSk7CisgICAgICAgICAgICAgICAgY2FzZSBUVE5P
TkU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9OT05FKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfVE9QOgor
ICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUocmVuZGVyZXIsIENTU19Q
Uk9QX1RPUCk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfVU5JQ09ERV9CSURJOgorICAgICAgICAg
ICAgc3dpdGNoIChzdHlsZS0+dW5pY29kZUJpZGkoKSkgeworICAgICAgICAgICAgICAgIGNhc2Ug
VUJOb3JtYWw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9OT1JNQUwpOworICAgICAgICAgICAgICAgIGNhc2UgRW1iZWQ6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FTUJFRCk7
CisgICAgICAgICAgICAgICAgY2FzZSBPdmVycmlkZToKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JJRElfT1ZFUlJJREUpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9WRVJUSUNBTF9BTElHTjoKKyAgICAgICAg
ICAgIHN3aXRjaCAoc3R5bGUtPnZlcnRpY2FsQWxpZ24oKSkgeworICAgICAgICAgICAgICAgIGNh
c2UgQkFTRUxJTkU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9CQVNFTElORSk7CisgICAgICAgICAgICAgICAgY2FzZSBNSURETEU6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9N
SURETEUpOworICAgICAgICAgICAgICAgIGNhc2UgU1VCOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1VCKTsKKyAgICAgICAgICAgICAg
ICBjYXNlIFNVUEVSOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfU1VQRVIpOworICAgICAgICAgICAgICAgIGNhc2UgVEVYVF9UT1A6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9U
RVhUX1RPUCk7CisgICAgICAgICAgICAgICAgY2FzZSBURVhUX0JPVFRPTToKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RFWFRfQk9UVE9N
KTsKKyAgICAgICAgICAgICAgICBjYXNlIFRPUDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RPUCk7CisgICAgICAgICAgICAgICAgY2Fz
ZSBCT1RUT006CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9CT1RUT00pOworICAgICAgICAgICAgICAgIGNhc2UgQkFTRUxJTkVfTUlERExF
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfX1dFQktJVF9CQVNFTElORV9NSURETEUpOworICAgICAgICAgICAgICAgIGNhc2UgTEVOR1RI
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPnZlcnRp
Y2FsQWxpZ25MZW5ndGgoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENTU19QUk9Q
X1ZJU0lCSUxJVFk6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT52aXNpYmlsaXR5KCkpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIFZJU0lCTEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9WSVNJQkxFKTsKKyAgICAgICAgICAgICAg
ICBjYXNlIEhJRERFTjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0hJRERFTik7CisgICAgICAgICAgICAgICAgY2FzZSBDT0xMQVBTRToK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0NPTExBUFNFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfV0hJVEVf
U1BBQ0U6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT53aGl0ZVNwYWNlKCkpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIE5PUk1BTDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7CisgICAgICAgICAgICAgICAgY2FzZSBQ
UkU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9QUkUpOworICAgICAgICAgICAgICAgIGNhc2UgUFJFX1dSQVA6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QUkVfV1JBUCk7Cisg
ICAgICAgICAgICAgICAgY2FzZSBQUkVfTElORToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BSRV9MSU5FKTsKKyAgICAgICAgICAgICAg
ICBjYXNlIE5PV1JBUDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX05PV1JBUCk7CisgICAgICAgICAgICAgICAgY2FzZSBLSFRNTF9OT1dS
QVA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9fV0VCS0lUX05PV1JBUCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENTU19Q
Uk9QX1dJRE9XUzoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5
bGUtPndpZG93cygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgIGNh
c2UgQ1NTX1BST1BfV0lEVEg6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHJlbmRlcmVyLT5jb250ZW50V2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7
CisgICAgICAgIGNhc2UgQ1NTX1BST1BfV09SRF9TUEFDSU5HOgorICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+d29yZFNwYWNpbmcoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QWCk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfV09SRF9XUkFQOgorICAgICAg
ICAgICAgc3dpdGNoIChzdHlsZS0+d29yZFdyYXAoKSkgeworICAgICAgICAgICAgICAgIGNhc2Ug
V0JOT1JNQUw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9OT1JNQUwpOworICAgICAgICAgICAgICAgIGNhc2UgQlJFQUtfV09SRDoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JS
RUFLX1dPUkQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lU
X0xJTkVfQlJFQUs6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5raHRtbExpbmVCcmVhaygp
KSB7CisgICAgICAgICAgICAgICAgY2FzZSBMQk5PUk1BTDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7CisgICAgICAgICAg
ICAgICAgY2FzZSBBRlRFUl9XSElURV9TUEFDRToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FGVEVSX1dISVRFX1NQQUNFKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9OQlNQX01PREU6CisgICAg
ICAgICAgICBzd2l0Y2ggKHN0eWxlLT5uYnNwTW9kZSgpKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBOQk5PUk1BTDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX05PUk1BTCk7CisgICAgICAgICAgICAgICAgY2FzZSBTUEFDRToKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NQQUNF
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVRDSF9O
RUFSRVNUX01BSUxfQkxPQ0tRVU9URV9DT0xPUjoKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUt
Pm1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IoKSkgeworICAgICAgICAgICAgICAgIGNh
c2UgQkNOT1JNQUw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOworICAgICAgICAgICAgICAgIGNhc2UgTUFUQ0g6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NQVRD
SCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENTU19QUk9QX1JFU0laRToKKyAgICAg
ICAgICAgIHN3aXRjaCAoc3R5bGUtPnJlc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBS
RVNJWkVfQk9USDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0JPVEgpOworICAgICAgICAgICAgICAgIGNhc2UgUkVTSVpFX0hPUklaT05U
QUw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9IT1JJWk9OVEFMKTsKKyAgICAgICAgICAgICAgICBjYXNlIFJFU0laRV9WRVJUSUNBTDoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1ZFUlRJQ0FMKTsKKyAgICAgICAgICAgICAgICBjYXNlIFJFU0laRV9OT05FOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENTU19QUk9QX1pfSU5ERVg6CisgICAgICAgICAg
ICBpZiAoc3R5bGUtPmhhc0F1dG9aSW5kZXgoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKLSAgICAgICAgICAgIGNhc2UgTUFU
Q0g6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X01BVENIKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9SRVNJWkU6Ci0gICAgICAgIHN3aXRjaCAo
c3R5bGUtPnJlc2l6ZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFJFU0laRV9CT1RIOgotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CT1RIKTsKLSAg
ICAgICAgICAgIGNhc2UgUkVTSVpFX0hPUklaT05UQUw6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hPUklaT05UQUwpOwotICAgICAgICAgICAg
Y2FzZSBSRVNJWkVfVkVSVElDQUw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX1ZFUlRJQ0FMKTsKLSAgICAgICAgICAgIGNhc2UgUkVTSVpFX05P
TkU6Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICAgICAgfQotICAgIGNhc2UgQ1NTX1BS
T1BfWl9JTkRFWDoKLSAgICAgICAgaWYgKHN0eWxlLT5oYXNBdXRvWkluZGV4KCkpCi0gICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKLSAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+ekluZGV4KCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSAgICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkQ6Ci0g
ICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTX1BST1BfQk9SREVSOgotICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9DT0xPUjoKLSAgICAgICAgLy8gRklY
TUU6IHVuaW1wbGVtZW50ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JE
RVJfU1RZTEU6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCi0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX1RPUDoKLSAgICAgICAgLy8gRklYTUU6IHVuaW1w
bGVtZW50ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfUklHSFQ6
Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCi0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTX1BST1BfQk9SREVSX0JPVFRPTToKLSAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50
ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfTEVGVDoKLSAgICAg
ICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1Nf
UFJPUF9CT1JERVJfV0lEVEg6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCi0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfRk9OVDoKLSAgICAgICAgLy8gRklYTUU6IHVu
aW1wbGVtZW50ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9MSVNUX1NUWUxF
OgotICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU19QUk9QX01BUkdJTjoKLSAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9PVVRMSU5FOgotICAgICAgICAvLyBGSVhN
RTogdW5pbXBsZW1lbnRlZAotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU19QUk9QX1BBRERJ
Tkc6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCi0gICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+ekluZGV4KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CQUNL
R1JPVU5EOgorICAgICAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUjoKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiB1bmltcGxlbWVudGVkCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1Nf
UFJPUF9CT1JERVJfQ09MT1I6CisgICAgICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX1NUWUxFOgor
ICAgICAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9UT1A6CisgICAgICAgICAgICAvLyBGSVhNRTog
dW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1BST1Bf
Qk9SREVSX1JJR0hUOgorICAgICAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9CT1RUT006CisgICAg
ICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0xFRlQ6CisgICAgICAgICAgICAvLyBGSVhNRTogdW5p
bXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9S
REVSX1dJRFRIOgorICAgICAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19QUk9QX0ZPTlQ6CisgICAgICAgICAgICAvLyBG
SVhNRTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NT
X1BST1BfTElTVF9TVFlMRToKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9NQVJHSU46CisgICAgICAg
ICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ1NTX1BST1BfT1VUTElORToKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVu
dGVkCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9QQURESU5HOgor
ICAgICAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKKyAgICAgICAgICAgIGJyZWFrOwog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0RBU0hCT0FS
RF9SRUdJT046IHsKICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lv
bj4mIHJlZ2lvbnMgPSBzdHlsZS0+ZGFzaGJvYXJkUmVnaW9ucygpOwogICAgICAgICAgICAgdW5z
aWduZWQgY291bnQgPSByZWdpb25zLnNpemUoKTsKICAgICAgICAgICAgIGlmIChjb3VudCA9PSAx
ICYmIHJlZ2lvbnNbMF0udHlwZSA9PSBTdHlsZURhc2hib2FyZFJlZ2lvbjo6Tm9uZSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAgICAgUmVmUHRyPERhc2hib2FyZFJlZ2lvbj4gZmlyc3RS
ZWdpb247CiAgICAgICAgICAgICBEYXNoYm9hcmRSZWdpb24qIHByZXZpb3VzUmVnaW9uID0gMDsK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CkBAIC0x
NDc5LDcgKzE0NTksNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVj
CiAgICAgICAgICAgICAgICAgcmVnaW9uLT5zZXRSaWdodChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
b2Zmc2V0LnJpZ2h0LnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKICAgICAg
ICAgICAgICAgICByZWdpb24tPnNldEJvdHRvbShuZXcgQ1NTUHJpbWl0aXZlVmFsdWUob2Zmc2V0
LmJvdHRvbS52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CiAgICAgICAgICAg
ICAgICAgcmVnaW9uLT5zZXRMZWZ0KG5ldyBDU1NQcmltaXRpdmVWYWx1ZShvZmZzZXQubGVmdC52
YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Ci0gICAgICAgICAgICAgICAgcmVn
aW9uLT5tX2lzUmVjdGFuZ2xlID0gKHN0eWxlUmVnaW9uLnR5cGUgPT0gU3R5bGVEYXNoYm9hcmRS
ZWdpb246OlJlY3RhbmdsZSk7IAorICAgICAgICAgICAgICAgIHJlZ2lvbi0+bV9pc1JlY3Rhbmds
ZSA9IChzdHlsZVJlZ2lvbi50eXBlID09IFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpSZWN0YW5nbGUp
OwogICAgICAgICAgICAgICAgIHJlZ2lvbi0+bV9pc0NpcmNsZSA9IChzdHlsZVJlZ2lvbi50eXBl
ID09IFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpDaXJjbGUpOwogCiAgICAgICAgICAgICAgICAgaWYg
KHByZXZpb3VzUmVnaW9uKQpAQCAtMTUwNSwxOSArMTQ4NSwxOSBAQCBTdHJpbmcgQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQCiAgICAgcmV0dXJuICIiOwogfQogCi1ib29sIENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlQcmlvcml0eShpbnQpIGNvbnN0Citi
b29sIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlQcmlvcml0eShpbnQg
Lypwcm9wZXJ0eUlEKi8pIGNvbnN0CiB7CiAgICAgLy8gQWxsIGNvbXB1dGVkIHN0eWxlcyBoYXZl
IGEgcHJpb3JpdHkgb2YgZmFsc2UgKG5vdCAiaW1wb3J0YW50IikuCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1TdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0
eShpbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6cmVtb3ZlUHJvcGVydHkoaW50IC8qcHJvcGVydHlJRCovLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBlYyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKICAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKLXZvaWQgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9w
ZXJ0eShpbnQsIGNvbnN0IFN0cmluZyYsIGJvb2wsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGludCAvKnByb3BlcnR5SUQq
LywgY29uc3QgU3RyaW5nJiAvKnZhbHVlKi8sIGJvb2wgLyppbXBvcnRhbnQqLywgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CiB9CkBA
IC0xNTI3LDEyICsxNTA3LDE1IEBAIHVuc2lnbmVkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6bGUKICAgICBOb2RlKiBub2RlID0gbV9ub2RlLmdldCgpOwogICAgIGlmICghbm9kZSkKICAg
ICAgICAgcmV0dXJuIDA7CisKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVu
ZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gMDsKKwogICAgIFJl
bmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogICAgIGlmICghc3R5bGUpCiAg
ICAgICAgIHJldHVybiAwOworCiAgICAgcmV0dXJuIG51bUNvbXB1dGVkUHJvcGVydGllczsKIH0K
IApAQCAtMTU0MCw3ICsxNTIzLDcgQEAgU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6aXRlbQogewogICAgIGlmIChpID49IGxlbmd0aCgpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgCisKICAgICByZXR1cm4gZ2V0UHJvcGVydHlOYW1lKGNvbXB1dGVkUHJvcGVydGll
c1tpXSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oCShyZXZpc2lvbiAxODgwNCkKKysrIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNCBAQAogLyoqCi0gKiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uaAogICoKICAqIENvcHlyaWdodCAoQykgIDIwMDQgIFphY2sg
UnVzaW4gPHphY2tAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLgpAQCAtMjAsOCArMTksOCBAQAogICogMDIxMTEtMTMwNyAgVVNB
CiAgKi8KIAotI2lmbmRlZiBDU1NfQ09NUFVURURTVFlMRV9ICi0jZGVmaW5lIENTU19DT01QVVRF
RFNUWUxFX0gKKyNpZm5kZWYgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uX2gKKyNkZWZpbmUg
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uX2gKIAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFy
YXRpb24uaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC02MiwxMiArNjEsMTMgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKTsKKwogICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGludCBw
cm9wZXJ0eUlELCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFByb3BlcnR5
KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKIH07CiAKLX0KK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uX2gKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCShyZXZpc2lv
biAxODgwNCkKKysrIFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOCwxOCArMTgsMjAgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgogICovCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1ND
dXJzb3JJbWFnZVZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgSW50
UG9pbnQmIHAsIFN0eWxlQmFzZSogc3R5bGUpCitDU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJz
b3JJbWFnZVZhbHVlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBJbnRQb2ludCYgaG90c3BvdCwg
U3R5bGVCYXNlKiBzdHlsZSkKICAgICA6IENTU0ltYWdlVmFsdWUodXJsLCBzdHlsZSkKLSAgICAs
IG1faG90c3BvdChwKQorICAgICwgbV9ob3RzcG90KGhvdHNwb3QpCiB7CiB9CiAKIENTU0N1cnNv
ckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKCkKIHsKIH0KLX0KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAkocmV2aXNpb24g
MTg4MDQpCisrKyBXZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5LDE4ICsxOSwxNyBAQAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAg
Ki8KIAotI2lmbmRlZiBDU1NDdXJzb3JJbWFnZVZhbHVlX0gKLSNkZWZpbmUgQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZV9ICisjaWZuZGVmIENTU0N1cnNvckltYWdlVmFsdWVfaAorI2RlZmluZSBDU1NDdXJz
b3JJbWFnZVZhbHVlX2gKIAotI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiQ1NTSW1h
Z2VWYWx1ZS5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZVZhbHVlCi17Citj
bGFzcyBDU1NDdXJzb3JJbWFnZVZhbHVlIDogcHVibGljIENTU0ltYWdlVmFsdWUgewogcHVibGlj
OgotICAgIENTU0N1cnNvckltYWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEludFBv
aW50JiwgU3R5bGVCYXNlKik7CisgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZShjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgSW50UG9pbnQmIGhvdHNwb3QsIFN0eWxlQmFzZSopOwogICAgIHZpcnR1YWwg
fkNTU0N1cnNvckltYWdlVmFsdWUoKTsKIAogICAgIEludFBvaW50IGhvdHNwb3QoKSBjb25zdCB7
IHJldHVybiBtX2hvdHNwb3Q7IH0KQEAgLTM4LDYgKzM3LDcgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIEludFBvaW50IG1faG90c3BvdDsKIH07Ci19IC8vIG5hbWVzcGFjZQogCi0jZW5kaWYK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU0N1cnNvckltYWdlVmFsdWVf
aApJbmRleDogV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueQkocmV2aXNpb24gMTg4MDQpCisrKyBXZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAy
MDAyLTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICAqICBDb3B5cmlnaHQgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQotICogCisgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCiAgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCkBAIC03NSw3ICs3NSw3IEBAIGludCBnZXRQcm9wZXJ0eUlEKGNvbnN0
IGNoYXIqIHRhZ1N0ciwgaW4KICAgICAgICAgICAgIGxlbisrOwogICAgICAgICAgICAgdGFnU3Ry
ID0gcHJvcC5hc2NpaSgpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIC8vIEhvbm9y
IHRoZSB1c2Ugb2Ygb2xkLXN0eWxlIG9wYWNpdHkgKGZvciBTYWZhcmkgMS4xKS4KICAgICAgICAg
aWYgKHByb3AgPT0gIi13ZWJraXQtb3BhY2l0eSIpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KiBjb25zdCBvcGFjaXR5ID0gIm9wYWNpdHkiOwpAQCAtOTEsNyArOTEsNyBAQCBpbnQgZ2V0UHJv
cGVydHlJRChjb25zdCBjaGFyKiB0YWdTdHIsIGluCiAgICAgcmV0dXJuIHByb3BzUHRyLT5pZDsK
IH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBzdGF0aWMgaW5saW5lIGludCBnZXRW
YWx1ZUlEKGNvbnN0IGNoYXIqIHRhZ1N0ciwgaW50IGxlbikKIHsKQEAgLTEwOSw3ICsxMDksNyBA
QCBzdGF0aWMgaW5saW5lIGludCBnZXRWYWx1ZUlEKGNvbnN0IGNoYXIqCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBjb25zdCBzdHJ1Y3QgY3NzX3ZhbHVlICp2YWwgPSBmaW5kVmFsdWUodGFnU3Ry
LCBsZW4pOworICAgIGNvbnN0IHN0cnVjdCBjc3NfdmFsdWUqIHZhbCA9IGZpbmRWYWx1ZSh0YWdT
dHIsIGxlbik7CiAgICAgaWYgKCF2YWwpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNTIsOCAr
MTUyLDggQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0VmFsdWVJRChjb25zdCBjaGFyKgogCiAlewog
Ci1zdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKGNvbnN0IGNoYXIgKikgeyByZXR1cm4gMTsg
fQotc3RhdGljIGludCBjc3N5eWxleChZWVNUWVBFICp5eWx2YWwpIHsgcmV0dXJuIENTU1BhcnNl
cjo6Y3VycmVudCgpLT5sZXgoeXlsdmFsKTsgfQorc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJv
cihjb25zdCBjaGFyKikgeyByZXR1cm4gMTsgfQorc3RhdGljIGludCBjc3N5eWxleChZWVNUWVBF
KiB5eWx2YWwpIHsgcmV0dXJuIENTU1BhcnNlcjo6Y3VycmVudCgpLT5sZXgoeXlsdmFsKTsgfQog
CiAlfQogCkBAIC0zMTcsNyArMzE3LDcgQEAgd2Via2l0X2RlY2xzOgogCiB3ZWJraXRfdmFsdWU6
CiAgICAgV0VCS0lUX1ZBTFVFX1NZTSAneycgbWF5YmVfc3BhY2UgZXhwciAnfScgewotICAgICAg
ICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2VyKTsKKyAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAg
ICAgaWYgKCQ0KSB7CiAgICAgICAgICAgICBwLT52YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdW
YWx1ZUxpc3QoJDQpOwogICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5u
dW1QYXJzZWRQcm9wZXJ0aWVzOwpAQCAtMzU2LDcgKzM1Niw3IEBAIG1heWJlX2NoYXJzZXQ6CiBj
aGFyc2V0OgogICBDSEFSU0VUX1NZTSBtYXliZV9zcGFjZSBTVFJJTkcgbWF5YmVfc3BhY2UgJzsn
IHsKICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsK
LSAgICAgJCQgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2VyKS0+Y3JlYXRlQ2hhcnNl
dFJ1bGUoJDMpOworICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNy
ZWF0ZUNoYXJzZXRSdWxlKCQzKTsKICAgICAgaWYgKCQkICYmIHAtPnN0eWxlRWxlbWVudCAmJiBw
LT5zdHlsZUVsZW1lbnQtPmlzQ1NTU3R5bGVTaGVldCgpKQogICAgICAgICAgcC0+c3R5bGVFbGVt
ZW50LT5hcHBlbmQoJCQpOwogICB9CkBAIC00MDEsNyArNDAxLDcgQEAgcnVsZToKIAogaW1wb3J0
OgogICAgIElNUE9SVF9TWU0gbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBt
YXliZV9tZWRpYV9saXN0ICc7JyB7Ci0gICAgICAgICQkID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2Vy
ICo+KHBhcnNlciktPmNyZWF0ZUltcG9ydFJ1bGUoJDMsICQ1KTsKKyAgICAgICAgJCQgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVJbXBvcnRSdWxlKCQzLCAkNSk7CiAg
ICAgfQogICB8IElNUE9SVF9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7CiAgICAgICAgICQkID0g
MDsKQEAgLTQxMyw3ICs0MTMsNyBAQCBpbXBvcnQ6CiAKIG5hbWVzcGFjZToKIE5BTUVTUEFDRV9T
WU0gbWF5YmVfc3BhY2UgbWF5YmVfbnNfcHJlZml4IHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2Ug
JzsnIHsKLSAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2Vy
KTsKKyAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwog
ICAgIGlmIChwLT5zdHlsZUVsZW1lbnQgJiYgcC0+c3R5bGVFbGVtZW50LT5pc0NTU1N0eWxlU2hl
ZXQoKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHAtPnN0eWxlRWxlbWVu
dCktPmFkZE5hbWVzcGFjZShwLCBhdG9taWNTdHJpbmcoJDMpLCBhdG9taWNTdHJpbmcoJDQpKTsK
IH0KQEAgLTYwMyw5ICs2MDMsOCBAQCBzZWxlY3Rvcl9saXN0OgogICAgICAgICAgICAgQ1NTUGFy
c2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgICAgICQk
ID0gJDE7CiAgICAgICAgICAgICAkJC0+YXBwZW5kKHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0
KSk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgJCQgPSAw
OwotICAgICAgICB9CiAgICAgfQogICB8IHNlbGVjdG9yX2xpc3QgZXJyb3IgewogICAgICAgICAk
JCA9IDA7CkBAIC02MTgsOSArNjE3LDggQEAgc2VsZWN0b3I6CiAgICAgfQogICAgIHwgc2VsZWN0
b3IgY29tYmluYXRvciBzaW1wbGVfc2VsZWN0b3IgewogICAgICAgICAkJCA9ICQzOwotICAgICAg
ICBpZiAoISQxKSB7CisgICAgICAgIGlmICghJDEpCiAgICAgICAgICAgICAkJCA9IDA7Ci0gICAg
ICAgIH0KICAgICAgICAgZWxzZSBpZiAoJCQpIHsKICAgICAgICAgICAgIENTU1BhcnNlciogcCA9
IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICAgICBDU1NTZWxlY3Rv
ciogZW5kID0gJCQ7CkBAIC02NTAsMjYgKzY0OCwyNiBAQCBuYW1lc3BhY2Vfc2VsZWN0b3I6CiAK
IHNpbXBsZV9zZWxlY3RvcjoKICAgICBlbGVtZW50X25hbWUgbWF5YmVfc3BhY2UgewotICAgICAg
ICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2VyKTsKKyAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAg
ICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgICQkLT50YWcgPSBR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCBhdG9taWNTdHJpbmcoJDEpLCBwLT5kZWZhdWx0TmFtZXNw
YWNlKTsKICAgICB9CiAgICAgfCBlbGVtZW50X25hbWUgc3BlY2lmaWVyX2xpc3QgbWF5YmVfc3Bh
Y2UgewogICAgICAgICAkJCA9ICQyOwogICAgICAgICBpZiAoJCQpIHsKLSAgICAgICAgICAgIENT
U1BhcnNlciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlciAqPihwYXJzZXIpOworICAgICAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAg
ICAgICAgICQkLT50YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBhdG9taWNTdHJpbmcoJDEp
LCBwLT5kZWZhdWx0TmFtZXNwYWNlKTsKICAgICAgICAgfQogICAgIH0KICAgICB8IHNwZWNpZmll
cl9saXN0IG1heWJlX3NwYWNlIHsKICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgQ1NTUGFyc2Vy
ICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyICo+KHBhcnNlcik7CisgICAgICAgIENTU1BhcnNl
ciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgIGlmICgkJCAm
JiBwLT5kZWZhdWx0TmFtZXNwYWNlICE9IHN0YXJBdG9tKQogICAgICAgICAgICAgJCQtPnRhZyA9
IFF1YWxpZmllZE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCBwLT5kZWZhdWx0TmFtZXNwYWNlKTsK
ICAgICB9CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIG1heWJlX3NwYWNl
IHsKICAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZVByZWZpeCA9IGF0b21pY1N0cmluZygk
MSk7Ci0gICAgICAgIENTU1BhcnNlciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlciAqPihwYXJz
ZXIpOworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJz
ZXIpOwogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAg
aWYgKHAtPnN0eWxlRWxlbWVudCAmJiBwLT5zdHlsZUVsZW1lbnQtPmlzQ1NTU3R5bGVTaGVldCgp
KQogICAgICAgICAgICAgJCQtPnRhZyA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LApA
QCAtNjgyLDcgKzY4MCw3IEBAIHNpbXBsZV9zZWxlY3RvcjoKICAgICAgICAgJCQgPSAkMzsKICAg
ICAgICAgaWYgKCQkKSB7CiAgICAgICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNwYWNlUHJlZml4
ID0gYXRvbWljU3RyaW5nKCQxKTsKLSAgICAgICAgICAgIENTU1BhcnNlciAqcCA9IHN0YXRpY19j
YXN0PENTU1BhcnNlciAqPihwYXJzZXIpOworICAgICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3Rh
dGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgICAgIGlmIChwLT5zdHlsZUVs
ZW1lbnQgJiYgcC0+c3R5bGVFbGVtZW50LT5pc0NTU1N0eWxlU2hlZXQoKSkKICAgICAgICAgICAg
ICAgICAkJC0+dGFnID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljU3RyaW5nKCQyKSwKQEAgLTY5NSw3
ICs2OTMsNyBAQCBzaW1wbGVfc2VsZWN0b3I6CiAgICAgICAgICQkID0gJDI7CiAgICAgICAgIGlm
ICgkJCkgewogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZVByZWZpeCA9IGF0b21p
Y1N0cmluZygkMSk7Ci0gICAgICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQ
YXJzZXIgKj4ocGFyc2VyKTsKKyAgICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICAgICBpZiAocC0+c3R5bGVFbGVtZW50ICYm
IHAtPnN0eWxlRWxlbWVudC0+aXNDU1NTdHlsZVNoZWV0KCkpCiAgICAgICAgICAgICAgICAgJCQt
PnRhZyA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXJBdG9tLApAQCAtNzA3LDggKzcwNSw4IEBAIHNpbXBs
ZV9zZWxlY3RvcjoKIGVsZW1lbnRfbmFtZToKICAgICBJREVOVCB7CiAgICAgICAgIFBhcnNlU3Ry
aW5nJiBzdHIgPSAkMTsKLSAgICAgICAgQ1NTUGFyc2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFy
c2VyICo+KHBhcnNlcik7Ci0gICAgICAgIERvY3VtZW50ICpkb2MgPSBwLT5kb2N1bWVudCgpOwor
ICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwor
ICAgICAgICBEb2N1bWVudCogZG9jID0gcC0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKGRvYyAm
JiBkb2MtPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgICAgICBzdHIubG93ZXIoKTsKICAgICAg
ICAgJCQgPSBzdHI7CkBAIC03NDIsNyArNzQwLDcgQEAgc3BlY2lmaWVyX2xpc3Q6CiAKIHNwZWNp
ZmllcjoKICAgICBIQVNIIHsKLSAgICAgICAgQ1NTUGFyc2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NT
UGFyc2VyICo+KHBhcnNlcik7CisgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENT
U1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOwogICAgICAgICAkJC0+bWF0Y2ggPSBDU1NTZWxlY3Rvcjo6SWQ7CiAgICAgICAgIGlmICgh
cC0+c3RyaWN0KQpAQCAtNzU3LDcgKzc1NSw3IEBAIHNwZWNpZmllcjoKIAogY2xhc3M6CiAgICAg
Jy4nIElERU5UIHsKLSAgICAgICAgQ1NTUGFyc2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2Vy
ICo+KHBhcnNlcik7CisgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNl
cio+KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwog
ICAgICAgICAkJC0+bWF0Y2ggPSBDU1NTZWxlY3Rvcjo6Q2xhc3M7CiAgICAgICAgIGlmICghcC0+
c3RyaWN0KQpAQCAtNzcwLDggKzc2OCw4IEBAIGNsYXNzOgogYXR0cl9uYW1lOgogICAgIElERU5U
IG1heWJlX3NwYWNlIHsKICAgICAgICAgUGFyc2VTdHJpbmcmIHN0ciA9ICQxOwotICAgICAgICBD
U1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2VyKTsKLSAgICAgICAg
RG9jdW1lbnQgKmRvYyA9IHAtPmRvY3VtZW50KCk7CisgICAgICAgIENTU1BhcnNlciogcCA9IHN0
YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgIERvY3VtZW50KiBkb2MgPSBw
LT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoZG9jICYmIGRvYy0+aXNIVE1MRG9jdW1lbnQoKSkK
ICAgICAgICAgICAgIHN0ci5sb3dlcigpOwogICAgICAgICAkJCA9IHN0cjsKQEAgLTc5Miw3ICs3
OTAsNyBAQCBhdHRyaWI6CiAgICAgfQogICAgIHwgJ1snIG1heWJlX3NwYWNlIG5hbWVzcGFjZV9z
ZWxlY3RvciBhdHRyX25hbWUgJ10nIHsKICAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZVBy
ZWZpeCA9IGF0b21pY1N0cmluZygkMyk7Ci0gICAgICAgIENTU1BhcnNlciAqcCA9IHN0YXRpY19j
YXN0PENTU1BhcnNlciAqPihwYXJzZXIpOworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNf
Y2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5n
U2VsZWN0b3IoKTsKICAgICAgICAgJCQtPmF0dHIgPSBRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVBy
ZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0b21pY1N0cmluZygkNCks
CkBAIC04MDEsNyArNzk5LDcgQEAgYXR0cmliOgogICAgIH0KICAgICB8ICdbJyBtYXliZV9zcGFj
ZSBuYW1lc3BhY2Vfc2VsZWN0b3IgYXR0cl9uYW1lIG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29y
X3N0cmluZyBtYXliZV9zcGFjZSAnXScgewogICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNwYWNl
UHJlZml4ID0gYXRvbWljU3RyaW5nKCQzKTsKLSAgICAgICAgQ1NTUGFyc2VyICpwID0gc3RhdGlj
X2Nhc3Q8Q1NTUGFyc2VyICo+KHBhcnNlcik7CisgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRp
Y19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRp
bmdTZWxlY3RvcigpOwogICAgICAgICAkJC0+YXR0ciA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNl
UHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljU3RyaW5nKCQ0
KSwKQEAgLTg0NSw4ICs4NDMsOCBAQCBwc2V1ZG86CiAgICAgICAgICQkLT52YWx1ZSA9IGF0b21p
Y1N0cmluZygkMik7CiAgICAgICAgIGlmICgkJC0+dmFsdWUgPT0gImVtcHR5IiB8fCAkJC0+dmFs
dWUgPT0gIm9ubHktY2hpbGQiIHx8CiAgICAgICAgICAgICAkJC0+dmFsdWUgPT0gImZpcnN0LWNo
aWxkIiB8fCAkJC0+dmFsdWUgPT0gImxhc3QtY2hpbGQiKSB7Ci0gICAgICAgICAgICBDU1NQYXJz
ZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2VyKTsKLSAgICAgICAgICAgIERv
Y3VtZW50ICpkb2MgPSBwLT5kb2N1bWVudCgpOworICAgICAgICAgICAgQ1NTUGFyc2VyKiBwID0g
c3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAgICAgICAgIERvY3VtZW50KiBk
b2MgPSBwLT5kb2N1bWVudCgpOwogICAgICAgICAgICAgaWYgKGRvYykKICAgICAgICAgICAgICAg
ICBkb2MtPnNldFVzZXNTaWJsaW5nUnVsZXModHJ1ZSk7CiAgICAgICAgIH0KQEAgLTkxNCw3ICs5
MTIsNyBAQCBkZWNsX2xpc3Q6CiAgICAgfQogICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uICc7
JyBtYXliZV9zcGFjZSB7CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICggJDIgKQorICAg
ICAgICBpZiAoJDIpCiAgICAgICAgICAgICAkJCA9ICQyOwogICAgIH0KICAgICB8IGRlY2xfbGlz
dCBlcnJvciAnOycgbWF5YmVfc3BhY2UgewpAQCAtOTI4LDcgKzkyNiw3IEBAIGRlY2xfbGlzdDoK
IGRlY2xhcmF0aW9uOgogICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHByIHByaW8gewog
ICAgICAgICAkJCA9IGZhbHNlOwotICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxD
U1NQYXJzZXIgKj4ocGFyc2VyKTsKKyAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8
Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgaWYgKCQxICYmICQ0KSB7CiAgICAgICAgICAg
ICBwLT52YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwogICAgICAgICAg
ICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5udW1QYXJzZWRQcm9wZXJ0aWVzOwpAQCAt
MTAzOSw3ICsxMDM3LDcgQEAgdGVybToKICAgfCBVTklDT0RFUkFOR0UgbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLmlWYWx1ZSA9IDA7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1VOS05PV047LyogIyMjICovIH0KICAgfCBoZXhjb2xvciB7ICQkLmlkID0gMDsgJCQuc3RyaW5n
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JHQkNPTE9SOyB9CiAgIHwg
JyMnIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSBQYXJzZVN0cmluZygpOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SR0JDT0xPUjsgfSAvKiBIYW5kbGUgZXJy
b3IgY2FzZTogImNvbG9yOiAjOyIgKi8KLS8qICMjIyBhY2NvcmRpbmcgdG8gdGhlIHNwZWNzIGEg
ZnVuY3Rpb24gY2FuIGhhdmUgYSB1bmFyeV9vcGVyYXRvciBpbiBmcm9udC4gSSBrbm93IG5vIGNh
c2Ugd2hlcmUgdGhpcyBtYWtlcyBzZW5zZSAqLworLyogRklYTUU6IGFjY29yZGluZyB0byB0aGUg
c3BlY3MgYSBmdW5jdGlvbiBjYW4gaGF2ZSBhIHVuYXJ5X29wZXJhdG9yIGluIGZyb250LiBJIGtu
b3cgbm8gY2FzZSB3aGVyZSB0aGlzIG1ha2VzIHNlbnNlICovCiAgIHwgZnVuY3Rpb24gewogICAg
ICAgJCQgPSAkMTsKICAgfQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDE4ODA0
KQorKysgV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
LDEyICsxOSwxMyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkg
VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIK
IAorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDYWNoZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZEltYWdlLmgiCi0jaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2lu
Y2x1ZGUgIkRvY0xvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw0ICs2OCw0
IEBAIENhY2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjppbWFnZShEb2NMb2EKICAgICByZXR1cm4g
bV9pbWFnZTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0ltYWdlVmFs
dWUuaAkocmV2aXNpb24gMTg4MDQpCisrKyBXZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgogICovCiAKLSNpZm5kZWYgQ1NTSW1hZ2VWYWx1ZV9ICi0jZGVmaW5lIENTU0ltYWdlVmFs
dWVfSAorI2lmbmRlZiBDU1NJbWFnZVZhbHVlX2gKKyNkZWZpbmUgQ1NTSW1hZ2VWYWx1ZV9oCiAK
ICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
Q2xpZW50LmgiCkBAIC0zMCw4ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RG9jTG9hZGVyOwogCi1jbGFzcyBDU1NJbWFnZVZhbHVlIDogcHVibGljIENTU1ByaW1pdGl2ZVZh
bHVlLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQKLXsKK2NsYXNzIENTU0ltYWdlVmFsdWUg
OiBwdWJsaWMgQ1NTUHJpbWl0aXZlVmFsdWUsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7
CiBwdWJsaWM6CiAgICAgQ1NTSW1hZ2VWYWx1ZSgpOwogICAgIENTU0ltYWdlVmFsdWUoY29uc3Qg
U3RyaW5nJiB1cmwsIFN0eWxlQmFzZSopOwpAQCAtNDQsNiArNDMsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBtX2FjY2Vzc2VkSW1hZ2U7CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBDU1NJbWFnZVZhbHVlX2gKSW5kZXg6
IFdlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5jcHAJKHJldmlzaW9uIDE4ODA0KQorKysgV2ViQ29yZS9j
c3MvQ1NTSW5oZXJpdGVkVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSw3IEBA
CiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug
LSBTdWl0ZSAzMzAsCiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTSW5oZXJpdGVkVmFsdWUuaCIKIApAQCAtMzYs
NCArMzcsNCBAQCBTdHJpbmcgQ1NTSW5oZXJpdGVkVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAg
cmV0dXJuICJpbmhlcml0IjsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NJbmhlcml0ZWRWYWx1ZS5oCShyZXZpc2lvbiAxODgwNCkKKysrIFdlYkNvcmUvY3NzL0NT
U0luaGVyaXRlZFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDIwICsyMCwxOSBAQAogICog
Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NJbmhlcml0ZWRW
YWx1ZV9ICi0jZGVmaW5lIENTU0luaGVyaXRlZFZhbHVlX0gKKyNpZm5kZWYgQ1NTSW5oZXJpdGVk
VmFsdWVfaAorI2RlZmluZSBDU1NJbmhlcml0ZWRWYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENTU0luaGVyaXRlZFZhbHVlIDog
cHVibGljIENTU1ZhbHVlCi17CitjbGFzcyBDU1NJbmhlcml0ZWRWYWx1ZSA6IHB1YmxpYyBDU1NW
YWx1ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBjc3NWYWx1ZVR5cGUo
KSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiB9OwogCi19IC8v
IG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBD
U1NJbmhlcml0ZWRWYWx1ZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5jcHAJKHJldmlzaW9u
IDE4ODA0KQorKysgV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTksNiArMTksNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3
LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0luaXRpYWxW
YWx1ZS5oIgogCkBAIC0zNiw0ICszNyw0IEBAIFN0cmluZyBDU1NJbml0aWFsVmFsdWU6OmNzc1Rl
eHQoKSBjb25zdAogICAgIHJldHVybiAiaW5pdGlhbCI7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCShyZXZpc2lvbiAxODgwNCkKKysrIFdl
YkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwyMCArMjAs
MTkgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCiAKLSNpZm5kZWYgQ1NT
SW5pdGlhbFZhbHVlX0gKLSNkZWZpbmUgQ1NTSW5pdGlhbFZhbHVlX0gKKyNpZm5kZWYgQ1NTSW5p
dGlhbFZhbHVlX2gKKyNkZWZpbmUgQ1NTSW5pdGlhbFZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1Zh
bHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NTSW5pdGlhbFZhbHVlIDog
cHVibGljIENTU1ZhbHVlCi17CitjbGFzcyBDU1NJbml0aWFsVmFsdWUgOiBwdWJsaWMgQ1NTVmFs
dWUgewogcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgY3NzVmFsdWVUeXBlKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogfTsKIAotfSAvLyBu
YW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ1NT
SW5pdGlhbFZhbHVlX2gKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbi5jcHAJKHJldmlzaW9uIDE4ODA0KQorKysgV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSw3IEBACiAgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz
MzAsCiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKIApAQCAtNTYs
NyArNTcsNyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0CiAgICAg
Ly8gRklYTUU6IFRoaXMgYWxsb3dzIGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgogfQogCi1DU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSog
cGFyZW50LCBjb25zdCBDU1NQcm9wZXJ0eSAqIGNvbnN0ICpwcm9wZXJ0aWVzLCBpbnQgbnVtUHJv
cGVydGllcykKK0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbihDU1NSdWxlKiBwYXJlbnQsIGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqIHByb3Bl
cnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzKQogICAgIDogQ1NTU3R5bGVEZWNsYXJhdGlvbihwYXJl
bnQpCiAgICAgLCBtX25vZGUoMCkKIHsKQEAgLTY1LDEwICs2NiwxMCBAQCBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0CiAgICAgLy8gRklYTUU6IFRoaXMgYWxsb3dzIGR1
cGxpY2F0ZSBwcm9wZXJ0aWVzLgogfQogCi1DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiYgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246Om9wZXJhdG9yPShjb25zdCBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbiYgbykKK0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uJiBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6b3BlcmF0b3I9KGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
JiBvdGhlcikKIHsKICAgICAvLyBkb24ndCBhdHRhY2ggaXQgdG8gdGhlIHNhbWUgbm9kZSwganVz
dCBsZWF2ZSB0aGUgY3VycmVudCBtX25vZGUgdmFsdWUKLSAgICBtX3ZhbHVlcyA9IG8ubV92YWx1
ZXM7CisgICAgbV92YWx1ZXMgPSBvdGhlci5tX3ZhbHVlczsKICAgICByZXR1cm4gKnRoaXM7CiB9
CiAKQEAgLTc5LDkzICs4MCw3OSBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OmdldFByCiAgICAgICAgIHJldHVybiB2YWx1ZS0+Y3NzVGV4dCgpOwogCiAgICAgLy8gU2hvcnRo
YW5kIGFuZCA0LXZhbHVlcyBwcm9wZXJ0aWVzCi0gICAgc3dpdGNoICggcHJvcGVydHlJRCApIHsK
LSAgICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkRfUE9TSVRJT046Ci0gICAgewotICAgICAgICAv
LyAjIyBJcyB0aGlzIGNvcnJlY3Q/IFRoZSBjb2RlIGluIGNzc3BhcnNlci5jcHAgaXMgY29uZnVz
aW5nCi0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NfUFJPUF9CQUNLR1JP
VU5EX1BPU0lUSU9OX1gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1Nf
UFJPUF9CQUNLR1JPVU5EX1BPU0lUSU9OX1kgfTsKLSAgICAgICAgcmV0dXJuIGdldFNob3J0SGFu
ZFZhbHVlKCBwcm9wZXJ0aWVzLCAyICk7Ci0gICAgfQotICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dS
T1VORDoKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzVdID0geyBDU1NfUFJP
UF9CQUNLR1JPVU5EX0lNQUdFLCBDU1NfUFJPUF9CQUNLR1JPVU5EX1JFUEVBVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9QX0JBQ0tHUk9VTkRfQVRUQUNITUVO
VCwgQ1NTX1BST1BfQkFDS0dST1VORF9QT1NJVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU19QUk9QX0JBQ0tHUk9VTkRfQ09MT1IgfTsKLSAgICAgICAgcmV0dXJu
IGdldFNob3J0SGFuZFZhbHVlKCBwcm9wZXJ0aWVzLCA1ICk7Ci0gICAgfQotICAgIGNhc2UgQ1NT
X1BST1BfQk9SREVSOgotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7
IENTU19QUk9QX0JPUkRFUl9XSURUSCwgQ1NTX1BST1BfQk9SREVSX1NUWUxFLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTX1BST1BfQk9SREVSX0NPTE9SIH07Ci0gICAg
ICAgIHJldHVybiBnZXRTaG9ydEhhbmRWYWx1ZSggcHJvcGVydGllcywgMyApOwotICAgIH0KLSAg
ICBjYXNlIENTU19QUk9QX0JPUkRFUl9UT1A6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJv
cGVydGllc1szXSA9IHsgQ1NTX1BST1BfQk9SREVSX1RPUF9XSURUSCwgQ1NTX1BST1BfQk9SREVS
X1RPUF9TVFlMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9Q
X0JPUkRFUl9UT1BfQ09MT1J9OwotICAgICAgICByZXR1cm4gZ2V0U2hvcnRIYW5kVmFsdWUoIHBy
b3BlcnRpZXMsIDMgKTsKLSAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfUklHSFQ6Ci0g
ICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTX1BST1BfQk9SREVS
X1JJR0hUX1dJRFRILCBDU1NfUFJPUF9CT1JERVJfUklHSFRfU1RZTEUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJfUklHSFRfQ09MT1J9OwotICAg
ICAgICByZXR1cm4gZ2V0U2hvcnRIYW5kVmFsdWUoIHByb3BlcnRpZXMsIDMgKTsKLSAgICB9Ci0g
ICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfQk9UVE9NOgotICAgIHsKLSAgICAgICAgY29uc3QgaW50
IHByb3BlcnRpZXNbM10gPSB7IENTU19QUk9QX0JPUkRFUl9CT1RUT01fV0lEVEgsIENTU19QUk9Q
X0JPUkRFUl9CT1RUT01fU1RZTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX0NPTE9SfTsKLSAgICAgICAgcmV0dXJuIGdldFNob3J0
SGFuZFZhbHVlKCBwcm9wZXJ0aWVzLCAzICk7Ci0gICAgfQotICAgIGNhc2UgQ1NTX1BST1BfQk9S
REVSX0xFRlQ6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NT
X1BST1BfQk9SREVSX0xFRlRfV0lEVEgsIENTU19QUk9QX0JPUkRFUl9MRUZUX1NUWUxFLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTX1BST1BfQk9SREVSX0xFRlRfQ09M
T1J9OwotICAgICAgICByZXR1cm4gZ2V0U2hvcnRIYW5kVmFsdWUoIHByb3BlcnRpZXMsIDMgKTsK
LSAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9PVVRMSU5FOgotICAgIHsKLSAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbM10gPSB7IENTU19QUk9QX09VVExJTkVfV0lEVEgsIENTU19QUk9QX09V
VExJTkVfU1RZTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJP
UF9PVVRMSU5FX0NPTE9SIH07Ci0gICAgICAgIHJldHVybiBnZXRTaG9ydEhhbmRWYWx1ZSggcHJv
cGVydGllcywgMyApOwotICAgIH0KLSAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9DT0xPUjoKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NfUFJPUF9CT1JERVJf
VE9QX0NPTE9SLCBDU1NfUFJPUF9CT1JERVJfUklHSFRfQ09MT1IsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX0NPTE9SLCBDU1NfUFJP
UF9CT1JERVJfTEVGVF9DT0xPUiB9OwotICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyggcHJvcGVy
dGllcyApOwotICAgIH0KLSAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9XSURUSDoKLSAgICB7Ci0g
ICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NfUFJPUF9CT1JERVJfVE9QX1dJ
RFRILCBDU1NfUFJPUF9CT1JERVJfUklHSFRfV0lEVEgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX1dJRFRILCBDU1NfUFJPUF9CT1JE
RVJfTEVGVF9XSURUSCB9OwotICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyggcHJvcGVydGllcyAp
OwotICAgIH0KLSAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9TVFlMRToKLSAgICB7Ci0gICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NfUFJPUF9CT1JERVJfVE9QX1NUWUxFLCBD
U1NfUFJPUF9CT1JERVJfUklHSFRfU1RZTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX1NUWUxFLCBDU1NfUFJPUF9CT1JERVJfTEVG
VF9TVFlMRSB9OwotICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyggcHJvcGVydGllcyApOwotICAg
IH0KLSAgICBjYXNlIENTU19QUk9QX01BUkdJTjoKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBw
cm9wZXJ0aWVzWzRdID0geyBDU1NfUFJPUF9NQVJHSU5fVE9QLCBDU1NfUFJPUF9NQVJHSU5fUklH
SFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9NQVJHSU5f
Qk9UVE9NLCBDU1NfUFJPUF9NQVJHSU5fTEVGVCB9OwotICAgICAgICByZXR1cm4gZ2V0NFZhbHVl
cyggcHJvcGVydGllcyApOwotICAgIH0KLSAgICBjYXNlIENTU19QUk9QX1BBRERJTkc6Ci0gICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTX1BST1BfUEFERElOR19U
T1AsIENTU19QUk9QX1BBRERJTkdfUklHSFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NfUFJPUF9QQURESU5HX0JPVFRPTSwgQ1NTX1BST1BfUEFERElOR19MRUZUIH07
Ci0gICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKCBwcm9wZXJ0aWVzICk7Ci0gICAgfQotICAgIGNh
c2UgQ1NTX1BST1BfTElTVF9TVFlMRToKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzNdID0geyBDU1NfUFJPUF9MSVNUX1NUWUxFX1RZUEUsIENTU19QUk9QX0xJU1RfU1RZTEVf
UE9TSVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9M
SVNUX1NUWUxFX0lNQUdFIH07Ci0gICAgICAgIHJldHVybiBnZXRTaG9ydEhhbmRWYWx1ZSggcHJv
cGVydGllcywgMyApOwotICAgIH0KKyAgICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsKKyAgICAgICAg
Y2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX1BPU0lUSU9OOiB7CisgICAgICAgICAgICAvLyBGSVhN
RTogSXMgdGhpcyBjb3JyZWN0PyBUaGUgY29kZSBpbiBjc3NwYXJzZXIuY3BwIGlzIGNvbmZ1c2lu
ZworICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU19QUk9QX0JBQ0tH
Uk9VTkRfUE9TSVRJT05fWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NfUFJPUF9CQUNLR1JPVU5EX1BPU0lUSU9OX1kgfTsKKyAgICAgICAgICAgIHJldHVybiBn
ZXRTaG9ydEhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAyKTsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IENTU19QUk9QX0JBQ0tHUk9VTkQ6IHsKKyAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzVdID0geyBDU1NfUFJPUF9CQUNLR1JPVU5EX0lNQUdFLCBDU1NfUFJPUF9CQUNLR1JPVU5EX1JF
UEVBVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9C
QUNLR1JPVU5EX0FUVEFDSE1FTlQsIENTU19QUk9QX0JBQ0tHUk9VTkRfUE9TSVRJT04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTX1BST1BfQkFDS0dST1VORF9D
T0xPUiB9OworICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0SGFuZFZhbHVlKHByb3BlcnRpZXMs
IDUpOworICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSOiB7CisgICAgICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTX1BST1BfQk9SREVSX1dJRFRILCBD
U1NfUFJPUF9CT1JERVJfU1RZTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTX1BST1BfQk9SREVSX0NPTE9SIH07CisgICAgICAgICAgICByZXR1cm4gZ2V0U2hv
cnRIYW5kVmFsdWUocHJvcGVydGllcywgMyk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1Nf
UFJPUF9CT1JERVJfVE9QOiB7CisgICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9
IHsgQ1NTX1BST1BfQk9SREVSX1RPUF9XSURUSCwgQ1NTX1BST1BfQk9SREVSX1RPUF9TVFlMRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJf
VE9QX0NPTE9SfTsKKyAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydEhhbmRWYWx1ZShwcm9wZXJ0
aWVzLCAzKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9SSUdIVDog
eworICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU19QUk9QX0JPUkRF
Ul9SSUdIVF9XSURUSCwgQ1NTX1BST1BfQk9SREVSX1JJR0hUX1NUWUxFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9QX0JPUkRFUl9SSUdIVF9DT0xPUn07
CisgICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRIYW5kVmFsdWUocHJvcGVydGllcywgMyk7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfQk9UVE9NOiB7CisgICAgICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTX1BST1BfQk9SREVSX0JPVFRPTV9X
SURUSCwgQ1NTX1BST1BfQk9SREVSX0JPVFRPTV9TVFlMRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX0NPTE9SfTsKKyAgICAg
ICAgICAgIHJldHVybiBnZXRTaG9ydEhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAzKTsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9MRUZUOiB7CisgICAgICAgICAgICBjb25z
dCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTX1BST1BfQk9SREVSX0xFRlRfV0lEVEgsIENTU19Q
Uk9QX0JPUkRFUl9MRUZUX1NUWUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU19QUk9QX0JPUkRFUl9MRUZUX0NPTE9SfTsKKyAgICAgICAgICAgIHJldHVybiBn
ZXRTaG9ydEhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAzKTsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IENTU19QUk9QX09VVExJTkU6IHsKKyAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNd
ID0geyBDU1NfUFJPUF9PVVRMSU5FX1dJRFRILCBDU1NfUFJPUF9PVVRMSU5FX1NUWUxFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9QX09VVExJTkVfQ09M
T1IgfTsKKyAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydEhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAz
KTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9DT0xPUjogeworICAg
ICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU19QUk9QX0JPUkRFUl9UT1Bf
Q09MT1IsIENTU19QUk9QX0JPUkRFUl9SSUdIVF9DT0xPUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX0NPTE9SLCBDU1NfUFJP
UF9CT1JERVJfTEVGVF9DT0xPUiB9OworICAgICAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMocHJv
cGVydGllcyk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfV0lEVEg6
IHsKKyAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NfUFJPUF9CT1JE
RVJfVE9QX1dJRFRILCBDU1NfUFJPUF9CT1JERVJfUklHSFRfV0lEVEgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTX1BST1BfQk9SREVSX0JPVFRPTV9XSURUSCwg
Q1NTX1BST1BfQk9SREVSX0xFRlRfV0lEVEggfTsKKyAgICAgICAgICAgIHJldHVybiBnZXQ0VmFs
dWVzKHByb3BlcnRpZXMpOworICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVS
X1NUWUxFOiB7CisgICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTX1BS
T1BfQk9SREVSX1RPUF9TVFlMRSwgQ1NTX1BST1BfQk9SREVSX1JJR0hUX1NUWUxFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9QX0JPUkRFUl9CT1RUT01f
U1RZTEUsIENTU19QUk9QX0JPUkRFUl9MRUZUX1NUWUxFIH07CisgICAgICAgICAgICByZXR1cm4g
Z2V0NFZhbHVlcyhwcm9wZXJ0aWVzKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENTU19QUk9Q
X01BUkdJTjogeworICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU19Q
Uk9QX01BUkdJTl9UT1AsIENTU19QUk9QX01BUkdJTl9SSUdIVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9NQVJHSU5fQk9UVE9NLCBDU1NfUFJPUF9N
QVJHSU5fTEVGVCB9OworICAgICAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMocHJvcGVydGllcyk7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NfUFJPUF9QQURESU5HOiB7CisgICAgICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTX1BST1BfUEFERElOR19UT1AsIENTU19Q
Uk9QX1BBRERJTkdfUklHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTX1BST1BfUEFERElOR19CT1RUT00sIENTU19QUk9QX1BBRERJTkdfTEVGVCB9OworICAg
ICAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMocHJvcGVydGllcyk7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBDU1NfUFJPUF9MSVNUX1NUWUxFOiB7CisgICAgICAgICAgICBjb25zdCBpbnQgcHJv
cGVydGllc1szXSA9IHsgQ1NTX1BST1BfTElTVF9TVFlMRV9UWVBFLCBDU1NfUFJPUF9MSVNUX1NU
WUxFX1BPU0lUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENT
U19QUk9QX0xJU1RfU1RZTEVfSU1BR0UgfTsKKyAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydEhh
bmRWYWx1ZShwcm9wZXJ0aWVzLCAzKTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CkBAIC0xNzYsOCArMTYzLDExIEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Z2V0NFYKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgewogICAgICAg
ICBpZiAoIWlzUHJvcGVydHlJbXBsaWNpdChwcm9wZXJ0aWVzW2ldKSkgewogICAgICAgICAgICAg
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1tp
XSk7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlKSAvLyBhcHBhcmVudGx5IGFsbCA0IHByb3BlcnRp
ZXMgbXVzdCBiZSBzcGVjaWZpZWQuCisKKyAgICAgICAgICAgIC8vIGFwcGFyZW50bHkgYWxsIDQg
cHJvcGVydGllcyBtdXN0IGJlIHNwZWNpZmllZC4KKyAgICAgICAgICAgIGlmICghdmFsdWUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworCiAgICAgICAgICAgICBpZiAoIXJlcy5p
c051bGwoKSkKICAgICAgICAgICAgICAgICByZXMgKz0gIiAiOwogICAgICAgICAgICAgcmVzICs9
IHZhbHVlLT5jc3NUZXh0KCk7CkBAIC0xODYsMTMgKzE3NiwxNCBAQCBTdHJpbmcgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmdldDRWCiAgICAgcmV0dXJuIHJlczsKIH0KIAotU3RyaW5nIENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRTaG9ydEhhbmRWYWx1ZSggY29uc3QgaW50KiBw
cm9wZXJ0aWVzLCBpbnQgbnVtYmVyICkgY29uc3QKK1N0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Z2V0U2hvcnRIYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQgbnVt
YmVyKSBjb25zdAogewogICAgIFN0cmluZyByZXM7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1iZXI7ICsraSkgewogICAgICAgICBpZiAoIWlzUHJvcGVydHlJbXBsaWNpdChwcm9wZXJ0aWVz
W2ldKSkgewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5
Q1NTVmFsdWUocHJvcGVydGllc1tpXSk7Ci0gICAgICAgICAgICBpZiAodmFsdWUpIHsgLy8gVE9E
TyBwcm92aWRlIGRlZmF1bHQgdmFsdWUgaWYgIXZhbHVlCisgICAgICAgICAgICAvLyBGSVhNRTog
cHJvdmlkZSBkZWZhdWx0IHZhbHVlIGlmICF2YWx1ZQorICAgICAgICAgICAgaWYgKHZhbHVlKSB7
CiAgICAgICAgICAgICAgICAgaWYgKCFyZXMuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJlcyArPSAiICI7CiAgICAgICAgICAgICAgICAgcmVzICs9IHZhbHVlLT5jc3NUZXh0KCk7CkBA
IC0yMDUsOSArMTk2LDEwIEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
U2gKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQ
cm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXJ0eUlEKSBjb25zdAogewogICAgIERlcHJlY2F0ZWRW
YWx1ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBlbmQ7Ci0gICAgZm9yIChEZXByZWNh
dGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5mcm9t
TGFzdCgpOyBpdCAhPSBlbmQ7IC0taXQpCisgICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0Q29u
c3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5mcm9tTGFzdCgpOyBpdCAhPSBl
bmQ7IC0taXQpIHsKICAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gKCppdCkubV9pZCkKICAgICAg
ICAgICAgIHJldHVybiAoKml0KS52YWx1ZSgpOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KIApA
QCAtMzcyLDcgKzM2NCw3IEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6cmVt
b3YKICAgICBTdHJpbmcgdmFsdWU7CiAKICAgICBEZXByZWNhdGVkVmFsdWVMaXN0SXRlcmF0b3I8
Q1NTUHJvcGVydHk+IGVuZDsKLSAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3RJdGVyYXRvcjxD
U1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5mcm9tTGFzdCgpOyBpdCAhPSBlbmQ7IC0taXQpCisg
ICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0SXRlcmF0b3I8Q1NTUHJvcGVydHk+IGl0ID0gbV92
YWx1ZXMuZnJvbUxhc3QoKTsgaXQgIT0gZW5kOyAtLWl0KSB7CiAgICAgICAgIGlmIChwcm9wZXJ0
eUlEID09ICgqaXQpLm1faWQpIHsKICAgICAgICAgICAgIHZhbHVlID0gKCppdCkudmFsdWUoKS0+
Y3NzVGV4dCgpOwogICAgICAgICAgICAgbV92YWx1ZXMucmVtb3ZlKGl0KTsKQEAgLTM4MCw2ICsz
NzIsNyBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnJlbW92CiAgICAgICAg
ICAgICAgICAgc2V0Q2hhbmdlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAg
ICB9CiAKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC00MDIsOSArMzk1LDkgQEAgdm9pZCBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q2hhbgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgLy8gIyMjIHF1aWNrJmRpcnR5IGhhY2sgZm9yIEtERSAzLjAuLi4gbWFrZSB0aGlzIE1V
Q0ggYmV0dGVyISAoRGlyaykKKyAgICAvLyBGSVhNRTogcXVpY2smZGlydHkgaGFjayBmb3IgS0RF
IDMuMC4uLiBtYWtlIHRoaXMgTVVDSCBiZXR0ZXIhIChEaXJrKQogICAgIFN0eWxlQmFzZSogcm9v
dCA9IHRoaXM7Ci0gICAgd2hpbGUgKFN0eWxlQmFzZSAqcGFyZW50ID0gcm9vdC0+cGFyZW50KCkp
CisgICAgd2hpbGUgKFN0eWxlQmFzZSogcGFyZW50ID0gcm9vdC0+cGFyZW50KCkpCiAgICAgICAg
IHJvb3QgPSBwYXJlbnQ7CiAgICAgaWYgKHJvb3QtPmlzQ1NTU3R5bGVTaGVldCgpKQogICAgICAg
ICBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4ocm9vdCktPmRvYygpLT51cGRhdGVTdHlsZVNl
bGVjdG9yKCk7CkBAIC00MTMsMzEgKzQwNiwzNCBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpzZXRDaGFuCiBib29sIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eVByaW9yaXR5KGludCBwcm9wZXJ0eUlEKSBjb25zdAogewogICAgIERlcHJlY2F0ZWRWYWx1
ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBlbmQ7Ci0gICAgZm9yIChEZXByZWNhdGVk
VmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCisgICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0Q29uc3RJdGVy
YXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKICAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gKCppdCkuaWQoKSkKICAgICAgICAgICAgIHJl
dHVybiAoKml0KS5pc0ltcG9ydGFudCgpOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IGludCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlTaG9ydGhhbmQoaW50
IHByb3BlcnR5SUQpIGNvbnN0CiB7CiAgICAgRGVwcmVjYXRlZFZhbHVlTGlzdENvbnN0SXRlcmF0
b3I8Q1NTUHJvcGVydHk+IGVuZDsKLSAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0
ZXJhdG9yPENTU1Byb3BlcnR5PiBpdCA9IG1fdmFsdWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKKyAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5
PiBpdCA9IG1fdmFsdWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAo
cHJvcGVydHlJRCA9PSAoKml0KS5pZCgpKQogICAgICAgICAgICAgcmV0dXJuICgqaXQpLnNob3J0
aGFuZElEKCk7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6aXNQcm9wZXJ0eUltcGxpY2l0KGludCBwcm9wZXJ0eUlEKSBjb25z
dAogewogICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBl
bmQ7Ci0gICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0
eT4gaXQgPSBtX3ZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgZm9yIChEZXBy
ZWNhdGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gKCpp
dCkuaWQoKSkKICAgICAgICAgICAgIHJldHVybiAoKml0KS5pc0ltcGxpY2l0KCk7CisgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
c2V0UHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyAmdmFsdWUsIGJvb2wgaW1w
b3J0YW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b246OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29s
IGltcG9ydGFudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgc2V0UHJvcGVydHkocHJvcGVy
dHlJRCwgdmFsdWUsIGltcG9ydGFudCwgdHJ1ZSwgZWMpOwogfQpAQCAtNDQ3LDcgKzQ0Myw3IEBA
IFN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3YKICAgICByZXR1cm4gcmVt
b3ZlUHJvcGVydHkocHJvcGVydHlJRCwgdHJ1ZSwgZWMpOwogfQogCi1ib29sIENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5n
ICZ2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgbm90aWZ5Q2hhbmdlZCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitib29sIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShpbnQg
cHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgbm90
aWZ5Q2hhbmdlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwogCkBAIC00ODcs
MTQgKzQ4MywxNCBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRTdHJpCiAg
ICAgc2V0Q2hhbmdlZCgpOwogfQogCi12b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpz
ZXRJbWFnZVByb3BlcnR5KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcgJlVSTCwgYm9vbCBp
bXBvcnRhbnQpCit2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRJbWFnZVByb3Bl
cnR5KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpbXBvcnRhbnQpCiB7
CiAgICAgcmVtb3ZlUHJvcGVydHkocHJvcGVydHlJZCk7Ci0gICAgbV92YWx1ZXMuYXBwZW5kKENT
U1Byb3BlcnR5KHByb3BlcnR5SWQsIG5ldyBDU1NJbWFnZVZhbHVlKFVSTCwgdGhpcyksIGltcG9y
dGFudCkpOworICAgIG1fdmFsdWVzLmFwcGVuZChDU1NQcm9wZXJ0eShwcm9wZXJ0eUlkLCBuZXcg
Q1NTSW1hZ2VWYWx1ZSh1cmwsIHRoaXMpLCBpbXBvcnRhbnQpKTsKICAgICBzZXRDaGFuZ2VkKCk7
CiB9CiAKLXZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnBhcnNlRGVjbGFyYXRpb24o
Y29uc3QgU3RyaW5nICZzdHlsZURlY2xhcmF0aW9uKQordm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6cGFyc2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0eWxlRGVjbGFyYXRpb24p
CiB7CiAgICAgbV92YWx1ZXMuY2xlYXIoKTsKICAgICBDU1NQYXJzZXIgcGFyc2VyKHVzZVN0cmlj
dFBhcnNpbmcoKSk7CkBAIC01MDIsNyArNDk4LDcgQEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6cGFyc2VEZQogICAgIHNldENoYW5nZWQoKTsKIH0KIAotdm9pZCBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eSAq
IGNvbnN0ICpwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcykKK3ZvaWQgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmFkZFBhcnNlZFByb3BlcnRpZXMoY29uc3QgQ1NTUHJvcGVydHkgKiBj
b25zdCAqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzKQogewogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CiAgICAgICAgIHJlbW92ZVByb3BlcnR5KHBy
b3BlcnRpZXNbaV0tPmlkKCksIGZhbHNlKTsKQEAgLTUxMiwxMSArNTA4LDExIEBAIHZvaWQgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmFkZFBhcnMKICAgICAvLyBhIG5vdGlmeUNoYW5nZWQg
YXJndW1lbnQgdG8gdGhpcyBmdW5jdGlvbiB0byBmb2xsb3cgdGhlIG1vZGVsIG9mIG90aGVyIGZ1
bmN0aW9ucyBpbiB0aGlzIGNsYXNzLgogfQogCi12b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpzZXRMZW5ndGhQcm9wZXJ0eShpbnQgaWQsIGNvbnN0IFN0cmluZyAmdmFsdWUsIGJvb2wg
aW1wb3J0YW50LCBib29sIC8qIG11bHRpTGVuZ3RoKi8pCit2b2lkIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjpzZXRMZW5ndGhQcm9wZXJ0eShpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgLyptdWx0aUxlbmd0aCovKQogewogICAgIGJv
b2wgcGFyc2VNb2RlID0gdXNlU3RyaWN0UGFyc2luZygpOwogICAgIHNldFN0cmljdFBhcnNpbmco
ZmFsc2UpOwotICAgIHNldFByb3BlcnR5KGlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICBzZXRQ
cm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICBzZXRTdHJpY3RQYXJz
aW5nKHBhcnNlTW9kZSk7CiB9CiAKQEAgLTUzNSw3ICs1MzEsNyBAQCBTdHJpbmcgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246Oml0ZW0oCiBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b246OmNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmluZyByZXN1bHQgPSAiIjsKLSAgICAKKwog
ICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBlbmQ7CiAg
ICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQg
PSBtX3ZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIHJlc3VsdCArPSAo
Kml0KS5jc3NUZXh0KCk7CkBAIC01NTMsMTEgKzU0OSwxMSBAQCB2b2lkIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uOjpzZXRDc3NUCiAgICAgc2V0Q2hhbmdlZCgpOwogfQogCi12b2lkIENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOjptZXJnZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiAq
b3RoZXIsIGJvb2wgYXJnT3ZlcnJpZGVzT25Db25mbGljdCkKK3ZvaWQgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246Om1lcmdlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBvdGhlciwgYm9v
bCBhcmdPdmVycmlkZXNPbkNvbmZsaWN0KQogewogICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25z
dEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBlbmQ7CiAgICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0
Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBvdGhlci0+dmFsdWVzSXRlcmF0b3IoKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGNvbnN0IENTU1Byb3BlcnR5ICZwcm9wZXJ0eSA9
ICppdDsKKyAgICAgICAgY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5ID0gKml0OwogICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eS5p
ZCgpKTsKICAgICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgICBpZiAoIWFyZ092ZXJyaWRl
c09uQ29uZmxpY3QpCkBAIC02MDQsNyArNjAwLDcgQEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6cmVtb3ZlQgogICAgIHJlbW92ZVByb3BlcnRpZXNJblNldChibG9ja1Byb3BlcnRp
ZXMsIG51bUJsb2NrUHJvcGVydGllcyk7CiB9CiAKLXZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OnJlbW92ZVByb3BlcnRpZXNJblNldChjb25zdCBpbnQgKnNldCwgdW5zaWduZWQgbGVu
Z3RoLCBib29sIG5vdGlmeUNoYW5nZWQpCit2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpyZW1vdmVQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCwg
Ym9vbCBub3RpZnlDaGFuZ2VkKQogewogICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewpAQCAtNjI4LDQgKzYyNCw0IEBA
IFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IEMKICAgICByZXR1cm4gbmV3
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKDAsIG1fdmFsdWVzKTsKIH0KIAotfQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbi5oCShyZXZpc2lvbiAxODgwNCkKKysrIFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDExICsyMCwxMSBAQAogICogQm9zdG9u
LCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbl9ICi0jZGVmaW5lIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uX0gKKyNpZm5kZWYg
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25faAorI2RlZmluZSBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbl9oCiAKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAi
Q1NTUHJpbWl0aXZlVmFsdWUuaCIgLy8gZm9yIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMK
KyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1
ZUxpc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCkBAIC0zMywxNSArMzMsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTUHJvcGVydHk7CiBjbGFzcyBOb2RlOwog
Ci1jbGFzcyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NTdHlsZURlY2xh
cmF0aW9uCi17CitjbGFzcyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NT
dHlsZURlY2xhcmF0aW9uIHsKIHB1YmxpYzoKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bigpOwogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudFJ1bGUp
OwogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudFJ1bGUsIGNv
bnN0IERlcHJlY2F0ZWRWYWx1ZUxpc3Q8Q1NTUHJvcGVydHk+Jik7Ci0gICAgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50UnVsZSwgY29uc3QgQ1NTUHJvcGVydHkgKiBj
b25zdCAqLCBpbnQgbnVtUHJvcGVydGllcyk7CisgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24oQ1NTUnVsZSogcGFyZW50UnVsZSwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICosIGludCBu
dW1Qcm9wZXJ0aWVzKTsKIAotICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uICZvcGVyYXRv
cj0oY29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24gJik7CisgICAgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24mIG9wZXJhdG9yPShjb25zdCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biYpOwogCiAgICAgdm9pZCBzZXROb2RlKE5vZGUqIG5vZGUpIHsgbV9ub2RlID0gbm9kZTsgfQog
CkBAIC02OCwxMSArNjcsMTcgQEAgcHVibGljOgogICAgIGJvb2wgc2V0UHJvcGVydHkoaW50IHBy
b3BlcnR5SUQsIGludCB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgYm9vbCBub3RpZnlD
aGFuZ2VkID0gdHJ1ZSk7CiAgICAgYm9vbCBzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgbm90aWZ5Q2hhbmdlZCwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgc2V0UHJvcGVydHkoaW50IHByb3BlcnR5SWQsIGNvbnN0
IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UsIGJvb2wgbm90aWZ5Q2hhbmdl
ZCA9IHRydWUpCi0gICAgICAgIHsgRXhjZXB0aW9uQ29kZSBlYzsgcmV0dXJuIHNldFByb3BlcnR5
KHByb3BlcnR5SWQsIHZhbHVlLCBpbXBvcnRhbnQsIG5vdGlmeUNoYW5nZWQsIGVjKTsgfQorICAg
IHsgCisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgIHJldHVybiBzZXRQcm9wZXJ0
eShwcm9wZXJ0eUlkLCB2YWx1ZSwgaW1wb3J0YW50LCBub3RpZnlDaGFuZ2VkLCBlYyk7CisgICAg
fQogCiAgICAgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBib29sIG5vdGlm
eUNoYW5nZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcgcmVtb3ZlUHJvcGVydHkoaW50
IHByb3BlcnR5SUQsIGJvb2wgbm90aWZ5Q2hhbmdlZCA9IHRydWUpCi0gICAgICAgIHsgRXhjZXB0
aW9uQ29kZSBlYzsgcmV0dXJuIHJlbW92ZVByb3BlcnR5KHByb3BlcnR5SUQsIG5vdGlmeUNoYW5n
ZWQsIGVjKTsgfQorICAgIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgcmV0
dXJuIHJlbW92ZVByb3BlcnR5KHByb3BlcnR5SUQsIG5vdGlmeUNoYW5nZWQsIGVjKTsKKyAgICB9
CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKQEAgLTgxLDIxICs4NiwyMSBAQCBwdWJsaWM6CiAgICAg
Ly8gc2V0TGVuZ3RoUHJvcGVydHkgdHJlYXRzIGludGVnZXJzIGFzIHBpeGVscyEgKE5lZWRlZCBm
b3IgY29udmVyc2lvbiBvZiBIVE1MIGF0dHJpYnV0ZXMuKQogICAgIHZvaWQgc2V0TGVuZ3RoUHJv
cGVydHkoaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50
LCBib29sIG11bHRpTGVuZ3RoID0gZmFsc2UpOwogICAgIHZvaWQgc2V0U3RyaW5nUHJvcGVydHko
aW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOyAvLyBwYXJzZWQgc3RyaW5nIHZhbHVl
Ci0gICAgdm9pZCBzZXRJbWFnZVByb3BlcnR5KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcm
IFVSTCwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAgdm9pZCBzZXRJbWFnZVByb3BlcnR5
KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpbXBvcnRhbnQgPSBmYWxz
ZSk7CiAgCiAgICAgLy8gVGhlIGZvbGxvd2luZyBwYXJzZXMgYW4gZW50aXJlIG5ldyBzdHlsZSBk
ZWNsYXJhdGlvbi4KICAgICB2b2lkIHBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHls
ZURlY2xhcmF0aW9uKTsKIAogICAgIC8vIEJlc2lkZXMgYWRkaW5nIHRoZSBwcm9wZXJ0aWVzLCB0
aGlzIGFsc28gcmVtb3ZlcyBhbnkgZXhpc3RpbmcgcHJvcGVydGllcyB3aXRoIHRoZXNlIElEcy4K
ICAgICAvLyBJdCBkb2VzIG5vIG5vdGlmaWNhdGlvbiBzaW5jZSBpdCdzIGNhbGxlZCBieSB0aGUg
cGFyc2VyLgotICAgIHZvaWQgYWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eSAq
IGNvbnN0ICosIGludCBudW1Qcm9wZXJ0aWVzKTsKKyAgICB2b2lkIGFkZFBhcnNlZFByb3BlcnRp
ZXMoY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICosIGludCBudW1Qcm9wZXJ0aWVzKTsKICAKICAg
ICBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjb3B5QmxvY2tQcm9wZXJ0
aWVzKCkgY29uc3Q7CiAgICAgdm9pZCByZW1vdmVCbG9ja1Byb3BlcnRpZXMoKTsKICAgICB2b2lk
IHJlbW92ZVByb3BlcnRpZXNJblNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVuZ3RoLCBi
b29sIG5vdGlmeUNoYW5nZWQgPSB0cnVlKTsKIAogICAgIHZvaWQgbWVyZ2UoQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qLCBib29sIGFyZ092ZXJyaWRlc09uQ29uZmxpY3QgPSB0cnVlKTsKLSAK
KwogcHJpdmF0ZToKICAgICBTdHJpbmcgZ2V0U2hvcnRIYW5kVmFsdWUoY29uc3QgaW50KiBwcm9w
ZXJ0aWVzLCBpbnQgbnVtYmVyKSBjb25zdDsKICAgICBTdHJpbmcgZ2V0NFZhbHVlcyhjb25zdCBp
bnQqIHByb3BlcnRpZXMpIGNvbnN0OwpAQCAtMTA0LDYgKzEwOSw2IEBAIHByaXZhdGU6CiAgICAg
Tm9kZSogbV9ub2RlOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25faApJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTTmFtZXNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Q1NTTmFtZXNwYWNlLmgJKHJldmlzaW9uIDE4ODA0KQorKysgV2ViQ29yZS9jc3MvQ1NTTmFtZXNw
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKICAqIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgogICovCiAKLSNpZm5kZWYgQ1NTTmFtZXNwYWNlX0gKLSNkZWZpbmUgQ1NT
TmFtZXNwYWNlX0gKKyNpZm5kZWYgQ1NTTmFtZXNwYWNlX2gKKyNkZWZpbmUgQ1NTTmFtZXNwYWNl
X2gKIAogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogCkBAIC0zMywxNSArMzMsMTcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBBdG9taWNTdHJpbmcgbV91cmk7CiAgICAgICAgIENT
U05hbWVzcGFjZSogbV9wYXJlbnQ7CiAKLSAgICAgICAgQ1NTTmFtZXNwYWNlKGNvbnN0IEF0b21p
Y1N0cmluZyYgcCwgY29uc3QgQXRvbWljU3RyaW5nJiB1LCBDU1NOYW1lc3BhY2UqIHBhcmVudCkg
Ci0gICAgICAgICAgICA6IG1fcHJlZml4KHApCi0gICAgICAgICAgICAsIG1fdXJpKHUpCi0gICAg
ICAgICAgICAsIG1fcGFyZW50KHBhcmVudCkge30KKyAgICAgICAgQ1NTTmFtZXNwYWNlKGNvbnN0
IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIHVyaSwgQ1NTTmFtZXNw
YWNlKiBwYXJlbnQpCisgICAgICAgICAgICA6IG1fcHJlZml4KHByZWZpeCkKKyAgICAgICAgICAg
ICwgbV91cmkodXJpKQorICAgICAgICAgICAgLCBtX3BhcmVudChwYXJlbnQpCisgICAgICAgIHsK
KyAgICAgICAgfQogICAgICAgICB+Q1NTTmFtZXNwYWNlKCkgeyBkZWxldGUgbV9wYXJlbnQ7IH0K
LSAgICAgICAgCisKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB1cmkoKSB7IHJldHVybiBt
X3VyaTsgfQogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCgpIHsgcmV0dXJuIG1f
cHJlZml4OyB9Ci0gICAgICAgIAorCiAgICAgICAgIENTU05hbWVzcGFjZSogbmFtZXNwYWNlRm9y
UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAocHJlZml4ID09IG1fcHJlZml4KQpAQCAtNTEsNiArNTMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH07Ci19CiAKLSNl
bmRpZgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTTmFtZXNwYWNlX2gK
SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHJldmlzaW9uIDE4ODA0KQorKysgV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxNyAr
MTksMTcgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs
ZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICov
CisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgog
CisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5j
bHVkZSAiQ291bnRlci5oIgotI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRl
ICJEYXNoYm9hcmRSZWdpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiUGFpci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCi0KICNpbmNsdWRlIDxjdHlwZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw5ICs1MCwxMCBAQCBzdGF0aWMgYm9vbCBp
c0NTU1Rva2VuaXplcklkZW50aWZpZXIoY29uCiAgICAgKytwOwogCiAgICAgLy8ge25tY2hhcn0q
Ci0gICAgZm9yICg7IHAgIT0gZW5kOyArK3ApCisgICAgZm9yICg7IHAgIT0gZW5kOyArK3ApIHsK
ICAgICAgICAgaWYgKCEocFswXSA9PSAnXycgfHwgcFswXSA9PSAnLScgfHwgaXNhbG51bShwWzBd
KSB8fCBwWzBdID49IDEyOCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDYsNTkgKzEwNyw1OSBAQCBzdGF0aWMgU3RyaW5nIHF1
b3RlVVJMSWZOZWVkZWQoY29uc3QgU3RyCiB9CiAKIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmlt
aXRpdmVWYWx1ZSgpCisgICAgOiBtX3R5cGUoMCkKIHsKLSAgICBtX3R5cGUgPSAwOwogfQogCiBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoaW50IGlkZW50KQorICAgIDogbV90
eXBlKENTU19JREVOVCkKIHsKICAgICBtX3ZhbHVlLmlkZW50ID0gaWRlbnQ7Ci0gICAgbV90eXBl
ID0gQ1NTX0lERU5UOwogfQogCiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUo
ZG91YmxlIG51bSwgVW5pdFR5cGVzIHR5cGUpCisgICAgOiBtX3R5cGUodHlwZSkKIHsKICAgICBt
X3ZhbHVlLm51bSA9IG51bTsKLSAgICBtX3R5cGUgPSB0eXBlOwogfQogCiBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgU3RyaW5nJiBzdHIsIFVuaXRUeXBlcyB0eXBl
KQorICAgIDogbV90eXBlKHR5cGUpCiB7CiAgICAgaWYgKChtX3ZhbHVlLnN0cmluZyA9IHN0ci5p
bXBsKCkpKQogICAgICAgICBtX3ZhbHVlLnN0cmluZy0+cmVmKCk7Ci0gICAgbV90eXBlID0gdHlw
ZTsKIH0KIAogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFBhc3NSZWZQdHI8
Q291bnRlcj4gYykKKyAgICA6IG1fdHlwZShDU1NfQ09VTlRFUikKIHsKICAgICBtX3ZhbHVlLmNv
dW50ZXIgPSBjLnJlbGVhc2VSZWYoKTsKLSAgICBtX3R5cGUgPSBDU1NfQ09VTlRFUjsKIH0KIAog
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFBhc3NSZWZQdHI8UmVjdEltcGw+
IHIpCisgICAgOiBtX3R5cGUoQ1NTX1JFQ1QpCiB7CiAgICAgbV92YWx1ZS5yZWN0ID0gci5yZWxl
YXNlUmVmKCk7Ci0gICAgbV90eXBlID0gQ1NTX1JFQ1Q7CiB9CiAKICNpZiBQTEFURk9STShNQUMp
CiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoUGFzc1JlZlB0cjxEYXNoYm9h
cmRSZWdpb24+IHIpCisgICAgOiBtX3R5cGUoQ1NTX0RBU0hCT0FSRF9SRUdJT04pCiB7CiAgICAg
bV92YWx1ZS5yZWdpb24gPSByLnJlbGVhc2VSZWYoKTsKLSAgICBtX3R5cGUgPSBDU1NfREFTSEJP
QVJEX1JFR0lPTjsKIH0KICNlbmRpZgogCiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoUkdCQTMyIGNvbG9yKQorICAgIDogbV90eXBlKENTU19SR0JDT0xPUikKIHsKICAgICBt
X3ZhbHVlLnJnYmNvbG9yID0gY29sb3I7Ci0gICAgbV90eXBlID0gQ1NTX1JHQkNPTE9SOwogfQog
CiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoUGFzc1JlZlB0cjxQYWlyPiBw
KQorICAgIDogbV90eXBlKENTU19QQUlSKQogewogICAgIG1fdmFsdWUucGFpciA9IHAucmVsZWFz
ZVJlZigpOwotICAgIG1fdHlwZSA9IENTU19QQUlSOwogfQogCiBDU1NQcmltaXRpdmVWYWx1ZTo6
fkNTU1ByaW1pdGl2ZVZhbHVlKCkKQEAgLTE2OCwxNzYgKzE2OSwxNzMgQEAgQ1NTUHJpbWl0aXZl
VmFsdWU6On5DU1NQcmltaXRpdmVWYWx1ZSgpCiAKIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNs
ZWFudXAoKQogewotICAgIHN3aXRjaChtX3R5cGUpIHsKLSAgICBjYXNlIENTU19TVFJJTkc6Ci0g
ICAgY2FzZSBDU1NfVVJJOgotICAgIGNhc2UgQ1NTX0FUVFI6Ci0gICAgICAgIGlmIChtX3ZhbHVl
LnN0cmluZykKLSAgICAgICAgICAgIG1fdmFsdWUuc3RyaW5nLT5kZXJlZigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU19DT1VOVEVSOgotICAgICAgICBtX3ZhbHVlLmNvdW50ZXItPmRl
cmVmKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1JFQ1Q6Ci0gICAgICAgIG1fdmFs
dWUucmVjdC0+ZGVyZWYoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUEFJUjoKLSAg
ICAgICAgbV92YWx1ZS5wYWlyLT5kZXJlZigpOwotICAgICAgICBicmVhazsKKyAgICBzd2l0Y2gg
KG1fdHlwZSkgeworICAgICAgICBjYXNlIENTU19TVFJJTkc6CisgICAgICAgIGNhc2UgQ1NTX1VS
SToKKyAgICAgICAgY2FzZSBDU1NfQVRUUjoKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLnN0cmlu
ZykKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLnN0cmluZy0+ZGVyZWYoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENTU19DT1VOVEVSOgorICAgICAgICAgICAgbV92YWx1ZS5j
b3VudGVyLT5kZXJlZigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1JF
Q1Q6CisgICAgICAgICAgICBtX3ZhbHVlLnJlY3QtPmRlcmVmKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDU1NfUEFJUjoKKyAgICAgICAgICAgIG1fdmFsdWUucGFpci0+ZGVy
ZWYoKTsKKyAgICAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBjYXNlIENT
U19EQVNIQk9BUkRfUkVHSU9OOgotICAgICAgICBpZiAobV92YWx1ZS5yZWdpb24pCi0gICAgICAg
ICAgICBtX3ZhbHVlLnJlZ2lvbi0+ZGVyZWYoKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046CisgICAgICAgICAgICBpZiAobV92YWx1ZS5yZWdpb24p
CisgICAgICAgICAgICAgICAgbV92YWx1ZS5yZWdpb24tPmRlcmVmKCk7CisgICAgICAgICAgICBi
cmVhazsKICNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgbV90eXBlID0gMDsKIH0KIAot
aW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KFJlbmRlclN0eWxlICpzdHls
ZSkKK2ludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludChSZW5kZXJTdHlsZSog
c3R5bGUpCiB7CiAgICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSk7
Ci0gICAgCisKICAgICAvLyBUaGlzIGNvbnZlcnNpb24gaXMgaW1wcmVjaXNlLCBvZnRlbiByZXN1
bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5OC4gIFdlCiAgICAgLy8gbmVlZCB0byBn
byBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5IGNsb3NlIHRvIHRoZSBuZXh0IGludGVn
ZXIgdmFsdWUuCiAgICAgcmVzdWx0ICs9IHJlc3VsdCA8IDAgPyAtMC4wMSA6ICswLjAxOwotICAg
IAorCiAgICAgaWYgKHJlc3VsdCA+IElOVF9NQVggfHwgcmVzdWx0IDwgSU5UX01JTikKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIChpbnQpcmVzdWx0OyAgICAKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihyZXN1bHQpOwogfQogCi1pbnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVMZW5ndGhJbnQoUmVuZGVyU3R5bGUgKnN0eWxlLCBkb3VibGUgbXVsdGlwbGllcikKK2ludCBD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludChSZW5kZXJTdHlsZSogc3R5bGUsIGRv
dWJsZSBtdWx0aXBsaWVyKQogewogICAgIGRvdWJsZSByZXN1bHQgPSBtdWx0aXBsaWVyICogY29t
cHV0ZUxlbmd0aEZsb2F0KHN0eWxlKTsKLSAgICAKKwogICAgIC8vIFRoaXMgY29udmVyc2lvbiBp
cyBpbXByZWNpc2UsIG9mdGVuIHJlc3VsdGluZyBpbiB2YWx1ZXMgb2YsIGUuZy4sIDQ0Ljk5OTk4
LiAgV2UKICAgICAvLyBuZWVkIHRvIGdvIGFoZWFkIGFuZCByb3VuZCBpZiB3ZSdyZSByZWFsbHkg
Y2xvc2UgdG8gdGhlIG5leHQgaW50ZWdlciB2YWx1ZS4KICAgICByZXN1bHQgKz0gcmVzdWx0IDwg
MCA/IC0wLjAxIDogKzAuMDE7Ci0gICAgCisKICAgICBpZiAocmVzdWx0ID4gSU5UX01BWCB8fCBy
ZXN1bHQgPCBJTlRfTUlOKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gKGludClyZXN1
bHQ7ICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOwogfQogCiBjb25zdCBp
bnQgaW50TWF4Rm9yTGVuZ3RoID0gMHg3ZmZmZmZmOyAvLyBtYXggdmFsdWUgZm9yIGEgMjgtYml0
IGludAotY29uc3QgaW50IGludE1pbkZvckxlbmd0aCA9ICgtMHg3ZmZmZmZmLTEpOyAvLyBtaW4g
dmFsdWUgZm9yIGEgMjgtYml0IGludAorY29uc3QgaW50IGludE1pbkZvckxlbmd0aCA9ICgtMHg3
ZmZmZmZmIC0gMSk7IC8vIG1pbiB2YWx1ZSBmb3IgYSAyOC1iaXQgaW50CiAKIC8vIExlbmd0aHMg
ZXhwZWN0IGFuIGludCB0aGF0IGlzIG9ubHkgMjgtYml0cywgc28gd2UgaGF2ZSB0byBjaGVjayBm
b3IgYSBkaWZmZXJlbnQgb3ZlcmZsb3cuCi1pbnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVM
ZW5ndGhJbnRGb3JMZW5ndGgoUmVuZGVyU3R5bGUgKnN0eWxlKQoraW50IENTU1ByaW1pdGl2ZVZh
bHVlOjpjb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAg
ICBkb3VibGUgcmVzdWx0ID0gY29tcHV0ZUxlbmd0aEZsb2F0KHN0eWxlKTsKLSAgICAKKwogICAg
IC8vIFRoaXMgY29udmVyc2lvbiBpcyBpbXByZWNpc2UsIG9mdGVuIHJlc3VsdGluZyBpbiB2YWx1
ZXMgb2YsIGUuZy4sIDQ0Ljk5OTk4LiAgV2UKICAgICAvLyBuZWVkIHRvIGdvIGFoZWFkIGFuZCBy
b3VuZCBpZiB3ZSdyZSByZWFsbHkgY2xvc2UgdG8gdGhlIG5leHQgaW50ZWdlciB2YWx1ZS4KICAg
ICByZXN1bHQgKz0gcmVzdWx0IDwgMCA/IC0wLjAxIDogKzAuMDE7Ci0gICAgCisKICAgICBpZiAo
cmVzdWx0ID4gaW50TWF4Rm9yTGVuZ3RoIHx8IHJlc3VsdCA8IGludE1pbkZvckxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIChpbnQpcmVzdWx0OyAgICAKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOwogfQogCiAvLyBMZW5ndGhzIGV4cGVjdCBhbiBpbnQg
dGhhdCBpcyBvbmx5IDI4LWJpdHMsIHNvIHdlIGhhdmUgdG8gY2hlY2sgZm9yIGEgZGlmZmVyZW50
IG92ZXJmbG93LgotaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50Rm9yTGVu
Z3RoKFJlbmRlclN0eWxlICpzdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpCitpbnQgQ1NTUHJpbWl0
aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBk
b3VibGUgbXVsdGlwbGllcikKIHsKICAgICBkb3VibGUgcmVzdWx0ID0gbXVsdGlwbGllciAqIGNv
bXB1dGVMZW5ndGhGbG9hdChzdHlsZSk7Ci0gICAgCisKICAgICAvLyBUaGlzIGNvbnZlcnNpb24g
aXMgaW1wcmVjaXNlLCBvZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5
OC4gIFdlCiAgICAgLy8gbmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5
IGNsb3NlIHRvIHRoZSBuZXh0IGludGVnZXIgdmFsdWUuCiAgICAgcmVzdWx0ICs9IHJlc3VsdCA8
IDAgPyAtMC4wMSA6ICswLjAxOwotICAgIAorCiAgICAgaWYgKHJlc3VsdCA+IGludE1heEZvckxl
bmd0aCB8fCByZXN1bHQgPCBpbnRNaW5Gb3JMZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiAoaW50KXJlc3VsdDsgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlc3Vs
dCk7CiB9CiAKLXNob3J0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoU2hvcnQoUmVu
ZGVyU3R5bGUgKnN0eWxlKQorc2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhT
aG9ydChSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1dGVM
ZW5ndGhGbG9hdChzdHlsZSk7Ci0gICAgCisKICAgICAvLyBUaGlzIGNvbnZlcnNpb24gaXMgaW1w
cmVjaXNlLCBvZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5OC4gIFdl
CiAgICAgLy8gbmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5IGNsb3Nl
IHRvIHRoZSBuZXh0IGludGVnZXIgdmFsdWUuCiAgICAgcmVzdWx0ICs9IHJlc3VsdCA8IDAgPyAt
MC4wMSA6ICswLjAxOwotICAgIAorCiAgICAgaWYgKHJlc3VsdCA+IFNIUlRfTUFYIHx8IHJlc3Vs
dCA8IFNIUlRfTUlOKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gKHNob3J0KXJlc3Vs
dDsgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNob3J0PihyZXN1bHQpOwogfQogCi1zaG9y
dCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aFNob3J0KFJlbmRlclN0eWxlICpzdHls
ZSwgZG91YmxlIG11bHRpcGxpZXIpCitzaG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxl
bmd0aFNob3J0KFJlbmRlclN0eWxlKiBzdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpCiB7CiAgICAg
ZG91YmxlIHJlc3VsdCA9IG11bHRpcGxpZXIgKiBjb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUpOwot
ICAgIAorCiAgICAgLy8gVGhpcyBjb252ZXJzaW9uIGlzIGltcHJlY2lzZSwgb2Z0ZW4gcmVzdWx0
aW5nIGluIHZhbHVlcyBvZiwgZS5nLiwgNDQuOTk5OTguICBXZQogICAgIC8vIG5lZWQgdG8gZ28g
YWhlYWQgYW5kIHJvdW5kIGlmIHdlJ3JlIHJlYWxseSBjbG9zZSB0byB0aGUgbmV4dCBpbnRlZ2Vy
IHZhbHVlLgogICAgIHJlc3VsdCArPSByZXN1bHQgPCAwID8gLTAuMDEgOiArMC4wMTsKLSAgICAK
KwogICAgIGlmIChyZXN1bHQgPiBTSFJUX01BWCB8fCByZXN1bHQgPCBTSFJUX01JTikKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIChzaG9ydClyZXN1bHQ7ICAKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2hvcnQ+KHJlc3VsdCk7CiB9CiAKLWRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y29tcHV0ZUxlbmd0aEZsb2F0KFJlbmRlclN0eWxlICpzdHlsZSwgYm9vbCBhcHBseVpvb21GYWN0
b3IpCitkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhGbG9hdChSZW5kZXJT
dHlsZSogc3R5bGUsIGJvb2wgYXBwbHlab29tRmFjdG9yKQogewogICAgIHVuc2lnbmVkIHNob3J0
IHR5cGUgPSBwcmltaXRpdmVUeXBlKCk7CiAKICAgICAvLyBXZSBhbHdheXMgYXNzdW1lIDk2IENT
UyBwaXhlbHMgaW4gYSBDU1MgaW5jaC4gVGhpcyBpcyB0aGUgY29sZCBoYXJkIHRydXRoIG9mIHRo
ZSBXZWIuCiAgICAgLy8gQXQgaGlnaCBEUEksIHdlIG1heSBzY2FsZSBhIENTUyBwaXhlbCwgYnV0
IHRoZSByYXRpbyBvZiB0aGUgQ1NTIHBpeGVsIHRvIHRoZSBzby1jYWxsZWQKICAgICAvLyAiYWJz
b2x1dGUiIENTUyBsZW5ndGggdW5pdHMgbGlrZSBpbmNoIGFuZCBwdCBpcyBhbHdheXMgZml4ZWQg
YW5kIG5ldmVyIGNoYW5nZXMuCi0gICAgZG91YmxlIGNzc1BpeGVsc1BlckluY2ggPSA5Ni47Cisg
ICAgY29uc3QgZG91YmxlIGNzc1BpeGVsc1BlckluY2ggPSA5Ni4wOwogCi0gICAgZG91YmxlIGZh
Y3RvciA9IDEuOwotICAgIHN3aXRjaCh0eXBlKSB7Ci0gICAgY2FzZSBDU1NfRU1TOgotICAgICAg
ICBmYWN0b3IgPSBhcHBseVpvb21GYWN0b3IgPwotICAgICAgICAgIHN0eWxlLT5mb250RGVzY3Jp
cHRpb24oKS5jb21wdXRlZFNpemUoKSA6Ci0gICAgICAgICAgc3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLnNwZWNpZmllZFNpemUoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfRVhTOiB7
Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBoYXZlIGEgYnVnIHJpZ2h0IG5vdyB3aGVyZSB0aGUgem9v
bSB3aWxsIGJlIGFwcGxpZWQgbXVsdGlwbGUgdGltZXMgdG8gRVggdW5pdHMuCi0gICAgICAgIC8v
IFdlIHJlYWxseSBuZWVkIHRvIGNvbXB1dGUgRVggdXNpbmcgZm9udE1ldHJpY3MgZm9yIHRoZSBv
cmlnaW5hbCBzcGVjaWZpZWRTaXplIGFuZCBub3QgdXNlCi0gICAgICAgIC8vIG91ciBhY3R1YWwg
Y29uc3RydWN0ZWQgcmVuZGVyaW5nIGZvbnQuCi0gICAgICAgIGZhY3RvciA9IHN0eWxlLT5mb250
KCkueEhlaWdodCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDU1NfUFg6Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX0NNOgotICAgICAgICBmYWN0b3IgPSBjc3NQaXhl
bHNQZXJJbmNoLzIuNTQ7IC8vICgyLjU0IGNtL2luKQotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU19NTToKLSAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaC8yNS40OwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU19JTjoKLSAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVy
SW5jaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFQ6Ci0gICAgICAgIGZhY3RvciA9
IGNzc1BpeGVsc1BlckluY2gvNzIuOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU19QQzoK
LSAgICAgICAgLy8gMSBwYyA9PSAxMiBwdAotICAgICAgICBmYWN0b3IgPSBjc3NQaXhlbHNQZXJJ
bmNoKjEyLi83Mi47Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biAtMTsKKyAgICBkb3VibGUgZmFjdG9yID0gMS4wOworICAgIHN3aXRjaCAodHlwZSkgeworICAg
ICAgICBjYXNlIENTU19FTVM6CisgICAgICAgICAgICBmYWN0b3IgPSBhcHBseVpvb21GYWN0b3Ig
PyBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCkgOiBzdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ1NTX0VYUzoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBoYXZlIGEgYnVnIHJpZ2h0
IG5vdyB3aGVyZSB0aGUgem9vbSB3aWxsIGJlIGFwcGxpZWQgbXVsdGlwbGUgdGltZXMgdG8gRVgg
dW5pdHMuCisgICAgICAgICAgICAvLyBXZSByZWFsbHkgbmVlZCB0byBjb21wdXRlIEVYIHVzaW5n
IGZvbnRNZXRyaWNzIGZvciB0aGUgb3JpZ2luYWwgc3BlY2lmaWVkU2l6ZSBhbmQgbm90IHVzZQor
ICAgICAgICAgICAgLy8gb3VyIGFjdHVhbCBjb25zdHJ1Y3RlZCByZW5kZXJpbmcgZm9udC4KKyAg
ICAgICAgICAgIGZhY3RvciA9IHN0eWxlLT5mb250KCkueEhlaWdodCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1BYOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ1NTX0NNOgorICAgICAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCAvIDIu
NTQ7IC8vICgyLjU0IGNtL2luKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NT
X01NOgorICAgICAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCAvIDI1LjQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfSU46CisgICAgICAgICAgICBmYWN0b3Ig
PSBjc3NQaXhlbHNQZXJJbmNoOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NT
X1BUOgorICAgICAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCAvIDcyLjA7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUEM6CisgICAgICAgICAgICAvLyAxIHBj
ID09IDEyIHB0CisgICAgICAgICAgICBmYWN0b3IgPSBjc3NQaXhlbHNQZXJJbmNoICogMTIuMCAv
IDcyLjA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHJldHVybiAtMS4wOwogICAgIH0KIAogICAgIHJldHVybiBnZXRGbG9hdFZhbHVlKCkgKiBmYWN0
b3I7CiB9CiAKLXZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OnNldEZsb2F0VmFsdWUoIHVuc2lnbmVk
IHNob3J0IHVuaXRUeXBlLCBkb3VibGUgZmxvYXRWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2
b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpzZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRU
eXBlLCBkb3VibGUgZmxvYXRWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAw
OwotICAgIAotICAgIC8vICMjIyBjaGVjayBpZiBwcm9wZXJ0eSBzdXBwb3J0cyB0aGlzIHR5cGUK
KworICAgIC8vIEZJWE1FOiBjaGVjayBpZiBwcm9wZXJ0eSBzdXBwb3J0cyB0aGlzIHR5cGUKICAg
ICBpZiAobV90eXBlID4gQ1NTX0RJTUVOU0lPTikgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBjbGVhbnVwKCk7CiAKICAgICAv
L2lmKG1fdHlwZSA+IENTU19ESU1FTlNJT04pIHRocm93IERPTUV4Y2VwdGlvbihJTlZBTElEX0FD
Q0VTU19FUlIpOwpAQCAtMzQ3LDEwICszNDUsMTAgQEAgdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6
c2V0RmxvYXRWYWx1ZSggdQogCiBkb3VibGUgc2NhbGVGYWN0b3JGb3JDb252ZXJzaW9uKHVuc2ln
bmVkIHNob3J0IHVuaXRUeXBlKQogewotICAgIGRvdWJsZSBjc3NQaXhlbHNQZXJJbmNoID0gOTYu
MDsKKyAgICBjb25zdCBkb3VibGUgY3NzUGl4ZWxzUGVySW5jaCA9IDk2LjA7CisKICAgICBkb3Vi
bGUgZmFjdG9yID0gMS4wOwotICAgIAotICAgIHN3aXRjaCh1bml0VHlwZSkgeworICAgIHN3aXRj
aCAodW5pdFR5cGUpIHsKICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19D
TToKQEAgLTM3MSw3ICszNjksNyBAQCBkb3VibGUgc2NhbGVGYWN0b3JGb3JDb252ZXJzaW9uKHVu
c2lnbmVkCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gZmFjdG9yOwogfQogCkBAIC0zNzksMzEgKzM3NywzMSBAQCBkb3VibGUg
Q1NTUHJpbWl0aXZlVmFsdWU6OmdldEZsb2F0VmFsdWUoCiB7CiAgICAgaWYgKHVuaXRUeXBlID09
IG1fdHlwZSB8fCB1bml0VHlwZSA8IENTU19QWCB8fCB1bml0VHlwZSA+IENTU19QQykKICAgICAg
ICAgcmV0dXJuIG1fdmFsdWUubnVtOwotICAgIAorCiAgICAgZG91YmxlIGNvbnZlcnRlZFZhbHVl
ID0gbV92YWx1ZS5udW07Ci0gICAgCisKICAgICAvLyBGaXJzdCBjb252ZXJ0IHRoZSB2YWx1ZSBm
cm9tIG1fdHlwZSBpbnRvIENTU1BpeGVscwogICAgIGRvdWJsZSBmYWN0b3IgPSBzY2FsZUZhY3Rv
ckZvckNvbnZlcnNpb24obV90eXBlKTsKICAgICBjb252ZXJ0ZWRWYWx1ZSAqPSBmYWN0b3I7Ci0g
ICAgCisKICAgICAvLyBOb3cgY29udmVydCBmcm9tIENTU1BpeGVscyB0byB0aGUgc3BlY2lmaWVk
IHVuaXRUeXBlCiAgICAgZmFjdG9yID0gc2NhbGVGYWN0b3JGb3JDb252ZXJzaW9uKHVuaXRUeXBl
KTsKICAgICBjb252ZXJ0ZWRWYWx1ZSAvPSBmYWN0b3I7Ci0gICAgCisKICAgICByZXR1cm4gY29u
dmVydGVkVmFsdWU7CiB9CiAKLXZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OnNldFN0cmluZ1ZhbHVl
KCB1bnNpZ25lZCBzaG9ydCBzdHJpbmdUeXBlLCBjb25zdCBTdHJpbmcgJnN0cmluZ1ZhbHVlLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OnNldFN0cmluZ1ZhbHVl
KHVuc2lnbmVkIHNob3J0IHN0cmluZ1R5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKLSAgICAgICAgCisKICAgICAvL2lmKG1f
dHlwZSA8IENTU19TVFJJTkcpIHRocm93IERPTUV4Y2VwdGlvbihJTlZBTElEX0FDQ0VTU19FUlIp
OwogICAgIC8vaWYobV90eXBlID4gQ1NTX0FUVFIpIHRocm93IERPTUV4Y2VwdGlvbihJTlZBTElE
X0FDQ0VTU19FUlIpOwogICAgIGlmIChtX3R5cGUgPCBDU1NfU1RSSU5HIHx8IG1fdHlwZSA+IENT
U19BVFRSKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKKwogICAgIGNsZWFudXAoKTsKIAogICAgIGlmIChzdHJpbmdUeXBlICE9IENTU19J
REVOVCkgewpAQCAtNDExLDcgKzQwOSw3IEBAIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OnNldFN0
cmluZ1ZhbHVlKCAKICAgICAgICAgbV92YWx1ZS5zdHJpbmctPnJlZigpOwogICAgICAgICBtX3R5
cGUgPSBzdHJpbmdUeXBlOwogICAgIH0KLSAgICAvLyAjIyMgcGFyc2UgaWRlbnQKKyAgICAvLyBG
SVhNRTogcGFyc2UgaWRlbnQKIH0KIAogU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRTdHJp
bmdWYWx1ZSgpIGNvbnN0CkBAIC00MjcsNyArNDI1LDcgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjpnZXRTdHJpbmdWYWx1ZQogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBDU1MgMi4xIHNw
ZWMgc2F5cyB5b3Ugc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBoZXJlLgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCkBAIC00MzYs
MjYgKzQzNCwyNyBAQCB1bnNpZ25lZCBzaG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVmFsCiAg
ICAgcmV0dXJuIENTU19QUklNSVRJVkVfVkFMVUU7CiB9CiAKLWJvb2wgQ1NTUHJpbWl0aXZlVmFs
dWU6OnBhcnNlU3RyaW5nKCBjb25zdCBTdHJpbmcgJi8qc3RyaW5nKi8sIGJvb2wgKQorYm9vbCBD
U1NQcmltaXRpdmVWYWx1ZTo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiAvKnN0cmluZyovLCBi
b29sIC8qc3RyaWN0Ki8pCiB7Ci0gICAgLy8gIyMjCisgICAgLy8gRklYTUUKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0SWRlbnQoKQogewotICAgIGlm
KG1fdHlwZSAhPSBDU1NfSURFTlQpIHJldHVybiAwOworICAgIGlmIChtX3R5cGUgIT0gQ1NTX0lE
RU5UKQorICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbV92YWx1ZS5pZGVudDsKIH0KIAog
U3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKIHsKLSAgICAvLyAjIyMg
cmV0dXJuIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbnN0ZWFkIG9mIGEgZ2VuZXJhdGVkIG9uZSAoZS5n
LiBjb2xvcgorICAgIC8vIEZJWE1FOiByZXR1cm4gdGhlIG9yaWdpbmFsIHZhbHVlIGluc3RlYWQg
b2YgYSBnZW5lcmF0ZWQgb25lIChlLmcuIGNvbG9yCiAgICAgLy8gbmFtZSBpZiBpdCB3YXMgc3Bl
Y2lmaWVkKSAtIGNoZWNrIHdoYXQgc3BlYyBzYXlzIGFib3V0IHRoaXMKICAgICBTdHJpbmcgdGV4
dDsKLSAgICBzd2l0Y2ggKCBtX3R5cGUgKSB7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICAg
ICAgY2FzZSBDU1NfVU5LTk9XTjoKLSAgICAgICAgICAgIC8vICMjIworICAgICAgICAgICAgLy8g
RklYTUUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19OVU1CRVI6CiAgICAg
ICAgICAgICB0ZXh0ID0gU3RyaW5nOjpudW1iZXIobV92YWx1ZS5udW0pOwpAQCAtNTA5LDcgKzUw
OCw3IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAgICAg
ICAgIHRleHQgPSBTdHJpbmc6Om51bWJlcihtX3ZhbHVlLm51bSkgKyAia2h6IjsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ESU1FTlNJT046Ci0gICAgICAgICAgICAvLyAj
IyMKKyAgICAgICAgICAgIC8vIEZJWE1FCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfU1RSSU5HOgogICAgICAgICAgICAgdGV4dCA9IHF1b3RlU3RyaW5nSWZOZWVkZWQobV92
YWx1ZS5zdHJpbmcpOwpAQCAtNTIxLDcgKzUyMCw3IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAgICAgICAgIHRleHQgPSBnZXRWYWx1ZU5hbWUobV92YWx1
ZS5pZGVudCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfQVRUUjoKLSAg
ICAgICAgICAgIC8vICMjIworICAgICAgICAgICAgLy8gRklYTUUKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19DT1VOVEVSOgogICAgICAgICAgICAgdGV4dCA9ICJjb3VudGVy
KCI7CkBAIC01NDAsMTUgKzUzOSwxMiBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1Rl
eHQoKSBjb25zCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6IHsKICAgICAg
ICAgICAgIENvbG9yIGNvbG9yKG1fdmFsdWUucmdiY29sb3IpOwotICAgICAgICAgICAgaWYgKGNv
bG9yLmFscGhhKCkgPCAweEZGKQotICAgICAgICAgICAgICAgIHRleHQgPSAicmdiYSgiOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRleHQgPSAicmdiKCI7CisgICAgICAgICAg
ICB0ZXh0ID0gKGNvbG9yLmFscGhhKCkgPCAweEZGKSA/ICJyZ2JhKCIgOiAicmdiKCI7CiAgICAg
ICAgICAgICB0ZXh0ICs9IFN0cmluZzo6bnVtYmVyKGNvbG9yLnJlZCgpKSArICIsICI7CiAgICAg
ICAgICAgICB0ZXh0ICs9IFN0cmluZzo6bnVtYmVyKGNvbG9yLmdyZWVuKCkpICsgIiwgIjsKICAg
ICAgICAgICAgIHRleHQgKz0gU3RyaW5nOjpudW1iZXIoY29sb3IuYmx1ZSgpKTsKICAgICAgICAg
ICAgIGlmIChjb2xvci5hbHBoYSgpIDwgMHhGRikKLSAgICAgICAgICAgICAgICB0ZXh0ICs9ICIs
ICIgKyBTdHJpbmc6Om51bWJlcigoZmxvYXQpY29sb3IuYWxwaGEoKSAvIDB4RkYpOworICAgICAg
ICAgICAgICAgIHRleHQgKz0gIiwgIiArIFN0cmluZzo6bnVtYmVyKHN0YXRpY19jYXN0PGZsb2F0
Pihjb2xvci5hbHBoYSgpKSAvIDB4RkYpOwogICAgICAgICAgICAgdGV4dCArPSAiKSI7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTgwLDQgKzU3Niw0IEBAIFN0cmluZyBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICByZXR1cm4gdGV4dDsKIH0KIAotfQor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCShyZXZp
c2lvbiAxODgwNCkKKysrIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgog
ICovCiAKLSNpZm5kZWYgQ1NTUHJpbWl0aXZlVmFsdWVfSAotI2RlZmluZSBDU1NQcmltaXRpdmVW
YWx1ZV9ICisjaWZuZGVmIENTU1ByaW1pdGl2ZVZhbHVlX2gKKyNkZWZpbmUgQ1NTUHJpbWl0aXZl
VmFsdWVfaAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgpAQCAtMzcsOCArMzcsNyBAQCBjbGFzcyBTdHJpbmdJbXBsOwogCiB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogCi1jbGFzcyBDU1NQcmltaXRpdmVWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1
ZQoteworY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGlj
OgogICAgIGVudW0gVW5pdFR5cGVzIHsKICAgICAgICAgQ1NTX1VOS05PV04gPSAwLApAQCAtMTE3
LDMwICsxMTYsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTdHJpbmdWYWx1ZSh1bnNpZ25l
ZCBzaG9ydCBzdHJpbmdUeXBlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgU3RyaW5nIGdldFN0cmluZ1ZhbHVlKCkgY29uc3Q7Ci0gICAgCi0gICAgQ291
bnRlciogZ2V0Q291bnRlclZhbHVlICgpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIG1fdHlwZSAh
PSBDU1NfQ09VTlRFUiA/IDAgOiBtX3ZhbHVlLmNvdW50ZXI7Ci0gICAgfQotCi0gICAgUmVjdElt
cGwqIGdldFJlY3RWYWx1ZSAoKSBjb25zdCB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUgIT0gQ1NT
X1JFQ1QgPyAwIDogbV92YWx1ZS5yZWN0OwotICAgIH0KLQotICAgIHVuc2lnbmVkIGdldFJHQkNv
bG9yVmFsdWUoKSBjb25zdCB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUgIT0gQ1NTX1JHQkNPTE9S
ID8gMCA6IG1fdmFsdWUucmdiY29sb3I7Ci0gICAgfQotCi0gICAgUGFpciogZ2V0UGFpclZhbHVl
KCkgY29uc3QgewotICAgICAgICByZXR1cm4gbV90eXBlICE9IENTU19QQUlSID8gMCA6IG1fdmFs
dWUucGFpcjsKLSAgICB9CisKKyAgICBDb3VudGVyKiBnZXRDb3VudGVyVmFsdWUgKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlICE9IENTU19DT1VOVEVSID8gMCA6IG1fdmFsdWUuY291bnRlcjsgfQor
ICAgIFJlY3RJbXBsKiBnZXRSZWN0VmFsdWUgKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9IENT
U19SRUNUID8gMCA6IG1fdmFsdWUucmVjdDsgfQorICAgIHVuc2lnbmVkIGdldFJHQkNvbG9yVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gQ1NTX1JHQkNPTE9SID8gMCA6IG1fdmFsdWUu
cmdiY29sb3I7IH0KKyAgICBQYWlyKiBnZXRQYWlyVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgIT0gQ1NTX1BBSVIgPyAwIDogbV92YWx1ZS5wYWlyOyB9CiAKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgRGFzaGJvYXJkUmVnaW9uICpnZXREYXNoYm9hcmRSZWdpb25WYWx1ZSAoKSBjb25zdCB7
Ci0gICAgICAgIHJldHVybiBtX3R5cGUgIT0gQ1NTX0RBU0hCT0FSRF9SRUdJT04gPyAwIDogbV92
YWx1ZS5yZWdpb247Ci0gICAgfQorICAgIERhc2hib2FyZFJlZ2lvbiAqZ2V0RGFzaGJvYXJkUmVn
aW9uVmFsdWUgKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9IENTU19EQVNIQk9BUkRfUkVHSU9O
ID8gMCA6IG1fdmFsdWUucmVnaW9uOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBpc1By
aW1pdGl2ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgdmlydHVhbCB1bnNp
Z25lZCBzaG9ydCBjc3NWYWx1ZVR5cGUoKSBjb25zdDsKIAogICAgIGludCBnZXRJZGVudCgpOwpA
QCAtMTY2LDYgKzE1Myw2IEBAIHByb3RlY3RlZDoKICAgICB9IG1fdmFsdWU7CiB9OwogCi19IC8v
IG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBD
U1NQcmltaXRpdmVWYWx1ZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCShyZXZpc2lvbiAxODgwNCkK
KysrIFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksOCAr
MTksMTAgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs
ZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICov
CisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogLy8gTm90IGluIGFueSBoZWFkZXIsIHNvIGp1c3Qg
ZGVjbGFyZSBpdCBoZXJlIGZvciBub3cuCkBAIC0zMyw5ICszNSw5IEBAIFN0cmluZyBDU1NQcm9w
ZXJ0eTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGdldFByb3BlcnR5TmFtZShpZCgpKSAr
ICI6ICIgKyBtX3ZhbHVlLT5jc3NUZXh0KCkgKyAoaXNJbXBvcnRhbnQoKSA/ICIgIWltcG9ydGFu
dCIgOiAiIikgKyAiOyAiOwogfQogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUHJvcGVydHkg
JmEsIGNvbnN0IENTU1Byb3BlcnR5ICZiKQorYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1Byb3Bl
cnR5JiBhLCBjb25zdCBDU1NQcm9wZXJ0eSYgYikKIHsKICAgICByZXR1cm4gYS5tX2lkID09IGIu
bV9pZCAmJiBhLm1faW1wb3J0YW50ID09IGIubV9pbXBvcnRhbnQgJiYgYS5tX3ZhbHVlID09IGIu
bV92YWx1ZTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5o
CShyZXZpc2lvbiAxODgwNCkKKysrIFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgog
ICovCiAKLSNpZm5kZWYgQ1NTUHJvcGVydHlfSAotI2RlZmluZSBDU1NQcm9wZXJ0eV9ICisjaWZu
ZGVmIENTU1Byb3BlcnR5X2gKKyNkZWZpbmUgQ1NTUHJvcGVydHlfaAogCiAjaW5jbHVkZSAiQ1NT
VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMzksMTkgKzM5LDE5IEBA
IHB1YmxpYzoKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9Ci0gICAgCi0g
ICAgQ1NTUHJvcGVydHkgJm9wZXJhdG9yPShjb25zdCBDU1NQcm9wZXJ0eSYgbykKKworICAgIENT
U1Byb3BlcnR5JiBvcGVyYXRvcj0oY29uc3QgQ1NTUHJvcGVydHkmIG90aGVyKQogICAgIHsKLSAg
ICAgICAgbV9pZCA9IG8ubV9pZDsKLSAgICAgICAgbV9zaG9ydGhhbmRJRCA9IG8ubV9zaG9ydGhh
bmRJRDsKLSAgICAgICAgbV9pbXBvcnRhbnQgPSBvLm1faW1wb3J0YW50OwotICAgICAgICBtX3Zh
bHVlID0gby5tX3ZhbHVlOworICAgICAgICBtX2lkID0gb3RoZXIubV9pZDsKKyAgICAgICAgbV9z
aG9ydGhhbmRJRCA9IG90aGVyLm1fc2hvcnRoYW5kSUQ7CisgICAgICAgIG1faW1wb3J0YW50ID0g
b3RoZXIubV9pbXBvcnRhbnQ7CisgICAgICAgIG1fdmFsdWUgPSBvdGhlci5tX3ZhbHVlOwogICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQotICAgIAorCiAgICAgaW50IGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZDsgfQogICAgIGludCBzaG9ydGhhbmRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hv
cnRoYW5kSUQ7IH0KLSAgICAKKwogICAgIGJvb2wgaXNJbXBvcnRhbnQoKSBjb25zdCB7IHJldHVy
biBtX2ltcG9ydGFudDsgfQogICAgIGJvb2wgaXNJbXBsaWNpdCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbGljaXQ7IH0KIApAQCAtNjUsMTEgKzY1LDExIEBAIHB1YmxpYzoKICAgICBib29sIG1faW1w
b3J0YW50IDogMTsKICAgICBib29sIG1faW1wbGljaXQgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB0
aGUgcHJvcGVydHkgd2FzIHNldCBpbXBsaWNpdGx5IGFzIHRoZSByZXN1bHQgb2YgYSBzaG9ydGhh
bmQuCiAKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1Byb3BlcnR5ICYsIGNv
bnN0IENTU1Byb3BlcnR5ICYpOworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NT
UHJvcGVydHkmLCBjb25zdCBDU1NQcm9wZXJ0eSYpOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBt
X3ZhbHVlOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmCisjZW5kaWYgLy8gQ1NTUHJvcGVydHlfaApJbmRleDogV2ViQ29yZS9jc3MvQ1NTUXVp
cmtQcmltaXRpdmVWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1F1aXJrUHJp
bWl0aXZlVmFsdWUuaAkocmV2aXNpb24gMTg4MDQpCisrKyBXZWJDb3JlL2Nzcy9DU1NRdWlya1By
aW1pdGl2ZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqIEJvc3Rv
biwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCiAKLSNpZm5kZWYgQ1NTUXVpcmtQcmltaXRpdmVW
YWx1ZV9ICi0jZGVmaW5lIENTU1F1aXJrUHJpbWl0aXZlVmFsdWVfSAorI2lmbmRlZiBDU1NRdWly
a1ByaW1pdGl2ZVZhbHVlX2gKKyNkZWZpbmUgQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZV9oCiAKICNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogCkBAIC0zMSwxNSArMzEsMTYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gVGhlIGJhc2ljIGlkZWEgaXMgdGhhdCBhIHN0eWxlc2hlZXQgY2Fu
IHVzZSB0aGUgdmFsdWUgX19xZW0gKGZvciBxdWlya3kgZW0pIGluc3RlYWQgb2YgZW0KIC8vIGlu
IGEgc3R5bGVzaGVldC4gIFdoZW4gdGhlIHF1aXJreSB2YWx1ZSBpcyB1c2VkLCBpZiB5b3UncmUg
aW4gcXVpcmtzIG1vZGUsIHRoZSBtYXJnaW4gd2lsbAogLy8gY29sbGFwc2UgYXdheSBpbnNpZGUg
YSB0YWJsZSBjZWxsLgotY2xhc3MgQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZSA6IHB1YmxpYyBDU1NQ
cmltaXRpdmVWYWx1ZQoteworY2xhc3MgQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZSA6IHB1YmxpYyBD
U1NQcmltaXRpdmVWYWx1ZSB7CiBwdWJsaWM6CiAgICAgQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZShk
b3VibGUgbnVtLCBVbml0VHlwZXMgdHlwZSkKLSAgICAgICAgOiBDU1NQcmltaXRpdmVWYWx1ZShu
dW0sIHR5cGUpIHt9CisgICAgICAgIDogQ1NTUHJpbWl0aXZlVmFsdWUobnVtLCB0eXBlKQorICAg
IHsKKyAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNRdWlya1ZhbHVlKCkgeyByZXR1cm4gdHJ1
ZTsgfQogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2Vu
ZGlmCisjZW5kaWYgLy8gQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZV9oCkluZGV4OiBXZWJDb3JlL2Nz
cy9DU1NSdWxlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3Qu
Y3BwCShyZXZpc2lvbiAxODgwNCkKKysrIFdlYkNvcmUvY3NzL0NTU1J1bGVMaXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAw
MjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNT
U1J1bGVMaXN0LmgiCiAKQEAgLTMyLDEyICszMywxMiBAQCBDU1NSdWxlTGlzdDo6Q1NTUnVsZUxp
c3QoKQogewogfQogCi1DU1NSdWxlTGlzdDo6Q1NTUnVsZUxpc3QoU3R5bGVMaXN0KiBsc3QsIGJv
b2wgb21pdENoYXJzZXRSdWxlcykKK0NTU1J1bGVMaXN0OjpDU1NSdWxlTGlzdChTdHlsZUxpc3Qq
IGxpc3QsIGJvb2wgb21pdENoYXJzZXRSdWxlcykKIHsKLSAgICBpZiAobHN0KSB7Ci0gICAgICAg
IHVuc2lnbmVkIGxlbiA9IGxzdC0+bGVuZ3RoKCk7CisgICAgaWYgKGxpc3QpIHsKKyAgICAgICAg
dW5zaWduZWQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW47ICsraSkgewotICAgICAgICAgICAgU3R5bGVCYXNlKiBzdHlsZSA9IGxzdC0+
aXRlbShpKTsKKyAgICAgICAgICAgIFN0eWxlQmFzZSogc3R5bGUgPSBsaXN0LT5pdGVtKGkpOwog
ICAgICAgICAgICAgaWYgKHN0eWxlLT5pc1J1bGUoKSAmJiAhKG9taXRDaGFyc2V0UnVsZXMgJiYg
c3R5bGUtPmlzQ2hhcnNldFJ1bGUoKSkpCiAgICAgICAgICAgICAgICAgYXBwZW5kKHN0YXRpY19j
YXN0PENTU1J1bGUqPihzdHlsZSkpOwogICAgICAgICB9CkBAIC01Nyw3ICs1OCw3IEBAIHZvaWQg
Q1NTUnVsZUxpc3Q6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW4KICAgICBpZiAocnVsZSkKICAgICAg
ICAgcnVsZS0+ZGVyZWYoKTsKICAgICBlbHNlCi0gICAgICAgIDsgLy8gIyMjIFRocm93IElOREVY
X1NJWkVfRVJSIGV4Y2VwdGlvbiBoZXJlIChUT0RPKQorICAgICAgICA7IC8vIEZJWE1FOiBUaHJv
dyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24gaGVyZQogfQogCiB2b2lkIENTU1J1bGVMaXN0Ojph
cHBlbmQoQ1NTUnVsZSogcnVsZSkKQEAgLTcyLDggKzczLDggQEAgdW5zaWduZWQgQ1NTUnVsZUxp
c3Q6Omluc2VydFJ1bGUoQ1NTUnVsZQogICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgfQogCi0g
ICAgLy8gIyMjIFNob3VsZCB0aHJvdyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24gaW5zdGVhZCEg
KFRPRE8pCisgICAgLy8gRklYTUU6IFNob3VsZCB0aHJvdyBJTkRFWF9TSVpFX0VSUiBleGNlcHRp
b24gaW5zdGVhZCEKICAgICByZXR1cm4gMDsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy9DU1NSdWxlTGlzdC5oCShyZXZpc2lvbiAxODgwNCkKKysrIFdlYkNvcmUvY3NzL0NTU1J1
bGVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDM2ICsyMSwzNSBAQAogICogQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NSdWxlTGlzdF9ICi0jZGVmaW5l
IENTU1J1bGVMaXN0X0gKKyNpZm5kZWYgQ1NTUnVsZUxpc3RfaAorI2RlZmluZSBDU1NSdWxlTGlz
dF9oCiAKLSNpbmNsdWRlICJTaGFyZWQuaCIKICNpbmNsdWRlICJEZXByZWNhdGVkUHRyTGlzdC5o
IgorI2luY2x1ZGUgIlNoYXJlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENT
U1J1bGU7CiBjbGFzcyBTdHlsZUxpc3Q7CiAKLWNsYXNzIENTU1J1bGVMaXN0IDogcHVibGljIFNo
YXJlZDxDU1NSdWxlTGlzdD4KLXsKK2NsYXNzIENTU1J1bGVMaXN0IDogcHVibGljIFNoYXJlZDxD
U1NSdWxlTGlzdD4gewogcHVibGljOgogICAgIENTU1J1bGVMaXN0KCk7CiAgICAgQ1NTUnVsZUxp
c3QoU3R5bGVMaXN0KiwgYm9vbCBvbWl0Q2hhcnNldFJ1bGVzID0gZmFsc2UpOwogICAgIH5DU1NS
dWxlTGlzdCgpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sc3RD
U1NSdWxlcy5jb3VudCgpOyB9Ci0gICAgQ1NTUnVsZSogaXRlbSAodW5zaWduZWQgaW5kZXgpIHsg
cmV0dXJuIG1fbHN0Q1NTUnVsZXMuYXQoaW5kZXgpOyB9CisgICAgQ1NTUnVsZSogaXRlbSh1bnNp
Z25lZCBpbmRleCkgeyByZXR1cm4gbV9sc3RDU1NSdWxlcy5hdChpbmRleCk7IH0KIAogICAgIC8q
IG5vdCBwYXJ0IG9mIHRoZSBET00gKi8KLSAgICB1bnNpZ25lZCBpbnNlcnRSdWxlIChDU1NSdWxl
KiBydWxlLCB1bnNpZ25lZCBpbmRleCk7Ci0gICAgdm9pZCBkZWxldGVSdWxlICh1bnNpZ25lZCBp
bmRleCk7Ci0gICAgdm9pZCBhcHBlbmQoQ1NTUnVsZSogcnVsZSk7CisgICAgdW5zaWduZWQgaW5z
ZXJ0UnVsZShDU1NSdWxlKiwgdW5zaWduZWQgaW5kZXgpOworICAgIHZvaWQgZGVsZXRlUnVsZSh1
bnNpZ25lZCBpbmRleCk7CisgICAgdm9pZCBhcHBlbmQoQ1NTUnVsZSopOwogCiBwcm90ZWN0ZWQ6
CiAgICAgRGVwcmVjYXRlZFB0ckxpc3Q8Q1NTUnVsZT4gbV9sc3RDU1NSdWxlczsKIH07CiAKLX0g
Ly8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8v
IENTU1J1bGVMaXN0X2gKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE4ODA0KQorKysg
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3
IEBACiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh
Y2UgLSBTdWl0ZSAzMzAsCiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKIApAQCAtMzgsMjcg
KzM5LDI4IEBAIHVuc2lnbmVkIGludCBDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHkoKQogICAgIC8v
IEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYW5kIHBzZXVkby1jbGFzc2VzIGRvIG5vdCBoYXZlIHRo
ZSBzYW1lIHNwZWNpZmljaXR5LiBUaGlzIGZ1bmN0aW9uCiAgICAgLy8gaXNuJ3QgcXVpdGUgY29y
cmVjdC4KICAgICBpbnQgcyA9ICh0YWcubG9jYWxOYW1lKCkgPT0gc3RhckF0b20gPyAwIDogMSk7
Ci0gICAgc3dpdGNoKG1hdGNoKQotICAgIHsKLSAgICBjYXNlIElkOgotICAgICAgICBzICs9IDB4
MTAwMDA7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhhY3Q6Ci0gICAgY2FzZSBDbGFzczoK
LSAgICBjYXNlIFNldDoKLSAgICBjYXNlIExpc3Q6Ci0gICAgY2FzZSBIeXBoZW46Ci0gICAgY2Fz
ZSBQc2V1ZG9DbGFzczoKLSAgICBjYXNlIFBzZXVkb0VsZW1lbnQ6Ci0gICAgY2FzZSBDb250YWlu
OgotICAgIGNhc2UgQmVnaW46Ci0gICAgY2FzZSBFbmQ6Ci0gICAgICAgIHMgKz0gMHgxMDA7Ci0g
ICAgY2FzZSBOb25lOgotICAgICAgICBicmVhazsKKyAgICBzd2l0Y2ggKG1hdGNoKSB7CisgICAg
ICAgIGNhc2UgSWQ6CisgICAgICAgICAgICBzICs9IDB4MTAwMDA7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBFeGFjdDoKKyAgICAgICAgY2FzZSBDbGFzczoKKyAgICAgICAgY2Fz
ZSBTZXQ6CisgICAgICAgIGNhc2UgTGlzdDoKKyAgICAgICAgY2FzZSBIeXBoZW46CisgICAgICAg
IGNhc2UgUHNldWRvQ2xhc3M6CisgICAgICAgIGNhc2UgUHNldWRvRWxlbWVudDoKKyAgICAgICAg
Y2FzZSBDb250YWluOgorICAgICAgICBjYXNlIEJlZ2luOgorICAgICAgICBjYXNlIEVuZDoKKyAg
ICAgICAgICAgIHMgKz0gMHgxMDA7CisgICAgICAgIGNhc2UgTm9uZToKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KKwogICAgIGlmICh0YWdIaXN0b3J5KQogICAgICAgICBzICs9IHRhZ0hpc3Rv
cnktPnNwZWNpZmljaXR5KCk7CisKICAgICAvLyBtYWtlIHN1cmUgaXQgZG9lc24ndCBvdmVyZmxv
dwogICAgIHJldHVybiBzICYgMHhmZmZmZmY7CiB9CkBAIC02Nyw3ICs2OSw3IEBAIHZvaWQgQ1NT
U2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY28KIHsKICAgICBpZiAobWF0Y2ggIT0gUHNl
dWRvQ2xhc3MgJiYgbWF0Y2ggIT0gUHNldWRvRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwotICAg
IAorCiAgICAgc3RhdGljIEF0b21pY1N0cmluZyBhY3RpdmUoImFjdGl2ZSIpOwogICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgYWZ0ZXIoImFmdGVyIik7CiAgICAgc3RhdGljIEF0b21pY1N0cmluZyBh
bnlMaW5rKCItd2Via2l0LWFueS1saW5rIik7CkBAIC0xMDIsMTAzICsxMDQsMTA4IEBAIHZvaWQg
Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY28KICAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIHNsaWRlclRodW1iKCItd2Via2l0LXNsaWRlci10aHVtYiIpOwogICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcgdGFyZ2V0KCJ0YXJnZXQiKTsKICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHZpc2l0
ZWQoInZpc2l0ZWQiKTsKLSAgICBib29sIGVsZW1lbnQgPSBmYWxzZTsgICAgICAgLy8gcHNldWRv
LWVsZW1lbnQKLSAgICBib29sIGNvbXBhdCA9IGZhbHNlOyAgICAgICAgLy8gc2luZ2xlIGNvbG9u
IGNvbXBhdGJpbGl0eSBtb2RlCi0gICAgCi0gICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9PdGhlcjsK
KworICAgIGJvb2wgZWxlbWVudCA9IGZhbHNlOyAvLyBwc2V1ZG8tZWxlbWVudAorICAgIGJvb2wg
Y29tcGF0ID0gZmFsc2U7IC8vIHNpbmdsZSBjb2xvbiBjb21wYXRiaWxpdHkgbW9kZQorCisgICAg
bV9wc2V1ZG9UeXBlID0gUHNldWRvT3RoZXI7CiAgICAgaWYgKHZhbHVlID09IGFjdGl2ZSkKLSAg
ICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9BY3RpdmU7CisgICAgICAgIG1fcHNldWRvVHlwZSA9
IFBzZXVkb0FjdGl2ZTsKICAgICBlbHNlIGlmICh2YWx1ZSA9PSBhZnRlcikgewotICAgICAgICBf
cHNldWRvVHlwZSA9IFBzZXVkb0FmdGVyOwotICAgICAgICBlbGVtZW50ID0gY29tcGF0ID0gdHJ1
ZTsKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvQWZ0ZXI7CisgICAgICAgIGVsZW1lbnQg
PSB0cnVlOworICAgICAgICBjb21wYXQgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAodmFsdWUgPT0g
YW55TGluaykKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9BbnlMaW5rOworICAgICAgICBt
X3BzZXVkb1R5cGUgPSBQc2V1ZG9BbnlMaW5rOwogICAgIGVsc2UgaWYgKHZhbHVlID09IGF1dG9m
aWxsKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0F1dG9maWxsOworICAgICAgICBtX3Bz
ZXVkb1R5cGUgPSBQc2V1ZG9BdXRvZmlsbDsKICAgICBlbHNlIGlmICh2YWx1ZSA9PSBiZWZvcmUp
IHsKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9CZWZvcmU7Ci0gICAgICAgIGVsZW1lbnQg
PSBjb21wYXQgPSB0cnVlOworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9CZWZvcmU7Cisg
ICAgICAgIGVsZW1lbnQgPSB0cnVlOworICAgICAgICBjb21wYXQgPSB0cnVlOwogICAgIH0gZWxz
ZSBpZiAodmFsdWUgPT0gY2hlY2tlZCkKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9DaGVj
a2VkOworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9DaGVja2VkOwogICAgIGVsc2UgaWYg
KHZhbHVlID09IGZpbGVVcGxvYWRCdXR0b24pIHsKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1
ZG9GaWxlVXBsb2FkQnV0dG9uOworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9GaWxlVXBs
b2FkQnV0dG9uOwogICAgICAgICBlbGVtZW50ID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKHZhbHVl
ID09IGRpc2FibGVkKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0Rpc2FibGVkOworICAg
ICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9EaXNhYmxlZDsKICAgICBlbHNlIGlmICh2YWx1ZSA9
PSBkcmFnKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0RyYWc7CisgICAgICAgIG1fcHNl
dWRvVHlwZSA9IFBzZXVkb0RyYWc7CiAgICAgZWxzZSBpZiAodmFsdWUgPT0gZW5hYmxlZCkKLSAg
ICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9FbmFibGVkOworICAgICAgICBtX3BzZXVkb1R5cGUg
PSBQc2V1ZG9FbmFibGVkOwogICAgIGVsc2UgaWYgKHZhbHVlID09IGVtcHR5KQotICAgICAgICBf
cHNldWRvVHlwZSA9IFBzZXVkb0VtcHR5OworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9F
bXB0eTsKICAgICBlbHNlIGlmICh2YWx1ZSA9PSBmaXJzdENoaWxkKQotICAgICAgICBfcHNldWRv
VHlwZSA9IFBzZXVkb0ZpcnN0Q2hpbGQ7CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0Zp
cnN0Q2hpbGQ7CiAgICAgZWxzZSBpZiAodmFsdWUgPT0gZmlyc3RMZXR0ZXIpIHsKLSAgICAgICAg
X3BzZXVkb1R5cGUgPSBQc2V1ZG9GaXJzdExldHRlcjsKLSAgICAgICAgZWxlbWVudCA9IGNvbXBh
dCA9IHRydWU7CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0ZpcnN0TGV0dGVyOworICAg
ICAgICBlbGVtZW50ID0gdHJ1ZTsKKyAgICAgICAgY29tcGF0ID0gdHJ1ZTsKICAgICB9IGVsc2Ug
aWYgKHZhbHVlID09IGZpcnN0TGluZSkgewotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0Zp
cnN0TGluZTsKLSAgICAgICAgZWxlbWVudCA9IGNvbXBhdCA9IHRydWU7CisgICAgICAgIG1fcHNl
dWRvVHlwZSA9IFBzZXVkb0ZpcnN0TGluZTsKKyAgICAgICAgZWxlbWVudCA9IHRydWU7CisgICAg
ICAgIGNvbXBhdCA9IHRydWU7CiAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBmaXJzdE9mVHlwZSkK
LSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9GaXJzdE9mVHlwZTsKKyAgICAgICAgbV9wc2V1
ZG9UeXBlID0gUHNldWRvRmlyc3RPZlR5cGU7CiAgICAgZWxzZSBpZiAodmFsdWUgPT0gZm9jdXMp
Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvRm9jdXM7CisgICAgICAgIG1fcHNldWRvVHlw
ZSA9IFBzZXVkb0ZvY3VzOwogICAgIGVsc2UgaWYgKHZhbHVlID09IGhvdmVyKQotICAgICAgICBf
cHNldWRvVHlwZSA9IFBzZXVkb0hvdmVyOworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9I
b3ZlcjsKICAgICBlbHNlIGlmICh2YWx1ZSA9PSBpbmRldGVybWluYXRlKQotICAgICAgICBfcHNl
dWRvVHlwZSA9IFBzZXVkb0luZGV0ZXJtaW5hdGU7CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBz
ZXVkb0luZGV0ZXJtaW5hdGU7CiAgICAgZWxzZSBpZiAodmFsdWUgPT0gbGluaykKLSAgICAgICAg
X3BzZXVkb1R5cGUgPSBQc2V1ZG9MaW5rOworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9M
aW5rOwogICAgIGVsc2UgaWYgKHZhbHVlID09IGxhbmcpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0g
UHNldWRvTGFuZzsKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvTGFuZzsKICAgICBlbHNl
IGlmICh2YWx1ZSA9PSBsYXN0Q2hpbGQpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvTGFz
dENoaWxkOworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9MYXN0Q2hpbGQ7CiAgICAgZWxz
ZSBpZiAodmFsdWUgPT0gbGFzdE9mVHlwZSkKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9M
YXN0T2ZUeXBlOworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9MYXN0T2ZUeXBlOwogICAg
IGVsc2UgaWYgKHZhbHVlID09IG5vdFN0cikKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9O
b3Q7CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb05vdDsKICAgICBlbHNlIGlmICh2YWx1
ZSA9PSBvbmx5Q2hpbGQpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvT25seUNoaWxkOwor
ICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Pbmx5Q2hpbGQ7CiAgICAgZWxzZSBpZiAodmFs
dWUgPT0gb25seU9mVHlwZSkKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9Pbmx5T2ZUeXBl
OworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Pbmx5T2ZUeXBlOwogICAgIGVsc2UgaWYg
KHZhbHVlID09IHJvb3QpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvUm9vdDsKKyAgICAg
ICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvUm9vdDsKICAgICBlbHNlIGlmICh2YWx1ZSA9PSBzZWFy
Y2hDYW5jZWxCdXR0b24pIHsKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9TZWFyY2hDYW5j
ZWxCdXR0b247CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1NlYXJjaENhbmNlbEJ1dHRv
bjsKICAgICAgICAgZWxlbWVudCA9IHRydWU7CiAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBzZWFy
Y2hEZWNvcmF0aW9uKSB7Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvU2VhcmNoRGVjb3Jh
dGlvbjsKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvU2VhcmNoRGVjb3JhdGlvbjsKICAg
ICAgICAgZWxlbWVudCA9IHRydWU7CiAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBzZWFyY2hSZXN1
bHRzRGVjb3JhdGlvbikgewotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb1NlYXJjaFJlc3Vs
dHNEZWNvcmF0aW9uOworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9TZWFyY2hSZXN1bHRz
RGVjb3JhdGlvbjsKICAgICAgICAgZWxlbWVudCA9IHRydWU7CiAgICAgfSBlbHNlIGlmICh2YWx1
ZSA9PSBzZWFyY2hSZXN1bHRzQnV0dG9uKSB7Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRv
U2VhcmNoUmVzdWx0c0J1dHRvbjsKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvU2VhcmNo
UmVzdWx0c0J1dHRvbjsKICAgICAgICAgZWxlbWVudCA9IHRydWU7CiAgICAgfSAgZWxzZSBpZiAo
dmFsdWUgPT0gc2VsZWN0aW9uKSB7Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvU2VsZWN0
aW9uOworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9TZWxlY3Rpb247CiAgICAgICAgIGVs
ZW1lbnQgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gc2xpZGVyVGh1bWIpIHsKLSAg
ICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9TbGlkZXJUaHVtYjsKKyAgICAgICAgbV9wc2V1ZG9U
eXBlID0gUHNldWRvU2xpZGVyVGh1bWI7CiAgICAgICAgIGVsZW1lbnQgPSB0cnVlOwogICAgIH0g
ZWxzZSBpZiAodmFsdWUgPT0gdGFyZ2V0KQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb1Rh
cmdldDsKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvVGFyZ2V0OwogICAgIGVsc2UgaWYg
KHZhbHVlID09IHZpc2l0ZWQpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvVmlzaXRlZDsK
LSAgICAKLSAgICBpZiAobWF0Y2ggPT0gUHNldWRvQ2xhc3MgJiYgZWxlbWVudCkKKyAgICAgICAg
bV9wc2V1ZG9UeXBlID0gUHNldWRvVmlzaXRlZDsKKworICAgIGlmIChtYXRjaCA9PSBQc2V1ZG9D
bGFzcyAmJiBlbGVtZW50KSB7CiAgICAgICAgIGlmICghY29tcGF0KSAKLSAgICAgICAgICAgIF9w
c2V1ZG9UeXBlID0gUHNldWRvT3RoZXI7CisgICAgICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1
ZG9PdGhlcjsKICAgICAgICAgZWxzZSAKICAgICAgICAgICAgbWF0Y2ggPSBQc2V1ZG9FbGVtZW50
OwotICAgIGVsc2UgaWYgKG1hdGNoID09IFBzZXVkb0VsZW1lbnQgJiYgIWVsZW1lbnQpCi0gICAg
ICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvT3RoZXI7CisgICAgfSBlbHNlIGlmIChtYXRjaCA9PSBQ
c2V1ZG9FbGVtZW50ICYmICFlbGVtZW50KQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9P
dGhlcjsKIH0KIAotYm9vbCBDU1NTZWxlY3Rvcjo6b3BlcmF0b3IgPT0gKGNvbnN0IENTU1NlbGVj
dG9yICZvdGhlcikKK2Jvb2wgQ1NTU2VsZWN0b3I6Om9wZXJhdG9yPT0oY29uc3QgQ1NTU2VsZWN0
b3ImIG90aGVyKQogewotICAgIGNvbnN0IENTU1NlbGVjdG9yICpzZWwxID0gdGhpczsKLSAgICBj
b25zdCBDU1NTZWxlY3RvciAqc2VsMiA9ICZvdGhlcjsKKyAgICBjb25zdCBDU1NTZWxlY3Rvciog
c2VsMSA9IHRoaXM7CisgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbDIgPSAmb3RoZXI7CiAKICAg
ICB3aGlsZSAoc2VsMSAmJiBzZWwyKSB7CiAgICAgICAgIGlmIChzZWwxLT50YWcgIT0gc2VsMi0+
dGFnIHx8IHNlbDEtPmF0dHIgIT0gc2VsMi0+YXR0ciB8fApAQCAtMjEwLDggKzIxNywxMCBAQCBi
b29sIENTU1NlbGVjdG9yOjpvcGVyYXRvciA9PSAoY29uc3QgQ1NTCiAgICAgICAgIHNlbDEgPSBz
ZWwxLT50YWdIaXN0b3J5OwogICAgICAgICBzZWwyID0gc2VsMi0+dGFnSGlzdG9yeTsKICAgICB9
CisKICAgICBpZiAoc2VsMSB8fCBzZWwyKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjIxLDggKzIzMCwxMCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6
OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAgICAgU3RyaW5nIHN0cjsKICAgICBjb25zdCBDU1NTZWxl
Y3RvciogY3MgPSB0aGlzOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gY3Mt
PnRhZy5sb2NhbE5hbWUoKTsKKwogICAgIGlmIChjcy0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6Ok5v
bmUgfHwgbG9jYWxOYW1lICE9IHN0YXJBdG9tKQogICAgICAgICBzdHIgPSBsb2NhbE5hbWU7CisK
ICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBpZiAoY3MtPm1hdGNoID09IENTU1NlbGVjdG9y
OjpJZCkgewogICAgICAgICAgICAgc3RyICs9ICIjIjsKQEAgLTI3Nyw2ICsyODgsNyBAQCBTdHJp
bmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY3MgPSBjcy0+dGFnSGlzdG9yeTsKICAgICB9CisKICAgICBpZiAoY3MtPnRhZ0hp
c3RvcnkpIHsKICAgICAgICAgU3RyaW5nIHRhZ0hpc3RvcnlUZXh0ID0gY3MtPnRhZ0hpc3Rvcnkt
PnNlbGVjdG9yVGV4dCgpOwogICAgICAgICBpZiAoY3MtPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0
b3I6OkRpcmVjdEFkamFjZW50KQpAQCAtMjg1LDEwICsyOTcsMTIgQEAgU3RyaW5nIENTU1NlbGVj
dG9yOjpzZWxlY3RvclRleHQoKSBjb25zdAogICAgICAgICAgICAgc3RyID0gdGFnSGlzdG9yeVRl
eHQgKyAiIH4gIiArIHN0cjsKICAgICAgICAgZWxzZSBpZiAoY3MtPnJlbGF0aW9uKCkgPT0gQ1NT
U2VsZWN0b3I6OkNoaWxkKQogICAgICAgICAgICAgc3RyID0gdGFnSGlzdG9yeVRleHQgKyAiID4g
IiArIHN0cjsKLSAgICAgICAgZWxzZSAvLyBEZXNjZW5kYW50CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIC8vIERlc2NlbmRhbnQKICAgICAgICAgICAgIHN0ciA9IHRhZ0hpc3RvcnlUZXh0ICsg
IiAiICsgc3RyOwogICAgIH0KKwogICAgIHJldHVybiBzdHI7CiB9CiAKLX0KK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkocmV2aXNpb24gMTg4MDQpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxNiArMjEsMTUgQEAKICAq
IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCiAKLSNpZm5kZWYgQ1NTU2VsZWN0b3Jf
SAotI2RlZmluZSBDU1NTZWxlY3Rvcl9ICisjaWZuZGVmIENTU1NlbGVjdG9yX2gKKyNkZWZpbmUg
Q1NTU2VsZWN0b3JfaAogCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLS8vIHRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHNlbGVjdG9yIGZvciBhIFN0
eWxlUnVsZQotICAgIGNsYXNzIENTU1NlbGVjdG9yCi0gICAgeworICAgIC8vIHRoaXMgY2xhc3Mg
cmVwcmVzZW50cyBhIHNlbGVjdG9yIGZvciBhIFN0eWxlUnVsZQorICAgIGNsYXNzIENTU1NlbGVj
dG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIENTU1NlbGVjdG9yKCkKICAgICAgICAgICAgIDog
dGFnSGlzdG9yeSgwKQpAQCAtNDIsOSArNDEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgLCBtX3JlbGF0aW9uKERlc2NlbmRhbnQpCiAgICAgICAgICAgICAsIG1hdGNoKE5v
bmUpCiAgICAgICAgICAgICAsIHBzZXVkb0lkKDApCi0gICAgICAgICAgICAsIF9wc2V1ZG9UeXBl
KFBzZXVkb05vdFBhcnNlZCkKLSAgICAgICAge30KLSAgICAgICAgCisgICAgICAgICAgICAsIG1f
cHNldWRvVHlwZShQc2V1ZG9Ob3RQYXJzZWQpCisgICAgICAgIHsKKyAgICAgICAgfQorCiAgICAg
ICAgIENTU1NlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQogICAgICAgICAgICAg
OiB0YWdIaXN0b3J5KDApCiAgICAgICAgICAgICAsIHNpbXBsZVNlbGVjdG9yKDApCkBAIC01NSwy
MSArNTUsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3JlbGF0aW9u
KERlc2NlbmRhbnQpCiAgICAgICAgICAgICAsIG1hdGNoKE5vbmUpCiAgICAgICAgICAgICAsIHBz
ZXVkb0lkKDApCi0gICAgICAgICAgICAsIF9wc2V1ZG9UeXBlKFBzZXVkb05vdFBhcnNlZCkKLSAg
ICAgICAge30KKyAgICAgICAgICAgICwgbV9wc2V1ZG9UeXBlKFBzZXVkb05vdFBhcnNlZCkKKyAg
ICAgICAgeworICAgICAgICB9CiAKLSAgICAgICAgfkNTU1NlbGVjdG9yKCkgeworICAgICAgICB+
Q1NTU2VsZWN0b3IoKQorICAgICAgICB7CiAgICAgICAgICAgICBkZWxldGUgdGFnSGlzdG9yeTsK
ICAgICAgICAgICAgIGRlbGV0ZSBzaW1wbGVTZWxlY3RvcjsKICAgICAgICAgICAgIGRlbGV0ZSBu
ZXh0U2VsZWN0b3I7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGFwcGVuZChDU1NTZWxlY3Rv
ciogbikgeworICAgICAgICB2b2lkIGFwcGVuZChDU1NTZWxlY3RvciogbikKKyAgICAgICAgewog
ICAgICAgICAgICAgQ1NTU2VsZWN0b3IqIGVuZCA9IHRoaXM7CiAgICAgICAgICAgICB3aGlsZSAo
ZW5kLT5uZXh0U2VsZWN0b3IpCiAgICAgICAgICAgICAgICAgZW5kID0gZW5kLT5uZXh0U2VsZWN0
b3I7CiAgICAgICAgICAgICBlbmQtPm5leHRTZWxlY3RvciA9IG47CiAgICAgICAgIH0KKwogICAg
ICAgICBDU1NTZWxlY3RvciogbmV4dCgpIHsgcmV0dXJuIG5leHRTZWxlY3RvcjsgfQogCiAgICAg
ICAgIC8qKgpAQCAtODMsNyArODcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0
cmluZyBzZWxlY3RvclRleHQoKSBjb25zdDsKIAogICAgICAgICAvLyBjaGVja3MgaWYgdGhlIDIg
c2VsZWN0b3JzIChpbmNsdWRpbmcgc3ViIHNlbGVjdG9ycykgYWdyZWUuCi0gICAgICAgIGJvb2wg
b3BlcmF0b3IgPT0oY29uc3QgQ1NTU2VsZWN0b3ImKTsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENTU1NlbGVjdG9yJik7CiAKICAgICAgICAgLy8gdGFnID09IC0xIG1lYW5zIGFwcGx5
IHRvIGFsbCBlbGVtZW50cyAoU2VsZWN0b3IgPSAqKQogCkBAIC0xNTQsMTQgKzE1OCwxNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgUHNldWRvVHlwZSBwc2V1ZG9UeXBlKCkgY29u
c3QKICAgICAgICAgewotICAgICAgICAgICAgaWYgKF9wc2V1ZG9UeXBlID09IFBzZXVkb05vdFBh
cnNlZCkKKyAgICAgICAgICAgIGlmIChtX3BzZXVkb1R5cGUgPT0gUHNldWRvTm90UGFyc2VkKQog
ICAgICAgICAgICAgICAgIGV4dHJhY3RQc2V1ZG9UeXBlKCk7Ci0gICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UHNldWRvVHlwZT4oX3BzZXVkb1R5cGUpOworICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFBzZXVkb1R5cGU+KG1fcHNldWRvVHlwZSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBib29sIGhhc1RhZygpIGNvbnN0IHsgcmV0dXJuIHRhZyAhPSBhbnlRTmFtZSgpOyB9CiAg
ICAgICAgIGJvb2wgaGFzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gYXR0ciAhPSBhbnlRTmFt
ZSgpOyB9CiAKKyAgICAgICAgUmVsYXRpb24gcmVsYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxSZWxhdGlvbj4obV9yZWxhdGlvbik7IH0KKwogICAgICAgICBtdXRhYmxlIEF0b21p
Y1N0cmluZyB2YWx1ZTsKICAgICAgICAgQ1NTU2VsZWN0b3IqIHRhZ0hpc3Rvcnk7CiAgICAgICAg
IENTU1NlbGVjdG9yKiBzaW1wbGVTZWxlY3RvcjsgLy8gVXNlZCBmb3IgOm5vdC4KQEAgLTE3MCwx
NyArMTc2LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIFF1YWxp
ZmllZE5hbWUgYXR0cjsKICAgICAgICAgUXVhbGlmaWVkTmFtZSB0YWc7Ci0gICAgICAgIAotICAg
ICAgICBSZWxhdGlvbiByZWxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbGF0
aW9uPihtX3JlbGF0aW9uKTsgfQogCi0gICAgICAgIHVuc2lnbmVkIG1fcmVsYXRpb24gICAgICAg
ICAgOiAzOyAvLyBlbnVtIFJlbGF0aW9uCi0gICAgICAgIG11dGFibGUgdW5zaWduZWQgbWF0Y2gg
ICAgICAgOiA0OyAvLyBlbnVtIE1hdGNoCi0gICAgICAgIHVuc2lnbmVkIHBzZXVkb0lkICAgICAg
ICAgICAgOiA0OwotICAgICAgICBtdXRhYmxlIHVuc2lnbmVkIF9wc2V1ZG9UeXBlIDogNjsgLy8g
UHNldWRvVHlwZQorICAgICAgICB1bnNpZ25lZCBtX3JlbGF0aW9uICAgICAgICAgICA6IDM7IC8v
IGVudW0gUmVsYXRpb24KKyAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtYXRjaCAgICAgICAgOiA0
OyAvLyBlbnVtIE1hdGNoCisgICAgICAgIHVuc2lnbmVkIHBzZXVkb0lkICAgICAgICAgICAgIDog
NDsKKyAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3BzZXVkb1R5cGUgOiA2OyAvLyBQc2V1ZG9U
eXBlCiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGV4dHJhY3RQc2V1ZG9UeXBlKCkgY29u
c3Q7CiAgICAgfTsKLX0KIAotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBDU1NTZWxlY3Rvcl9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCShyZXZp
c2lvbiAxODgwNCkKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CiAgKi8KIAotI2lmbmRlZiBDU1NTdHlsZURlY2xhcmF0aW9uX0gKLSNkZWZpbmUgQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ICisjaWZuZGVmIENTU1N0eWxlRGVjbGFyYXRpb25faAorI2RlZmluZSBDU1NT
dHlsZURlY2xhcmF0aW9uX2gKIAogI2luY2x1ZGUgIlN0eWxlQmFzZS5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CkBAIC04MSw2ICs4MSw2IEBAIHByaXZhdGU6CiAgICAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IENTU1N0eWxlRGVjbGFyYXRpb24mKTsKIH07CiAK
LX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlm
IC8vIENTU1N0eWxlRGVjbGFyYXRpb25faApJbmRleDogV2ViQ29yZS9jc3MvQ291bnRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NvdW50ZXIuaAkocmV2aXNpb24gMTg4MDQpCisrKyBX
ZWJDb3JlL2Nzcy9Db3VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAq
IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCiAKLSNpZm5kZWYgQ291bnRlcl9ICi0j
ZGVmaW5lIENvdW50ZXJfSAorI2lmbmRlZiBDb3VudGVyX2gKKyNkZWZpbmUgQ291bnRlcl9oCiAK
ICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCkBAIC0zMiwyNiArMzIsMjkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb3Vu
dGVyIDogcHVibGljIFNoYXJlZDxDb3VudGVyPiB7CiBwdWJsaWM6Ci0gICAgQ291bnRlcihQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBsaXN0U3R5bGUsCi0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHNlcGFyYXRvcikKLSAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllciksIG1fbGlz
dFN0eWxlKGxpc3RTdHlsZSksIG1fc2VwYXJhdG9yKHNlcGFyYXRvcikgeyB9CisgICAgQ291bnRl
cihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBsaXN0U3R5bGUsIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHNlcGFyYXRvcikKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAg
LCBtX2xpc3RTdHlsZShsaXN0U3R5bGUpCisgICAgICAgICwgbV9zZXBhcmF0b3Ioc2VwYXJhdG9y
KQorICAgIHsKKyAgICB9CiAKICAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllciA/IG1faWRlbnRpZmllci0+Z2V0U3RyaW5nVmFsdWUoKSA6IFN0cmluZygp
OyB9CiAgICAgU3RyaW5nIGxpc3RTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdFN0eWxlID8g
bV9saXN0U3R5bGUtPmdldFN0cmluZ1ZhbHVlKCkgOiBTdHJpbmcoKTsgfQogICAgIFN0cmluZyBz
ZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3NlcGFyYXRvciA/IG1fc2VwYXJhdG9yLT5nZXRT
dHJpbmdWYWx1ZSgpIDogU3RyaW5nKCk7IH0KIAotICAgIGludCBsaXN0U3R5bGVOdW1iZXIoKSBj
b25zdCB7IHJldHVybiBtX2xpc3RTdHlsZSA/IChpbnQpIG1fbGlzdFN0eWxlLT5nZXRGbG9hdFZh
bHVlKCkgOiAwOyB9Ci0gICAgCisgICAgaW50IGxpc3RTdHlsZU51bWJlcigpIGNvbnN0IHsgcmV0
dXJuIG1fbGlzdFN0eWxlID8gc3RhdGljX2Nhc3Q8aW50PihtX2xpc3RTdHlsZS0+Z2V0RmxvYXRW
YWx1ZSgpKSA6IDA7IH0KKwogICAgIHZvaWQgc2V0SWRlbnRpZmllcihQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBpZGVudGlmaWVyKSB7IG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0K
ICAgICB2b2lkIHNldExpc3RTdHlsZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsaXN0
U3R5bGUpIHsgbV9saXN0U3R5bGUgPSBsaXN0U3R5bGU7IH0KICAgICB2b2lkIHNldFNlcGFyYXRv
cihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzZXBhcmF0b3IpIHsgbV9zZXBhcmF0b3Ig
PSBzZXBhcmF0b3I7IH0KLSAKKwogcHJvdGVjdGVkOgogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gbV9pZGVudGlmaWVyOyAvLyBTdHJpbmcKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IG1fbGlzdFN0eWxlOyAgLy8gaW50CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBt
X3NlcGFyYXRvcjsgIC8vIFN0cmluZwotIH07Cit9OwogCi19IC8vbmFtZXNwYWNlCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIENvdW50ZXJfaApJbmRleDogV2Vi
Q29yZS9jc3MvY3NzaGVscGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NoZWxw
ZXIuY3BwCShyZXZpc2lvbiAxODgwNCkKKysrIFdlYkNvcmUvY3NzL2Nzc2hlbHBlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgU3RyaW5nIHBhcnNlVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsKQogICAgICAgICArK287CiAgICAgICAgIC0tbDsKICAgICB9Ci0gICAgd2hpbGUgKGwg
PiAwICYmICgqaSlbbytsLTFdIDw9ICcgJykKKyAgICB3aGlsZSAobCA+IDAgJiYgKCppKVtvICsg
bCAtIDFdIDw9ICcgJykKICAgICAgICAgLS1sOwogCiAgICAgaWYgKGwgPj0gNQpAQCAtNTksMTAg
KzU5LDEwIEBAIFN0cmluZyBwYXJzZVVSTChjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAgKytv
OwogICAgICAgICAtLWw7CiAgICAgfQotICAgIHdoaWxlIChsID4gMCAmJiAoKmkpW28rbC0xXSA8
PSAnICcpCisgICAgd2hpbGUgKGwgPiAwICYmICgqaSlbbyArIGwgLSAxXSA8PSAnICcpCiAgICAg
ICAgIC0tbDsKIAotICAgIGlmIChsID49IDIgJiYgKCppKVtvXSA9PSAoKmkpW28rbC0xXSAmJiAo
KCppKVtvXSA9PSAnXCcnIHx8ICgqaSlbb10gPT0gJ1wiJykpIHsKKyAgICBpZiAobCA+PSAyICYm
ICgqaSlbb10gPT0gKCppKVtvICsgbCAtIDFdICYmICgoKmkpW29dID09ICdcJycgfHwgKCppKVtv
XSA9PSAnXCInKSkgewogICAgICAgICBvKys7CiAgICAgICAgIGwgLT0gMjsKICAgICB9CkBAIC03
MSw3ICs3MSw3IEBAIFN0cmluZyBwYXJzZVVSTChjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAg
KytvOwogICAgICAgICAtLWw7CiAgICAgfQotICAgIHdoaWxlIChsID4gMCAmJiAoKmkpW28rbC0x
XSA8PSAnICcpCisgICAgd2hpbGUgKGwgPiAwICYmICgqaSlbbyArIGwgLSAxXSA8PSAnICcpCiAg
ICAgICAgIC0tbDsKIAogICAgIFZlY3RvcjxVQ2hhciwgMjA0OD4gYnVmZmVyKGwpOwpAQCAtODYs
NCArODYsNCBAQCBTdHJpbmcgcGFyc2VVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgcmV0dXJu
IG5ldyBTdHJpbmdJbXBsKGJ1ZmZlci5kYXRhKCksIG5sKTsKIH0KIAotfQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9jc3MvY3NzaGVscGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvY3NzaGVscGVyLmgJKHJldmlzaW9uIDE4ODA0KQorKysgV2ViQ29yZS9jc3Mv
Y3NzaGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqCiAgKi8KIAot
I2lmbmRlZiBjc3NfaGVscGVyX2gKLSNkZWZpbmUgY3NzX2hlbHBlcl9oCisjaWZuZGVmIGNzc2hl
bHBlcl9oCisjZGVmaW5lIGNzc2hlbHBlcl9oCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzAsOCArMzAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLyoKICAgICAgKiBtb3N0bHkg
anVzdCByZW1vdmVzIHRoZSB1cmwoIi4uLiIpIGJyYWNlCiAgICAgICovCi0gICAgU3RyaW5nIHBh
cnNlVVJMKGNvbnN0IFN0cmluZyAmdXJsKTsKKyAgICBTdHJpbmcgcGFyc2VVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpOwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlm
IC8vIGNzc2hlbHBlcl9oCkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuaAkocmV2aXNpb24gMTg4MDQpCisrKyBXZWJDb3Jl
L2Nzcy9jc3NwYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTQgKzIwLDE0IEBACiAgKiBC
b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU19jc3NwYXJzZXJf
aF8KLSNkZWZpbmUgQ1NTX2Nzc3BhcnNlcl9oXworI2lmbmRlZiBjc3NwYXJzZXJfaAorI2RlZmlu
ZSBjc3NwYXJzZXJfaAogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVkZSAiQ29s
b3IuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDIxICs0MiwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgQ1NTVmFsdWVMaXN0OwogICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNz
IE1lZGlhTGlzdDsKLSAgICBjbGFzcyBTdHlsZUJhc2U7Ci0gICAgY2xhc3MgU3R5bGVMaXN0Owog
ICAgIGNsYXNzIE1lZGlhTGlzdDsKICAgICBjbGFzcyBNZWRpYVF1ZXJ5RXhwOwotCisgICAgY2xh
c3MgU3R5bGVCYXNlOworICAgIGNsYXNzIFN0eWxlTGlzdDsKKyAgICBzdHJ1Y3QgRnVuY3Rpb247
CiAKICAgICBzdHJ1Y3QgUGFyc2VTdHJpbmcgewogICAgICAgICBVQ2hhciogY2hhcmFjdGVyczsK
ICAgICAgICAgaW50IGxlbmd0aDsKLSAgICAgICAgCisKICAgICAgICAgdm9pZCBsb3dlcigpOwog
ICAgIH07CiAKLSAgICBzdHJ1Y3QgRnVuY3Rpb247Ci0gICAgCiAgICAgc3RydWN0IFZhbHVlIHsK
ICAgICAgICAgaW50IGlkOwogICAgICAgICBib29sIGlzSW50OwpAQCAtNzUsMTAgKzczLDE0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogCiAgICAgRGVwcmVjYXRlZFN0cmluZyBkZXBy
ZWNhdGVkU3RyaW5nKGNvbnN0IFBhcnNlU3RyaW5nJik7Ci0gICAgc3RhdGljIGlubGluZSBTdHJp
bmcgZG9tU3RyaW5nKGNvbnN0IFBhcnNlU3RyaW5nJiBwcykgeworCisgICAgc3RhdGljIGlubGlu
ZSBTdHJpbmcgZG9tU3RyaW5nKGNvbnN0IFBhcnNlU3RyaW5nJiBwcykKKyAgICB7CiAgICAgICAg
IHJldHVybiBTdHJpbmcocHMuY2hhcmFjdGVycywgcHMubGVuZ3RoKTsKICAgICB9Ci0gICAgc3Rh
dGljIGlubGluZSBBdG9taWNTdHJpbmcgYXRvbWljU3RyaW5nKGNvbnN0IFBhcnNlU3RyaW5nJiBw
cykgeworCisgICAgc3RhdGljIGlubGluZSBBdG9taWNTdHJpbmcgYXRvbWljU3RyaW5nKGNvbnN0
IFBhcnNlU3RyaW5nJiBwcykKKyAgICB7CiAgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcocHMu
Y2hhcmFjdGVycywgcHMubGVuZ3RoKTsKICAgICB9CiAKQEAgLTg2LDEwICs4OCwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBWYWx1ZUxpc3QoKSA6IG1fY3Vy
cmVudCgwKSB7IH0KICAgICAgICAgflZhbHVlTGlzdCgpOworCiAgICAgICAgIHZvaWQgYWRkVmFs
dWUoY29uc3QgVmFsdWUmIHYpIHsgbV92YWx1ZXMuYXBwZW5kKHYpOyB9CiAgICAgICAgIHVuc2ln
bmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlcy5zaXplKCk7IH0KICAgICAgICAgVmFs
dWUqIGN1cnJlbnQoKSB7IHJldHVybiBtX2N1cnJlbnQgPCBtX3ZhbHVlcy5zaXplKCkgPyAmbV92
YWx1ZXNbbV9jdXJyZW50XSA6IDA7IH0KICAgICAgICAgVmFsdWUqIG5leHQoKSB7ICsrbV9jdXJy
ZW50OyByZXR1cm4gY3VycmVudCgpOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBWZWN0b3I8
VmFsdWUsIDE2PiBtX3ZhbHVlczsKICAgICAgICAgdW5zaWduZWQgbV9jdXJyZW50OwpAQCAtMTAx
LDE2ICsxMDUsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIH5GdW5jdGlvbigp
IHsgZGVsZXRlIGFyZ3M7IH0KICAgICB9OwotICAgIAotICAgIGNsYXNzIENTU1BhcnNlcgotICAg
IHsKKworICAgIGNsYXNzIENTU1BhcnNlciB7CiAgICAgcHVibGljOgogICAgICAgICBDU1NQYXJz
ZXIoYm9vbCBzdHJpY3RQYXJzaW5nID0gdHJ1ZSk7CiAgICAgICAgIH5DU1NQYXJzZXIoKTsKIAog
ICAgICAgICB2b2lkIHBhcnNlU2hlZXQoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYpOwog
ICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGU+IHBhcnNlUnVsZShDU1NTdHlsZVNoZWV0KiwgY29u
c3QgU3RyaW5nJik7Ci0gICAgICAgIGJvb2wgcGFyc2VWYWx1ZShDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiosIGludCBpZCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQpOworICAgICAg
ICBib29sIHBhcnNlVmFsdWUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBpbnQgcHJvcElk
LCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCk7CiAgICAgICAgIHN0YXRpYyBSR0JBMzIg
cGFyc2VDb2xvcihjb25zdCBTdHJpbmcmLCBib29sIHN0cmljdCA9IGZhbHNlKTsKICAgICAgICAg
Ym9vbCBwYXJzZUNvbG9yKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgU3RyaW5n
Jik7CiAgICAgICAgIGJvb2wgcGFyc2VEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbiosIGNvbnN0IFN0cmluZyYpOwpAQCAtMTMyLDI4ICsxMzUsMzMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBDU1NWYWx1ZSogcGFyc2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAg
ICAgQ1NTVmFsdWUqIHBhcnNlQmFja2dyb3VuZEltYWdlKCk7CiAgICAgICAgIENTU1ZhbHVlKiBw
YXJzZUJhY2tncm91bmRQb3NpdGlvblhZKGJvb2wmIHhGb3VuZCwgYm9vbCYgeUZvdW5kKTsKLSAg
ICAgICAgdm9pZCBwYXJzZUJhY2tncm91bmRQb3NpdGlvbihDU1NWYWx1ZSomIHZhbHVlMSwgQ1NT
VmFsdWUqJiB2YWx1ZTIpOworICAgICAgICB2b2lkIHBhcnNlQmFja2dyb3VuZFBvc2l0aW9uKENT
U1ZhbHVlKiYsIENTU1ZhbHVlKiYpOwogICAgICAgICBDU1NWYWx1ZSogcGFyc2VCYWNrZ3JvdW5k
U2l6ZSgpOwogICAgICAgICAKLSAgICAgICAgYm9vbCBwYXJzZUJhY2tncm91bmRQcm9wZXJ0eShp
bnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgQ1NTVmFsdWUqJiByZXRWYWx1
ZTEsIENTU1ZhbHVlKiYgcmV0VmFsdWUyKTsKKyAgICAgICAgYm9vbCBwYXJzZUJhY2tncm91bmRQ
cm9wZXJ0eShpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgQ1NTVmFsdWUq
JiwgQ1NTVmFsdWUqJik7CiAgICAgICAgIGJvb2wgcGFyc2VCYWNrZ3JvdW5kU2hvcnRoYW5kKGJv
b2wgaW1wb3J0YW50KTsKIAogICAgICAgICB2b2lkIGFkZEJhY2tncm91bmRWYWx1ZShDU1NWYWx1
ZSomIGx2YWwsIENTU1ZhbHVlKiBydmFsKTsKLSAgICAgIAorCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgICAgICBib29sIHBhcnNlRGFzaGJvYXJkUmVnaW9ucyhpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCk7CiAjZW5kaWYKIAogICAgICAgICBib29sIHBhcnNlU2hhcGUoaW50IHByb3BJZCwgYm9v
bCBpbXBvcnRhbnQpOworCiAgICAgICAgIGJvb2wgcGFyc2VGb250KGJvb2wgaW1wb3J0YW50KTsK
LSAgICAgICAgYm9vbCBwYXJzZUNvdW50ZXIoaW50IHByb3BJZCwgaW50IGRlZmF1bHRWYWx1ZSwg
Ym9vbCBpbXBvcnRhbnQpOwogICAgICAgICBDU1NWYWx1ZUxpc3QqIHBhcnNlRm9udEZhbWlseSgp
OworCisgICAgICAgIGJvb2wgcGFyc2VDb3VudGVyKGludCBwcm9wSWQsIGludCBkZWZhdWx0VmFs
dWUsIGJvb2wgaW1wb3J0YW50KTsKKyAgICAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VD
b3VudGVyQ29udGVudChWYWx1ZUxpc3QqIGFyZ3MsIGJvb2wgY291bnRlcnMpOworCiAgICAgICAg
IGJvb2wgcGFyc2VDb2xvclBhcmFtZXRlcnMoVmFsdWUqLCBpbnQqIGNvbG9yVmFsdWVzLCBib29s
IHBhcnNlQWxwaGEpOwogICAgICAgICBib29sIHBhcnNlSFNMUGFyYW1ldGVycyhWYWx1ZSosIGRv
dWJsZSogY29sb3JWYWx1ZXMsIGJvb2wgcGFyc2VBbHBoYSk7CiAgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwYXJzZUNvbG9yKFZhbHVlKiA9IDApOwogICAgICAgICBib29sIHBhcnNlQ29sb3JG
cm9tVmFsdWUoVmFsdWUqLCBSR0JBMzImLCBib29sID0gZmFsc2UpOwotICAgICAgICBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBwYXJzZUNvdW50ZXJDb250ZW50KFZhbHVlTGlzdCogYXJncywgYm9vbCBj
b3VudGVycyk7Ci0gICAgICAgIAorCisgICAgICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoY29u
c3QgU3RyaW5nJiwgUkdCQTMyJiByZ2IsIGJvb2wgc3RyaWN0KTsKKwogI2lmZGVmIFNWR19TVVBQ
T1JUCiAgICAgICAgIGJvb2wgcGFyc2VTVkdWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFu
dCk7CiAgICAgICAgIENTU1ZhbHVlKiBwYXJzZVNWR1BhaW50KCk7CkBAIC0xNjEsOCArMTY5LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDU1NWYWx1ZSogcGFyc2VTVkdTdHJva2VE
YXNoYXJyYXkoKTsKICNlbmRpZgogCi0gICAgICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoY29u
c3QgU3RyaW5nJiwgUkdCQTMyJiByZ2IsIGJvb2wgc3RyaWN0KTsKLQogICAgICAgICAvLyBDU1Mz
IFBhcnNpbmcgUm91dGluZXMgKGZvciBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIENTUzMpCiAgICAg
ICAgIGJvb2wgcGFyc2VTaGFkb3coaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAg
ICBib29sIHBhcnNlQm9yZGVySW1hZ2UoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwpAQCAt
MjA1LDcgKzIxMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ1NTUHJvcGVydHkq
KiBwYXJzZWRQcm9wZXJ0aWVzOwogICAgICAgICBpbnQgbnVtUGFyc2VkUHJvcGVydGllczsKICAg
ICAgICAgaW50IG1heFBhcnNlZFByb3BlcnRpZXM7Ci0gICAgICAgIAorCiAgICAgICAgIGludCBt
X2luUGFyc2VTaG9ydGhhbmQ7CiAgICAgICAgIGludCBtX2N1cnJlbnRTaG9ydGhhbmQ7CiAgICAg
ICAgIGJvb2wgbV9pbXBsaWNpdFNob3J0aGFuZDsKQEAgLTI2MywxMSArMjY5LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgfTsKIAogICAgICAgICBmcmllbmQgaW5saW5lIFVuaXRz
IG9wZXJhdG9yfChVbml0cyBhLCBVbml0cyBiKQotICAgICAgICAgICAgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VW5pdHM+KHN0YXRpY19jYXN0PHVuc2lnbmVkPihhKSB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihiKSk7IH0KKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVu
aXRzPihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYSkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYikp
OworICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgdmFsaWRVbml0KFZhbHVlKiwgVW5p
dHMsIGJvb2wgc3RyaWN0KTsKICAgICB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBjc3NwYXJzZXJfaAo=
</data>
<flag name="review"
          id="4657"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12419</attachid>
            <date>2007-01-13 12:18:59 -0800</date>
            <delta_ts>2007-01-13 14:50:46 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>cssCleanup2.diff</filename>
            <type>text/plain</type>
            <size>222870</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTM5IEBACisyMDA3LTAxLTEzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2gg
Zm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjI4CisgICAgICAg
IENsZWFudXAgYXNzb3J0ZWQgQ1NTIGNsYXNzZXMKKworICAgICAgICAqIGNzcy9DU1NCb3JkZXJJ
bWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0JvcmRlckltYWdlVmFsdWU6OkNT
U0JvcmRlckltYWdlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQm9yZGVySW1hZ2VWYWx1
ZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yQm9yZGVyU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JUZXh0QWxpZ24pOgorICAgICAgICAoV2Vi
Q29yZTo6dmFsdWVGb3JTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UG9zaXRpb25PZmZz
ZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OmNzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6cHJpbWl0aXZlVmFsdWVGcm9tTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVy
dHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5UHJpb3JpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6aXRlbSk6CisgICAgICAgICogY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OkNTU0N1cnNv
ckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU0dyYW1tYXIueToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6
CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW5oZXJp
dGVkVmFsdWUuY3BwOgorICAgICAgICAqIGNzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oOgorICAgICAg
ICAqIGNzcy9DU1NJbml0aWFsVmFsdWUuY3BwOgorICAgICAgICAqIGNzcy9DU1NJbml0aWFsVmFs
dWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmdldDRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmdldFNob3J0aGFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlQcmlvcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlTaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmlzUHJvcGVydHlJbXBsaWNpdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldEltYWdlUHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnBhcnNlRGVjbGFyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmFkZFBh
cnNlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OnNldExlbmd0aFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjptZXJnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydGllc0luU2V0KToKKyAgICAgICAgKiBjc3MvQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NO
YW1lc3BhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU05hbWVzcGFjZTo6Q1NTTmFtZXNwYWNl
KToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Y29tcHV0ZUxlbmd0aEludCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aFNob3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6OnNldEZsb2F0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6c2NhbGVG
YWN0b3JGb3JDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpnZXRGbG9hdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpz
ZXRTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0
U3RyaW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OnBhcnNl
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRJZGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpnZXRSZWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmdldFJHQkNvbG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmdldFBhaXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
Z2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVy
dHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpvcGVyYXRvcj0pOgorICAgICAg
ICAqIGNzcy9DU1NRdWlya1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NR
dWlya1ByaW1pdGl2ZVZhbHVlOjpDU1NRdWlya1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTUnVsZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZUxpc3Q6OkNTU1J1
bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVMaXN0OjpkZWxldGVSdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1J1bGVMaXN0OjppbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3Mv
Q1NTUnVsZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVMaXN0OjppdGVtKToKKyAg
ICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OnByaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6On5DU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTZWxlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpu
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9UeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpoYXNUYWcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2VsZWN0b3I6Omhhc0F0dHJpYnV0ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5U2hvcnRoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OmlzUHJvcGVydHlJbXBsaWNpdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uOjppc1Byb3BlcnR5TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uOjpwYXJlbnRSdWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OmRpZmYpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3BlcnRpZXNJblNldCk6CisgICAgICAgICogY3Nz
L0NTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ291bnRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q291bnRlcjo6Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVy
OjpsaXN0U3R5bGVOdW1iZXIpOgorICAgICAgICAqIGNzcy9jc3NoZWxwZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VVUkwpOgorICAgICAgICAqIGNzcy9jc3NoZWxwZXIuaDoKKyAgICAg
ICAgKiBjc3MvY3NzcGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpkb21TdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6YXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6b3BlcmF0b3J8KToKKyAgICAgICAgKiBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzRm9yTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUnVsZVNldDo6YWRkUnVsZSk6CisKIDIwMDctMDEtMTMgIE1hcnRpbiBSZWRk
eSAgPHJlZGR5QHBpeGFyLmNvbT4KIAogICAgICAgICBGaXggZm9yIGJ1ZyAxMTkyNDogV2ViQ29y
ZSB3b3VsZCBjcmFzaCBvbiBhbnkgSFRNTCBjb250ZW50CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NC
b3JkZXJJbWFnZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NCb3JkZXJJ
bWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3JlL2Nzcy9DU1NCb3JkZXJJ
bWFnZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksNyBAQAogICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw
LAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlVmFsdWUuaCIKIApAQCAtMjgsOCArMjksNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNTU0JvcmRlckltYWdlVmFsdWU6OkNTU0JvcmRl
ckltYWdlVmFsdWUoUGFzc1JlZlB0cjxDU1NJbWFnZVZhbHVlPiBpbWFnZSwKLSAgICBQYXNzUmVm
UHRyPFJlY3RJbXBsPiBpbWFnZVJlY3QsIGludCBob3Jpem9udGFsUnVsZSwgaW50IHZlcnRpY2Fs
UnVsZSkKK0NTU0JvcmRlckltYWdlVmFsdWU6OkNTU0JvcmRlckltYWdlVmFsdWUoUGFzc1JlZlB0
cjxDU1NJbWFnZVZhbHVlPiBpbWFnZSwgUGFzc1JlZlB0cjxSZWN0SW1wbD4gaW1hZ2VSZWN0LCBp
bnQgaG9yaXpvbnRhbFJ1bGUsIGludCB2ZXJ0aWNhbFJ1bGUpCiAgICAgOiBtX2ltYWdlKGltYWdl
KQogICAgICwgbV9pbWFnZVNsaWNlUmVjdChpbWFnZVJlY3QpCiAgICAgLCBtX2hvcml6b250YWxT
aXplUnVsZShob3Jpem9udGFsUnVsZSkKQEAgLTQyLDcgKzQyLDcgQEAgU3RyaW5nIENTU0JvcmRl
ckltYWdlVmFsdWU6OmNzc1RleHQoKSBjbwogICAgIC8vIEltYWdlIGZpcnN0LgogICAgIFN0cmlu
ZyB0ZXh0KG1faW1hZ2UtPmNzc1RleHQoKSk7CiAgICAgdGV4dCArPSAiICI7Ci0gICAgCisKICAg
ICAvLyBOb3cgdGhlIHJlY3QsIGJ1dCBpdCBpc24ndCByZWFsbHkgYSByZWN0LCBzbyB3ZSBkdW1w
IG1hbnVhbGx5CiAgICAgdGV4dCArPSBtX2ltYWdlU2xpY2VSZWN0LT50b3AoKS0+Y3NzVGV4dCgp
OwogICAgIHRleHQgKz0gIiAiOwpAQCAtNTEsNyArNTEsNyBAQCBTdHJpbmcgQ1NTQm9yZGVySW1h
Z2VWYWx1ZTo6Y3NzVGV4dCgpIGNvCiAgICAgdGV4dCArPSBtX2ltYWdlU2xpY2VSZWN0LT5ib3R0
b20oKS0+Y3NzVGV4dCgpOwogICAgIHRleHQgKz0gIiAiOwogICAgIHRleHQgKz0gbV9pbWFnZVNs
aWNlUmVjdC0+bGVmdCgpLT5jc3NUZXh0KCk7Ci0gICAgCisKICAgICAvLyBOb3cgdGhlIGtleXdv
cmRzLgogICAgIHRleHQgKz0gIiAiOwogICAgIHRleHQgKz0gQ1NTUHJpbWl0aXZlVmFsdWUobV9o
b3Jpem9udGFsU2l6ZVJ1bGUpLmNzc1RleHQoKTsKQEAgLTYxLDQgKzYxLDQgQEAgU3RyaW5nIENT
U0JvcmRlckltYWdlVmFsdWU6OmNzc1RleHQoKSBjbwogICAgIHJldHVybiB0ZXh0OwogfQogCi19
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFn
ZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5o
CShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3
LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NCb3JkZXJJbWFnZVZhbHVlX0gKLSNkZWZpbmUgQ1NT
Qm9yZGVySW1hZ2VWYWx1ZV9ICisjaWZuZGVmIENTU0JvcmRlckltYWdlVmFsdWVfaAorI2RlZmlu
ZSBDU1NCb3JkZXJJbWFnZVZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTMyLDggKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ1NTSW1hZ2VWYWx1ZTsKIGNsYXNzIFJlY3RJbXBsOwogCi1jbGFzcyBDU1NCb3Jk
ZXJJbWFnZVZhbHVlIDogcHVibGljIENTU1ZhbHVlCi17CitjbGFzcyBDU1NCb3JkZXJJbWFnZVZh
bHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKICAgICBDU1NCb3JkZXJJbWFnZVZhbHVl
KCk7CiAgICAgQ1NTQm9yZGVySW1hZ2VWYWx1ZShQYXNzUmVmUHRyPENTU0ltYWdlVmFsdWU+LCBQ
YXNzUmVmUHRyPFJlY3RJbXBsPiwgaW50IGhvcml6b250YWxSdWxlLCBpbnQgdmVydGljYWxSdWxl
KTsKQEAgLTQ3LDEyICs0NiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgZm91ciB2YWx1ZXMg
YXJlIHVzZWQgdG8gbWFrZSAiY3V0cyIgaW4gdGhlIGltYWdlLiAgVGhleSBjYW4gYmUgbnVtYmVy
cwogICAgIC8vIG9yIHBlcmNlbnRhZ2VzLgogICAgIFJlZlB0cjxSZWN0SW1wbD4gbV9pbWFnZVNs
aWNlUmVjdDsKLSAgICAKKwogICAgIC8vIFZhbHVlcyBmb3IgaG93IHRvIGhhbmRsZSB0aGUgc2Nh
bGluZy9zdHJldGNoaW5nL3RpbGluZyBvZiB0aGUgaW1hZ2Ugc2xpY2VzLgogICAgIGludCBtX2hv
cml6b250YWxTaXplUnVsZTsgLy8gUnVsZSBmb3IgaG93IHRvIGFkanVzdCB0aGUgd2lkdGhzIG9m
IHRoZSB0b3AvbWlkZGxlL2JvdHRvbQogICAgIGludCBtX3ZlcnRpY2FsU2l6ZVJ1bGU7IC8vIFJ1
bGUgZm9yIGhvdyB0byBhZGp1c3QgdGhlIGhlaWdodHMgb2YgdGhlIGxlZnQvbWlkZGxlL3JpZ2h0
CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYK
KyNlbmRpZiAvLyBDU1NCb3JkZXJJbWFnZVZhbHVlX2gKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNCBAQAogLyoqCi0gKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCiAgKgog
ICogQ29weXJpZ2h0IChDKSAyMDA0IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KICAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgpAQCAtMjMsMTUg
KzIyLDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmgiCiAKLSNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIkRh
c2hib2FyZFJlZ2lvbi5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5j
bHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5o
IgorI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiRGFzaGJvYXJkUmVnaW9uLmgi
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNoYWRv
d1ZhbHVlLmgiCkBAIC0xODIsMTEgKzE4MSwxMCBAQCBzdGF0aWMgQ1NTVmFsdWUqIHZhbHVlRm9y
TGVuZ3RoKGNvbnN0IExlCiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KGxlbmd0aC5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7CiAg
ICAgICAgIGNhc2UgUmVsYXRpdmU6CiAgICAgICAgIGNhc2UgU3RhdGljOgotICAgICAgICAgICAg
Ly8gU2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuCiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgLy8gU2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQsIGJ1dCBpZiB3ZSBkbywganVzdCByZXR1cm4g
ImF1dG8iLgotICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogLy8gSGFuZGxl
cyBzcGVjaWFsIHZhbHVlIGZvciAibm9uZSIuCkBAIC0xOTcsNyArMTk1LDcgQEAgc3RhdGljIENT
U1ZhbHVlKiB2YWx1ZUZvck1heExlbmd0aChjb25zdAogICAgIHJldHVybiB2YWx1ZUZvckxlbmd0
aChsZW5ndGgpOwogfQogCi1zdGF0aWMgQ1NTVmFsdWUgKnZhbHVlRm9yQm9yZGVyU3R5bGUoRUJv
cmRlclN0eWxlIHN0eWxlKQorc3RhdGljIENTU1ZhbHVlKiB2YWx1ZUZvckJvcmRlclN0eWxlKEVC
b3JkZXJTdHlsZSBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKHN0eWxlKSB7CiAgICAgICAgIGNhc2Ug
Qk5PTkU6CkBAIC0yMjUsNyArMjIzLDcgQEAgc3RhdGljIENTU1ZhbHVlICp2YWx1ZUZvckJvcmRl
clN0eWxlKEVCbwogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgQ1NTVmFsdWUgKnZhbHVlRm9y
VGV4dEFsaWduKEVUZXh0QWxpZ24gYWxpZ24pCitzdGF0aWMgQ1NTVmFsdWUqIHZhbHVlRm9yVGV4
dEFsaWduKEVUZXh0QWxpZ24gYWxpZ24pCiB7CiAgICAgc3dpdGNoIChhbGlnbikgewogICAgICAg
ICBjYXNlIFRBQVVUTzoKQEAgLTI1Myw2ICsyNTEsNyBAQCBzdGF0aWMgQ1NTVmFsdWUqIHZhbHVl
Rm9yU2hhZG93KGNvbnN0IFNoCiB7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKKwogICAgIENTU1ZhbHVlTGlzdCog
bGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3Q7CiAgICAgZm9yIChjb25zdCBTaGFkb3dEYXRhKiBzID0g
c2hhZG93OyBzOyBzID0gcy0+bmV4dCkgewogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogeCA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzLT54LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsK
QEAgLTI2NCw0MiArMjYzLDQyIEBAIHN0YXRpYyBDU1NWYWx1ZSogdmFsdWVGb3JTaGFkb3coY29u
c3QgU2gKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIENTU1ZhbHVlICpnZXRQb3NpdGlv
bk9mZnNldFZhbHVlKFJlbmRlck9iamVjdCAqcmVuZGVyZXIsIGludCBwcm9wZXJ0eUlEKQorc3Rh
dGljIENTU1ZhbHVlKiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIsIGludCBwcm9wZXJ0eUlEKQogewogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgUmVuZGVyU3R5bGUgKnN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CisgICAg
UmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgaWYgKCFzdHlsZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBMZW5ndGggbDsKICAgICBzd2l0Y2ggKHByb3BlcnR5
SUQpIHsKLSAgICBjYXNlIENTU19QUk9QX0xFRlQ6Ci0gICAgICAgIGwgPSBzdHlsZS0+bGVmdCgp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU19QUk9QX1JJR0hUOgotICAgICAgICBsID0g
c3R5bGUtPnJpZ2h0KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfVE9QOgot
ICAgICAgICBsID0gc3R5bGUtPnRvcCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU19Q
Uk9QX0JPVFRPTToKLSAgICAgICAgbCA9IHN0eWxlLT5ib3R0b20oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1Bf
TEVGVDoKKyAgICAgICAgICAgIGwgPSBzdHlsZS0+bGVmdCgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ1NTX1BST1BfUklHSFQ6CisgICAgICAgICAgICBsID0gc3R5bGUtPnJp
Z2h0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9UT1A6Cisg
ICAgICAgICAgICBsID0gc3R5bGUtPnRvcCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ1NTX1BST1BfQk9UVE9NOgorICAgICAgICAgICAgbCA9IHN0eWxlLT5ib3R0b20oKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCiAgICAgaWYgKHJlbmRlcmVyLT5pc1Bvc2l0aW9uZWQoKSkKICAgICAgICAg
cmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGwpOwotICAgIAorCiAgICAgaWYgKHJlbmRlcmVyLT5pc1Jl
bFBvc2l0aW9uZWQoKSkKICAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGVub3VnaCB0byBzaW1w
bHkgcmV0dXJuICJhdXRvIiB2YWx1ZXMgZm9yIG9uZSBvZmZzZXQgaWYgdGhlIG90aGVyIHNpZGUg
aXMgZGVmaW5lZC4KICAgICAgICAgLy8gSW4gb3RoZXIgd29yZHMgaWYgbGVmdCBpcyBhdXRvIGFu
ZCByaWdodCBpcyBub3QgYXV0bywgdGhlbiBsZWZ0J3MgY29tcHV0ZWQgdmFsdWUgaXMgbmVnYXRp
dmUgcmlnaHQuCiAgICAgICAgIC8vIFNvIHdlIHNob3VsZCBnZXQgdGhlIG9wcG9zaXRlIGxlbmd0
aCB1bml0IGFuZCBzZWUgaWYgaXQgaXMgYXV0by4KICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVu
Z3RoKGwpOwotICAgIAorCiAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0FVVE8pOwogfQogCkBAIC0zMjIsMTYgKzMyMSwxNiBAQCBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246On5DU1NDb21wdXRlCiBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpj
c3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0KCIiKTsKLSAgICAKKwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Db21wdXRlZFByb3BlcnRpZXM7IGkrKykgewotICAg
ICAgICBpZiAoaSAhPSAwKQorICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIHJlc3VsdCArPSAi
ICI7CiAgICAgICAgIHJlc3VsdCArPSBnZXRQcm9wZXJ0eU5hbWUoY29tcHV0ZWRQcm9wZXJ0aWVz
W2ldKTsKICAgICAgICAgcmVzdWx0ICs9ICI6ICI7CiAgICAgICAgIHJlc3VsdCArPSBnZXRQcm9w
ZXJ0eVZhbHVlKGNvbXB1dGVkUHJvcGVydGllc1tpXSk7CiAgICAgICAgIHJlc3VsdCArPSAiOyI7
CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzU1LDEyICszNTQs
MTkgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlRnJvbUxlbmd0aChMZW5ndGggbGVuZ3RoLCBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgU3RyaW5nIHN0cmlu
ZzsKLSAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQotICAgICAgICBzdHJpbmcgPSBudW1iZXJB
c1N0cmluZyhsZW5ndGgucGVyY2VudCgpKSArICIlIjsKLSAgICBlbHNlIGlmIChsZW5ndGguaXNG
aXhlZCgpKQotICAgICAgICBzdHJpbmcgPSBudW1iZXJBc1N0cmluZyhsZW5ndGguY2FsY01pblZh
bHVlKDApKTsKLSAgICBlbHNlIGlmIChsZW5ndGguaXNBdXRvKCkpCi0gICAgICAgIHN0cmluZyA9
ICJhdXRvIjsKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBQZXJj
ZW50OgorICAgICAgICAgICAgc3RyaW5nID0gbnVtYmVyQXNTdHJpbmcobGVuZ3RoLnBlcmNlbnQo
KSkgKyAiJSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaXhlZDoKKyAgICAg
ICAgICAgIHN0cmluZyA9IG51bWJlckFzU3RyaW5nKGxlbmd0aC5jYWxjTWluVmFsdWUoMCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXV0bzoKKyAgICAgICAgICAgIHN0cmlu
ZyA9ICJhdXRvIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3Ry
aW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiB9CiAKQEAgLTM3OCwxMDk1ICsz
ODQsMTA2OSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5k
ZXJlcikKICAgICAgICAgcmV0dXJuIDA7CisKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5k
ZXJlci0+c3R5bGUoKTsKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IHN3aXRjaCAocHJvcGVydHlJRCkKLSAgICB7Ci0gICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5E
X0NPTE9SOgotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5iYWNr
Z3JvdW5kQ29sb3IoKS5yZ2IoKSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX0lNQUdF
OgotICAgICAgICBpZiAoc3R5bGUtPmJhY2tncm91bmRJbWFnZSgpKQotICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+YmFja2dyb3VuZEltYWdlKCktPnVybCgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQkFD
S0dST1VORF9TSVpFOiB7Ci0gICAgICAgIExlbmd0aCB3aWR0aExlbmd0aCA9IHN0eWxlLT5iYWNr
Z3JvdW5kU2l6ZSgpLndpZHRoOwotICAgICAgICBMZW5ndGggaGVpZ2h0TGVuZ3RoID0gc3R5bGUt
PmJhY2tncm91bmRTaXplKCkuaGVpZ2h0OwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogYmdX
aWR0aCA9IHByaW1pdGl2ZVZhbHVlRnJvbUxlbmd0aCh3aWR0aExlbmd0aCwgcmVuZGVyZXIsIHN0
eWxlKTsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJnSGVpZ2h0ID0gcHJpbWl0aXZlVmFs
dWVGcm9tTGVuZ3RoKGhlaWdodExlbmd0aCwgcmVuZGVyZXIsIHN0eWxlKTsKLSAgICAgICAgUGFp
ciogcGFpciA9IG5ldyBQYWlyKGJnV2lkdGgsIGJnSGVpZ2h0KTsKLSAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShwYWlyKTsKLSAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9CQUNL
R1JPVU5EX1JFUEVBVDoKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+YmFja2dyb3VuZFJlcGVhdCgp
KSB7Ci0gICAgICAgICAgICBjYXNlIFJFUEVBVDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUkVQRUFUKTsKLSAgICAgICAgICAgIGNhc2UgUkVQ
RUFUX1g6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX1JFUEVBVF9YKTsKLSAgICAgICAgICAgIGNhc2UgUkVQRUFUX1k6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JFUEVBVF9ZKTsKLSAgICAg
ICAgICAgIGNhc2UgTk9fUkVQRUFUOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT19SRVBFQVQpOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENTU19QUk9QX19X
RUJLSVRfQkFDS0dST1VORF9DT01QT1NJVEU6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPmJhY2tn
cm91bmRDb21wb3NpdGUoKSkgewotICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVDbGVhcjoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ0xFQVIp
OwotICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVDb3B5OgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT1BZKTsKLSAgICAgICAgICAgIGNhc2Ug
Q29tcG9zaXRlU291cmNlT3ZlcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfU09VUkNFX09WRVIpOwotICAgICAgICAgICAgY2FzZSBDb21wb3Np
dGVTb3VyY2VJbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfU09VUkNFX0lOKTsKLSAgICAgICAgICAgIGNhc2UgQ29tcG9zaXRlU291cmNlT3V0
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9T
T1VSQ0VfT1VUKTsKLSAgICAgICAgICAgIGNhc2UgQ29tcG9zaXRlU291cmNlQXRvcDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU09VUkNFX0FU
T1ApOwotICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXI6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RFU1RJTkFUSU9O
X09WRVIpOwotICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbkluOgotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERVNUSU5BVElP
Tl9JTik7Ci0gICAgICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OgotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERVNUSU5BVElP
Tl9PVVQpOwotICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbkF0b3A6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RFU1RJTkFU
SU9OX0FUT1ApOwotICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVYT1I6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1hPUik7Ci0gICAgICAgICAg
ICBjYXNlIENvbXBvc2l0ZVBsdXNEYXJrZXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BMVVNfREFSS0VSKTsKLSAgICAgICAgICAgIGNhc2Ug
Q29tcG9zaXRlSGlnaGxpZ2h0OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9ISUdITElHSFQpOwotICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVQ
bHVzTGlnaHRlcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfUExVU19MSUdIVEVSKTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsKKyAgICAg
ICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX0NPTE9SOgorICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+YmFja2dyb3VuZENvbG9yKCkucmdiKCkpOworICAg
ICAgICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkRfSU1BR0U6CisgICAgICAgICAgICBpZiAoc3R5
bGUtPmJhY2tncm91bmRJbWFnZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoc3R5bGUtPmJhY2tncm91bmRJbWFnZSgpLT51cmwoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19VUkkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX05PTkUpOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQkFDS0dST1VO
RF9TSVpFOiB7CisgICAgICAgICAgICBMZW5ndGggd2lkdGhMZW5ndGggPSBzdHlsZS0+YmFja2dy
b3VuZFNpemUoKS53aWR0aDsKKyAgICAgICAgICAgIExlbmd0aCBoZWlnaHRMZW5ndGggPSBzdHls
ZS0+YmFja2dyb3VuZFNpemUoKS5oZWlnaHQ7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogYmdXaWR0aCA9IHByaW1pdGl2ZVZhbHVlRnJvbUxlbmd0aCh3aWR0aExlbmd0aCwgcmVuZGVy
ZXIsIHN0eWxlKTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBiZ0hlaWdodCA9IHBy
aW1pdGl2ZVZhbHVlRnJvbUxlbmd0aChoZWlnaHRMZW5ndGgsIHJlbmRlcmVyLCBzdHlsZSk7Cisg
ICAgICAgICAgICBQYWlyKiBwYWlyID0gbmV3IFBhaXIoYmdXaWR0aCwgYmdIZWlnaHQpOworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShwYWlyKTsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkRfUkVQRUFUOgorICAgICAgICAgICAgc3dp
dGNoIChzdHlsZS0+YmFja2dyb3VuZFJlcGVhdCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBS
RVBFQVQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9SRVBFQVQpOworICAgICAgICAgICAgICAgIGNhc2UgUkVQRUFUX1g6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRVBFQVRf
WCk7CisgICAgICAgICAgICAgICAgY2FzZSBSRVBFQVRfWToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JFUEVBVF9ZKTsKKyAgICAgICAg
ICAgICAgICBjYXNlIE5PX1JFUEVBVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PX1JFUEVBVCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQkFDS0dST1VORF9DT01QT1NJVEU6CisgICAgICAg
ICAgICBzd2l0Y2ggKHN0eWxlLT5iYWNrZ3JvdW5kQ29tcG9zaXRlKCkpIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIENvbXBvc2l0ZUNsZWFyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ0xFQVIpOworICAgICAgICAgICAgICAgIGNhc2Ug
Q29tcG9zaXRlQ29weToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0NPUFkpOworICAgICAgICAgICAgICAgIGNhc2UgQ29tcG9zaXRlU291
cmNlT3ZlcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1NPVVJDRV9PVkVSKTsKKyAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZVNv
dXJjZUluOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfU09VUkNFX0lOKTsKKyAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJj
ZU91dDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX1NPVVJDRV9PVVQpOworICAgICAgICAgICAgICAgIGNhc2UgQ29tcG9zaXRlU291cmNl
QXRvcDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX1NPVVJDRV9BVE9QKTsKKyAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3ZlcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0RFU1RJTkFUSU9OX09WRVIpOworICAgICAgICAgICAgICAgIGNhc2UgQ29t
cG9zaXRlRGVzdGluYXRpb25JbjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0RFU1RJTkFUSU9OX0lOKTsKKyAgICAgICAgICAgICAgICBj
YXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREVTVElOQVRJT05fT1VUKTsKKyAgICAgICAg
ICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uQXRvcDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RFU1RJTkFUSU9OX0FUT1Ap
OworICAgICAgICAgICAgICAgIGNhc2UgQ29tcG9zaXRlWE9SOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfWE9SKTsKKyAgICAgICAgICAg
ICAgICBjYXNlIENvbXBvc2l0ZVBsdXNEYXJrZXI6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QTFVTX0RBUktFUik7CisgICAgICAgICAg
ICAgICAgY2FzZSBDb21wb3NpdGVIaWdobGlnaHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ISUdITElHSFQpOworICAgICAgICAgICAg
ICAgIGNhc2UgQ29tcG9zaXRlUGx1c0xpZ2h0ZXI6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QTFVTX0xJR0hURVIpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX0FUVEFDSE1FTlQ6CisgICAg
ICAgICAgICBpZiAoc3R5bGUtPmJhY2tncm91bmRBdHRhY2htZW50KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NDUk9MTCk7CisgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRklYRUQpOworICAgICAg
ICBjYXNlIENTU19QUk9QX19XRUJLSVRfQkFDS0dST1VORF9DTElQOgorICAgICAgICBjYXNlIENT
U19QUk9QX19XRUJLSVRfQkFDS0dST1VORF9PUklHSU46IHsKKyAgICAgICAgICAgIEVCYWNrZ3Jv
dW5kQm94IGJveCA9IChwcm9wZXJ0eUlEID09IENTU19QUk9QX19XRUJLSVRfQkFDS0dST1VORF9D
TElQID8gc3R5bGUtPmJhY2tncm91bmRDbGlwKCkgOiBzdHlsZS0+YmFja2dyb3VuZE9yaWdpbigp
KTsKKyAgICAgICAgICAgIHN3aXRjaCAoYm94KSB7CisgICAgICAgICAgICAgICAgY2FzZSBCR0JP
UkRFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0JPUkRFUik7CisgICAgICAgICAgICAgICAgY2FzZSBCR1BBRERJTkc6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QQURESU5H
KTsKKyAgICAgICAgICAgICAgICBjYXNlIEJHQ09OVEVOVDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTlRFTlQpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX0FUVEFDSE1FTlQ6Ci0gICAg
ICAgIGlmIChzdHlsZS0+YmFja2dyb3VuZEF0dGFjaG1lbnQoKSkKLSAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TQ1JPTEwpOwotICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRklYRUQpOwotICAgIGNhc2UgQ1NTX1BST1Bf
X1dFQktJVF9CQUNLR1JPVU5EX0NMSVA6Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tH
Uk9VTkRfT1JJR0lOOiB7Ci0gICAgICAgIEVCYWNrZ3JvdW5kQm94IGJveCA9IChwcm9wZXJ0eUlE
ID09IENTU19QUk9QX19XRUJLSVRfQkFDS0dST1VORF9DTElQID8gc3R5bGUtPmJhY2tncm91bmRD
bGlwKCkgOiBzdHlsZS0+YmFja2dyb3VuZE9yaWdpbigpKTsKLSAgICAgICAgaWYgKGJveCA9PSBC
R0JPUkRFUikKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9CT1JERVIpOwotICAgICAgICBpZiAoYm94ID09IEJHUEFERElORykKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QQURESU5HKTsKLSAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTlRFTlQpOwotICAgIH0KLSAgICBj
YXNlIENTU19QUk9QX0JBQ0tHUk9VTkRfUE9TSVRJT046Ci0gICAgewotICAgICAgICBTdHJpbmcg
c3RyaW5nOwotICAgICAgICBMZW5ndGggbGVuZ3RoKHN0eWxlLT5iYWNrZ3JvdW5kWFBvc2l0aW9u
KCkpOwotICAgICAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQotICAgICAgICAgICAgc3RyaW5n
ID0gbnVtYmVyQXNTdHJpbmcobGVuZ3RoLnBlcmNlbnQoKSkgKyAiJSI7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHN0cmluZyA9IG51bWJlckFzU3RyaW5nKGxlbmd0aC5jYWxjTWluVmFsdWUo
cmVuZGVyZXItPmNvbnRlbnRXaWR0aCgpKSk7Ci0gICAgICAgIHN0cmluZyArPSAiICI7Ci0gICAg
ICAgIGxlbmd0aCA9IHN0eWxlLT5iYWNrZ3JvdW5kWVBvc2l0aW9uKCk7Ci0gICAgICAgIGlmIChs
ZW5ndGguaXNQZXJjZW50KCkpCi0gICAgICAgICAgICBzdHJpbmcgKz0gbnVtYmVyQXNTdHJpbmco
bGVuZ3RoLnBlcmNlbnQoKSkgKyAiJSI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0cmlu
ZyArPSBudW1iZXJBc1N0cmluZyhsZW5ndGguY2FsY01pblZhbHVlKHJlbmRlcmVyLT5jb250ZW50
V2lkdGgoKSkpOwotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0cmluZywg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgIH0KLSAgICBjYXNlIENTU19QUk9Q
X0JBQ0tHUk9VTkRfUE9TSVRJT05fWDoKLSAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0
eWxlLT5iYWNrZ3JvdW5kWFBvc2l0aW9uKCkpOwotICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VO
RF9QT1NJVElPTl9ZOgotICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPmJhY2tn
cm91bmRZUG9zaXRpb24oKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9QT1NJ
VElPTjogeworICAgICAgICAgICAgU3RyaW5nIHN0cmluZzsKKyAgICAgICAgICAgIExlbmd0aCBs
ZW5ndGgoc3R5bGUtPmJhY2tncm91bmRYUG9zaXRpb24oKSk7CisgICAgICAgICAgICBpZiAobGVu
Z3RoLmlzUGVyY2VudCgpKQorICAgICAgICAgICAgICAgIHN0cmluZyA9IG51bWJlckFzU3RyaW5n
KGxlbmd0aC5wZXJjZW50KCkpICsgIiUiOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHN0cmluZyA9IG51bWJlckFzU3RyaW5nKGxlbmd0aC5jYWxjTWluVmFsdWUocmVuZGVyZXIt
PmNvbnRlbnRXaWR0aCgpKSk7CisgICAgICAgICAgICBzdHJpbmcgKz0gIiAiOworICAgICAgICAg
ICAgbGVuZ3RoID0gc3R5bGUtPmJhY2tncm91bmRZUG9zaXRpb24oKTsKKyAgICAgICAgICAgIGlm
IChsZW5ndGguaXNQZXJjZW50KCkpCisgICAgICAgICAgICAgICAgc3RyaW5nICs9IG51bWJlckFz
U3RyaW5nKGxlbmd0aC5wZXJjZW50KCkpICsgIiUiOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHN0cmluZyArPSBudW1iZXJBc1N0cmluZyhsZW5ndGguY2FsY01pblZhbHVlKHJl
bmRlcmVyLT5jb250ZW50V2lkdGgoKSkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShzdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkRfUE9TSVRJT05fWDoKKyAgICAg
ICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+YmFja2dyb3VuZFhQb3NpdGlvbigp
KTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX1BPU0lUSU9OX1k6CisgICAgICAg
ICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPmJhY2tncm91bmRZUG9zaXRpb24oKSk7
CiAjaWZkZWYgWEJMX1NVUFBPUlQKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQklORElORzoK
LSAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKLSAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CSU5ESU5HOgorICAgICAgICAgICAgLy8gRklYTUU6IHVu
aW1wbGVtZW50ZWQKKyAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCi0gICAgY2FzZSBDU1NfUFJP
UF9CT1JERVJfQ09MTEFQU0U6Ci0gICAgICAgIGlmIChzdHlsZS0+Ym9yZGVyQ29sbGFwc2UoKSkK
LSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT0xMQVBT
RSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfQ09MTEFQU0U6
CisgICAgICAgICAgICBpZiAoc3R5bGUtPmJvcmRlckNvbGxhcHNlKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTExBUFNFKTsKICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TRVBBUkFURSk7Ci0g
ICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfU1BBQ0lORzoKLSAgICB7Ci0gICAgICAgIFN0cmluZyBz
dHJpbmcobnVtYmVyQXNTdHJpbmcoc3R5bGUtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkpICsg
InB4ICIgKyBudW1iZXJBc1N0cmluZyhzdHlsZS0+dmVydGljYWxCb3JkZXJTcGFjaW5nKCkpICsg
InB4Iik7Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3RyaW5nLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7Ci0gICAgfQotICAgIGNhc2UgQ1NTX1BST1BfX1dF
QktJVF9CT1JERVJfSE9SSVpPTlRBTF9TUEFDSU5HOgotICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHN0eWxlLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9SREVSX1ZFUlRJ
Q0FMX1NQQUNJTkc6Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUt
PnZlcnRpY2FsQm9yZGVyU3BhY2luZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAg
ICBjYXNlIENTU19QUk9QX0JPUkRFUl9UT1BfQ09MT1I6Ci0gICAgICAgIHJldHVybiBjdXJyZW50
Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN0eWxlLT5ib3JkZXJUb3BDb2xvcigpKTsKLSAgICBj
YXNlIENTU19QUk9QX0JPUkRFUl9SSUdIVF9DT0xPUjoKLSAgICAgICAgcmV0dXJuIGN1cnJlbnRD
b2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPmJvcmRlclJpZ2h0Q29sb3IoKSk7Ci0gICAg
Y2FzZSBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX0NPTE9SOgotICAgICAgICByZXR1cm4gY3VycmVu
dENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLCBzdHlsZS0+Ym9yZGVyQm90dG9tQ29sb3IoKSk7Ci0g
ICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfTEVGVF9DT0xPUjoKLSAgICAgICAgcmV0dXJuIGN1cnJl
bnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPmJvcmRlckxlZnRDb2xvcigpKTsKLSAg
ICBjYXNlIENTU19QUk9QX0JPUkRFUl9UT1BfU1RZTEU6Ci0gICAgICAgIHJldHVybiB2YWx1ZUZv
ckJvcmRlclN0eWxlKHN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpKTsKLSAgICBjYXNlIENTU19QUk9Q
X0JPUkRFUl9SSUdIVF9TVFlMRToKLSAgICAgICAgcmV0dXJuIHZhbHVlRm9yQm9yZGVyU3R5bGUo
c3R5bGUtPmJvcmRlclJpZ2h0U3R5bGUoKSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfQk9U
VE9NX1NUWUxFOgotICAgICAgICByZXR1cm4gdmFsdWVGb3JCb3JkZXJTdHlsZShzdHlsZS0+Ym9y
ZGVyQm90dG9tU3R5bGUoKSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfTEVGVF9TVFlMRToK
LSAgICAgICAgcmV0dXJuIHZhbHVlRm9yQm9yZGVyU3R5bGUoc3R5bGUtPmJvcmRlckxlZnRTdHls
ZSgpKTsKLSAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9UT1BfV0lEVEg6Ci0gICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX1JJR0hUX1dJRFRI
OgotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5ib3JkZXJSaWdo
dFdpZHRoKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgIGNhc2UgQ1NTX1BST1Bf
Qk9SREVSX0JPVFRPTV9XSURUSDoKLSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7
Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfTEVGVF9XSURUSDoKLSAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOwotICAgIGNhc2UgQ1NTX1BST1BfQk9UVE9NOgotICAgICAgICByZXR1
cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShyZW5kZXJlciwgQ1NTX1BST1BfQk9UVE9NKTsKLSAg
ICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX0FMSUdOOgotICAgICAgICBzd2l0Y2ggKHN0eWxl
LT5ib3hBbGlnbigpKSB7Ci0gICAgICAgICAgICBjYXNlIEJTVFJFVENIOgotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TVFJFVENIKTsKLSAgICAg
ICAgICAgIGNhc2UgQlNUQVJUOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9TVEFSVCk7Ci0gICAgICAgICAgICBjYXNlIEJDRU5URVI6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NFTlRFUik7
Ci0gICAgICAgICAgICBjYXNlIEJFTkQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0VORCk7Ci0gICAgICAgICAgICBjYXNlIEJCQVNFTElORToK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQkFT
RUxJTkUpOwotICAgICAgICAgICAgY2FzZSBCSlVTVElGWToKLSAgICAgICAgICAgICAgICBicmVh
azsgLy8gbm90IGFsbG93ZWQKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JPWF9ESVJF
Q1RJT046Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPmJveERpcmVjdGlvbigpKSB7Ci0gICAgICAg
ICAgICBjYXNlIEJOT1JNQUw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7Ci0gICAgICAgICAgICBjYXNlIEJSRVZFUlNFOgotICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRVZFUlNF
KTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JPWF9GTEVYOgotICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5ib3hGbGV4KCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKTsKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX0ZMRVhfR1JP
VVA6Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJveEZsZXhH
cm91cCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgY2FzZSBDU1NfUFJP
UF9fV0VCS0lUX0JPWF9MSU5FUzoKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+Ym94TGluZXMoKSkg
ewotICAgICAgICAgICAgY2FzZSBTSU5HTEU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NJTkdMRSk7Ci0gICAgICAgICAgICBjYXNlIE1VTFRJ
UExFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9NVUxUSVBMRSk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfT1JESU5BTF9H
Uk9VUDoKLSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Ym94T3Jk
aW5hbEdyb3VwKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSAgICBjYXNlIENT
U19QUk9QX19XRUJLSVRfQk9YX09SSUVOVDoKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+Ym94T3Jp
ZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgSE9SSVpPTlRBTDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSE9SSVpPTlRBTCk7Ci0gICAgICAg
ICAgICBjYXNlIFZFUlRJQ0FMOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9WRVJUSUNBTCk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJ
VF9CT1hfUEFDSzoKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+Ym94UGFjaygpKSB7Ci0gICAgICAg
ICAgICBjYXNlIEJTVEFSVDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfU1RBUlQpOwotICAgICAgICAgICAgY2FzZSBCRU5EOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FTkQpOwotICAgICAg
ICAgICAgY2FzZSBCQ0VOVEVSOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9DRU5URVIpOwotICAgICAgICAgICAgY2FzZSBCSlVTVElGWToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSlVTVElG
WSk7Ci0gICAgICAgICAgICBjYXNlIEJTVFJFVENIOgotICAgICAgICAgICAgY2FzZSBCQkFTRUxJ
TkU6Ci0gICAgICAgICAgICAgICAgYnJlYWs7IC8vIG5vdCBhbGxvd2VkCi0gICAgICAgIH0KLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2Ug
Q1NTX1BST1BfX1dFQktJVF9CT1hfU0hBRE9XOgotICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFk
b3coc3R5bGUtPmJveFNoYWRvdygpKTsKLSAgICBjYXNlIENTU19QUk9QX0NBUFRJT05fU0lERToK
LSAgICAgICAgc3dpdGNoIChzdHlsZS0+Y2FwdGlvblNpZGUoKSkgewotICAgICAgICAgICAgY2Fz
ZSBDQVBMRUZUOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9MRUZUKTsKLSAgICAgICAgICAgIGNhc2UgQ0FQUklHSFQ6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JJR0hUKTsKLSAgICAgICAg
ICAgIGNhc2UgQ0FQVE9QOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9UT1ApOwotICAgICAgICAgICAgY2FzZSBDQVBCT1RUT006Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JPVFRPTSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIGNhc2UgQ1NTX1BST1BfQ0xFQVI6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPmNsZWFy
KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ05PTkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwotICAgICAgICAgICAgY2FzZSBDTEVG
VDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
TEVGVCk7Ci0gICAgICAgICAgICBjYXNlIENSSUdIVDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUklHSFQpOwotICAgICAgICAgICAgY2FzZSBD
Qk9USDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfQk9USCk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfQ0xJUDoKLSAgICAgICAgLy8gRklYTUU6
IHVuaW1wbGVtZW50ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9DT0xPUjoK
LSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Y29sb3IoKS5yZ2Io
KSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9DT1VOVDoKLSAgICAgICAgaWYg
KHN0eWxlLT5oYXNBdXRvQ29sdW1uQ291bnQoKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShzdHlsZS0+Y29sdW1uQ291bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9DT0xVTU5fR0FQOgotICAgICAgICBp
ZiAoc3R5bGUtPmhhc05vcm1hbENvbHVtbkdhcCgpKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7Ci0gICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoc3R5bGUtPmNvbHVtbkdhcCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUik7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9SVUxFX0NPTE9SOgot
ICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLCBzdHlsZS0+Y29s
dW1uUnVsZUNvbG9yKCkpOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9DT0xVTU5fUlVMRV9T
VFlMRToKLSAgICAgICAgcmV0dXJuIHZhbHVlRm9yQm9yZGVyU3R5bGUoc3R5bGUtPmNvbHVtblJ1
bGVTdHlsZSgpKTsKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQ09MVU1OX1JVTEVfV0lEVEg6
Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmNvbHVtblJ1bGVX
aWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBjYXNlIENTU19QUk9QX19X
RUJLSVRfQ09MVU1OX0JSRUFLX0FGVEVSOgotICAgICAgICBzd2l0Y2ggKHN0eWxlLT5jb2x1bW5C
cmVha0FmdGVyKCkpIHsKLSAgICAgICAgICAgIGNhc2UgUEJBVVRPOgotICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAg
IGNhc2UgUEJBTFdBWVM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0FMV0FZUyk7Ci0gICAgICAgICAgICBjYXNlIFBCQVZPSUQ6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FWT0lEKTsKLSAg
ICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9CUkVBS19CRUZPUkU6Ci0gICAgICAg
IHN3aXRjaCAoc3R5bGUtPmNvbHVtbkJyZWFrQmVmb3JlKCkpIHsKLSAgICAgICAgICAgIGNhc2Ug
UEJBVVRPOgorICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9TUEFDSU5HOiB7CisgICAgICAg
ICAgICBTdHJpbmcgc3RyaW5nKG51bWJlckFzU3RyaW5nKHN0eWxlLT5ob3Jpem9udGFsQm9yZGVy
U3BhY2luZygpKSArICJweCAiICsgbnVtYmVyQXNTdHJpbmcoc3R5bGUtPnZlcnRpY2FsQm9yZGVy
U3BhY2luZygpKSArICJweCIpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShzdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9SREVSX0hPUklaT05UQUxfU1BBQ0lORzoK
KyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmhvcml6b250
YWxCb3JkZXJTcGFjaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBj
YXNlIENTU19QUk9QX19XRUJLSVRfQk9SREVSX1ZFUlRJQ0FMX1NQQUNJTkc6CisgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNp
bmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgIGNhc2UgQ1NTX1BST1Bf
Qk9SREVSX1RPUF9DT0xPUjoKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlk
Q29sb3Ioc3R5bGUsIHN0eWxlLT5ib3JkZXJUb3BDb2xvcigpKTsKKyAgICAgICAgY2FzZSBDU1Nf
UFJPUF9CT1JERVJfUklHSFRfQ09MT1I6CisgICAgICAgICAgICByZXR1cm4gY3VycmVudENvbG9y
T3JWYWxpZENvbG9yKHN0eWxlLCBzdHlsZS0+Ym9yZGVyUmlnaHRDb2xvcigpKTsKKyAgICAgICAg
Y2FzZSBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX0NPTE9SOgorICAgICAgICAgICAgcmV0dXJuIGN1
cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCkp
OworICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9MRUZUX0NPTE9SOgorICAgICAgICAgICAg
cmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPmJvcmRlckxlZnRD
b2xvcigpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfVE9QX1NUWUxFOgorICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlRm9yQm9yZGVyU3R5bGUoc3R5bGUtPmJvcmRlclRvcFN0eWxlKCkp
OworICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9SSUdIVF9TVFlMRToKKyAgICAgICAgICAg
IHJldHVybiB2YWx1ZUZvckJvcmRlclN0eWxlKHN0eWxlLT5ib3JkZXJSaWdodFN0eWxlKCkpOwor
ICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9CT1RUT01fU1RZTEU6CisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWVGb3JCb3JkZXJTdHlsZShzdHlsZS0+Ym9yZGVyQm90dG9tU3R5bGUoKSk7Cisg
ICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0xFRlRfU1RZTEU6CisgICAgICAgICAgICByZXR1
cm4gdmFsdWVGb3JCb3JkZXJTdHlsZShzdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCkpOworICAgICAg
ICBjYXNlIENTU19QUk9QX0JPUkRFUl9UT1BfV0lEVEg6CisgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfUklHSFRfV0lEVEg6
CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5ib3JkZXJS
aWdodFdpZHRoKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBjYXNlIENT
U19QUk9QX0JPUkRFUl9CT1RUT01fV0lEVEg6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BYKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfTEVGVF9XSURUSDoKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJvcmRlckxlZnRX
aWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgY2FzZSBDU1NfUFJP
UF9CT1RUT006CisgICAgICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShyZW5k
ZXJlciwgQ1NTX1BST1BfQk9UVE9NKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JP
WF9BTElHTjoKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmJveEFsaWduKCkpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIEJTVFJFVENIOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1RSRVRDSCk7CisgICAgICAgICAgICAgICAgY2Fz
ZSBCU1RBUlQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9TVEFSVCk7CisgICAgICAgICAgICAgICAgY2FzZSBCQ0VOVEVSOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ0VOVEVS
KTsKKyAgICAgICAgICAgICAgICBjYXNlIEJFTkQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FTkQpOworICAgICAgICAgICAgICAgIGNh
c2UgQkJBU0VMSU5FOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfQkFTRUxJTkUpOworICAgICAgICAgICAgICAgIGNhc2UgQkpVU1RJRlk6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBub3QgYWxsb3dlZAorICAgICAgICAgICAg
fQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JPWF9ESVJFQ1RJT046CisgICAgICAg
ICAgICBzd2l0Y2ggKHN0eWxlLT5ib3hEaXJlY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIGNh
c2UgQk5PUk1BTDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX05PUk1BTCk7CisgICAgICAgICAgICAgICAgY2FzZSBCUkVWRVJTRToKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JF
VkVSU0UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JP
WF9GTEVYOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+
Ym94RmxleCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgIGNhc2Ug
Q1NTX1BST1BfX1dFQktJVF9CT1hfRkxFWF9HUk9VUDoKKyAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJveEZsZXhHcm91cCgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUik7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfTElORVM6
CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5ib3hMaW5lcygpKSB7CisgICAgICAgICAgICAg
ICAgY2FzZSBTSU5HTEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9TSU5HTEUpOworICAgICAgICAgICAgICAgIGNhc2UgTVVMVElQTEU6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9NVUxUSVBMRSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJL
SVRfQk9YX09SRElOQUxfR1JPVVA6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKHN0eWxlLT5ib3hPcmRpbmFsR3JvdXAoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX09SSUVOVDoKKyAgICAg
ICAgICAgIHN3aXRjaCAoc3R5bGUtPmJveE9yaWVudCgpKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBIT1JJWk9OVEFMOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfSE9SSVpPTlRBTCk7CisgICAgICAgICAgICAgICAgY2FzZSBWRVJUSUNB
TDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX1ZFUlRJQ0FMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dF
QktJVF9CT1hfUEFDSzoKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmJveFBhY2soKSkgewor
ICAgICAgICAgICAgICAgIGNhc2UgQlNUQVJUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1RBUlQpOworICAgICAgICAgICAgICAgIGNh
c2UgQkVORDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX0VORCk7CisgICAgICAgICAgICAgICAgY2FzZSBCQ0VOVEVSOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ0VOVEVSKTsK
KyAgICAgICAgICAgICAgICBjYXNlIEJKVVNUSUZZOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSlVTVElGWSk7CisgICAgICAgICAgICAg
ICAgY2FzZSBCU1RSRVRDSDoKKyAgICAgICAgICAgICAgICBjYXNlIEJCQVNFTElORToKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7IC8vIG5vdCBhbGxvd2VkCisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX1NIQURPVzoKKyAgICAgICAgICAgIHJldHVy
biB2YWx1ZUZvclNoYWRvdyhzdHlsZS0+Ym94U2hhZG93KCkpOworICAgICAgICBjYXNlIENTU19Q
Uk9QX0NBUFRJT05fU0lERToKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmNhcHRpb25TaWRl
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIENBUExFRlQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9MRUZUKTsKKyAgICAgICAgICAg
ICAgICBjYXNlIENBUFJJR0hUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfUklHSFQpOworICAgICAgICAgICAgICAgIGNhc2UgQ0FQVE9Q
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfVE9QKTsKKyAgICAgICAgICAgICAgICBjYXNlIENBUEJPVFRPTToKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JPVFRPTSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICBjYXNlIENTU19QUk9QX0NMRUFSOgorICAgICAgICAgICAgc3dp
dGNoIChzdHlsZS0+Y2xlYXIoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ05PTkU6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05F
KTsKKyAgICAgICAgICAgICAgICBjYXNlIENMRUZUOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTEVGVCk7CisgICAgICAgICAgICAgICAg
Y2FzZSBDUklHSFQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9SSUdIVCk7CisgICAgICAgICAgICAgICAgY2FzZSBDQk9USDoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JPVEgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9DTElQOgorICAgICAgICAg
ICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENTU19QUk9QX0NPTE9SOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShzdHlsZS0+Y29sb3IoKS5yZ2IoKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJ
VF9DT0xVTU5fQ09VTlQ6CisgICAgICAgICAgICBpZiAoc3R5bGUtPmhhc0F1dG9Db2x1bW5Db3Vu
dCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9BVVRPKTsKLSAgICAgICAgICAgIGNhc2UgUEJBTFdBWVM6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FMV0FZUyk7Ci0gICAgICAgICAgICBj
YXNlIFBCQVZPSUQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX0FWT0lEKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9C
UkVBS19JTlNJREU6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPmNvbHVtbkJyZWFrSW5zaWRlKCkp
IHsKLSAgICAgICAgICAgIGNhc2UgUEJBVVRPOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShzdHlsZS0+Y29sdW1uQ291bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQ09MVU1OX0dBUDoKKyAg
ICAgICAgICAgIGlmIChzdHlsZS0+aGFzTm9ybWFsQ29sdW1uR2FwKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7CisgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5jb2x1bW5HYXAoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJL
SVRfQ09MVU1OX1JVTEVfQ09MT1I6CisgICAgICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JW
YWxpZENvbG9yKHN0eWxlLCBzdHlsZS0+Y29sdW1uUnVsZUNvbG9yKCkpOworICAgICAgICBjYXNl
IENTU19QUk9QX19XRUJLSVRfQ09MVU1OX1JVTEVfU1RZTEU6CisgICAgICAgICAgICByZXR1cm4g
dmFsdWVGb3JCb3JkZXJTdHlsZShzdHlsZS0+Y29sdW1uUnVsZVN0eWxlKCkpOworICAgICAgICBj
YXNlIENTU19QUk9QX19XRUJLSVRfQ09MVU1OX1JVTEVfV0lEVEg6CisgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5jb2x1bW5SdWxlV2lkdGgoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9DT0xV
TU5fQlJFQUtfQUZURVI6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5jb2x1bW5CcmVha0Fm
dGVyKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBCQVVUTzoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOworICAgICAgICAg
ICAgICAgIGNhc2UgUEJBTFdBWVM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BTFdBWVMpOworICAgICAgICAgICAgICAgIGNhc2UgUEJB
Vk9JRDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0FWT0lEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dF
QktJVF9DT0xVTU5fQlJFQUtfQkVGT1JFOgorICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+Y29s
dW1uQnJlYWtCZWZvcmUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgUEJBVVRPOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7
CisgICAgICAgICAgICAgICAgY2FzZSBQQkFMV0FZUzoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FMV0FZUyk7CisgICAgICAgICAgICAg
ICAgY2FzZSBQQkFWT0lEOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfQVZPSUQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBD
U1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9CUkVBS19JTlNJREU6CisgICAgICAgICAgICBzd2l0Y2gg
KHN0eWxlLT5jb2x1bW5CcmVha0luc2lkZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBQQkFV
VE86CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9BVVRPKTsKKyAgICAgICAgICAgICAgICBjYXNlIFBCQVZPSUQ6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVk9JRCk7CisgICAg
ICAgICAgICAgICAgY2FzZSBQQkFMV0FZUzoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8v
IG5vdCBhbGxvd2VkCisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJL
SVRfQ09MVU1OX1dJRFRIOgorICAgICAgICAgICAgaWYgKHN0eWxlLT5oYXNBdXRvQ29sdW1uV2lk
dGgoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfQVVUTyk7Ci0gICAgICAgICAgICBjYXNlIFBCQVZPSUQ6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FWT0lEKTsKLSAgICAgICAgICAgIGNh
c2UgUEJBTFdBWVM6Ci0gICAgICAgICAgICAgICAgYnJlYWs7IC8vIG5vdCBhbGxvd2VkCi0gICAg
ICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9DT0xVTU5fV0lEVEg6Ci0gICAgICAgIGlmIChzdHls
ZS0+aGFzQXV0b0NvbHVtbldpZHRoKCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoc3R5bGUtPmNvbHVtbldpZHRoKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KTsKLSAgICBjYXNlIENTU19QUk9QX0NPTlRFTlQ6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxl
bWVudGVkCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfQ09VTlRFUl9JTkNSRU1F
TlQ6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCi0gICAgICAgIC8vIFNwZWNpZmlj
YXRpb24gc2F5cyAiYXMgc3BlY2lmaWVkIiwgd2hpY2ggbWVhbnMgd2UnZCBuZWVkIHRvIGtlZXAg
YSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBDU1MgbGlzdCBhcm91bmQuCi0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTX1BST1BfQ09VTlRFUl9SRVNFVDoKLSAgICAgICAgLy8gRklYTUU6IHVuaW1w
bGVtZW50ZWQKLSAgICAgICAgLy8gU3BlY2lmaWNhdGlvbiBzYXlzICJhcyBzcGVjaWZpZWQiLCB3
aGljaCBtZWFucyB3ZSdkIG5lZWQgdG8ga2VlcCBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIENTUyBs
aXN0IGFyb3VuZC4KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9DVVJTT1I6IHsK
LSAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gMDsKLSAgICAgICAgQ1NTVmFsdWUqIHZhbHVl
ID0gMDsKLSAgICAgICAgQ3Vyc29yTGlzdCogY3Vyc29ycyA9IHN0eWxlLT5jdXJzb3JzKCk7Ci0g
ICAgICAgIGlmIChjdXJzb3JzICYmIGN1cnNvcnMtPnNpemUoKSA+IDApIHsKLSAgICAgICAgICAg
IGxpc3QgPSBuZXcgQ1NTVmFsdWVMaXN0OwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGN1cnNvcnMtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoKCpjdXJzb3JzKVtpXS5jdXJzb3JJbWFnZS0+dXJsKCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNo
IChzdHlsZS0+Y3Vyc29yKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1VSU09SX0FVVE86Ci0gICAg
ICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1VSU09SX0NST1NTOgot
ICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ1JP
U1NIQUlSKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1VSU09S
X0RFRkFVTFQ6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9ERUZBVUxUKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgQ1VSU09SX1BPSU5URVI6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgQ1VSU09SX01PVkU6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NT1ZFKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX0NFTEw6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DRUxMKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgQ1VSU09SX1ZFUlRJQ0FMX1RFWFQ6Ci0gICAgICAgICAgICAgICAg
dmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9WRVJUSUNBTF9URVhUKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1VSU09SX0NPTlRFWFRfTUVO
VToKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0NPTlRFWFRfTUVOVSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IENVUlNPUl9BTElBUzoKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0FMSUFTKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgQ1VSU09SX0NPUFk6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9DT1BZKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgQ1VSU09SX05PTkU6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgQ1VSU09SX1BST0dSRVNTOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUFJPR1JFU1MpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfTk9fRFJPUDoKLSAgICAgICAgICAgICAgICB2
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PX0RST1ApOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfTk9UX0FMTE9XRUQ6Ci0gICAg
ICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1RfQUxM
T1dFRCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9F
X1JFU0laRToKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0VfUkVTSVpFKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgQ1VSU09SX05FX1JFU0laRToKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX05FX1JFU0laRSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIENVUlNPUl9OV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgdmFsdWUg
PSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OV19SRVNJWkUpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfTl9SRVNJWkU6Ci0gICAgICAgICAg
ICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OX1JFU0laRSk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9TRV9SRVNJWkU6
Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9T
RV9SRVNJWkUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDVVJT
T1JfU1dfUkVTSVpFOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfU1dfUkVTSVpFKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgQ1VSU09SX1NfUkVTSVpFOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU19SRVNJWkUpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgdmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9XX1JFU0laRSk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9FV19SRVNJWkU6Ci0gICAgICAg
ICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FV19SRVNJWkUp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDVVJTT1JfTlNfUkVT
SVpFOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfTlNfUkVTSVpFKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
Q1VSU09SX05FU1dfUkVTSVpFOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfTkVTV19SRVNJWkUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBDVVJTT1JfTldTRV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgdmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OV1NFX1JFU0laRSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9DT0xfUkVTSVpFOgotICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ09MX1JF
U0laRSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENVUlNPUl9S
T1dfUkVTSVpFOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfUk9XX1JFU0laRSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIENVUlNPUl9URVhUOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfVEVYVCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIENVUlNPUl9XQUlUOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfV0FJVCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIENVUlNPUl9IRUxQOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSEVMUCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIENVUlNPUl9BTExfU0NST0xMOgotICAgICAgICAgICAgICAgIHZhbHVl
ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQUxMX1NDUk9MTCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICAgICAg
aWYgKGxpc3QpIHsKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbGlzdDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQot
ICAgIGNhc2UgQ1NTX1BST1BfRElSRUNUSU9OOgotICAgICAgICBzd2l0Y2ggKHN0eWxlLT5kaXJl
Y3Rpb24oKSkgewotICAgICAgICAgICAgY2FzZSBMVFI6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xUUik7Ci0gICAgICAgICAgICBjYXNlIFJU
TDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
UlRMKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9ESVNQTEFZOgotICAgICAgICBzd2l0Y2ggKHN0
eWxlLT5kaXNwbGF5KCkpIHsKLSAgICAgICAgICAgIGNhc2UgSU5MSU5FOgotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9JTkxJTkUpOwotICAgICAg
ICAgICAgY2FzZSBCTE9DSzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfQkxPQ0spOwotICAgICAgICAgICAgY2FzZSBMSVNUX0lURU06Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xJU1RfSVRF
TSk7Ci0gICAgICAgICAgICBjYXNlIFJVTl9JTjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUlVOX0lOKTsKLSAgICAgICAgICAgIGNhc2UgQ09N
UEFDVDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfQ09NUEFDVCk7Ci0gICAgICAgICAgICBjYXNlIElOTElORV9CTE9DSzoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSU5MSU5FX0JMT0NLKTsK
LSAgICAgICAgICAgIGNhc2UgVEFCTEU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX1RBQkxFKTsKLSAgICAgICAgICAgIGNhc2UgSU5MSU5FX1RB
QkxFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9JTkxJTkVfVEFCTEUpOwotICAgICAgICAgICAgY2FzZSBUQUJMRV9ST1dfR1JPVVA6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RBQkxFX1JP
V19HUk9VUCk7Ci0gICAgICAgICAgICBjYXNlIFRBQkxFX0hFQURFUl9HUk9VUDoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEFCTEVfSEVBREVS
X0dST1VQKTsKLSAgICAgICAgICAgIGNhc2UgVEFCTEVfRk9PVEVSX0dST1VQOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRV9GT09URVJf
R1JPVVApOwotICAgICAgICAgICAgY2FzZSBUQUJMRV9ST1c6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RBQkxFX1JPVyk7Ci0gICAgICAgICAg
ICBjYXNlIFRBQkxFX0NPTFVNTl9HUk9VUDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEFCTEVfQ09MVU1OX0dST1VQKTsKLSAgICAgICAgICAg
IGNhc2UgVEFCTEVfQ09MVU1OOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRV9DT0xVTU4pOwotICAgICAgICAgICAgY2FzZSBUQUJMRV9D
RUxMOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9UQUJMRV9DRUxMKTsKLSAgICAgICAgICAgIGNhc2UgVEFCTEVfQ0FQVElPTjoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEFCTEVfQ0FQVElP
Tik7Ci0gICAgICAgICAgICBjYXNlIEJPWDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfX1dFQktJVF9CT1gpOwotICAgICAgICAgICAgY2FzZSBJ
TkxJTkVfQk9YOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9fV0VCS0lUX0lOTElORV9CT1gpOwotICAgICAgICAgICAgY2FzZSBOT05FOgotICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsK
LSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9FTVBUWV9DRUxMUzoKLSAgICAgICAgc3dpdGNoIChzdHls
ZS0+ZW1wdHlDZWxscygpKSB7Ci0gICAgICAgICAgICBjYXNlIFNIT1c6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NIT1cpOwotICAgICAgICAg
ICAgY2FzZSBISURFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9ISURFKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9GTE9BVDoKLSAgICAgICAg
c3dpdGNoIChzdHlsZS0+ZmxvYXRpbmcoKSkgewotICAgICAgICAgICAgY2FzZSBGTk9ORToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7
Ci0gICAgICAgICAgICBjYXNlIEZMRUZUOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9MRUZUKTsKLSAgICAgICAgICAgIGNhc2UgRlJJR0hUOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SSUdI
VCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5jb2x1
bW5XaWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgIGNhc2Ug
Q1NTX1BST1BfQ09OVEVOVDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9DT1VOVEVSX0lOQ1JFTUVO
VDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisgICAgICAgICAgICAvLyBT
cGVjaWZpY2F0aW9uIHNheXMgImFzIHNwZWNpZmllZCIsIHdoaWNoIG1lYW5zIHdlJ2QgbmVlZCB0
byBrZWVwIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgQ1NTIGxpc3QgYXJvdW5kLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQ09VTlRFUl9SRVNFVDoKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisgICAgICAgICAgICAvLyBTcGVjaWZpY2F0aW9u
IHNheXMgImFzIHNwZWNpZmllZCIsIHdoaWNoIG1lYW5zIHdlJ2QgbmVlZCB0byBrZWVwIGEgY29w
eSBvZiB0aGUgb3JpZ2luYWwgQ1NTIGxpc3QgYXJvdW5kLgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ1NTX1BST1BfQ1VSU09SOiB7CisgICAgICAgICAgICBDU1NWYWx1ZUxpc3Qq
IGxpc3QgPSAwOworICAgICAgICAgICAgQ3Vyc29yTGlzdCogY3Vyc29ycyA9IHN0eWxlLT5jdXJz
b3JzKCk7CisgICAgICAgICAgICBpZiAoY3Vyc29ycyAmJiBjdXJzb3JzLT5zaXplKCkgPiAwKSB7
CisgICAgICAgICAgICAgICAgbGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3Q7CisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGN1cnNvcnMtPnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKCgqY3Vyc29y
cylbaV0uY3Vyc29ySW1hZ2UtPnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gMDsKKyAgICAgICAg
ICAgIHN3aXRjaCAoc3R5bGUtPmN1cnNvcigpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJT
T1JfQVVUTzoKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9BVVRPKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBDVVJTT1JfQ1JPU1M6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ1JPU1NIQUlSKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfREVGQVVMVDoKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERUZBVUxU
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJT
T1JfUE9JTlRFUjoKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBDVVJTT1JfTU9WRToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUg
PSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NT1ZFKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfQ0VMTDoKKyAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DRUxMKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfVkVS
VElDQUxfVEVYVDoKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9WRVJUSUNBTF9URVhUKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfQ09OVEVYVF9NRU5VOgorICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTlRFWFRfTUVO
VSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1VS
U09SX0FMSUFTOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0FMSUFTKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSBDVVJTT1JfQ09QWToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT1BZKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfTk9ORToKKyAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfUFJPR1JF
U1M6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfUFJPR1JFU1MpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIENVUlNPUl9OT19EUk9QOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PX0RST1ApOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9OT1RfQUxMT1dFRDoKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1Rf
QUxMT1dFRCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgQ1VSU09SX0VfUkVTSVpFOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0VfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfTkVfUkVTSVpFOgorICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05FX1JFU0laRSk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09S
X05XX1JFU0laRToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9OV19SRVNJWkUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIENVUlNPUl9OX1JFU0laRToKKyAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OX1JFU0laRSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1NFX1JFU0la
RToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9TRV9SRVNJWkUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIENVUlNPUl9TV19SRVNJWkU6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1dfUkVTSVpFKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfU19SRVNJWkU6CisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU19S
RVNJWkUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IENVUlNPUl9XX1JFU0laRToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9XX1JFU0laRSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0VXX1JFU0laRToKKyAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FV19SRVNJWkUpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9O
U19SRVNJWkU6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfTlNfUkVTSVpFKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBDVVJTT1JfTkVTV19SRVNJWkU6CisgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTkVTV19SRVNJWkUpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9OV1NF
X1JFU0laRToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9OV1NFX1JFU0laRSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0NPTF9SRVNJWkU6CisgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ09MX1JFU0laRSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1JPV19S
RVNJWkU6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfUk9XX1JFU0laRSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX1RFWFQ6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1dBSVQ6CisgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV0FJVCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0hFTFA6
CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfSEVMUCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgQ1VSU09SX0FMTF9TQ1JPTEw6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQUxMX1NDUk9MTCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAgICAg
ICAgICAgIGlmIChsaXN0KSB7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiB2YWx1ZTsKICAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9GT05UX0ZBTUlMWToKLSAgICB7
Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgcmV0dXJucyB0aGUgZmlyc3QgZmFtaWx5Lgot
ICAgICAgICBjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2MgPSBzdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCk7Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoZGVzYy5mYW1pbHko
KS5mYW1pbHkoKS5kb21TdHJpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwot
ICAgIH0KLSAgICBjYXNlIENTU19QUk9QX0ZPTlRfU0laRToKLSAgICB7Ci0gICAgICAgIEZvbnRE
ZXNjcmlwdGlvbiBkZXNjID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKGRlc2MuY29tcHV0ZWRQaXhlbFNpemUoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTX1BST1BfRk9OVF9TVFJF
VENIOgotICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU19QUk9QX0ZPTlRfU1RZTEU6Ci0gICAgewotICAgICAgICAvLyBGSVhNRTogaGFu
ZGxlIG9ibGlxdWU/Ci0gICAgICAgIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzYyA9IHN0eWxl
LT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgaWYgKGRlc2MuaXRhbGljKCkpCi0gICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSVRBTElDKTsKLSAgICAg
ICAgZWxzZQorICAgICAgICBjYXNlIENTU19QUk9QX0RJUkVDVElPTjoKKyAgICAgICAgICAgIHN3
aXRjaCAoc3R5bGUtPmRpcmVjdGlvbigpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBMVFI6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9M
VFIpOworICAgICAgICAgICAgICAgIGNhc2UgUlRMOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUlRMKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgQ1NTX1BST1BfRElTUExBWToKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUt
PmRpc3BsYXkoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgSU5MSU5FOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSU5MSU5FKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIEJMT0NLOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQkxPQ0spOworICAgICAgICAgICAgICAgIGNhc2Ug
TElTVF9JVEVNOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfTElTVF9JVEVNKTsKKyAgICAgICAgICAgICAgICBjYXNlIFJVTl9JTjoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JV
Tl9JTik7CisgICAgICAgICAgICAgICAgY2FzZSBDT01QQUNUOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ09NUEFDVCk7CisgICAgICAg
ICAgICAgICAgY2FzZSBJTkxJTkVfQkxPQ0s6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9JTkxJTkVfQkxPQ0spOworICAgICAgICAgICAg
ICAgIGNhc2UgVEFCTEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRSk7CisgICAgICAgICAgICAgICAgY2FzZSBJTkxJTkVfVEFC
TEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9JTkxJTkVfVEFCTEUpOworICAgICAgICAgICAgICAgIGNhc2UgVEFCTEVfUk9XX0dST1VQ
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfVEFCTEVfUk9XX0dST1VQKTsKKyAgICAgICAgICAgICAgICBjYXNlIFRBQkxFX0hFQURFUl9H
Uk9VUDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX1RBQkxFX0hFQURFUl9HUk9VUCk7CisgICAgICAgICAgICAgICAgY2FzZSBUQUJMRV9G
T09URVJfR1JPVVA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9UQUJMRV9GT09URVJfR1JPVVApOworICAgICAgICAgICAgICAgIGNhc2Ug
VEFCTEVfUk9XOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfVEFCTEVfUk9XKTsKKyAgICAgICAgICAgICAgICBjYXNlIFRBQkxFX0NPTFVN
Tl9HUk9VUDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1RBQkxFX0NPTFVNTl9HUk9VUCk7CisgICAgICAgICAgICAgICAgY2FzZSBUQUJM
RV9DT0xVTU46CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9UQUJMRV9DT0xVTU4pOworICAgICAgICAgICAgICAgIGNhc2UgVEFCTEVfQ0VM
TDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX1RBQkxFX0NFTEwpOworICAgICAgICAgICAgICAgIGNhc2UgVEFCTEVfQ0FQVElPTjoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RB
QkxFX0NBUFRJT04pOworICAgICAgICAgICAgICAgIGNhc2UgQk9YOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfX1dFQktJVF9CT1gpOwor
ICAgICAgICAgICAgICAgIGNhc2UgSU5MSU5FX0JPWDoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX19XRUJLSVRfSU5MSU5FX0JPWCk7Cisg
ICAgICAgICAgICAgICAgY2FzZSBOT05FOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICBjYXNlIENTU19QUk9QX0VNUFRZX0NFTExTOgorICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+
ZW1wdHlDZWxscygpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBTSE9XOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0hPVyk7CisgICAg
ICAgICAgICAgICAgY2FzZSBISURFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSElERSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBj
YXNlIENTU19QUk9QX0ZMT0FUOgorICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+ZmxvYXRpbmco
KSkgeworICAgICAgICAgICAgICAgIGNhc2UgRk5PTkU6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKKyAgICAgICAgICAgICAg
ICBjYXNlIEZMRUZUOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTEVGVCk7CisgICAgICAgICAgICAgICAgY2FzZSBGUklHSFQ6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SSUdI
VCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENTU19QUk9QX0ZPTlRfRkFNSUxZOgor
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgb25seSByZXR1cm5zIHRoZSBmaXJzdCBmYW1pbHku
CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKS5mYW1pbHkoKS5mYW1pbHkoKS5kb21TdHJpbmcoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TVFJJTkcpOworICAgICAgICBjYXNlIENTU19QUk9QX0ZPTlRfU0laRToKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAg
ICAgICBjYXNlIENTU19QUk9QX0ZPTlRfU1RSRVRDSDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1
bmltcGxlbWVudGVkCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9G
T05UX1NUWUxFOgorICAgICAgICAgICAgaWYgKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5pdGFs
aWMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfSVRBTElDKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9OT1JNQUwpOwotICAgIH0KLSAgICBjYXNlIENTU19QUk9QX0ZPTlRfVkFSSUFOVDoKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzYyA9IHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKTsKLSAgICAgICAgaWYgKGRlc2Muc21hbGxDYXBzKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU01BTExfQ0FQUyk7Ci0gICAgICAg
IGVsc2UKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9GT05UX1ZBUklBTlQ6CisgICAgICAgICAgICBp
ZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnNtYWxsQ2FwcygpKQorICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TTUFMTF9DQVBTKTsKICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOwotICAg
IH0KLSAgICBjYXNlIENTU19QUk9QX0ZPTlRfV0VJR0hUOgotICAgIHsKLSAgICAgICAgLy8gRklY
TUU6IHRoaXMgZG9lcyBub3QgcmVmbGVjdCB0aGUgZnVsbCByYW5nZSBvZiB3ZWlnaHRzCi0gICAg
ICAgIC8vIHRoYXQgY2FuIGJlIGV4cHJlc3NlZCB3aXRoIENTUwotICAgICAgICBjb25zdCBGb250
RGVzY3JpcHRpb24mIGRlc2MgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGlm
IChkZXNjLndlaWdodCgpID09IGNCb2xkV2VpZ2h0KQotICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JPTEQpOwotICAgICAgICBlbHNlCisgICAgICAgIGNh
c2UgQ1NTX1BST1BfRk9OVF9XRUlHSFQ6CisgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2Vz
IG5vdCByZWZsZWN0IHRoZSBmdWxsIHJhbmdlIG9mIHdlaWdodHMKKyAgICAgICAgICAgIC8vIHRo
YXQgY2FuIGJlIGV4cHJlc3NlZCB3aXRoIENTUworICAgICAgICAgICAgaWYgKHN0eWxlLT5mb250
RGVzY3JpcHRpb24oKS53ZWlnaHQoKSA9PSBjQm9sZFdlaWdodCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQk9MRCk7CiAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKLSAgICB9Ci0gICAg
Y2FzZSBDU1NfUFJPUF9IRUlHSFQ6Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUocmVuZGVyZXItPmNvbnRlbnRIZWlnaHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7
Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0hJR0hMSUdIVDogewotICAgICAgICBpZiAoc3R5
bGUtPmhpZ2hsaWdodCgpID09IG51bGxBdG9tKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwotICAgICAgICBlbHNlCisgICAgICAgIGNhc2Ug
Q1NTX1BST1BfSEVJR0hUOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShyZW5kZXJlci0+Y29udGVudEhlaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsK
KyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0hJR0hMSUdIVDoKKyAgICAgICAgICAgIGlm
IChzdHlsZS0+aGlnaGxpZ2h0KCkgPT0gbnVsbEF0b20pCisgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwogICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+aGlnaGxpZ2h0KCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfU1RSSU5HKTsKLSAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9MRUZUOgotICAgICAg
ICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShyZW5kZXJlciwgQ1NTX1BST1BfTEVGVCk7
Ci0gICAgY2FzZSBDU1NfUFJPUF9MRVRURVJfU1BBQ0lORzoKLSAgICAgICAgaWYgKHN0eWxlLT5s
ZXR0ZXJTcGFjaW5nKCkgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOwotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN0eWxlLT5sZXR0ZXJTcGFjaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwot
ICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9MSU5FX0NMQU1QOgotICAgICAgICBpZiAoc3R5bGUt
PmxpbmVDbGFtcCgpID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX05PTkUpOwotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KHN0eWxlLT5saW5lQ2xhbXAoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsK
LSAgICBjYXNlIENTU19QUk9QX0xJTkVfSEVJR0hUOiB7Ci0gICAgICAgIExlbmd0aCBsZW5ndGgo
c3R5bGUtPmxpbmVIZWlnaHQoKSk7Ci0gICAgICAgIGlmIChsZW5ndGguaXNOZWdhdGl2ZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7
Ci0gICAgICAgIGlmIChsZW5ndGguaXNQZXJjZW50KCkpIHsKLSAgICAgICAgICAgIC8vIFRoaXMg
aXMgaW1wZXJmZWN0LCBiZWNhdXNlIGl0IGRvZXNuJ3QgaW5jbHVkZSB0aGUgem9vbSBmYWN0b3Ig
YW5kIHRoZSByZWFsIGNvbXB1dGF0aW9uCi0gICAgICAgICAgICAvLyBmb3IgaG93IGhpZ2ggdG8g
YmUgaW4gcGl4ZWxzIGRvZXMgaW5jbHVkZSB0aGluZ3MgbGlrZSBtaW5pbXVtIGZvbnQgc2l6ZSBh
bmQgdGhlIHpvb20gZmFjdG9yLgotICAgICAgICAgICAgLy8gT24gdGhlIG90aGVyIGhhbmQsIHNp
bmNlIGZvbnQtc2l6ZSBkb2Vzbid0IGluY2x1ZGUgdGhlIHpvb20gZmFjdG9yLCB3ZSByZWFsbHkg
Y2FuJ3QgZG8KLSAgICAgICAgICAgIC8vIHRoYXQgaGVyZSBlaXRoZXIuCi0gICAgICAgICAgICBm
bG9hdCBmb250U2l6ZSA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCk7
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKChpbnQpKGxlbmd0aC5w
ZXJjZW50KCkgKiBmb250U2l6ZSkgLyAxMDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShsZW5ndGgudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9MSVNUX1NUWUxFX0lNQUdFOgotICAg
ICAgICBpZiAoc3R5bGUtPmxpc3RTdHlsZUltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5saXN0U3R5bGVJbWFnZSgpLT51cmwoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19VUkkpOwotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfTk9ORSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9MSVNUX1NUWUxFX1BPU0lUSU9O
OgotICAgICAgICBzd2l0Y2ggKHN0eWxlLT5saXN0U3R5bGVQb3NpdGlvbigpKSB7Ci0gICAgICAg
ICAgICBjYXNlIE9VVFNJREU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX09VVFNJREUpOwotICAgICAgICAgICAgY2FzZSBJTlNJREU6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0lOU0lERSk7
Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biAwOwotICAgIGNhc2UgQ1NTX1BST1BfTElTVF9TVFlMRV9UWVBFOgotICAgICAgICBzd2l0Y2gg
KHN0eWxlLT5saXN0U3R5bGVUeXBlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTE5PTkU6CisgICAg
ICAgIGNhc2UgQ1NTX1BST1BfTEVGVDoKKyAgICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9m
ZnNldFZhbHVlKHJlbmRlcmVyLCBDU1NfUFJPUF9MRUZUKTsKKyAgICAgICAgY2FzZSBDU1NfUFJP
UF9MRVRURVJfU1BBQ0lORzoKKyAgICAgICAgICAgIGlmICghc3R5bGUtPmxldHRlclNwYWNpbmco
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
Tk9STUFMKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUt
PmxldHRlclNwYWNpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgIGNh
c2UgQ1NTX1BST1BfX1dFQktJVF9MSU5FX0NMQU1QOgorICAgICAgICAgICAgaWYgKHN0eWxlLT5s
aW5lQ2xhbXAoKSA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0gICAgICAgICAgICBjYXNlIERJU0M6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RJU0MpOwotICAgICAg
ICAgICAgY2FzZSBDSVJDTEU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0NJUkNMRSk7Ci0gICAgICAgICAgICBjYXNlIFNRVUFSRToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1FVQVJFKTsK
LSAgICAgICAgICAgIGNhc2UgTERFQ0lNQUw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RFQ0lNQUwpOwotICAgICAgICAgICAgY2FzZSBERUNJ
TUFMX0xFQURJTkdfWkVSTzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfREVDSU1BTF9MRUFESU5HX1pFUk8pOwotICAgICAgICAgICAgY2FzZSBM
T1dFUl9ST01BTjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTE9XRVJfUk9NQU4pOwotICAgICAgICAgICAgY2FzZSBVUFBFUl9ST01BTjoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVVBQRVJf
Uk9NQU4pOwotICAgICAgICAgICAgY2FzZSBMT1dFUl9HUkVFSzoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTE9XRVJfR1JFRUspOwotICAgICAg
ICAgICAgY2FzZSBMT1dFUl9BTFBIQToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfTE9XRVJfQUxQSEEpOwotICAgICAgICAgICAgY2FzZSBMT1dF
Ul9MQVRJTjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfTE9XRVJfTEFUSU4pOwotICAgICAgICAgICAgY2FzZSBVUFBFUl9BTFBIQToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVVBQRVJfQUxQ
SEEpOwotICAgICAgICAgICAgY2FzZSBVUFBFUl9MQVRJTjoKLSAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVVBQRVJfTEFUSU4pOwotICAgICAgICAg
ICAgY2FzZSBIRUJSRVc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0hFQlJFVyk7Ci0gICAgICAgICAgICBjYXNlIEFSTUVOSUFOOgotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BUk1FTklBTik7
Ci0gICAgICAgICAgICBjYXNlIEdFT1JHSUFOOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9HRU9SR0lBTik7Ci0gICAgICAgICAgICBjYXNlIENK
S19JREVPR1JBUEhJQzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfQ0pLX0lERU9HUkFQSElDKTsKLSAgICAgICAgICAgIGNhc2UgSElSQUdBTkE6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hJ
UkFHQU5BKTsKLSAgICAgICAgICAgIGNhc2UgS0FUQUtBTkE6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0tBVEFLQU5BKTsKLSAgICAgICAgICAg
IGNhc2UgSElSQUdBTkFfSVJPSEE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0hJUkFHQU5BX0lST0hBKTsKLSAgICAgICAgICAgIGNhc2UgS0FU
QUtBTkFfSVJPSEE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX0tBVEFLQU5BX0lST0hBKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoc3R5bGUtPmxpbmVDbGFtcCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BF
UkNFTlRBR0UpOworICAgICAgICBjYXNlIENTU19QUk9QX0xJTkVfSEVJR0hUOiB7CisgICAgICAg
ICAgICBMZW5ndGggbGVuZ3RoID0gc3R5bGUtPmxpbmVIZWlnaHQoKTsKKyAgICAgICAgICAgIGlm
IChsZW5ndGguaXNOZWdhdGl2ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOworICAgICAgICAgICAgaWYgKGxlbmd0aC5pc1Bl
cmNlbnQoKSkKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGltcGVyZmVjdCwgYmVjYXVzZSBp
dCBkb2Vzbid0IGluY2x1ZGUgdGhlIHpvb20gZmFjdG9yIGFuZCB0aGUgcmVhbCBjb21wdXRhdGlv
bgorICAgICAgICAgICAgICAgIC8vIGZvciBob3cgaGlnaCB0byBiZSBpbiBwaXhlbHMgZG9lcyBp
bmNsdWRlIHRoaW5ncyBsaWtlIG1pbmltdW0gZm9udCBzaXplIGFuZCB0aGUgem9vbSBmYWN0b3Iu
CisgICAgICAgICAgICAgICAgLy8gT24gdGhlIG90aGVyIGhhbmQsIHNpbmNlIGZvbnQtc2l6ZSBk
b2Vzbid0IGluY2x1ZGUgdGhlIHpvb20gZmFjdG9yLCB3ZSByZWFsbHkgY2FuJ3QgZG8KKyAgICAg
ICAgICAgICAgICAvLyB0aGF0IGhlcmUgZWl0aGVyLgorICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgucGVyY2VudCgpICog
c3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKSkgLyAxMDAsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShsZW5ndGgudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiAgICAgICAg
IH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IGNhc2UgQ1NTX1BST1BfTUFSR0lOX1RPUDoKLSAgICAgICAgLy8gRklYTUU6IFN1cHBvc2VkIHRv
IHJldHVybiB0aGUgcGVyY2VudGFnZSBpZiBwZXJjZW50YWdlIHdhcyBzcGVjaWZpZWQuCi0gICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVyZXItPm1hcmdpblRvcCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBjYXNlIENTU19QUk9QX01BUkdJTl9SSUdI
VDoKLSAgICAgICAgLy8gRklYTUU6IFN1cHBvc2VkIHRvIHJldHVybiB0aGUgcGVyY2VudGFnZSBp
ZiBwZXJjZW50YWdlIHdhcyBzcGVjaWZpZWQuCi0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUocmVuZGVyZXItPm1hcmdpblJpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOwotICAgIGNhc2UgQ1NTX1BST1BfTUFSR0lOX0JPVFRPTToKLSAgICAgICAgLy8gRklYTUU6
IFN1cHBvc2VkIHRvIHJldHVybiB0aGUgcGVyY2VudGFnZSBpZiBwZXJjZW50YWdlIHdhcyBzcGVj
aWZpZWQuCi0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVyZXItPm1h
cmdpbkJvdHRvbSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBjYXNlIENTU19Q
Uk9QX01BUkdJTl9MRUZUOgotICAgICAgICAvLyBGSVhNRTogU3VwcG9zZWQgdG8gcmV0dXJuIHRo
ZSBwZXJjZW50YWdlIGlmIHBlcmNlbnRhZ2Ugd2FzIHNwZWNpZmllZC4KLSAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShyZW5kZXJlci0+bWFyZ2luTGVmdCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTUFSUVVFRToKLSAg
ICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NfUFJPUF9fV0VCS0lUX01BUlFVRUVfRElSRUNUSU9OOgotICAgICAgICBzd2l0Y2ggKHN0eWxl
LT5tYXJxdWVlRGlyZWN0aW9uKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTUZPUldBUkQ6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0ZPUldBUkRT
KTsKLSAgICAgICAgICAgIGNhc2UgTUJBQ0tXQVJEOgotICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CQUNLV0FSRFMpOwotICAgICAgICAgICAgY2Fz
ZSBNQVVUTzoKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9MSVNUX1NUWUxFX0lNQUdFOgorICAgICAg
ICAgICAgaWYgKHN0eWxlLT5saXN0U3R5bGVJbWFnZSgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmxpc3RTdHlsZUltYWdlKCktPnVybCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfTElTVF9T
VFlMRV9QT1NJVElPTjoKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmxpc3RTdHlsZVBvc2l0
aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIE9VVFNJREU6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9PVVRTSURFKTsKKyAgICAg
ICAgICAgICAgICBjYXNlIElOU0lERToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0lOU0lERSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICBjYXNlIENTU19QUk9QX0xJU1RfU1RZTEVfVFlQRToKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5
bGUtPmxpc3RTdHlsZVR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgTE5PTkU6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05F
KTsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0M6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ESVNDKTsKKyAgICAgICAgICAgICAgICBj
YXNlIENJUkNMRToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0NJUkNMRSk7CisgICAgICAgICAgICAgICAgY2FzZSBTUVVBUkU6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TUVVB
UkUpOworICAgICAgICAgICAgICAgIGNhc2UgTERFQ0lNQUw6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERUNJTUFMKTsKKyAgICAgICAg
ICAgICAgICBjYXNlIERFQ0lNQUxfTEVBRElOR19aRVJPOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREVDSU1BTF9MRUFESU5HX1pFUk8p
OworICAgICAgICAgICAgICAgIGNhc2UgTE9XRVJfUk9NQU46CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9MT1dFUl9ST01BTik7CisgICAg
ICAgICAgICAgICAgY2FzZSBVUFBFUl9ST01BTjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1VQUEVSX1JPTUFOKTsKKyAgICAgICAgICAg
ICAgICBjYXNlIExPV0VSX0dSRUVLOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTE9XRVJfR1JFRUspOworICAgICAgICAgICAgICAgIGNh
c2UgTE9XRVJfQUxQSEE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9MT1dFUl9BTFBIQSk7CisgICAgICAgICAgICAgICAgY2FzZSBMT1dF
Ul9MQVRJTjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX0xPV0VSX0xBVElOKTsKKyAgICAgICAgICAgICAgICBjYXNlIFVQUEVSX0FMUEhB
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfVVBQRVJfQUxQSEEpOworICAgICAgICAgICAgICAgIGNhc2UgVVBQRVJfTEFUSU46CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9VUFBF
Ul9MQVRJTik7CisgICAgICAgICAgICAgICAgY2FzZSBIRUJSRVc6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9IRUJSRVcpOworICAgICAg
ICAgICAgICAgIGNhc2UgQVJNRU5JQU46CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BUk1FTklBTik7CisgICAgICAgICAgICAgICAgY2Fz
ZSBHRU9SR0lBTjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0dFT1JHSUFOKTsKKyAgICAgICAgICAgICAgICBjYXNlIENKS19JREVPR1JB
UEhJQzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0NKS19JREVPR1JBUEhJQyk7CisgICAgICAgICAgICAgICAgY2FzZSBISVJBR0FOQToK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0hJUkFHQU5BKTsKKyAgICAgICAgICAgICAgICBjYXNlIEtBVEFLQU5BOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfS0FUQUtBTkEpOwor
ICAgICAgICAgICAgICAgIGNhc2UgSElSQUdBTkFfSVJPSEE6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ISVJBR0FOQV9JUk9IQSk7Cisg
ICAgICAgICAgICAgICAgY2FzZSBLQVRBS0FOQV9JUk9IQToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0tBVEFLQU5BX0lST0hBKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfTUFSR0lOX1RPUDoKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBTdXBwb3NlZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2Vu
dGFnZSB3YXMgc3BlY2lmaWVkLgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShyZW5kZXJlci0+bWFyZ2luVG9wKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwor
ICAgICAgICBjYXNlIENTU19QUk9QX01BUkdJTl9SSUdIVDoKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3NlZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3Bl
Y2lmaWVkLgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShyZW5kZXJl
ci0+bWFyZ2luUmlnaHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgIGNh
c2UgQ1NTX1BST1BfTUFSR0lOX0JPVFRPTToKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3Nl
ZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3BlY2lmaWVkLgor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShyZW5kZXJlci0+bWFyZ2lu
Qm90dG9tKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBjYXNlIENTU19Q
Uk9QX01BUkdJTl9MRUZUOgorICAgICAgICAgICAgLy8gRklYTUU6IFN1cHBvc2VkIHRvIHJldHVy
biB0aGUgcGVyY2VudGFnZSBpZiBwZXJjZW50YWdlIHdhcyBzcGVjaWZpZWQuCisgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5tYXJnaW5MZWZ0KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRf
TUFSUVVFRToKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX01BUlFVRUVfRElSRUNUSU9O
OgorICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+bWFycXVlZURpcmVjdGlvbigpKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBNRk9SV0FSRDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0ZPUldBUkRTKTsKKyAgICAgICAgICAgICAgICBj
YXNlIE1CQUNLV0FSRDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0JBQ0tXQVJEUyk7CisgICAgICAgICAgICAgICAgY2FzZSBNQVVUTzoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0FVVE8pOworICAgICAgICAgICAgICAgIGNhc2UgTVVQOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVVApOworICAgICAgICAgICAgICAg
IGNhc2UgTURPV046CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9ET1dOKTsKKyAgICAgICAgICAgICAgICBjYXNlIE1MRUZUOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTEVGVCk7
CisgICAgICAgICAgICAgICAgY2FzZSBNUklHSFQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SSUdIVCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTUFSUVVFRV9JTkNSRU1FTlQ6CisgICAgICAg
ICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcnF1ZWVJbmNyZW1lbnQoKSk7Cisg
ICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJRVUVFX1JFUEVUSVRJT046CisgICAgICAg
ICAgICBpZiAoc3R5bGUtPm1hcnF1ZWVMb29wQ291bnQoKSA8IDApCisgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0lORklOSVRFKTsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPm1hcnF1ZWVMb29wQ291bnQo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICBjYXNlIENTU19QUk9Q
X19XRUJLSVRfTUFSUVVFRV9TUEVFRDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVu
dGVkCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX01B
UlFVRUVfU1RZTEU6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5tYXJxdWVlQmVoYXZpb3Io
KSkgeworICAgICAgICAgICAgICAgIGNhc2UgTU5PTkU6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKKyAgICAgICAgICAgICAg
ICBjYXNlIE1TQ1JPTEw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9TQ1JPTEwpOworICAgICAgICAgICAgICAgIGNhc2UgTVNMSURFOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
U0xJREUpOworICAgICAgICAgICAgICAgIGNhc2UgTUFMVEVSTkFURToKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FMVEVSTkFURSk7Cisg
ICAgICAgICAgICAgICAgY2FzZSBNVU5GVVJMOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVU5GVVJMKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9VU0VSX01PRElGWToKKyAgICAgICAgICAgIHN3
aXRjaCAoc3R5bGUtPnVzZXJNb2RpZnkoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgUkVBRF9P
TkxZOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfUkVBRF9PTkxZKTsKKyAgICAgICAgICAgICAgICBjYXNlIFJFQURfV1JJVEU6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRUFE
X1dSSVRFKTsKKyAgICAgICAgICAgICAgICBjYXNlIFJFQURfV1JJVEVfUExBSU5URVhUX09OTFk6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9SRUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNh
c2UgQ1NTX1BST1BfTUFYX0hFSUdIVDoKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvck1heExl
bmd0aChzdHlsZS0+bWF4SGVpZ2h0KCkpOworICAgICAgICBjYXNlIENTU19QUk9QX01BWF9XSURU
SDoKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvck1heExlbmd0aChzdHlsZS0+bWF4V2lkdGgo
KSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfTUlOX0hFSUdIVDoKKyAgICAgICAgICAgIHJldHVy
biB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWluSGVpZ2h0KCkpOworICAgICAgICBjYXNlIENTU19Q
Uk9QX01JTl9XSURUSDoKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+
bWluV2lkdGgoKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfT1BBQ0lUWToKKyAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPm9wYWNpdHkoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICBjYXNlIENTU19QUk9QX09SUEhBTlM6Cisg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5vcnBoYW5zKCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9P
VVRMSU5FX0NPTE9SOgorICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xv
cihzdHlsZSwgc3R5bGUtPm91dGxpbmVDb2xvcigpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9P
VVRMSU5FX09GRlNFVDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9PVVRMSU5FX1NUWUxFOgorICAg
ICAgICAgICAgaWYgKHN0eWxlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAgICAgICAg
ICBjYXNlIE1VUDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfVVApOwotICAgICAgICAgICAgY2FzZSBNRE9XTjoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRE9XTik7Ci0gICAgICAgICAgICBj
YXNlIE1MRUZUOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9MRUZUKTsKLSAgICAgICAgICAgIGNhc2UgTVJJR0hUOgotICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SSUdIVCk7CisgICAgICAgICAg
ICByZXR1cm4gdmFsdWVGb3JCb3JkZXJTdHlsZShzdHlsZS0+b3V0bGluZVN0eWxlKCkpOworICAg
ICAgICBjYXNlIENTU19QUk9QX09VVExJTkVfV0lEVEg6CisgICAgICAgICAgICAvLyBGSVhNRTog
dW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1BST1Bf
T1ZFUkZMT1c6CisgICAgICAgIGNhc2UgQ1NTX1BST1BfT1ZFUkZMT1dfWDoKKyAgICAgICAgY2Fz
ZSBDU1NfUFJPUF9PVkVSRkxPV19ZOiB7CisgICAgICAgICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3c7
CisgICAgICAgICAgICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsKKyAgICAgICAgICAgICAgICBjYXNl
IENTU19QUk9QX09WRVJGTE9XX1g6CisgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gc3R5
bGUtPm92ZXJmbG93WCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIENTU19QUk9QX09WRVJGTE9XX1k6CisgICAgICAgICAgICAgICAgICAgIG92ZXJm
bG93ID0gc3R5bGUtPm92ZXJmbG93WSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IG1h
eChzdHlsZS0+b3ZlcmZsb3dYKCksIHN0eWxlLT5vdmVyZmxvd1koKSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBzd2l0Y2ggKG92ZXJmbG93KSB7CisgICAgICAgICAgICAgICAgY2FzZSBP
VklTSUJMRToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1ZJU0lCTEUpOworICAgICAgICAgICAgICAgIGNhc2UgT0hJRERFTjoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hJRERF
Tik7CisgICAgICAgICAgICAgICAgY2FzZSBPU0NST0xMOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0NST0xMKTsKKyAgICAgICAgICAg
ICAgICBjYXNlIE9BVVRPOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CisgICAgICAgICAgICAgICAgY2FzZSBPTUFSUVVFRToK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X19XRUJLSVRfTUFSUVVFRSk7CisgICAgICAgICAgICAgICAgY2FzZSBPT1ZFUkxBWToKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX09WRVJM
QVkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX01BUlFV
RUVfSU5DUkVNRU5UOgotICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcnF1
ZWVJbmNyZW1lbnQoKSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX01BUlFVRUVfUkVQRVRJ
VElPTjoKLSAgICAgICAgaWYgKHN0eWxlLT5tYXJxdWVlTG9vcENvdW50KCkgPCAwKQotICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0lORklOSVRFKTsKLSAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+bWFycXVlZUxvb3BDb3Vu
dCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgY2FzZSBDU1NfUFJPUF9f
V0VCS0lUX01BUlFVRUVfU1BFRUQ6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCi0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJRVUVFX1NUWUxFOgot
ICAgICAgICBzd2l0Y2ggKHN0eWxlLT5tYXJxdWVlQmVoYXZpb3IoKSkgewotICAgICAgICAgICAg
Y2FzZSBNTk9ORToKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9QQURESU5HX1RPUDoKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVyZXItPnBhZGRpbmdUb3AoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfUEFERElO
R19SSUdIVDoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVy
ZXItPnBhZGRpbmdSaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAg
Y2FzZSBDU1NfUFJPUF9QQURESU5HX0JPVFRPTToKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUocmVuZGVyZXItPnBhZGRpbmdCb3R0b20oKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QWCk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfUEFERElOR19MRUZUOgorICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShyZW5kZXJlci0+cGFkZGluZ0xlZnQo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfUEFH
RToKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9QQUdFX0JSRUFLX0FGVEVSOgorICAgICAgICAgICAg
c3dpdGNoIChzdHlsZS0+cGFnZUJyZWFrQWZ0ZXIoKSkgeworICAgICAgICAgICAgICAgIGNhc2Ug
UEJBVVRPOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfQVVUTyk7CisgICAgICAgICAgICAgICAgY2FzZSBQQkFMV0FZUzoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FMV0FZUyk7
CisgICAgICAgICAgICAgICAgY2FzZSBQQkFWT0lEOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVZPSUQpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBDU1NfUFJPUF9QQUdFX0JSRUFLX0JFRk9SRToKKyAgICAgICAgICAgIHN3
aXRjaCAoc3R5bGUtPnBhZ2VCcmVha0JlZm9yZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBQ
QkFVVE86CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9BVVRPKTsKKyAgICAgICAgICAgICAgICBjYXNlIFBCQUxXQVlTOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQUxXQVlTKTsK
KyAgICAgICAgICAgICAgICBjYXNlIFBCQVZPSUQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVk9JRCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICBjYXNlIENTU19QUk9QX1BBR0VfQlJFQUtfSU5TSURFOgorICAgICAgICAgICAgc3dp
dGNoIChzdHlsZS0+cGFnZUJyZWFrSW5zaWRlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBC
QVVUTzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0FVVE8pOworICAgICAgICAgICAgICAgIGNhc2UgUEJBVk9JRDoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FWT0lEKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIFBCQUxXQVlTOgorICAgICAgICAgICAgICAgICAgICBicmVhazsg
Ly8gbm90IGFsbG93ZWQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfUE9T
SVRJT046CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5wb3NpdGlvbigpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBTdGF0aWNQb3NpdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NUQVRJQyk7CisgICAgICAgICAgICAgICAg
Y2FzZSBSZWxhdGl2ZVBvc2l0aW9uOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUkVMQVRJVkUpOworICAgICAgICAgICAgICAgIGNhc2Ug
QWJzb2x1dGVQb3NpdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0FCU09MVVRFKTsKKyAgICAgICAgICAgICAgICBjYXNlIEZpeGVk
UG9zaXRpb246CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9GSVhFRCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENTU19QUk9Q
X1FVT1RFUzoKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9SSUdIVDoKKyAgICAgICAgICAgIHJldHVy
biBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKHJlbmRlcmVyLCBDU1NfUFJPUF9SSUdIVCk7CisgICAg
ICAgIGNhc2UgQ1NTX1BST1BfU0laRToKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVu
dGVkCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9UQUJMRV9MQVlP
VVQ6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT50YWJsZUxheW91dCgpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBUQVVUTzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOworICAgICAgICAgICAgICAgIGNhc2UgVEZJWEVE
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfRklYRUQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9URVhUX0FM
SUdOOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yVGV4dEFsaWduKHN0eWxlLT50ZXh0QWxp
Z24oKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfVEVYVF9ERUNPUkFUSU9OOiB7CisgICAgICAg
ICAgICBTdHJpbmcgc3RyaW5nOworICAgICAgICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlv
bigpICYgVU5ERVJMSU5FKQorICAgICAgICAgICAgICAgIHN0cmluZyArPSAidW5kZXJsaW5lIjsK
KyAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIE9WRVJMSU5FKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICAgICAg
c3RyaW5nICs9ICIgIjsKKyAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIm92ZXJsaW5lIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIExJ
TkVfVEhST1VHSCkgeworICAgICAgICAgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoKCkpCisgICAg
ICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7CisgICAgICAgICAgICAgICAgc3RyaW5nICs9
ICJsaW5lLXRocm91Z2giOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0eWxlLT50
ZXh0RGVjb3JhdGlvbigpICYgQkxJTkspIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmxl
bmd0aCgpKQorICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAiOworICAgICAgICAgICAg
ICAgIHN0cmluZyArPSAiYmxpbmsiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFz
dHJpbmcubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX05PTkUpOwotICAgICAgICAgICAgY2FzZSBNU0NST0xMOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TQ1JPTEwpOwotICAg
ICAgICAgICAgY2FzZSBNU0xJREU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX1NMSURFKTsKLSAgICAgICAgICAgIGNhc2UgTUFMVEVSTkFURToK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQUxU
RVJOQVRFKTsKLSAgICAgICAgICAgIGNhc2UgTVVORlVSTDoKLSAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVU5GVVJMKTsKLSAgICAgICAgfQotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBD
U1NfUFJPUF9fV0VCS0lUX1VTRVJfTU9ESUZZOgotICAgICAgICBzd2l0Y2ggKHN0eWxlLT51c2Vy
TW9kaWZ5KCkpIHsKLSAgICAgICAgICAgIGNhc2UgUkVBRF9PTkxZOgotICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRUFEX09OTFkpOwotICAgICAg
ICAgICAgY2FzZSBSRUFEX1dSSVRFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRUFEX1dSSVRFKTsKLSAgICAgICAgICAgIGNhc2UgUkVBRF9X
UklURV9QTEFJTlRFWFRfT05MWToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfUkVBRF9XUklURV9QTEFJTlRFWFRfT05MWSk7CisgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0cmluZywgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TVFJJTkcpOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENTU19QUk9QX01BWF9IRUlHSFQ6Ci0gICAgICAg
IHJldHVybiB2YWx1ZUZvck1heExlbmd0aChzdHlsZS0+bWF4SGVpZ2h0KCkpOwotICAgIGNhc2Ug
Q1NTX1BST1BfTUFYX1dJRFRIOgotICAgICAgICByZXR1cm4gdmFsdWVGb3JNYXhMZW5ndGgoc3R5
bGUtPm1heFdpZHRoKCkpOwotICAgIGNhc2UgQ1NTX1BST1BfTUlOX0hFSUdIVDoKLSAgICAgICAg
cmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5taW5IZWlnaHQoKSk7Ci0gICAgY2FzZSBDU1Nf
UFJPUF9NSU5fV0lEVEg6Ci0gICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWlu
V2lkdGgoKSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9PUEFDSVRZOgotICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5vcGFjaXR5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKTsKLSAgICBjYXNlIENTU19QUk9QX09SUEhBTlM6Ci0gICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPm9ycGhhbnMoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpOwotICAgIGNhc2UgQ1NTX1BST1BfT1VUTElORV9DT0xPUjoKLSAgICAgICAg
cmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPm91dGxpbmVDb2xv
cigpKTsKLSAgICBjYXNlIENTU19QUk9QX09VVExJTkVfT0ZGU0VUOgotICAgICAgICAvLyBGSVhN
RTogdW5pbXBsZW1lbnRlZAotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU19QUk9QX09VVExJ
TkVfU1RZTEU6Ci0gICAgICAgIGlmIChzdHlsZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkpCi0gICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAg
ICAgIHJldHVybiB2YWx1ZUZvckJvcmRlclN0eWxlKHN0eWxlLT5vdXRsaW5lU3R5bGUoKSk7Ci0g
ICAgY2FzZSBDU1NfUFJPUF9PVVRMSU5FX1dJRFRIOgotICAgICAgICAvLyBGSVhNRTogdW5pbXBs
ZW1lbnRlZAotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU19QUk9QX09WRVJGTE9XOgotICAg
IGNhc2UgQ1NTX1BST1BfT1ZFUkZMT1dfWDoKLSAgICBjYXNlIENTU19QUk9QX09WRVJGTE9XX1k6
Ci0gICAgICAgIEVPdmVyZmxvdyBvdmVyZmxvdzsKLSAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUlE
KSB7Ci0gICAgICAgICAgICBjYXNlIENTU19QUk9QX09WRVJGTE9XX1g6Ci0gICAgICAgICAgICAg
ICAgb3ZlcmZsb3cgPSBzdHlsZS0+b3ZlcmZsb3dYKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIENTU19QUk9QX09WRVJGTE9XX1k6Ci0gICAgICAgICAgICAgICAg
b3ZlcmZsb3cgPSBzdHlsZS0+b3ZlcmZsb3dZKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gbWF4KHN0eWxl
LT5vdmVyZmxvd1goKSwgc3R5bGUtPm92ZXJmbG93WSgpKTsKLSAgICAgICAgfQotICAgICAgICBz
d2l0Y2ggKG92ZXJmbG93KSB7Ci0gICAgICAgICAgICBjYXNlIE9WSVNJQkxFOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9WSVNJQkxFKTsKLSAg
ICAgICAgICAgIGNhc2UgT0hJRERFTjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfSElEREVOKTsKLSAgICAgICAgICAgIGNhc2UgT1NDUk9MTDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0NS
T0xMKTsKLSAgICAgICAgICAgIGNhc2UgT0FVVE86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgY2FzZSBPTUFS
UVVFRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfX1dFQktJVF9NQVJRVUVFKTsKLSAgICAgICAgICAgIGNhc2UgT09WRVJMQVk6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX09WRVJMQVkpOwot
ICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
MDsKLSAgICBjYXNlIENTU19QUk9QX1BBRERJTkdfVE9QOgotICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5wYWRkaW5nVG9wKCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUFgpOwotICAgIGNhc2UgQ1NTX1BST1BfUEFERElOR19SSUdIVDoKLSAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShyZW5kZXJlci0+cGFkZGluZ1JpZ2h0KCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgIGNhc2UgQ1NTX1BST1BfUEFERElOR19CT1RUT006
Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVyZXItPnBhZGRpbmdC
b3R0b20oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAgY2FzZSBDU1NfUFJPUF9Q
QURESU5HX0xFRlQ6Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVy
ZXItPnBhZGRpbmdMZWZ0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgIGNhc2Ug
Q1NTX1BST1BfUEFHRToKLSAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9QQUdFX0JSRUFLX0FGVEVSOgotICAgICAgICBzd2l0
Y2ggKHN0eWxlLT5wYWdlQnJlYWtBZnRlcigpKSB7Ci0gICAgICAgICAgICBjYXNlIFBCQVVUTzoK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVU
Tyk7Ci0gICAgICAgICAgICBjYXNlIFBCQUxXQVlTOgotICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BTFdBWVMpOwotICAgICAgICAgICAgY2FzZSBQ
QkFWT0lEOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9BVk9JRCk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfUEFHRV9CUkVBS19CRUZPUkU6Ci0g
ICAgICAgIHN3aXRjaCAoc3R5bGUtPnBhZ2VCcmVha0JlZm9yZSgpKSB7Ci0gICAgICAgICAgICBj
YXNlIFBCQVVUTzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfQVVUTyk7Ci0gICAgICAgICAgICBjYXNlIFBCQUxXQVlTOgotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BTFdBWVMpOwotICAgICAg
ICAgICAgY2FzZSBQQkFWT0lEOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9BVk9JRCk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfUEFHRV9CUkVB
S19JTlNJREU6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPnBhZ2VCcmVha0luc2lkZSgpKSB7Ci0g
ICAgICAgICAgICBjYXNlIFBCQVVUTzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAgICAgICAgICBjYXNlIFBCQVZPSUQ6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FWT0lE
KTsKLSAgICAgICAgICAgIGNhc2UgUEJBTFdBWVM6Ci0gICAgICAgICAgICAgICAgYnJlYWs7IC8v
IG5vdCBhbGxvd2VkCi0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfUE9TSVRJT046Ci0gICAgICAgIHN3
aXRjaCAoc3R5bGUtPnBvc2l0aW9uKCkpIHsKLSAgICAgICAgICAgIGNhc2UgU3RhdGljUG9zaXRp
b246Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1NUQVRJQyk7Ci0gICAgICAgICAgICBjYXNlIFJlbGF0aXZlUG9zaXRpb246Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JFTEFUSVZFKTsKLSAg
ICAgICAgICAgIGNhc2UgQWJzb2x1dGVQb3NpdGlvbjoKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQUJTT0xVVEUpOwotICAgICAgICAgICAgY2Fz
ZSBGaXhlZFBvc2l0aW9uOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9GSVhFRCk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfUVVPVEVTOgotICAg
ICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAotICAgICAgICBicmVhazsKLSAgICBjYXNlIENT
U19QUk9QX1JJR0hUOgotICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShyZW5k
ZXJlciwgQ1NTX1BST1BfUklHSFQpOwotICAgIGNhc2UgQ1NTX1BST1BfU0laRToKLSAgICAgICAg
Ly8gRklYTUU6IHVuaW1wbGVtZW50ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJP
UF9UQUJMRV9MQVlPVVQ6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPnRhYmxlTGF5b3V0KCkpIHsK
LSAgICAgICAgICAgIGNhc2UgVEFVVE86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgY2FzZSBURklYRUQ6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0ZJWEVE
KTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9URVhUX0FMSUdOOgotICAgICAgICByZXR1cm4gdmFs
dWVGb3JUZXh0QWxpZ24oc3R5bGUtPnRleHRBbGlnbigpKTsKLSAgICBjYXNlIENTU19QUk9QX1RF
WFRfREVDT1JBVElPTjoKLSAgICB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmc7Ci0gICAgICAgIGlm
IChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIFVOREVSTElORSkKLSAgICAgICAgICAgIHN0cmlu
ZyArPSAidW5kZXJsaW5lIjsKLSAgICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpICYg
T1ZFUkxJTkUpIHsKLSAgICAgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiAwKQotICAgICAg
ICAgICAgICAgIHN0cmluZyArPSAiICI7Ci0gICAgICAgICAgICBzdHJpbmcgKz0gIm92ZXJsaW5l
IjsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3R5bGUtPnRleHREZWNvcmF0aW9uKCkgJiBMSU5F
X1RIUk9VR0gpIHsKLSAgICAgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiAwKQotICAgICAg
ICAgICAgICAgIHN0cmluZyArPSAiICI7Ci0gICAgICAgICAgICBzdHJpbmcgKz0gImxpbmUtdGhy
b3VnaCI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpICYg
QkxJTkspIHsKLSAgICAgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiAwKQotICAgICAgICAg
ICAgICAgIHN0cmluZyArPSAiICI7Ci0gICAgICAgICAgICBzdHJpbmcgKz0gImJsaW5rIjsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID09IDApCi0gICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0gICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NU
UklORyk7Ci0gICAgfQotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9URVhUX0RFQ09SQVRJT05T
X0lOX0VGRkVDVDoKLSAgICB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmc7Ci0gICAgICAgIGlmIChz
dHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFVOREVSTElORSkKLSAgICAgICAgICAg
IHN0cmluZyArPSAidW5kZXJsaW5lIjsKLSAgICAgICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCgpICYgT1ZFUkxJTkUpIHsKLSAgICAgICAgICAgIGlmIChzdHJpbmcubGVuZ3Ro
KCkgPiAwKQotICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7Ci0gICAgICAgICAgICBzdHJp
bmcgKz0gIm92ZXJsaW5lIjsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3R5bGUtPnRleHREZWNv
cmF0aW9uc0luRWZmZWN0KCkgJiBMSU5FX1RIUk9VR0gpIHsKLSAgICAgICAgICAgIGlmIChzdHJp
bmcubGVuZ3RoKCkgPiAwKQotICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7Ci0gICAgICAg
ICAgICBzdHJpbmcgKz0gImxpbmUtdGhyb3VnaCI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0
eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgQkxJTkspIHsKLSAgICAgICAgICAgIGlm
IChzdHJpbmcubGVuZ3RoKCkgPiAwKQotICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7Ci0g
ICAgICAgICAgICBzdHJpbmcgKz0gImJsaW5rIjsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3Ry
aW5nLmxlbmd0aCgpID09IDApCi0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfTk9ORSk7Ci0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
c3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7Ci0gICAgfQotICAgIGNhc2Ug
Q1NTX1BST1BfX1dFQktJVF9URVhUX0ZJTExfQ09MT1I6Ci0gICAgICAgIHJldHVybiBjdXJyZW50
Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN0eWxlLT50ZXh0RmlsbENvbG9yKCkpOwotICAgIGNh
c2UgQ1NTX1BST1BfVEVYVF9JTkRFTlQ6Ci0gICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChz
dHlsZS0+dGV4dEluZGVudCgpKTsKLSAgICBjYXNlIENTU19QUk9QX1RFWFRfU0hBRE9XOgotICAg
ICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3R5bGUtPnRleHRTaGFkb3coKSk7Ci0gICAgY2Fz
ZSBDU1NfUFJPUF9fV0VCS0lUX1RFWFRfU0VDVVJJVFk6Ci0gICAgewotICAgICAgICBzd2l0Y2gg
KHN0eWxlLT50ZXh0U2VjdXJpdHkoKSkgewotICAgICAgICAgICAgY2FzZSBUU05PTkU6CisgICAg
ICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9URVhUX0RFQ09SQVRJT05TX0lOX0VGRkVDVDogewor
ICAgICAgICAgICAgU3RyaW5nIHN0cmluZzsKKyAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4dERl
Y29yYXRpb25zSW5FZmZlY3QoKSAmIFVOREVSTElORSkKKyAgICAgICAgICAgICAgICBzdHJpbmcg
Kz0gInVuZGVybGluZSI7CisgICAgICAgICAgICBpZiAoc3R5bGUtPnRleHREZWNvcmF0aW9uc0lu
RWZmZWN0KCkgJiBPVkVSTElORSkgeworICAgICAgICAgICAgICAgIGlmIChzdHJpbmcubGVuZ3Ro
KCkpCisgICAgICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7CisgICAgICAgICAgICAgICAg
c3RyaW5nICs9ICJvdmVybGluZSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3R5
bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBMSU5FX1RIUk9VR0gpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgICAgICBzdHJpbmcg
Kz0gIiAiOworICAgICAgICAgICAgICAgIHN0cmluZyArPSAibGluZS10aHJvdWdoIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3Qo
KSAmIEJMSU5LKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSkKKyAgICAg
ICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgIjsKKyAgICAgICAgICAgICAgICBzdHJpbmcgKz0g
ImJsaW5rIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghc3RyaW5nLmxlbmd0aCgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
T05FKTsKLSAgICAgICAgICAgIGNhc2UgVFNESVNDOgotICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ESVNDKTsKLSAgICAgICAgICAgIGNhc2UgVFND
SVJDTEU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0NJUkNMRSk7Ci0gICAgICAgICAgICBjYXNlIFRTU1FVQVJFOgotICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TUVVBUkUpOworICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfU1RSSU5HKTsKICAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9URVhU
X1NJWkVfQURKVVNUOgotICAgICAgICBpZiAoc3R5bGUtPnRleHRTaXplQWRqdXN0KCkpIAotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAg
ICAgICBlbHNlCisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9URVhUX0ZJTExfQ09MT1I6
CisgICAgICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLCBzdHls
ZS0+dGV4dEZpbGxDb2xvcigpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9URVhUX0lOREVOVDoK
KyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+dGV4dEluZGVudCgpKTsK
KyAgICAgICAgY2FzZSBDU1NfUFJPUF9URVhUX1NIQURPVzoKKyAgICAgICAgICAgIHJldHVybiB2
YWx1ZUZvclNoYWRvdyhzdHlsZS0+dGV4dFNoYWRvdygpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJP
UF9fV0VCS0lUX1RFWFRfU0VDVVJJVFk6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT50ZXh0
U2VjdXJpdHkoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgVFNOT05FOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7CisgICAg
ICAgICAgICAgICAgY2FzZSBUU0RJU0M6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ESVNDKTsKKyAgICAgICAgICAgICAgICBjYXNlIFRT
Q0lSQ0xFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfQ0lSQ0xFKTsKKyAgICAgICAgICAgICAgICBjYXNlIFRTU1FVQVJFOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1FVQVJF
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9URVhUX1NJ
WkVfQURKVVNUOgorICAgICAgICAgICAgaWYgKHN0eWxlLT50ZXh0U2l6ZUFkanVzdCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsK
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsK
LSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfVEVYVF9TVFJPS0VfQ09MT1I6Ci0gICAgICAgIHJl
dHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN0eWxlLT50ZXh0U3Ryb2tlQ29s
b3IoKSk7Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX1RFWFRfU1RST0tFX1dJRFRIOgotICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT50ZXh0U3Ryb2tlV2lkdGgo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotICAgIGNhc2UgQ1NTX1BST1BfVEVY
VF9UUkFOU0ZPUk06Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPnRleHRUcmFuc2Zvcm0oKSkgewot
ICAgICAgICAgICAgY2FzZSBDQVBJVEFMSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DQVBJVEFMSVpFKTsKLSAgICAgICAgICAgIGNhc2Ug
VVBQRVJDQVNFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9VUFBFUkNBU0UpOwotICAgICAgICAgICAgY2FzZSBMT1dFUkNBU0U6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xPV0VSQ0FTRSk7
Ci0gICAgICAgICAgICBjYXNlIFRUTk9ORToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfVE9Q
OgotICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShyZW5kZXJlciwgQ1NTX1BS
T1BfVE9QKTsKLSAgICBjYXNlIENTU19QUk9QX1VOSUNPREVfQklESToKLSAgICAgICAgc3dpdGNo
IChzdHlsZS0+dW5pY29kZUJpZGkoKSkgewotICAgICAgICAgICAgY2FzZSBVQk5vcm1hbDoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFM
KTsKLSAgICAgICAgICAgIGNhc2UgRW1iZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0VNQkVEKTsKLSAgICAgICAgICAgIGNhc2UgT3ZlcnJp
ZGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0JJRElfT1ZFUlJJREUpOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENTU19QUk9QX1ZFUlRJQ0FMX0FMSUdOOgot
ICAgICAgICBzd2l0Y2ggKHN0eWxlLT52ZXJ0aWNhbEFsaWduKCkpIHsKLSAgICAgICAgICAgIGNh
c2UgQkFTRUxJTkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX0JBU0VMSU5FKTsKLSAgICAgICAgICAgIGNhc2UgTUlERExFOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NSURETEUpOwotICAg
ICAgICAgICAgY2FzZSBTVUI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1NVQik7Ci0gICAgICAgICAgICBjYXNlIFNVUEVSOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TVVBFUik7Ci0gICAg
ICAgICAgICBjYXNlIFRFWFRfVE9QOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9URVhUX1RPUCk7Ci0gICAgICAgICAgICBjYXNlIFRFWFRfQk9U
VE9NOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9URVhUX0JPVFRPTSk7Ci0gICAgICAgICAgICBjYXNlIFRPUDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVE9QKTsKLSAgICAgICAgICAgIGNh
c2UgQk9UVE9NOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9CT1RUT00pOwotICAgICAgICAgICAgY2FzZSBCQVNFTElORV9NSURETEU6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX19XRUJLSVRf
QkFTRUxJTkVfTUlERExFKTsKLSAgICAgICAgICAgIGNhc2UgTEVOR1RIOgotICAgICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+dmVydGljYWxBbGlnbkxlbmd0aCgpKTsK
LSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9WSVNJQklMSVRZOgotICAgICAgICBzd2l0Y2ggKHN0eWxl
LT52aXNpYmlsaXR5KCkpIHsKLSAgICAgICAgICAgIGNhc2UgVklTSUJMRToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVklTSUJMRSk7Ci0gICAg
ICAgICAgICBjYXNlIEhJRERFTjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfSElEREVOKTsKLSAgICAgICAgICAgIGNhc2UgQ09MTEFQU0U6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTExB
UFNFKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgY2FzZSBDU1NfUFJPUF9XSElURV9TUEFDRToKLSAgICAgICAgc3dpdGNo
IChzdHlsZS0+d2hpdGVTcGFjZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIE5PUk1BTDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsK
LSAgICAgICAgICAgIGNhc2UgUFJFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9QUkUpOwotICAgICAgICAgICAgY2FzZSBQUkVfV1JBUDoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUFJFX1dS
QVApOwotICAgICAgICAgICAgY2FzZSBQUkVfTElORToKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUFJFX0xJTkUpOwotICAgICAgICAgICAgY2Fz
ZSBOT1dSQVA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX05PV1JBUCk7Ci0gICAgICAgICAgICBjYXNlIEtIVE1MX05PV1JBUDoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfX1dFQktJVF9OT1dS
QVApOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICBjYXNlIENTU19QUk9QX1dJRE9XUzoKLSAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+d2lkb3dzKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKTsKLSAgICBjYXNlIENTU19QUk9QX1dJRFRIOgotICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5jb250ZW50V2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QWCk7Ci0gICAgY2FzZSBDU1NfUFJPUF9XT1JEX1NQQUNJTkc6Ci0gICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPndvcmRTcGFjaW5nKCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgIGNhc2UgQ1NTX1BST1BfV09SRF9XUkFQOgotICAgICAg
ICBzd2l0Y2ggKHN0eWxlLT53b3JkV3JhcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIFdCTk9STUFM
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
T1JNQUwpOwotICAgICAgICAgICAgY2FzZSBCUkVBS19XT1JEOgotICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CUkVBS19XT1JEKTsKLSAgICAgICAg
fQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
Y2FzZSBDU1NfUFJPUF9fV0VCS0lUX0xJTkVfQlJFQUs6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUt
PmtodG1sTGluZUJyZWFrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTEJOT1JNQUw6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7Ci0g
ICAgICAgICAgICBjYXNlIEFGVEVSX1dISVRFX1NQQUNFOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BRlRFUl9XSElURV9TUEFDRSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9OQlNQX01PREU6Ci0gICAgICAgIHN3aXRjaCAoc3R5
bGUtPm5ic3BNb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTkJOT1JNQUw6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7Ci0gICAg
ICAgICAgICBjYXNlIFNQQUNFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9TUEFDRSk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9N
QVRDSF9ORUFSRVNUX01BSUxfQkxPQ0tRVU9URV9DT0xPUjoKLSAgICAgICAgc3dpdGNoIChzdHls
ZS0+bWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcigpKSB7Ci0gICAgICAgICAgICBjYXNl
IEJDTk9STUFMOgorICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfVEVYVF9TVFJPS0VfQ09M
T1I6CisgICAgICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLCBz
dHlsZS0+dGV4dFN0cm9rZUNvbG9yKCkpOworICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRf
VEVYVF9TVFJPS0VfV0lEVEg6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN0eWxlLT50ZXh0U3Ryb2tlV2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpOworICAgICAgICBjYXNlIENTU19QUk9QX1RFWFRfVFJBTlNGT1JNOgorICAgICAgICAgICAg
c3dpdGNoIChzdHlsZS0+dGV4dFRyYW5zZm9ybSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBD
QVBJVEFMSVpFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfQ0FQSVRBTElaRSk7CisgICAgICAgICAgICAgICAgY2FzZSBVUFBFUkNBU0U6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9VUFBFUkNBU0UpOworICAgICAgICAgICAgICAgIGNhc2UgTE9XRVJDQVNFOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTE9XRVJDQVNF
KTsKKyAgICAgICAgICAgICAgICBjYXNlIFRUTk9ORToKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBDU1NfUFJPUF9UT1A6CisgICAgICAgICAgICByZXR1cm4gZ2V0UG9zaXRp
b25PZmZzZXRWYWx1ZShyZW5kZXJlciwgQ1NTX1BST1BfVE9QKTsKKyAgICAgICAgY2FzZSBDU1Nf
UFJPUF9VTklDT0RFX0JJREk6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT51bmljb2RlQmlk
aSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBVQk5vcm1hbDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7CisgICAgICAg
ICAgICAgICAgY2FzZSBFbWJlZDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0VNQkVEKTsKKyAgICAgICAgICAgICAgICBjYXNlIE92ZXJy
aWRlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfQklESV9PVkVSUklERSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIENTU19Q
Uk9QX1ZFUlRJQ0FMX0FMSUdOOgorICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+dmVydGljYWxB
bGlnbigpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBCQVNFTElORToKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JBU0VMSU5FKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIE1JRERMRToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX01JRERMRSk7CisgICAgICAgICAgICAgICAgY2Fz
ZSBTVUI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9TVUIpOworICAgICAgICAgICAgICAgIGNhc2UgU1VQRVI6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TVVBFUik7CisgICAg
ICAgICAgICAgICAgY2FzZSBURVhUX1RPUDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RFWFRfVE9QKTsKKyAgICAgICAgICAgICAgICBj
YXNlIFRFWFRfQk9UVE9NOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfVEVYVF9CT1RUT00pOworICAgICAgICAgICAgICAgIGNhc2UgVE9Q
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfVE9QKTsKKyAgICAgICAgICAgICAgICBjYXNlIEJPVFRPTToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JPVFRPTSk7CisgICAgICAg
ICAgICAgICAgY2FzZSBCQVNFTElORV9NSURETEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9fV0VCS0lUX0JBU0VMSU5FX01JRERMRSk7
CisgICAgICAgICAgICAgICAgY2FzZSBMRU5HVEg6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB2YWx1ZUZvckxlbmd0aChzdHlsZS0+dmVydGljYWxBbGlnbkxlbmd0aCgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfVklTSUJJTElUWToKKyAgICAgICAgICAgIHN3
aXRjaCAoc3R5bGUtPnZpc2liaWxpdHkoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgVklTSUJM
RToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX1ZJU0lCTEUpOworICAgICAgICAgICAgICAgIGNhc2UgSElEREVOOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSElEREVOKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIENPTExBUFNFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ09MTEFQU0UpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgY2FzZSBDU1NfUFJPUF9XSElURV9TUEFDRToKKyAgICAgICAgICAgIHN3aXRjaCAo
c3R5bGUtPndoaXRlU3BhY2UoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgTk9STUFMOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9S
TUFMKTsKKyAgICAgICAgICAgICAgICBjYXNlIFBSRToKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BSRSk7CisgICAgICAgICAgICAgICAg
Y2FzZSBQUkVfV1JBUDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1BSRV9XUkFQKTsKKyAgICAgICAgICAgICAgICBjYXNlIFBSRV9MSU5F
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfUFJFX0xJTkUpOworICAgICAgICAgICAgICAgIGNhc2UgTk9XUkFQOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9XUkFQKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIEtIVE1MX05PV1JBUDoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX19XRUJLSVRfTk9XUkFQKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfV0lET1dTOgorICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+d2lkb3dzKCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9XSURUSDoKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVyZXItPmNvbnRlbnRXaWR0aCgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9XT1JE
X1NQQUNJTkc6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxl
LT53b3JkU3BhY2luZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgY2Fz
ZSBDU1NfUFJPUF9XT1JEX1dSQVA6CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT53b3JkV3Jh
cCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBXQk5PUk1BTDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7CisgICAgICAg
ICAgICAgICAgY2FzZSBCUkVBS19XT1JEOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQlJFQUtfV09SRCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTElORV9CUkVBSzoKKyAgICAgICAgICAgIHN3
aXRjaCAoc3R5bGUtPmtodG1sTGluZUJyZWFrKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIExC
Tk9STUFMOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTk9STUFMKTsKKyAgICAgICAgICAgICAgICBjYXNlIEFGVEVSX1dISVRFX1NQQUNF
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfQUZURVJfV0hJVEVfU1BBQ0UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBDU1Nf
UFJPUF9fV0VCS0lUX05CU1BfTU9ERToKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPm5ic3BN
b2RlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIE5CTk9STUFMOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKKyAgICAg
ICAgICAgICAgICBjYXNlIFNQQUNFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1BBQ0UpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
Y2FzZSBDU1NfUFJPUF9fV0VCS0lUX01BVENIX05FQVJFU1RfTUFJTF9CTE9DS1FVT1RFX0NPTE9S
OgorICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+bWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVD
b2xvcigpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBCQ05PUk1BTDoKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7CisgICAg
ICAgICAgICAgICAgY2FzZSBNQVRDSDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX01BVENIKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IGNhc2UgQ1NTX1BST1BfUkVTSVpFOgorICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+cmVzaXpl
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFJFU0laRV9CT1RIOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQk9USCk7CisgICAgICAg
ICAgICAgICAgY2FzZSBSRVNJWkVfSE9SSVpPTlRBTDoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hPUklaT05UQUwpOworICAgICAgICAg
ICAgICAgIGNhc2UgUkVTSVpFX1ZFUlRJQ0FMOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVkVSVElDQUwpOworICAgICAgICAgICAgICAg
IGNhc2UgUkVTSVpFX05PTkU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
Q1NTX1BST1BfWl9JTkRFWDoKKyAgICAgICAgICAgIGlmIChzdHlsZS0+aGFzQXV0b1pJbmRleCgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
T1JNQUwpOwotICAgICAgICAgICAgY2FzZSBNQVRDSDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTUFUQ0gpOwotICAgICAgICB9Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIENTU19Q
Uk9QX1JFU0laRToKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+cmVzaXplKCkpIHsKLSAgICAgICAg
ICAgIGNhc2UgUkVTSVpFX0JPVEg6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0JPVEgpOwotICAgICAgICAgICAgY2FzZSBSRVNJWkVfSE9SSVpP
TlRBTDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfSE9SSVpPTlRBTCk7Ci0gICAgICAgICAgICBjYXNlIFJFU0laRV9WRVJUSUNBTDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVkVSVElDQUwp
OwotICAgICAgICAgICAgY2FzZSBSRVNJWkVfTk9ORToKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUp
OwotICAgICAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9aX0lOREVYOgotICAgICAgICBpZiAoc3R5
bGUtPmhhc0F1dG9aSW5kZXgoKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOwotICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN0eWxlLT56SW5kZXgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotICAg
IGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORDoKLSAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50
ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVI6Ci0gICAgICAgIC8v
IEZJWE1FOiB1bmltcGxlbWVudGVkCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1Bf
Qk9SREVSX0NPTE9SOgotICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9TVFlMRToKLSAgICAgICAgLy8gRklYTUU6
IHVuaW1wbGVtZW50ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJf
VE9QOgotICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU19QUk9QX0JPUkRFUl9SSUdIVDoKLSAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVt
ZW50ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfQk9UVE9NOgot
ICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU19QUk9QX0JPUkRFUl9MRUZUOgotICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9XSURUSDoKLSAgICAgICAg
Ly8gRklYTUU6IHVuaW1wbGVtZW50ZWQKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUFJP
UF9GT05UOgotICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU19QUk9QX0xJU1RfU1RZTEU6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxl
bWVudGVkCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfTUFSR0lOOgotICAgICAg
ICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU19Q
Uk9QX09VVExJTkU6Ci0gICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCi0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTX1BST1BfUEFERElORzoKLSAgICAgICAgLy8gRklYTUU6IHVuaW1w
bGVtZW50ZWQKLSAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHN0eWxlLT56SW5kZXgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
OworICAgICAgICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkQ6CisgICAgICAgICAgICAvLyBGSVhN
RTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1BS
T1BfQk9SREVSOgorICAgICAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9DT0xPUjoKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDU1NfUFJPUF9CT1JERVJfU1RZTEU6CisgICAgICAgICAgICAvLyBGSVhNRTogdW5pbXBs
ZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVS
X1RPUDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfUklHSFQ6CisgICAgICAgICAgICAv
LyBGSVhNRTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q1NTX1BST1BfQk9SREVSX0JPVFRPTToKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVu
dGVkCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfTEVG
VDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfV0lEVEg6CisgICAgICAgICAgICAvLyBG
SVhNRTogdW5pbXBsZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NT
X1BST1BfRk9OVDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVkCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9MSVNUX1NUWUxFOgorICAgICAgICAg
ICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENTU19QUk9QX01BUkdJTjoKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmltcGxlbWVudGVk
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9PVVRMSU5FOgorICAg
ICAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENTU19QUk9QX1BBRERJTkc6CisgICAgICAgICAgICAvLyBGSVhNRTogdW5pbXBs
ZW1lbnRlZAorICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBj
YXNlIENTU19QUk9QX19XRUJLSVRfREFTSEJPQVJEX1JFR0lPTjogewogICAgICAgICAgICAgY29u
c3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgcmVnaW9ucyA9IHN0eWxlLT5kYXNoYm9h
cmRSZWdpb25zKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjb3VudCA9IHJlZ2lvbnMuc2l6ZSgp
OwogICAgICAgICAgICAgaWYgKGNvdW50ID09IDEgJiYgcmVnaW9uc1swXS50eXBlID09IFN0eWxl
RGFzaGJvYXJkUmVnaW9uOjpOb25lKQogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBS
ZWZQdHI8RGFzaGJvYXJkUmVnaW9uPiBmaXJzdFJlZ2lvbjsKICAgICAgICAgICAgIERhc2hib2Fy
ZFJlZ2lvbiogcHJldmlvdXNSZWdpb24gPSAwOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNvdW50OyBpKyspIHsKQEAgLTE0NzksNyArMTQ1OSw3IEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgICAgICByZWdpb24tPnNl
dFJpZ2h0KG5ldyBDU1NQcmltaXRpdmVWYWx1ZShvZmZzZXQucmlnaHQudmFsdWUoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCkpOwogICAgICAgICAgICAgICAgIHJlZ2lvbi0+c2V0Qm90dG9t
KG5ldyBDU1NQcmltaXRpdmVWYWx1ZShvZmZzZXQuYm90dG9tLnZhbHVlKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpKTsKICAgICAgICAgICAgICAgICByZWdpb24tPnNldExlZnQobmV3IENT
U1ByaW1pdGl2ZVZhbHVlKG9mZnNldC5sZWZ0LnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFgpKTsKLSAgICAgICAgICAgICAgICByZWdpb24tPm1faXNSZWN0YW5nbGUgPSAoc3R5bGVS
ZWdpb24udHlwZSA9PSBTdHlsZURhc2hib2FyZFJlZ2lvbjo6UmVjdGFuZ2xlKTsgCisgICAgICAg
ICAgICAgICAgcmVnaW9uLT5tX2lzUmVjdGFuZ2xlID0gKHN0eWxlUmVnaW9uLnR5cGUgPT0gU3R5
bGVEYXNoYm9hcmRSZWdpb246OlJlY3RhbmdsZSk7CiAgICAgICAgICAgICAgICAgcmVnaW9uLT5t
X2lzQ2lyY2xlID0gKHN0eWxlUmVnaW9uLnR5cGUgPT0gU3R5bGVEYXNoYm9hcmRSZWdpb246OkNp
cmNsZSk7CiAKICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNSZWdpb24pCkBAIC0xNTA1LDE5
ICsxNDg1LDE5IEBAIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFAKICAg
ICByZXR1cm4gIiI7CiB9CiAKLWJvb2wgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQ
cm9wZXJ0eVByaW9yaXR5KGludCkgY29uc3QKK2Jvb2wgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KGludCAvKnByb3BlcnR5SUQqLykgY29uc3QKIHsKICAg
ICAvLyBBbGwgY29tcHV0ZWQgc3R5bGVzIGhhdmUgYSBwcmlvcml0eSBvZiBmYWxzZSAobm90ICJp
bXBvcnRhbnQiKS4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KGludCwgRXhjZXB0aW9uQ29kZSYgZWMpCitT
dHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShpbnQgLypw
cm9wZXJ0eUlEKi8sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9fTU9ESUZJQ0FU
SU9OX0FMTE9XRURfRVJSOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGludCwgY29uc3QgU3RyaW5nJiwgYm9v
bCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6
c2V0UHJvcGVydHkoaW50IC8qcHJvcGVydHlJRCovLCBjb25zdCBTdHJpbmcmIC8qdmFsdWUqLywg
Ym9vbCAvKmltcG9ydGFudCovLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IE5PX01P
RElGSUNBVElPTl9BTExPV0VEX0VSUjsKIH0KQEAgLTE1MjcsMTIgKzE1MDcsMTUgQEAgdW5zaWdu
ZWQgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpsZQogICAgIE5vZGUqIG5vZGUgPSBtX25v
ZGUuZ2V0KCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gMDsKKwogICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIp
CiAgICAgICAgIHJldHVybiAwOworCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIt
PnN0eWxlKCk7CiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuIDA7CisKICAgICByZXR1
cm4gbnVtQ29tcHV0ZWRQcm9wZXJ0aWVzOwogfQogCkBAIC0xNTQwLDcgKzE1MjMsNyBAQCBTdHJp
bmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtCiB7CiAgICAgaWYgKGkgPj0gbGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAKKwogICAgIHJldHVybiBnZXRQ
cm9wZXJ0eU5hbWUoY29tcHV0ZWRQcm9wZXJ0aWVzW2ldKTsKIH0KIApJbmRleDogV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDE4ODM0KQorKysgV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw0IEBACiAvKioKLSAqIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCiAgKgog
ICogQ29weXJpZ2h0IChDKSAgMjAwNCAgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgogICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCkBAIC0yMCw4
ICsxOSw4IEBACiAgKiAwMjExMS0xMzA3ICBVU0EKICAqLwogCi0jaWZuZGVmIENTU19DT01QVVRF
RFNUWUxFX0gKLSNkZWZpbmUgQ1NTX0NPTVBVVEVEU1RZTEVfSAorI2lmbmRlZiBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb25faAorI2RlZmluZSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25f
aAogCiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGUuaCIK
QEAgLTYyLDEyICs2MSwxMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgdmlydHVh
bCBTdHJpbmcgcmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHkoaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBSZWZQdHI8
Tm9kZT4gbV9ub2RlOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYK
KyNlbmRpZiAvLyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25faApJbmRleDogV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDE4ODM0KQorKysgV2ViQ29yZS9jc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4LDE4ICsxOCwyMCBAQAog
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1DU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVl
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBJbnRQb2ludCYgcCwgU3R5bGVCYXNlKiBzdHlsZSkK
K0NTU0N1cnNvckltYWdlVmFsdWU6OkNTU0N1cnNvckltYWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IEludFBvaW50JiBob3RzcG90LCBTdHlsZUJhc2UqIHN0eWxlKQogICAgIDogQ1NT
SW1hZ2VWYWx1ZSh1cmwsIHN0eWxlKQotICAgICwgbV9ob3RzcG90KHApCisgICAgLCBtX2hvdHNw
b3QoaG90c3BvdCkKIHsKIH0KIAogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6fkNTU0N1cnNvckltYWdl
VmFsdWUoKQogewogfQotfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvY3NzL0NTU0N1
cnNvckltYWdlVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTksMTggKzE5LDE3IEBACiAgKiBC
b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU0N1cnNvckltYWdl
VmFsdWVfSAotI2RlZmluZSBDU1NDdXJzb3JJbWFnZVZhbHVlX0gKKyNpZm5kZWYgQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZV9oCisjZGVmaW5lIENTU0N1cnNvckltYWdlVmFsdWVfaAogCi0jaW5jbHVkZSAi
SW50UG9pbnQuaCIKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiSW50UG9p
bnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDU1NDdXJzb3JJbWFnZVZhbHVl
IDogcHVibGljIENTU0ltYWdlVmFsdWUKLXsKK2NsYXNzIENTU0N1cnNvckltYWdlVmFsdWUgOiBw
dWJsaWMgQ1NTSW1hZ2VWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZShj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgSW50UG9pbnQmLCBTdHlsZUJhc2UqKTsKKyAgICBDU1ND
dXJzb3JJbWFnZVZhbHVlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBJbnRQb2ludCYgaG90c3Bv
dCwgU3R5bGVCYXNlKik7CiAgICAgdmlydHVhbCB+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpOwogCiAg
ICAgSW50UG9pbnQgaG90c3BvdCgpIGNvbnN0IHsgcmV0dXJuIG1faG90c3BvdDsgfQpAQCAtMzgs
NiArMzcsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW50UG9pbnQgbV9ob3RzcG90Owog
fTsKLX0gLy8gbmFtZXNwYWNlCiAKLSNlbmRpZgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gQ1NTQ3Vyc29ySW1hZ2VWYWx1ZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CShyZXZpc2lvbiAx
ODgzNCkKKysrIFdlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQkod29ya2luZyBjb3B5KQpAQCAtNSw3
ICs1LDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMyBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLgogICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBu
eXBvcC5jb20pCi0gKiAKKyAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKQEAgLTc1LDcgKzc1
LDcgQEAgaW50IGdldFByb3BlcnR5SUQoY29uc3QgY2hhciogdGFnU3RyLCBpbgogICAgICAgICAg
ICAgbGVuKys7CiAgICAgICAgICAgICB0YWdTdHIgPSBwcm9wLmFzY2lpKCk7CiAgICAgICAgIH0K
LSAgICAgICAgCisKICAgICAgICAgLy8gSG9ub3IgdGhlIHVzZSBvZiBvbGQtc3R5bGUgb3BhY2l0
eSAoZm9yIFNhZmFyaSAxLjEpLgogICAgICAgICBpZiAocHJvcCA9PSAiLXdlYmtpdC1vcGFjaXR5
IikgewogICAgICAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0IG9wYWNpdHkgPSAib3BhY2l0eSI7
CkBAIC05MSw3ICs5MSw3IEBAIGludCBnZXRQcm9wZXJ0eUlEKGNvbnN0IGNoYXIqIHRhZ1N0ciwg
aW4KICAgICByZXR1cm4gcHJvcHNQdHItPmlkOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKIHN0YXRpYyBpbmxpbmUgaW50IGdldFZhbHVlSUQoY29uc3QgY2hhciogdGFnU3RyLCBp
bnQgbGVuKQogewpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldFZhbHVl
SUQoY29uc3QgY2hhcioKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IHN0cnVjdCBjc3Nf
dmFsdWUgKnZhbCA9IGZpbmRWYWx1ZSh0YWdTdHIsIGxlbik7CisgICAgY29uc3Qgc3RydWN0IGNz
c192YWx1ZSogdmFsID0gZmluZFZhbHVlKHRhZ1N0ciwgbGVuKTsKICAgICBpZiAoIXZhbCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKQEAgLTE1Miw4ICsxNTIsOCBAQCBzdGF0aWMgaW5saW5lIGludCBn
ZXRWYWx1ZUlEKGNvbnN0IGNoYXIqCiAKICV7CiAKLXN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJy
b3IoY29uc3QgY2hhciAqKSB7IHJldHVybiAxOyB9Ci1zdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZ
UEUgKnl5bHZhbCkgeyByZXR1cm4gQ1NTUGFyc2VyOjpjdXJyZW50KCktPmxleCh5eWx2YWwpOyB9
CitzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKGNvbnN0IGNoYXIqKSB7IHJldHVybiAxOyB9
CitzdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZUEUqIHl5bHZhbCkgeyByZXR1cm4gQ1NTUGFyc2Vy
OjpjdXJyZW50KCktPmxleCh5eWx2YWwpOyB9CiAKICV9CiAKQEAgLTMxNyw3ICszMTcsNyBAQCB3
ZWJraXRfZGVjbHM6CiAKIHdlYmtpdF92YWx1ZToKICAgICBXRUJLSVRfVkFMVUVfU1lNICd7JyBt
YXliZV9zcGFjZSBleHByICd9JyB7Ci0gICAgICAgIENTU1BhcnNlciAqcCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlciAqPihwYXJzZXIpOworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2Fz
dDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICBpZiAoJDQpIHsKICAgICAgICAgICAgIHAt
PnZhbHVlTGlzdCA9IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7CiAgICAgICAgICAgICBp
bnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm51bVBhcnNlZFByb3BlcnRpZXM7CkBAIC0zNTYs
NyArMzU2LDcgQEAgbWF5YmVfY2hhcnNldDoKIGNoYXJzZXQ6CiAgIENIQVJTRVRfU1lNIG1heWJl
X3NwYWNlIFNUUklORyBtYXliZV9zcGFjZSAnOycgewogICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1Bh
cnNlciAqPihwYXJzZXIpLT5jcmVhdGVDaGFyc2V0UnVsZSgkMyk7CisgICAgICQkID0gc3RhdGlj
X2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+Y3JlYXRlQ2hhcnNldFJ1bGUoJDMpOwogICAgICBp
ZiAoJCQgJiYgcC0+c3R5bGVFbGVtZW50ICYmIHAtPnN0eWxlRWxlbWVudC0+aXNDU1NTdHlsZVNo
ZWV0KCkpCiAgICAgICAgICBwLT5zdHlsZUVsZW1lbnQtPmFwcGVuZCgkJCk7CiAgIH0KQEAgLTQw
MSw3ICs0MDEsNyBAQCBydWxlOgogCiBpbXBvcnQ6CiAgICAgSU1QT1JUX1NZTSBtYXliZV9zcGFj
ZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgJzsnIHsKLSAgICAg
ICAgJCQgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2VyKS0+Y3JlYXRlSW1wb3J0UnVs
ZSgkMywgJDUpOworICAgICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcikt
PmNyZWF0ZUltcG9ydFJ1bGUoJDMsICQ1KTsKICAgICB9CiAgIHwgSU1QT1JUX1NZTSBlcnJvciBp
bnZhbGlkX2Jsb2NrIHsKICAgICAgICAgJCQgPSAwOwpAQCAtNDEzLDcgKzQxMyw3IEBAIGltcG9y
dDoKIAogbmFtZXNwYWNlOgogTkFNRVNQQUNFX1NZTSBtYXliZV9zcGFjZSBtYXliZV9uc19wcmVm
aXggc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSAnOycgewotICAgIENTU1BhcnNlciAqcCA9IHN0
YXRpY19jYXN0PENTU1BhcnNlciAqPihwYXJzZXIpOworICAgIENTU1BhcnNlciogcCA9IHN0YXRp
Y19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgaWYgKHAtPnN0eWxlRWxlbWVudCAmJiBw
LT5zdHlsZUVsZW1lbnQtPmlzQ1NTU3R5bGVTaGVldCgpKQogICAgICAgICBzdGF0aWNfY2FzdDxD
U1NTdHlsZVNoZWV0Kj4ocC0+c3R5bGVFbGVtZW50KS0+YWRkTmFtZXNwYWNlKHAsIGF0b21pY1N0
cmluZygkMyksIGF0b21pY1N0cmluZygkNCkpOwogfQpAQCAtNjAzLDkgKzYwMyw4IEBAIHNlbGVj
dG9yX2xpc3Q6CiAgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJz
ZXIqPihwYXJzZXIpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgICAgICQkLT5hcHBl
bmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQpKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIH0KICAgICB9CiAgIHwgc2Vs
ZWN0b3JfbGlzdCBlcnJvciB7CiAgICAgICAgICQkID0gMDsKQEAgLTYxOCwxNiArNjE3LDE1IEBA
IHNlbGVjdG9yOgogICAgIH0KICAgICB8IHNlbGVjdG9yIGNvbWJpbmF0b3Igc2ltcGxlX3NlbGVj
dG9yIHsKICAgICAgICAgJCQgPSAkMzsKLSAgICAgICAgaWYgKCEkMSkgeworICAgICAgICBpZiAo
ISQxKQogICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCQk
KSB7CiAgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihw
YXJzZXIpOwogICAgICAgICAgICAgQ1NTU2VsZWN0b3IqIGVuZCA9ICQkOwotICAgICAgICAgICAg
d2hpbGUgKGVuZC0+dGFnSGlzdG9yeSkKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hp
c3Rvcnk7CisgICAgICAgICAgICB3aGlsZSAoZW5kLT5tX3RhZ0hpc3RvcnkpCisgICAgICAgICAg
ICAgICAgZW5kID0gZW5kLT5tX3RhZ0hpc3Rvcnk7CiAgICAgICAgICAgICBlbmQtPm1fcmVsYXRp
b24gPSAkMjsKLSAgICAgICAgICAgIGVuZC0+dGFnSGlzdG9yeSA9IHAtPnNpbmtGbG9hdGluZ1Nl
bGVjdG9yKCQxKTsKKyAgICAgICAgICAgIGVuZC0+bV90YWdIaXN0b3J5ID0gcC0+c2lua0Zsb2F0
aW5nU2VsZWN0b3IoJDEpOwogICAgICAgICAgICAgaWYgKCQyID09IENTU1NlbGVjdG9yOjpEZXNj
ZW5kYW50IHx8ICQyID09IENTU1NlbGVjdG9yOjpDaGlsZCkgewogICAgICAgICAgICAgICAgIGlm
IChEb2N1bWVudCogZG9jID0gcC0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9j
LT5zZXRVc2VzRGVzY2VuZGFudFJ1bGVzKHRydWUpOwpAQCAtNjUwLDU2ICs2NDgsNTYgQEAgbmFt
ZXNwYWNlX3NlbGVjdG9yOgogCiBzaW1wbGVfc2VsZWN0b3I6CiAgICAgZWxlbWVudF9uYW1lIG1h
eWJlX3NwYWNlIHsKLSAgICAgICAgQ1NTUGFyc2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2Vy
ICo+KHBhcnNlcik7CisgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNl
cio+KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwot
ICAgICAgICAkJC0+dGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgYXRvbWljU3RyaW5nKCQx
KSwgcC0+ZGVmYXVsdE5hbWVzcGFjZSk7CisgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5h
bWUobnVsbEF0b20sIGF0b21pY1N0cmluZygkMSksIHAtPmRlZmF1bHROYW1lc3BhY2UpOwogICAg
IH0KICAgICB8IGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCBtYXliZV9zcGFjZSB7CiAgICAg
ICAgICQkID0gJDI7CiAgICAgICAgIGlmICgkJCkgewotICAgICAgICAgICAgQ1NTUGFyc2VyICpw
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyICo+KHBhcnNlcik7Ci0gICAgICAgICAgICAkJC0+dGFn
ID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgYXRvbWljU3RyaW5nKCQxKSwgcC0+ZGVmYXVsdE5h
bWVzcGFjZSk7CisgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJz
ZXIqPihwYXJzZXIpOworICAgICAgICAgICAgJCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxs
QXRvbSwgYXRvbWljU3RyaW5nKCQxKSwgcC0+ZGVmYXVsdE5hbWVzcGFjZSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCBtYXliZV9zcGFjZSB7CiAgICAgICAgICQkID0g
JDE7Ci0gICAgICAgIENTU1BhcnNlciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlciAqPihwYXJz
ZXIpOworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJz
ZXIpOwogICAgICAgICBpZiAoJCQgJiYgcC0+ZGVmYXVsdE5hbWVzcGFjZSAhPSBzdGFyQXRvbSkK
LSAgICAgICAgICAgICQkLT50YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwg
cC0+ZGVmYXVsdE5hbWVzcGFjZSk7CisgICAgICAgICAgICAkJC0+bV90YWcgPSBRdWFsaWZpZWRO
YW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgcC0+ZGVmYXVsdE5hbWVzcGFjZSk7CiAgICAgfQogICAg
IHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSBtYXliZV9zcGFjZSB7CiAgICAgICAg
IEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSBhdG9taWNTdHJpbmcoJDEpOwotICAgICAg
ICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2VyKTsKKyAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAg
ICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgIGlmIChwLT5zdHls
ZUVsZW1lbnQgJiYgcC0+c3R5bGVFbGVtZW50LT5pc0NTU1N0eWxlU2hlZXQoKSkKLSAgICAgICAg
ICAgICQkLT50YWcgPSBRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwKKyAgICAgICAgICAg
ICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljU3RyaW5nKCQyKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihwLT5zdHls
ZUVsZW1lbnQpLT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSk7CiAgICAgICAg
IGVsc2UgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlzIGNhc2UgYmUgYW4gZXJyb3I/Ci0gICAgICAg
ICAgICAkJC0+dGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgYXRvbWljU3RyaW5nKCQyKSwg
cC0+ZGVmYXVsdE5hbWVzcGFjZSk7CisgICAgICAgICAgICAkJC0+bV90YWcgPSBRdWFsaWZpZWRO
YW1lKG51bGxBdG9tLCBhdG9taWNTdHJpbmcoJDIpLCBwLT5kZWZhdWx0TmFtZXNwYWNlKTsKICAg
ICB9CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0
IG1heWJlX3NwYWNlIHsKICAgICAgICAgJCQgPSAkMzsKICAgICAgICAgaWYgKCQkKSB7CiAgICAg
ICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNwYWNlUHJlZml4ID0gYXRvbWljU3RyaW5nKCQxKTsK
LSAgICAgICAgICAgIENTU1BhcnNlciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlciAqPihwYXJz
ZXIpOworICAgICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4o
cGFyc2VyKTsKICAgICAgICAgICAgIGlmIChwLT5zdHlsZUVsZW1lbnQgJiYgcC0+c3R5bGVFbGVt
ZW50LT5pc0NTU1N0eWxlU2hlZXQoKSkKLSAgICAgICAgICAgICAgICAkJC0+dGFnID0gUXVhbGlm
aWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXRvbWljU3RyaW5nKCQyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4ocC0+c3R5bGVFbGVtZW50KS0+
ZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkpOworICAgICAgICAgICAgICAgICQk
LT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljU3RyaW5nKCQyKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQq
PihwLT5zdHlsZUVsZW1lbnQpLT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSk7
CiAgICAgICAgICAgICBlbHNlIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyBjYXNlIGJlIGFuIGVy
cm9yPwotICAgICAgICAgICAgICAgICQkLT50YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBh
dG9taWNTdHJpbmcoJDIpLCBwLT5kZWZhdWx0TmFtZXNwYWNlKTsKKyAgICAgICAgICAgICAgICAk
JC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBhdG9taWNTdHJpbmcoJDIpLCBwLT5k
ZWZhdWx0TmFtZXNwYWNlKTsKICAgICAgICAgfQogICAgIH0KICAgICB8IG5hbWVzcGFjZV9zZWxl
Y3RvciBzcGVjaWZpZXJfbGlzdCBtYXliZV9zcGFjZSB7CiAgICAgICAgICQkID0gJDI7CiAgICAg
ICAgIGlmICgkJCkgewogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZVByZWZpeCA9
IGF0b21pY1N0cmluZygkMSk7Ci0gICAgICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2Fz
dDxDU1NQYXJzZXIgKj4ocGFyc2VyKTsKKyAgICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRp
Y19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICAgICBpZiAocC0+c3R5bGVFbGVt
ZW50ICYmIHAtPnN0eWxlRWxlbWVudC0+aXNDU1NTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICAg
ICAgJCQtPnRhZyA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJBdG9tLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihwLT5zdHls
ZUVsZW1lbnQpLT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSk7CisgICAgICAg
ICAgICAgICAgJCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyQXRvbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1N0eWxlU2hl
ZXQqPihwLT5zdHlsZUVsZW1lbnQpLT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4
KSk7CiAgICAgICAgIH0KICAgICB9CiAgIDsKQEAgLTcwNyw4ICs3MDUsOCBAQCBzaW1wbGVfc2Vs
ZWN0b3I6CiBlbGVtZW50X25hbWU6CiAgICAgSURFTlQgewogICAgICAgICBQYXJzZVN0cmluZyYg
c3RyID0gJDE7Ci0gICAgICAgIENTU1BhcnNlciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlciAq
PihwYXJzZXIpOwotICAgICAgICBEb2N1bWVudCAqZG9jID0gcC0+ZG9jdW1lbnQoKTsKKyAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAg
ICAgRG9jdW1lbnQqIGRvYyA9IHAtPmRvY3VtZW50KCk7CiAgICAgICAgIGlmIChkb2MgJiYgZG9j
LT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICAgICAgc3RyLmxvd2VyKCk7CiAgICAgICAgICQk
ID0gc3RyOwpAQCAtNzI5LDEwICs3MjcsMTAgQEAgc3BlY2lmaWVyX2xpc3Q6CiAgICAgICAgIGlm
ICgkJCkgewogICAgICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2Vy
Kj4ocGFyc2VyKTsKICAgICAgICAgICAgIENTU1NlbGVjdG9yKiBlbmQgPSAkMTsKLSAgICAgICAg
ICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkpCi0gICAgICAgICAgICAgICAgZW5kID0gZW5kLT50
YWdIaXN0b3J5OworICAgICAgICAgICAgd2hpbGUgKGVuZC0+bV90YWdIaXN0b3J5KQorICAgICAg
ICAgICAgICAgIGVuZCA9IGVuZC0+bV90YWdIaXN0b3J5OwogICAgICAgICAgICAgZW5kLT5tX3Jl
bGF0aW9uID0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yOwotICAgICAgICAgICAgZW5kLT50YWdI
aXN0b3J5ID0gcC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDIpOworICAgICAgICAgICAgZW5kLT5t
X3RhZ0hpc3RvcnkgPSBwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMik7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCBlcnJvciB7CkBAIC03NDIsMTMgKzc0MCwxMyBAQCBz
cGVjaWZpZXJfbGlzdDoKIAogc3BlY2lmaWVyOgogICAgIEhBU0ggewotICAgICAgICBDU1NQYXJz
ZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2VyKTsKKyAgICAgICAgQ1NTUGFy
c2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBw
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5tYXRjaCA9IENTU1NlbGVj
dG9yOjpJZDsKKyAgICAgICAgJCQtPm1fbWF0Y2ggPSBDU1NTZWxlY3Rvcjo6SWQ7CiAgICAgICAg
IGlmICghcC0+c3RyaWN0KQogICAgICAgICAgICAgJDEubG93ZXIoKTsKLSAgICAgICAgJCQtPmF0
dHIgPSBpZEF0dHI7Ci0gICAgICAgICQkLT52YWx1ZSA9IGF0b21pY1N0cmluZygkMSk7CisgICAg
ICAgICQkLT5tX2F0dHIgPSBpZEF0dHI7CisgICAgICAgICQkLT5tX3ZhbHVlID0gYXRvbWljU3Ry
aW5nKCQxKTsKICAgICB9CiAgIHwgY2xhc3MKICAgfCBhdHRyaWIKQEAgLTc1NywyMSArNzU1LDIx
IEBAIHNwZWNpZmllcjoKIAogY2xhc3M6CiAgICAgJy4nIElERU5UIHsKLSAgICAgICAgQ1NTUGFy
c2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyICo+KHBhcnNlcik7CisgICAgICAgIENTU1Bh
cnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICQkID0g
cC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+bWF0Y2ggPSBDU1NTZWxl
Y3Rvcjo6Q2xhc3M7CisgICAgICAgICQkLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OkNsYXNzOwog
ICAgICAgICBpZiAoIXAtPnN0cmljdCkKICAgICAgICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAg
ICQkLT5hdHRyID0gY2xhc3NBdHRyOwotICAgICAgICAkJC0+dmFsdWUgPSBhdG9taWNTdHJpbmco
JDIpOworICAgICAgICAkJC0+bV9hdHRyID0gY2xhc3NBdHRyOworICAgICAgICAkJC0+bV92YWx1
ZSA9IGF0b21pY1N0cmluZygkMik7CiAgICAgfQogICA7CiAKIGF0dHJfbmFtZToKICAgICBJREVO
VCBtYXliZV9zcGFjZSB7CiAgICAgICAgIFBhcnNlU3RyaW5nJiBzdHIgPSAkMTsKLSAgICAgICAg
Q1NTUGFyc2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyICo+KHBhcnNlcik7Ci0gICAgICAg
IERvY3VtZW50ICpkb2MgPSBwLT5kb2N1bWVudCgpOworICAgICAgICBDU1NQYXJzZXIqIHAgPSBz
dGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICBEb2N1bWVudCogZG9jID0g
cC0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKGRvYyAmJiBkb2MtPmlzSFRNTERvY3VtZW50KCkp
CiAgICAgICAgICAgICBzdHIubG93ZXIoKTsKICAgICAgICAgJCQgPSBzdHI7CkBAIC03ODEsMzMg
Kzc3OSwzMyBAQCBhdHRyX25hbWU6CiBhdHRyaWI6CiAgICAgJ1snIG1heWJlX3NwYWNlIGF0dHJf
bmFtZSAnXScgewogICAgICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcikt
PmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPmF0dHIgPSBRdWFsaWZpZWRO
YW1lKG51bGxBdG9tLCBhdG9taWNTdHJpbmcoJDMpLCBudWxsQXRvbSk7Ci0gICAgICAgICQkLT5t
YXRjaCA9IENTU1NlbGVjdG9yOjpTZXQ7CisgICAgICAgICQkLT5tX2F0dHIgPSBRdWFsaWZpZWRO
YW1lKG51bGxBdG9tLCBhdG9taWNTdHJpbmcoJDMpLCBudWxsQXRvbSk7CisgICAgICAgICQkLT5t
X21hdGNoID0gQ1NTU2VsZWN0b3I6OlNldDsKICAgICB9CiAgICAgfCAnWycgbWF5YmVfc3BhY2Ug
YXR0cl9uYW1lIG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29yX3N0cmluZyBtYXliZV9zcGFjZSAn
XScgewogICAgICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0
ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPmF0dHIgPSBRdWFsaWZpZWROYW1lKG51
bGxBdG9tLCBhdG9taWNTdHJpbmcoJDMpLCBudWxsQXRvbSk7Ci0gICAgICAgICQkLT5tYXRjaCA9
IChDU1NTZWxlY3Rvcjo6TWF0Y2gpJDQ7Ci0gICAgICAgICQkLT52YWx1ZSA9IGF0b21pY1N0cmlu
ZygkNik7CisgICAgICAgICQkLT5tX2F0dHIgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBhdG9t
aWNTdHJpbmcoJDMpLCBudWxsQXRvbSk7CisgICAgICAgICQkLT5tX21hdGNoID0gKENTU1NlbGVj
dG9yOjpNYXRjaCkkNDsKKyAgICAgICAgJCQtPm1fdmFsdWUgPSBhdG9taWNTdHJpbmcoJDYpOwog
ICAgIH0KICAgICB8ICdbJyBtYXliZV9zcGFjZSBuYW1lc3BhY2Vfc2VsZWN0b3IgYXR0cl9uYW1l
ICddJyB7CiAgICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSBhdG9taWNTdHJp
bmcoJDMpOwotICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4o
cGFyc2VyKTsKKyAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4o
cGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAg
ICAgICQkLT5hdHRyID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdG9taWNTdHJpbmcoJDQpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHAtPnN0eWxlRWxl
bWVudCktPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpKTsKLSAgICAgICAgJCQt
Pm1hdGNoID0gQ1NTU2VsZWN0b3I6OlNldDsKKyAgICAgICAgJCQtPm1fYXR0ciA9IFF1YWxpZmll
ZE5hbWUobmFtZXNwYWNlUHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdG9taWNTdHJpbmcoJDQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4ocC0+c3R5bGVFbGVtZW50KS0+ZGV0ZXJtaW5lTmFt
ZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkpOworICAgICAgICAkJC0+bV9tYXRjaCA9IENTU1NlbGVj
dG9yOjpTZXQ7CiAgICAgfQogICAgIHwgJ1snIG1heWJlX3NwYWNlIG5hbWVzcGFjZV9zZWxlY3Rv
ciBhdHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5nIG1heWJlX3NwYWNl
ICddJyB7CiAgICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSBhdG9taWNTdHJp
bmcoJDMpOwotICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4o
cGFyc2VyKTsKKyAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4o
cGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAg
ICAgICQkLT5hdHRyID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdG9taWNTdHJpbmcoJDQpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHAtPnN0eWxlRWxl
bWVudCktPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpKTsKLSAgICAgICAgJCQt
Pm1hdGNoID0gKENTU1NlbGVjdG9yOjpNYXRjaCkkNTsKLSAgICAgICAgJCQtPnZhbHVlID0gYXRv
bWljU3RyaW5nKCQ3KTsKKyAgICAgICAgJCQtPm1fYXR0ciA9IFF1YWxpZmllZE5hbWUobmFtZXNw
YWNlUHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdG9taWNTdHJp
bmcoJDQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxD
U1NTdHlsZVNoZWV0Kj4ocC0+c3R5bGVFbGVtZW50KS0+ZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVz
cGFjZVByZWZpeCkpOworICAgICAgICAkJC0+bV9tYXRjaCA9IChDU1NTZWxlY3Rvcjo6TWF0Y2gp
JDU7CisgICAgICAgICQkLT5tX3ZhbHVlID0gYXRvbWljU3RyaW5nKCQ3KTsKICAgICB9CiAgIDsK
IApAQCAtODQwLDM5ICs4MzgsMzkgQEAgaWRlbnRfb3Jfc3RyaW5nOgogcHNldWRvOgogICAgICc6
JyBJREVOVCB7CiAgICAgICAgICQkID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+
Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+bWF0Y2ggPSBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3M7CisgICAgICAgICQkLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzOwogICAgICAgICAkMi5sb3dlcigpOwotICAgICAgICAkJC0+dmFsdWUgPSBhdG9taWNT
dHJpbmcoJDIpOwotICAgICAgICBpZiAoJCQtPnZhbHVlID09ICJlbXB0eSIgfHwgJCQtPnZhbHVl
ID09ICJvbmx5LWNoaWxkIiB8fAotICAgICAgICAgICAgJCQtPnZhbHVlID09ICJmaXJzdC1jaGls
ZCIgfHwgJCQtPnZhbHVlID09ICJsYXN0LWNoaWxkIikgewotICAgICAgICAgICAgQ1NTUGFyc2Vy
ICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyICo+KHBhcnNlcik7Ci0gICAgICAgICAgICBEb2N1
bWVudCAqZG9jID0gcC0+ZG9jdW1lbnQoKTsKKyAgICAgICAgJCQtPm1fdmFsdWUgPSBhdG9taWNT
dHJpbmcoJDIpOworICAgICAgICBpZiAoJCQtPm1fdmFsdWUgPT0gImVtcHR5IiB8fCAkJC0+bV92
YWx1ZSA9PSAib25seS1jaGlsZCIgfHwKKyAgICAgICAgICAgICQkLT5tX3ZhbHVlID09ICJmaXJz
dC1jaGlsZCIgfHwgJCQtPm1fdmFsdWUgPT0gImxhc3QtY2hpbGQiKSB7CisgICAgICAgICAgICBD
U1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICAg
ICAgRG9jdW1lbnQqIGRvYyA9IHAtPmRvY3VtZW50KCk7CiAgICAgICAgICAgICBpZiAoZG9jKQog
ICAgICAgICAgICAgICAgIGRvYy0+c2V0VXNlc1NpYmxpbmdSdWxlcyh0cnVlKTsKICAgICAgICAg
fQogICAgIH0KICAgICB8ICc6JyAnOicgSURFTlQgewogICAgICAgICAkJCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAg
JCQtPm1hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQ7CisgICAgICAgICQkLT5tX21h
dGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQ7CiAgICAgICAgICQzLmxvd2VyKCk7Ci0g
ICAgICAgICQkLT52YWx1ZSA9IGF0b21pY1N0cmluZygkMyk7CisgICAgICAgICQkLT5tX3ZhbHVl
ID0gYXRvbWljU3RyaW5nKCQzKTsKICAgICB9CiAgICAgLy8gdXNlZCBieSA6bGFuZwogICAgIHwg
JzonIEZVTkNUSU9OIElERU5UICcpJyB7CiAgICAgICAgICQkID0gc3RhdGljX2Nhc3Q8Q1NTUGFy
c2VyKj4ocGFyc2VyKS0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+bWF0
Y2ggPSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3M7Ci0gICAgICAgICQkLT5hcmd1bWVudCA9IGF0
b21pY1N0cmluZygkMyk7CisgICAgICAgICQkLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzOworICAgICAgICAkJC0+bV9hcmd1bWVudCA9IGF0b21pY1N0cmluZygkMyk7CiAgICAg
ICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQkLT52YWx1ZSA9IGF0b21pY1N0cmluZygkMik7Cisg
ICAgICAgICQkLT5tX3ZhbHVlID0gYXRvbWljU3RyaW5nKCQyKTsKICAgICB9CiAgICAgLy8gdXNl
ZCBieSA6bm90CiAgICAgfCAnOicgTk9URlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVj
dG9yICcpJyB7CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+
KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAg
ICAgICAkJC0+bWF0Y2ggPSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3M7Ci0gICAgICAgICQkLT5z
aW1wbGVTZWxlY3RvciA9IHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KTsKKyAgICAgICAgJCQt
Pm1fbWF0Y2ggPSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3M7CisgICAgICAgICQkLT5tX3NpbXBs
ZVNlbGVjdG9yID0gcC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQpOwogICAgICAgICAkMi5sb3dl
cigpOwotICAgICAgICAkJC0+dmFsdWUgPSBhdG9taWNTdHJpbmcoJDIpOworICAgICAgICAkJC0+
bV92YWx1ZSA9IGF0b21pY1N0cmluZygkMik7CiAgICAgfQogICA7CiAKQEAgLTkxNCw3ICs5MTIs
NyBAQCBkZWNsX2xpc3Q6CiAgICAgfQogICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uICc7JyBt
YXliZV9zcGFjZSB7CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICggJDIgKQorICAgICAg
ICBpZiAoJDIpCiAgICAgICAgICAgICAkJCA9ICQyOwogICAgIH0KICAgICB8IGRlY2xfbGlzdCBl
cnJvciAnOycgbWF5YmVfc3BhY2UgewpAQCAtOTI4LDcgKzkyNiw3IEBAIGRlY2xfbGlzdDoKIGRl
Y2xhcmF0aW9uOgogICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHByIHByaW8gewogICAg
ICAgICAkJCA9IGZhbHNlOwotICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQ
YXJzZXIgKj4ocGFyc2VyKTsKKyAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NT
UGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgaWYgKCQxICYmICQ0KSB7CiAgICAgICAgICAgICBw
LT52YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwogICAgICAgICAgICAg
aW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5udW1QYXJzZWRQcm9wZXJ0aWVzOwpAQCAtMTAz
OSw3ICsxMDM3LDcgQEAgdGVybToKICAgfCBVTklDT0RFUkFOR0UgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLmlWYWx1ZSA9IDA7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VO
S05PV047LyogIyMjICovIH0KICAgfCBoZXhjb2xvciB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JHQkNPTE9SOyB9CiAgIHwgJyMn
IG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSBQYXJzZVN0cmluZygpOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SR0JDT0xPUjsgfSAvKiBIYW5kbGUgZXJyb3Ig
Y2FzZTogImNvbG9yOiAjOyIgKi8KLS8qICMjIyBhY2NvcmRpbmcgdG8gdGhlIHNwZWNzIGEgZnVu
Y3Rpb24gY2FuIGhhdmUgYSB1bmFyeV9vcGVyYXRvciBpbiBmcm9udC4gSSBrbm93IG5vIGNhc2Ug
d2hlcmUgdGhpcyBtYWtlcyBzZW5zZSAqLworLyogRklYTUU6IGFjY29yZGluZyB0byB0aGUgc3Bl
Y3MgYSBmdW5jdGlvbiBjYW4gaGF2ZSBhIHVuYXJ5X29wZXJhdG9yIGluIGZyb250LiBJIGtub3cg
bm8gY2FzZSB3aGVyZSB0aGlzIG1ha2VzIHNlbnNlICovCiAgIHwgZnVuY3Rpb24gewogICAgICAg
JCQgPSAkMTsKICAgfQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDE4ODM0KQor
KysgV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDEy
ICsxOSwxMyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAg
Ki8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKIAor
I2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDYWNoZS5oIgogI2luY2x1
ZGUgIkNhY2hlZEltYWdlLmgiCi0jaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1
ZGUgIkRvY0xvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw0ICs2OCw0IEBA
IENhY2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjppbWFnZShEb2NMb2EKICAgICByZXR1cm4gbV9p
bWFnZTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUu
aAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB
LgogICovCiAKLSNpZm5kZWYgQ1NTSW1hZ2VWYWx1ZV9ICi0jZGVmaW5lIENTU0ltYWdlVmFsdWVf
SAorI2lmbmRlZiBDU1NJbWFnZVZhbHVlX2gKKyNkZWZpbmUgQ1NTSW1hZ2VWYWx1ZV9oCiAKICNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xp
ZW50LmgiCkBAIC0zMCw4ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9j
TG9hZGVyOwogCi1jbGFzcyBDU1NJbWFnZVZhbHVlIDogcHVibGljIENTU1ByaW1pdGl2ZVZhbHVl
LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQKLXsKK2NsYXNzIENTU0ltYWdlVmFsdWUgOiBw
dWJsaWMgQ1NTUHJpbWl0aXZlVmFsdWUsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBw
dWJsaWM6CiAgICAgQ1NTSW1hZ2VWYWx1ZSgpOwogICAgIENTU0ltYWdlVmFsdWUoY29uc3QgU3Ry
aW5nJiB1cmwsIFN0eWxlQmFzZSopOwpAQCAtNDQsNiArNDMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCBtX2FjY2Vzc2VkSW1hZ2U7CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBDU1NJbWFnZVZhbHVlX2gKSW5kZXg6IFdl
YkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NJbmhlcml0ZWRWYWx1ZS5jcHAJKHJldmlzaW9uIDE4ODM0KQorKysgV2ViQ29yZS9jc3Mv
Q1NTSW5oZXJpdGVkVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSw3IEBACiAg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBT
dWl0ZSAzMzAsCiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTSW5oZXJpdGVkVmFsdWUuaCIKIApAQCAtMzYsNCAr
MzcsNCBAQCBTdHJpbmcgQ1NTSW5oZXJpdGVkVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAgcmV0
dXJuICJpbmhlcml0IjsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9D
U1NJbmhlcml0ZWRWYWx1ZS5oCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvY3NzL0NTU0lu
aGVyaXRlZFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDIwICsyMCwxOSBAQAogICogQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NJbmhlcml0ZWRWYWx1
ZV9ICi0jZGVmaW5lIENTU0luaGVyaXRlZFZhbHVlX0gKKyNpZm5kZWYgQ1NTSW5oZXJpdGVkVmFs
dWVfaAorI2RlZmluZSBDU1NJbmhlcml0ZWRWYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENTU0luaGVyaXRlZFZhbHVlIDogcHVi
bGljIENTU1ZhbHVlCi17CitjbGFzcyBDU1NJbmhlcml0ZWRWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1
ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBjc3NWYWx1ZVR5cGUoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiB9OwogCi19IC8vIG5h
bWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBDU1NJ
bmhlcml0ZWRWYWx1ZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5jcHAJKHJldmlzaW9uIDE4
ODM0KQorKysgV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTksNiArMTksNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1
ZS5oIgogCkBAIC0zNiw0ICszNyw0IEBAIFN0cmluZyBDU1NJbml0aWFsVmFsdWU6OmNzc1RleHQo
KSBjb25zdAogICAgIHJldHVybiAiaW5pdGlhbCI7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNv
cmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwyMCArMjAsMTkg
QEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCiAKLSNpZm5kZWYgQ1NTSW5p
dGlhbFZhbHVlX0gKLSNkZWZpbmUgQ1NTSW5pdGlhbFZhbHVlX0gKKyNpZm5kZWYgQ1NTSW5pdGlh
bFZhbHVlX2gKKyNkZWZpbmUgQ1NTSW5pdGlhbFZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NTSW5pdGlhbFZhbHVlIDogcHVi
bGljIENTU1ZhbHVlCi17CitjbGFzcyBDU1NJbml0aWFsVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUg
ewogcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgY3NzVmFsdWVUeXBlKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogfTsKIAotfSAvLyBuYW1l
c3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ1NTSW5p
dGlhbFZhbHVlX2gKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bi5jcHAJKHJldmlzaW9uIDE4ODM0KQorKysgV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSw3IEBACiAgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs
CiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKIApAQCAtNTYsNyAr
NTcsNyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0CiAgICAgLy8g
RklYTUU6IFRoaXMgYWxsb3dzIGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgogfQogCi1DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFy
ZW50LCBjb25zdCBDU1NQcm9wZXJ0eSAqIGNvbnN0ICpwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVy
dGllcykKK0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbihDU1NSdWxlKiBwYXJlbnQsIGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqIHByb3BlcnRp
ZXMsIGludCBudW1Qcm9wZXJ0aWVzKQogICAgIDogQ1NTU3R5bGVEZWNsYXJhdGlvbihwYXJlbnQp
CiAgICAgLCBtX25vZGUoMCkKIHsKQEAgLTY1LDEwICs2NiwxMCBAQCBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0CiAgICAgLy8gRklYTUU6IFRoaXMgYWxsb3dzIGR1cGxp
Y2F0ZSBwcm9wZXJ0aWVzLgogfQogCi1DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiYgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246Om9wZXJhdG9yPShjb25zdCBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiYgbykKK0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uJiBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjo6b3BlcmF0b3I9KGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uJiBv
dGhlcikKIHsKICAgICAvLyBkb24ndCBhdHRhY2ggaXQgdG8gdGhlIHNhbWUgbm9kZSwganVzdCBs
ZWF2ZSB0aGUgY3VycmVudCBtX25vZGUgdmFsdWUKLSAgICBtX3ZhbHVlcyA9IG8ubV92YWx1ZXM7
CisgICAgbV92YWx1ZXMgPSBvdGhlci5tX3ZhbHVlczsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAK
QEAgLTc5LDkzICs4MCw3OSBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246Omdl
dFByCiAgICAgICAgIHJldHVybiB2YWx1ZS0+Y3NzVGV4dCgpOwogCiAgICAgLy8gU2hvcnRoYW5k
IGFuZCA0LXZhbHVlcyBwcm9wZXJ0aWVzCi0gICAgc3dpdGNoICggcHJvcGVydHlJRCApIHsKLSAg
ICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkRfUE9TSVRJT046Ci0gICAgewotICAgICAgICAvLyAj
IyBJcyB0aGlzIGNvcnJlY3Q/IFRoZSBjb2RlIGluIGNzc3BhcnNlci5jcHAgaXMgY29uZnVzaW5n
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NfUFJPUF9CQUNLR1JPVU5E
X1BPU0lUSU9OX1gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJP
UF9CQUNLR1JPVU5EX1BPU0lUSU9OX1kgfTsKLSAgICAgICAgcmV0dXJuIGdldFNob3J0SGFuZFZh
bHVlKCBwcm9wZXJ0aWVzLCAyICk7Ci0gICAgfQotICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VO
RDoKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzVdID0geyBDU1NfUFJPUF9C
QUNLR1JPVU5EX0lNQUdFLCBDU1NfUFJPUF9CQUNLR1JPVU5EX1JFUEVBVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9QX0JBQ0tHUk9VTkRfQVRUQUNITUVOVCwg
Q1NTX1BST1BfQkFDS0dST1VORF9QT1NJVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU19QUk9QX0JBQ0tHUk9VTkRfQ09MT1IgfTsKLSAgICAgICAgcmV0dXJuIGdl
dFNob3J0SGFuZFZhbHVlKCBwcm9wZXJ0aWVzLCA1ICk7Ci0gICAgfQotICAgIGNhc2UgQ1NTX1BS
T1BfQk9SREVSOgotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENT
U19QUk9QX0JPUkRFUl9XSURUSCwgQ1NTX1BST1BfQk9SREVSX1NUWUxFLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTX1BST1BfQk9SREVSX0NPTE9SIH07Ci0gICAgICAg
IHJldHVybiBnZXRTaG9ydEhhbmRWYWx1ZSggcHJvcGVydGllcywgMyApOwotICAgIH0KLSAgICBj
YXNlIENTU19QUk9QX0JPUkRFUl9UT1A6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVy
dGllc1szXSA9IHsgQ1NTX1BST1BfQk9SREVSX1RPUF9XSURUSCwgQ1NTX1BST1BfQk9SREVSX1RP
UF9TVFlMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9QX0JP
UkRFUl9UT1BfQ09MT1J9OwotICAgICAgICByZXR1cm4gZ2V0U2hvcnRIYW5kVmFsdWUoIHByb3Bl
cnRpZXMsIDMgKTsKLSAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfUklHSFQ6Ci0gICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTX1BST1BfQk9SREVSX1JJ
R0hUX1dJRFRILCBDU1NfUFJPUF9CT1JERVJfUklHSFRfU1RZTEUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJfUklHSFRfQ09MT1J9OwotICAgICAg
ICByZXR1cm4gZ2V0U2hvcnRIYW5kVmFsdWUoIHByb3BlcnRpZXMsIDMgKTsKLSAgICB9Ci0gICAg
Y2FzZSBDU1NfUFJPUF9CT1JERVJfQk9UVE9NOgotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHBy
b3BlcnRpZXNbM10gPSB7IENTU19QUk9QX0JPUkRFUl9CT1RUT01fV0lEVEgsIENTU19QUk9QX0JP
UkRFUl9CT1RUT01fU1RZTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NfUFJPUF9CT1JERVJfQk9UVE9NX0NPTE9SfTsKLSAgICAgICAgcmV0dXJuIGdldFNob3J0SGFu
ZFZhbHVlKCBwcm9wZXJ0aWVzLCAzICk7Ci0gICAgfQotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVS
X0xFRlQ6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTX1BS
T1BfQk9SREVSX0xFRlRfV0lEVEgsIENTU19QUk9QX0JPUkRFUl9MRUZUX1NUWUxFLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTX1BST1BfQk9SREVSX0xFRlRfQ09MT1J9
OwotICAgICAgICByZXR1cm4gZ2V0U2hvcnRIYW5kVmFsdWUoIHByb3BlcnRpZXMsIDMgKTsKLSAg
ICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9PVVRMSU5FOgotICAgIHsKLSAgICAgICAgY29uc3QgaW50
IHByb3BlcnRpZXNbM10gPSB7IENTU19QUk9QX09VVExJTkVfV0lEVEgsIENTU19QUk9QX09VVExJ
TkVfU1RZTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9P
VVRMSU5FX0NPTE9SIH07Ci0gICAgICAgIHJldHVybiBnZXRTaG9ydEhhbmRWYWx1ZSggcHJvcGVy
dGllcywgMyApOwotICAgIH0KLSAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9DT0xPUjoKLSAgICB7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NfUFJPUF9CT1JERVJfVE9Q
X0NPTE9SLCBDU1NfUFJPUF9CT1JERVJfUklHSFRfQ09MT1IsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX0NPTE9SLCBDU1NfUFJPUF9C
T1JERVJfTEVGVF9DT0xPUiB9OwotICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyggcHJvcGVydGll
cyApOwotICAgIH0KLSAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9XSURUSDoKLSAgICB7Ci0gICAg
ICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NfUFJPUF9CT1JERVJfVE9QX1dJRFRI
LCBDU1NfUFJPUF9CT1JERVJfUklHSFRfV0lEVEgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX1dJRFRILCBDU1NfUFJPUF9CT1JERVJf
TEVGVF9XSURUSCB9OwotICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyggcHJvcGVydGllcyApOwot
ICAgIH0KLSAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9TVFlMRToKLSAgICB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NfUFJPUF9CT1JERVJfVE9QX1NUWUxFLCBDU1Nf
UFJPUF9CT1JERVJfUklHSFRfU1RZTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX1NUWUxFLCBDU1NfUFJPUF9CT1JERVJfTEVGVF9T
VFlMRSB9OwotICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyggcHJvcGVydGllcyApOwotICAgIH0K
LSAgICBjYXNlIENTU19QUk9QX01BUkdJTjoKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzWzRdID0geyBDU1NfUFJPUF9NQVJHSU5fVE9QLCBDU1NfUFJPUF9NQVJHSU5fUklHSFQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9NQVJHSU5fQk9U
VE9NLCBDU1NfUFJPUF9NQVJHSU5fTEVGVCB9OwotICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcygg
cHJvcGVydGllcyApOwotICAgIH0KLSAgICBjYXNlIENTU19QUk9QX1BBRERJTkc6Ci0gICAgewot
ICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTX1BST1BfUEFERElOR19UT1As
IENTU19QUk9QX1BBRERJTkdfUklHSFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NfUFJPUF9QQURESU5HX0JPVFRPTSwgQ1NTX1BST1BfUEFERElOR19MRUZUIH07Ci0g
ICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKCBwcm9wZXJ0aWVzICk7Ci0gICAgfQotICAgIGNhc2Ug
Q1NTX1BST1BfTElTVF9TVFlMRToKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzNdID0geyBDU1NfUFJPUF9MSVNUX1NUWUxFX1RZUEUsIENTU19QUk9QX0xJU1RfU1RZTEVfUE9T
SVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9MSVNU
X1NUWUxFX0lNQUdFIH07Ci0gICAgICAgIHJldHVybiBnZXRTaG9ydEhhbmRWYWx1ZSggcHJvcGVy
dGllcywgMyApOwotICAgIH0KKyAgICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsKKyAgICAgICAgY2Fz
ZSBDU1NfUFJPUF9CQUNLR1JPVU5EX1BPU0lUSU9OOiB7CisgICAgICAgICAgICAvLyBGSVhNRTog
SXMgdGhpcyBjb3JyZWN0PyBUaGUgY29kZSBpbiBjc3NwYXJzZXIuY3BwIGlzIGNvbmZ1c2luZwor
ICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU19QUk9QX0JBQ0tHUk9V
TkRfUE9TSVRJT05fWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NfUFJPUF9CQUNLR1JPVU5EX1BPU0lUSU9OX1kgfTsKKyAgICAgICAgICAgIHJldHVybiBnZXRT
aG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAyKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENT
U19QUk9QX0JBQ0tHUk9VTkQ6IHsKKyAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzVd
ID0geyBDU1NfUFJPUF9CQUNLR1JPVU5EX0lNQUdFLCBDU1NfUFJPUF9CQUNLR1JPVU5EX1JFUEVB
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9CQUNL
R1JPVU5EX0FUVEFDSE1FTlQsIENTU19QUk9QX0JBQ0tHUk9VTkRfUE9TSVRJT04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTX1BST1BfQkFDS0dST1VORF9DT0xP
UiB9OworICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDUp
OworICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSOiB7CisgICAgICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTX1BST1BfQk9SREVSX1dJRFRILCBDU1Nf
UFJPUF9CT1JERVJfU1RZTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTX1BST1BfQk9SREVSX0NPTE9SIH07CisgICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRo
YW5kVmFsdWUocHJvcGVydGllcywgMyk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NfUFJP
UF9CT1JERVJfVE9QOiB7CisgICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsg
Q1NTX1BST1BfQk9SREVSX1RPUF9XSURUSCwgQ1NTX1BST1BfQk9SREVSX1RPUF9TVFlMRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJfVE9Q
X0NPTE9SfTsKKyAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVz
LCAzKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9SSUdIVDogewor
ICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU19QUk9QX0JPUkRFUl9S
SUdIVF9XSURUSCwgQ1NTX1BST1BfQk9SREVSX1JJR0hUX1NUWUxFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9QX0JPUkRFUl9SSUdIVF9DT0xPUn07Cisg
ICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywgMyk7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfQk9UVE9NOiB7CisgICAgICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTX1BST1BfQk9SREVSX0JPVFRPTV9XSURU
SCwgQ1NTX1BST1BfQk9SREVSX0JPVFRPTV9TVFlMRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX0NPTE9SfTsKKyAgICAgICAg
ICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAzKTsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9MRUZUOiB7CisgICAgICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1szXSA9IHsgQ1NTX1BST1BfQk9SREVSX0xFRlRfV0lEVEgsIENTU19QUk9Q
X0JPUkRFUl9MRUZUX1NUWUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU19QUk9QX0JPUkRFUl9MRUZUX0NPTE9SfTsKKyAgICAgICAgICAgIHJldHVybiBnZXRT
aG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAzKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENT
U19QUk9QX09VVExJTkU6IHsKKyAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0g
eyBDU1NfUFJPUF9PVVRMSU5FX1dJRFRILCBDU1NfUFJPUF9PVVRMSU5FX1NUWUxFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9QX09VVExJTkVfQ09MT1Ig
fTsKKyAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAzKTsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9DT0xPUjogeworICAgICAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU19QUk9QX0JPUkRFUl9UT1BfQ09M
T1IsIENTU19QUk9QX0JPUkRFUl9SSUdIVF9DT0xPUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX0NPTE9SLCBDU1NfUFJPUF9C
T1JERVJfTEVGVF9DT0xPUiB9OworICAgICAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMocHJvcGVy
dGllcyk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfV0lEVEg6IHsK
KyAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NfUFJPUF9CT1JERVJf
VE9QX1dJRFRILCBDU1NfUFJPUF9CT1JERVJfUklHSFRfV0lEVEgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTX1BST1BfQk9SREVSX0JPVFRPTV9XSURUSCwgQ1NT
X1BST1BfQk9SREVSX0xFRlRfV0lEVEggfTsKKyAgICAgICAgICAgIHJldHVybiBnZXQ0VmFsdWVz
KHByb3BlcnRpZXMpOworICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX1NU
WUxFOiB7CisgICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTX1BST1Bf
Qk9SREVSX1RPUF9TVFlMRSwgQ1NTX1BST1BfQk9SREVSX1JJR0hUX1NUWUxFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9QX0JPUkRFUl9CT1RUT01fU1RZ
TEUsIENTU19QUk9QX0JPUkRFUl9MRUZUX1NUWUxFIH07CisgICAgICAgICAgICByZXR1cm4gZ2V0
NFZhbHVlcyhwcm9wZXJ0aWVzKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENTU19QUk9QX01B
UkdJTjogeworICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU19QUk9Q
X01BUkdJTl9UT1AsIENTU19QUk9QX01BUkdJTl9SSUdIVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9NQVJHSU5fQk9UVE9NLCBDU1NfUFJPUF9NQVJH
SU5fTEVGVCB9OworICAgICAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMocHJvcGVydGllcyk7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NfUFJPUF9QQURESU5HOiB7CisgICAgICAgICAgICBj
b25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTX1BST1BfUEFERElOR19UT1AsIENTU19QUk9Q
X1BBRERJTkdfUklHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTX1BST1BfUEFERElOR19CT1RUT00sIENTU19QUk9QX1BBRERJTkdfTEVGVCB9OworICAgICAg
ICAgICAgcmV0dXJuIGdldDRWYWx1ZXMocHJvcGVydGllcyk7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBDU1NfUFJPUF9MSVNUX1NUWUxFOiB7CisgICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVy
dGllc1szXSA9IHsgQ1NTX1BST1BfTElTVF9TVFlMRV9UWVBFLCBDU1NfUFJPUF9MSVNUX1NUWUxF
X1BPU0lUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19Q
Uk9QX0xJU1RfU1RZTEVfSU1BR0UgfTsKKyAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRW
YWx1ZShwcm9wZXJ0aWVzLCAzKTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CkBAIC0xNzYsOCArMTYzLDExIEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0NFYKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgewogICAgICAgICBp
ZiAoIWlzUHJvcGVydHlJbXBsaWNpdChwcm9wZXJ0aWVzW2ldKSkgewogICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1tpXSk7
Ci0gICAgICAgICAgICBpZiAoIXZhbHVlKSAvLyBhcHBhcmVudGx5IGFsbCA0IHByb3BlcnRpZXMg
bXVzdCBiZSBzcGVjaWZpZWQuCisKKyAgICAgICAgICAgIC8vIGFwcGFyZW50bHkgYWxsIDQgcHJv
cGVydGllcyBtdXN0IGJlIHNwZWNpZmllZC4KKyAgICAgICAgICAgIGlmICghdmFsdWUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworCiAgICAgICAgICAgICBpZiAoIXJlcy5pc051
bGwoKSkKICAgICAgICAgICAgICAgICByZXMgKz0gIiAiOwogICAgICAgICAgICAgcmVzICs9IHZh
bHVlLT5jc3NUZXh0KCk7CkBAIC0xODYsMTMgKzE3NiwxNCBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmdldDRWCiAgICAgcmV0dXJuIHJlczsKIH0KIAotU3RyaW5nIENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRTaG9ydEhhbmRWYWx1ZSggY29uc3QgaW50KiBwcm9w
ZXJ0aWVzLCBpbnQgbnVtYmVyICkgY29uc3QKK1N0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQgbnVtYmVy
KSBjb25zdAogewogICAgIFN0cmluZyByZXM7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1i
ZXI7ICsraSkgewogICAgICAgICBpZiAoIWlzUHJvcGVydHlJbXBsaWNpdChwcm9wZXJ0aWVzW2ld
KSkgewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NT
VmFsdWUocHJvcGVydGllc1tpXSk7Ci0gICAgICAgICAgICBpZiAodmFsdWUpIHsgLy8gVE9ETyBw
cm92aWRlIGRlZmF1bHQgdmFsdWUgaWYgIXZhbHVlCisgICAgICAgICAgICAvLyBGSVhNRTogcHJv
dmlkZSBkZWZhdWx0IHZhbHVlIGlmICF2YWx1ZQorICAgICAgICAgICAgaWYgKHZhbHVlKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKCFyZXMuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgICAgIHJl
cyArPSAiICI7CiAgICAgICAgICAgICAgICAgcmVzICs9IHZhbHVlLT5jc3NUZXh0KCk7CkBAIC0y
MDUsOSArMTk2LDEwIEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0U2gK
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXJ0eUlEKSBjb25zdAogewogICAgIERlcHJlY2F0ZWRWYWx1
ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBlbmQ7Ci0gICAgZm9yIChEZXByZWNhdGVk
VmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5mcm9tTGFz
dCgpOyBpdCAhPSBlbmQ7IC0taXQpCisgICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0Q29uc3RJ
dGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5mcm9tTGFzdCgpOyBpdCAhPSBlbmQ7
IC0taXQpIHsKICAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gKCppdCkubV9pZCkKICAgICAgICAg
ICAgIHJldHVybiAoKml0KS52YWx1ZSgpOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KIApAQCAt
MzgyLDcgKzM3NCw3IEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3YK
ICAgICBTdHJpbmcgdmFsdWU7CiAKICAgICBEZXByZWNhdGVkVmFsdWVMaXN0SXRlcmF0b3I8Q1NT
UHJvcGVydHk+IGVuZDsKLSAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3RJdGVyYXRvcjxDU1NQ
cm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5mcm9tTGFzdCgpOyBpdCAhPSBlbmQ7IC0taXQpCisgICAg
Zm9yIChEZXByZWNhdGVkVmFsdWVMaXN0SXRlcmF0b3I8Q1NTUHJvcGVydHk+IGl0ID0gbV92YWx1
ZXMuZnJvbUxhc3QoKTsgaXQgIT0gZW5kOyAtLWl0KSB7CiAgICAgICAgIGlmIChwcm9wZXJ0eUlE
ID09ICgqaXQpLm1faWQpIHsKICAgICAgICAgICAgIHZhbHVlID0gKCppdCkudmFsdWUoKS0+Y3Nz
VGV4dCgpOwogICAgICAgICAgICAgbV92YWx1ZXMucmVtb3ZlKGl0KTsKQEAgLTM5MCw2ICszODIs
NyBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnJlbW92CiAgICAgICAgICAg
ICAgICAgc2V0Q2hhbmdlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICB9
CiAKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC00MTIsOSArNDA1LDkgQEAgdm9pZCBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q2hhbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gIyMjIHF1aWNrJmRpcnR5IGhhY2sgZm9yIEtERSAzLjAuLi4gbWFrZSB0aGlzIE1VQ0gg
YmV0dGVyISAoRGlyaykKKyAgICAvLyBGSVhNRTogcXVpY2smZGlydHkgaGFjayBmb3IgS0RFIDMu
MC4uLiBtYWtlIHRoaXMgTVVDSCBiZXR0ZXIhIChEaXJrKQogICAgIFN0eWxlQmFzZSogcm9vdCA9
IHRoaXM7Ci0gICAgd2hpbGUgKFN0eWxlQmFzZSAqcGFyZW50ID0gcm9vdC0+cGFyZW50KCkpCisg
ICAgd2hpbGUgKFN0eWxlQmFzZSogcGFyZW50ID0gcm9vdC0+cGFyZW50KCkpCiAgICAgICAgIHJv
b3QgPSBwYXJlbnQ7CiAgICAgaWYgKHJvb3QtPmlzQ1NTU3R5bGVTaGVldCgpKQogICAgICAgICBz
dGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4ocm9vdCktPmRvYygpLT51cGRhdGVTdHlsZVNlbGVj
dG9yKCk7CkBAIC00MjMsMzEgKzQxNiwzNCBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpzZXRDaGFuCiBib29sIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0
eVByaW9yaXR5KGludCBwcm9wZXJ0eUlEKSBjb25zdAogewogICAgIERlcHJlY2F0ZWRWYWx1ZUxp
c3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBlbmQ7Ci0gICAgZm9yIChEZXByZWNhdGVkVmFs
dWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRv
cjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
ICAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gKCppdCkuaWQoKSkKICAgICAgICAgICAgIHJldHVy
biAoKml0KS5pc0ltcG9ydGFudCgpOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGlu
dCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlTaG9ydGhhbmQoaW50IHBy
b3BlcnR5SUQpIGNvbnN0CiB7CiAgICAgRGVwcmVjYXRlZFZhbHVlTGlzdENvbnN0SXRlcmF0b3I8
Q1NTUHJvcGVydHk+IGVuZDsKLSAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJh
dG9yPENTU1Byb3BlcnR5PiBpdCA9IG1fdmFsdWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
KyAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBp
dCA9IG1fdmFsdWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAocHJv
cGVydHlJRCA9PSAoKml0KS5pZCgpKQogICAgICAgICAgICAgcmV0dXJuICgqaXQpLnNob3J0aGFu
ZElEKCk7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6aXNQcm9wZXJ0eUltcGxpY2l0KGludCBwcm9wZXJ0eUlEKSBjb25zdAog
ewogICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBlbmQ7
Ci0gICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4g
aXQgPSBtX3ZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgZm9yIChEZXByZWNh
dGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gKCppdCku
aWQoKSkKICAgICAgICAgICAgIHJldHVybiAoKml0KS5pc0ltcGxpY2l0KCk7CisgICAgfQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0
UHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyAmdmFsdWUsIGJvb2wgaW1wb3J0
YW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGlt
cG9ydGFudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgc2V0UHJvcGVydHkocHJvcGVydHlJ
RCwgdmFsdWUsIGltcG9ydGFudCwgdHJ1ZSwgZWMpOwogfQpAQCAtNDU3LDcgKzQ1Myw3IEBAIFN0
cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3YKICAgICByZXR1cm4gcmVtb3Zl
UHJvcGVydHkocHJvcGVydHlJRCwgdHJ1ZSwgZWMpOwogfQogCi1ib29sIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nICZ2
YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgbm90aWZ5Q2hhbmdlZCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitib29sIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShpbnQgcHJv
cGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgbm90aWZ5
Q2hhbmdlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwogCkBAIC00OTcsMTQg
KzQ5MywxNCBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRTdHJpCiAgICAg
c2V0Q2hhbmdlZCgpOwogfQogCi12b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRJ
bWFnZVByb3BlcnR5KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcgJlVSTCwgYm9vbCBpbXBv
cnRhbnQpCit2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRJbWFnZVByb3BlcnR5
KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAg
ICAgcmVtb3ZlUHJvcGVydHkocHJvcGVydHlJZCk7Ci0gICAgbV92YWx1ZXMuYXBwZW5kKENTU1By
b3BlcnR5KHByb3BlcnR5SWQsIG5ldyBDU1NJbWFnZVZhbHVlKFVSTCwgdGhpcyksIGltcG9ydGFu
dCkpOworICAgIG1fdmFsdWVzLmFwcGVuZChDU1NQcm9wZXJ0eShwcm9wZXJ0eUlkLCBuZXcgQ1NT
SW1hZ2VWYWx1ZSh1cmwsIHRoaXMpLCBpbXBvcnRhbnQpKTsKICAgICBzZXRDaGFuZ2VkKCk7CiB9
CiAKLXZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnBhcnNlRGVjbGFyYXRpb24oY29u
c3QgU3RyaW5nICZzdHlsZURlY2xhcmF0aW9uKQordm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6cGFyc2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0eWxlRGVjbGFyYXRpb24pCiB7
CiAgICAgbV92YWx1ZXMuY2xlYXIoKTsKICAgICBDU1NQYXJzZXIgcGFyc2VyKHVzZVN0cmljdFBh
cnNpbmcoKSk7CkBAIC01MTIsNyArNTA4LDcgQEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6cGFyc2VEZQogICAgIHNldENoYW5nZWQoKTsKIH0KIAotdm9pZCBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eSAqIGNv
bnN0ICpwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcykKK3ZvaWQgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246OmFkZFBhcnNlZFByb3BlcnRpZXMoY29uc3QgQ1NTUHJvcGVydHkgKiBjb25z
dCAqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzKQogewogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CiAgICAgICAgIHJlbW92ZVByb3BlcnR5KHByb3Bl
cnRpZXNbaV0tPmlkKCksIGZhbHNlKTsKQEAgLTUyMiwxMSArNTE4LDExIEBAIHZvaWQgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmFkZFBhcnMKICAgICAvLyBhIG5vdGlmeUNoYW5nZWQgYXJn
dW1lbnQgdG8gdGhpcyBmdW5jdGlvbiB0byBmb2xsb3cgdGhlIG1vZGVsIG9mIG90aGVyIGZ1bmN0
aW9ucyBpbiB0aGlzIGNsYXNzLgogfQogCi12b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpzZXRMZW5ndGhQcm9wZXJ0eShpbnQgaWQsIGNvbnN0IFN0cmluZyAmdmFsdWUsIGJvb2wgaW1w
b3J0YW50LCBib29sIC8qIG11bHRpTGVuZ3RoKi8pCit2b2lkIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpzZXRMZW5ndGhQcm9wZXJ0eShpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgLyptdWx0aUxlbmd0aCovKQogewogICAgIGJvb2wg
cGFyc2VNb2RlID0gdXNlU3RyaWN0UGFyc2luZygpOwogICAgIHNldFN0cmljdFBhcnNpbmcoZmFs
c2UpOwotICAgIHNldFByb3BlcnR5KGlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICBzZXRQcm9w
ZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICBzZXRTdHJpY3RQYXJzaW5n
KHBhcnNlTW9kZSk7CiB9CiAKQEAgLTU0NSw3ICs1NDEsNyBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246Oml0ZW0oCiBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OmNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmluZyByZXN1bHQgPSAiIjsKLSAgICAKKwogICAg
IERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBlbmQ7CiAgICAg
Zm9yIChEZXByZWNhdGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBt
X3ZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIHJlc3VsdCArPSAoKml0
KS5jc3NUZXh0KCk7CkBAIC01NjMsMTEgKzU1OSwxMSBAQCB2b2lkIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjpzZXRDc3NUCiAgICAgc2V0Q2hhbmdlZCgpOwogfQogCi12b2lkIENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjptZXJnZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiAqb3Ro
ZXIsIGJvb2wgYXJnT3ZlcnJpZGVzT25Db25mbGljdCkKK3ZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246Om1lcmdlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBvdGhlciwgYm9vbCBh
cmdPdmVycmlkZXNPbkNvbmZsaWN0KQogewogICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0
ZXJhdG9yPENTU1Byb3BlcnR5PiBlbmQ7CiAgICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0Q29u
c3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBvdGhlci0+dmFsdWVzSXRlcmF0b3IoKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGNvbnN0IENTU1Byb3BlcnR5ICZwcm9wZXJ0eSA9ICpp
dDsKKyAgICAgICAgY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5ID0gKml0OwogICAgICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eS5pZCgp
KTsKICAgICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgICBpZiAoIWFyZ092ZXJyaWRlc09u
Q29uZmxpY3QpCkBAIC02MTQsNyArNjEwLDcgQEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6cmVtb3ZlQgogICAgIHJlbW92ZVByb3BlcnRpZXNJblNldChibG9ja1Byb3BlcnRpZXMs
IG51bUJsb2NrUHJvcGVydGllcyk7CiB9CiAKLXZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b246OnJlbW92ZVByb3BlcnRpZXNJblNldChjb25zdCBpbnQgKnNldCwgdW5zaWduZWQgbGVuZ3Ro
LCBib29sIG5vdGlmeUNoYW5nZWQpCit2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpy
ZW1vdmVQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCwgYm9v
bCBub3RpZnlDaGFuZ2VkKQogewogICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewpAQCAtNjM4LDQgKzYzNCw0IEBAIFBh
c3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IEMKICAgICByZXR1cm4gbmV3IENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKDAsIG1fdmFsdWVzKTsKIH0KIAotfQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bi5oCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDExICsyMCwxMSBAQAogICogQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbl9ICi0jZGVmaW5lIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uX0gKKyNpZm5kZWYgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb25faAorI2RlZmluZSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbl9oCiAKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWUuaCIgLy8gZm9yIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMKKyNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1ZUxp
c3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCkBAIC0zMywxNSArMzMsMTQgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTUHJvcGVydHk7CiBjbGFzcyBOb2RlOwogCi1j
bGFzcyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NTdHlsZURlY2xhcmF0
aW9uCi17CitjbGFzcyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NTdHls
ZURlY2xhcmF0aW9uIHsKIHB1YmxpYzoKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbigp
OwogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudFJ1bGUpOwog
ICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudFJ1bGUsIGNvbnN0
IERlcHJlY2F0ZWRWYWx1ZUxpc3Q8Q1NTUHJvcGVydHk+Jik7Ci0gICAgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50UnVsZSwgY29uc3QgQ1NTUHJvcGVydHkgKiBjb25z
dCAqLCBpbnQgbnVtUHJvcGVydGllcyk7CisgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24o
Q1NTUnVsZSogcGFyZW50UnVsZSwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICosIGludCBudW1Q
cm9wZXJ0aWVzKTsKIAotICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uICZvcGVyYXRvcj0o
Y29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24gJik7CisgICAgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24mIG9wZXJhdG9yPShjb25zdCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiYp
OwogCiAgICAgdm9pZCBzZXROb2RlKE5vZGUqIG5vZGUpIHsgbV9ub2RlID0gbm9kZTsgfQogCkBA
IC02OCwxMSArNjcsMTcgQEAgcHVibGljOgogICAgIGJvb2wgc2V0UHJvcGVydHkoaW50IHByb3Bl
cnR5SUQsIGludCB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgYm9vbCBub3RpZnlDaGFu
Z2VkID0gdHJ1ZSk7CiAgICAgYm9vbCBzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgbm90aWZ5Q2hhbmdlZCwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIGJvb2wgc2V0UHJvcGVydHkoaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0
cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UsIGJvb2wgbm90aWZ5Q2hhbmdlZCA9
IHRydWUpCi0gICAgICAgIHsgRXhjZXB0aW9uQ29kZSBlYzsgcmV0dXJuIHNldFByb3BlcnR5KHBy
b3BlcnR5SWQsIHZhbHVlLCBpbXBvcnRhbnQsIG5vdGlmeUNoYW5nZWQsIGVjKTsgfQorICAgIHsg
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgIHJldHVybiBzZXRQcm9wZXJ0eShw
cm9wZXJ0eUlkLCB2YWx1ZSwgaW1wb3J0YW50LCBub3RpZnlDaGFuZ2VkLCBlYyk7CisgICAgfQog
CiAgICAgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBib29sIG5vdGlmeUNo
YW5nZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcgcmVtb3ZlUHJvcGVydHkoaW50IHBy
b3BlcnR5SUQsIGJvb2wgbm90aWZ5Q2hhbmdlZCA9IHRydWUpCi0gICAgICAgIHsgRXhjZXB0aW9u
Q29kZSBlYzsgcmV0dXJuIHJlbW92ZVByb3BlcnR5KHByb3BlcnR5SUQsIG5vdGlmeUNoYW5nZWQs
IGVjKTsgfQorICAgIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgcmV0dXJu
IHJlbW92ZVByb3BlcnR5KHByb3BlcnR5SUQsIG5vdGlmeUNoYW5nZWQsIGVjKTsKKyAgICB9CiAK
ICAgICB2b2lkIGNsZWFyKCk7CiAKQEAgLTgxLDI5ICs4NiwyOSBAQCBwdWJsaWM6CiAgICAgLy8g
c2V0TGVuZ3RoUHJvcGVydHkgdHJlYXRzIGludGVnZXJzIGFzIHBpeGVscyEgKE5lZWRlZCBmb3Ig
Y29udmVyc2lvbiBvZiBIVE1MIGF0dHJpYnV0ZXMuKQogICAgIHZvaWQgc2V0TGVuZ3RoUHJvcGVy
dHkoaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBi
b29sIG11bHRpTGVuZ3RoID0gZmFsc2UpOwogICAgIHZvaWQgc2V0U3RyaW5nUHJvcGVydHkoaW50
IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXMsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOyAvLyBwYXJzZWQgc3RyaW5nIHZhbHVlCi0g
ICAgdm9pZCBzZXRJbWFnZVByb3BlcnR5KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIFVS
TCwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAgdm9pZCBzZXRJbWFnZVByb3BlcnR5KGlu
dCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7
CiAgCiAgICAgLy8gVGhlIGZvbGxvd2luZyBwYXJzZXMgYW4gZW50aXJlIG5ldyBzdHlsZSBkZWNs
YXJhdGlvbi4KICAgICB2b2lkIHBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURl
Y2xhcmF0aW9uKTsKIAogICAgIC8vIEJlc2lkZXMgYWRkaW5nIHRoZSBwcm9wZXJ0aWVzLCB0aGlz
IGFsc28gcmVtb3ZlcyBhbnkgZXhpc3RpbmcgcHJvcGVydGllcyB3aXRoIHRoZXNlIElEcy4KICAg
ICAvLyBJdCBkb2VzIG5vIG5vdGlmaWNhdGlvbiBzaW5jZSBpdCdzIGNhbGxlZCBieSB0aGUgcGFy
c2VyLgotICAgIHZvaWQgYWRkUGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eSAqIGNv
bnN0ICosIGludCBudW1Qcm9wZXJ0aWVzKTsKKyAgICB2b2lkIGFkZFBhcnNlZFByb3BlcnRpZXMo
Y29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0ICosIGludCBudW1Qcm9wZXJ0aWVzKTsKICAKICAgICBQ
YXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBjb3B5QmxvY2tQcm9wZXJ0aWVz
KCkgY29uc3Q7CiAgICAgdm9pZCByZW1vdmVCbG9ja1Byb3BlcnRpZXMoKTsKICAgICB2b2lkIHJl
bW92ZVByb3BlcnRpZXNJblNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVuZ3RoLCBib29s
IG5vdGlmeUNoYW5nZWQgPSB0cnVlKTsKIAogICAgIHZvaWQgbWVyZ2UoQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24qLCBib29sIGFyZ092ZXJyaWRlc09uQ29uZmxpY3QgPSB0cnVlKTsKLSAKKwog
cHJpdmF0ZToKLSAgICBTdHJpbmcgZ2V0U2hvcnRIYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0
aWVzLCBpbnQgbnVtYmVyKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0U2hvcnRoYW5kVmFsdWUoY29u
c3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQgbnVtYmVyKSBjb25zdDsKICAgICBTdHJpbmcgZ2V0NFZh
bHVlcyhjb25zdCBpbnQqIHByb3BlcnRpZXMpIGNvbnN0OwogIAogICAgIERlcHJlY2F0ZWRWYWx1
ZUxpc3Q8Q1NTUHJvcGVydHk+IG1fdmFsdWVzOwogICAgIE5vZGUqIG1fbm9kZTsKIH07CiAKLX0g
Ly8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8v
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uX2gKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU05hbWVz
cGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU05hbWVzcGFjZS5oCShyZXZpc2lv
biAxODgzNCkKKysrIFdlYkNvcmUvY3NzL0NTU05hbWVzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw4ICsyMSw4IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0j
aWZuZGVmIENTU05hbWVzcGFjZV9ICi0jZGVmaW5lIENTU05hbWVzcGFjZV9ICisjaWZuZGVmIENT
U05hbWVzcGFjZV9oCisjZGVmaW5lIENTU05hbWVzcGFjZV9oCiAKICNpbmNsdWRlICJBdG9taWNT
dHJpbmcuaCIKIApAQCAtMzMsMTUgKzMzLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgQXRvbWljU3RyaW5nIG1fdXJpOwogICAgICAgICBDU1NOYW1lc3BhY2UqIG1fcGFyZW50Owog
Ci0gICAgICAgIENTU05hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHAsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdSwgQ1NTTmFtZXNwYWNlKiBwYXJlbnQpIAotICAgICAgICAgICAgOiBtX3ByZWZp
eChwKQotICAgICAgICAgICAgLCBtX3VyaSh1KQotICAgICAgICAgICAgLCBtX3BhcmVudChwYXJl
bnQpIHt9CisgICAgICAgIENTU05hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwg
Y29uc3QgQXRvbWljU3RyaW5nJiB1cmksIENTU05hbWVzcGFjZSogcGFyZW50KQorICAgICAgICAg
ICAgOiBtX3ByZWZpeChwcmVmaXgpCisgICAgICAgICAgICAsIG1fdXJpKHVyaSkKKyAgICAgICAg
ICAgICwgbV9wYXJlbnQocGFyZW50KQorICAgICAgICB7CisgICAgICAgIH0KICAgICAgICAgfkNT
U05hbWVzcGFjZSgpIHsgZGVsZXRlIG1fcGFyZW50OyB9Ci0gICAgICAgIAorCiAgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdXJpKCkgeyByZXR1cm4gbV91cmk7IH0KICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBwcmVmaXgoKSB7IHJldHVybiBtX3ByZWZpeDsgfQotICAgICAgICAKKwog
ICAgICAgICBDU1NOYW1lc3BhY2UqIG5hbWVzcGFjZUZvclByZWZpeChjb25zdCBBdG9taWNTdHJp
bmcmIHByZWZpeCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHByZWZpeCA9PSBtX3ByZWZp
eCkKQEAgLTUxLDYgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIH0KICAgICB9OwotfQogCi0jZW5kaWYKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIENTU05hbWVzcGFjZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksMTcgKzE5LDE3IEBACiAgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCiAg
KiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKIAorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5
d29yZHMuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvdW50ZXIuaCIKLSNpbmNs
dWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRGFzaGJvYXJkUmVnaW9uLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJTdHlsZS5oIgotCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNTAsOSArNTAsMTAgQEAgc3RhdGljIGJvb2wgaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVy
KGNvbgogICAgICsrcDsKIAogICAgIC8vIHtubWNoYXJ9KgotICAgIGZvciAoOyBwICE9IGVuZDsg
KytwKQorICAgIGZvciAoOyBwICE9IGVuZDsgKytwKSB7CiAgICAgICAgIGlmICghKHBbMF0gPT0g
J18nIHx8IHBbMF0gPT0gJy0nIHx8IGlzYWxudW0ocFswXSkgfHwgcFswXSA+PSAxMjgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
MTA2LDU5ICsxMDcsNTkgQEAgc3RhdGljIFN0cmluZyBxdW90ZVVSTElmTmVlZGVkKGNvbnN0IFN0
cgogfQogCiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoKQorICAgIDogbV90
eXBlKDApCiB7Ci0gICAgbV90eXBlID0gMDsKIH0KIAogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKGludCBpZGVudCkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCiB7CiAgICAg
bV92YWx1ZS5pZGVudCA9IGlkZW50OwotICAgIG1fdHlwZSA9IENTU19JREVOVDsKIH0KIAogQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKGRvdWJsZSBudW0sIFVuaXRUeXBlcyB0
eXBlKQorICAgIDogbV90eXBlKHR5cGUpCiB7CiAgICAgbV92YWx1ZS5udW0gPSBudW07Ci0gICAg
bV90eXBlID0gdHlwZTsKIH0KIAogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KGNvbnN0IFN0cmluZyYgc3RyLCBVbml0VHlwZXMgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQog
ewogICAgIGlmICgobV92YWx1ZS5zdHJpbmcgPSBzdHIuaW1wbCgpKSkKICAgICAgICAgbV92YWx1
ZS5zdHJpbmctPnJlZigpOwotICAgIG1fdHlwZSA9IHR5cGU7CiB9CiAKIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShQYXNzUmVmUHRyPENvdW50ZXI+IGMpCisgICAgOiBtX3R5
cGUoQ1NTX0NPVU5URVIpCiB7CiAgICAgbV92YWx1ZS5jb3VudGVyID0gYy5yZWxlYXNlUmVmKCk7
Ci0gICAgbV90eXBlID0gQ1NTX0NPVU5URVI7CiB9CiAKIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShQYXNzUmVmUHRyPFJlY3RJbXBsPiByKQorICAgIDogbV90eXBlKENTU19S
RUNUKQogewogICAgIG1fdmFsdWUucmVjdCA9IHIucmVsZWFzZVJlZigpOwotICAgIG1fdHlwZSA9
IENTU19SRUNUOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQogQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKFBhc3NSZWZQdHI8RGFzaGJvYXJkUmVnaW9uPiByKQorICAgIDogbV90
eXBlKENTU19EQVNIQk9BUkRfUkVHSU9OKQogewogICAgIG1fdmFsdWUucmVnaW9uID0gci5yZWxl
YXNlUmVmKCk7Ci0gICAgbV90eXBlID0gQ1NTX0RBU0hCT0FSRF9SRUdJT047CiB9CiAjZW5kaWYK
IAogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFJHQkEzMiBjb2xvcikKKyAg
ICA6IG1fdHlwZShDU1NfUkdCQ09MT1IpCiB7CiAgICAgbV92YWx1ZS5yZ2Jjb2xvciA9IGNvbG9y
OwotICAgIG1fdHlwZSA9IENTU19SR0JDT0xPUjsKIH0KIAogQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKFBhc3NSZWZQdHI8UGFpcj4gcCkKKyAgICA6IG1fdHlwZShDU1NfUEFJ
UikKIHsKICAgICBtX3ZhbHVlLnBhaXIgPSBwLnJlbGVhc2VSZWYoKTsKLSAgICBtX3R5cGUgPSBD
U1NfUEFJUjsKIH0KIAogQ1NTUHJpbWl0aXZlVmFsdWU6On5DU1NQcmltaXRpdmVWYWx1ZSgpCkBA
IC0xNjgsMTc2ICsxNjksMTczIEBAIENTU1ByaW1pdGl2ZVZhbHVlOjp+Q1NTUHJpbWl0aXZlVmFs
dWUoKQogCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKCkKIHsKLSAgICBzd2l0Y2go
bV90eXBlKSB7Ci0gICAgY2FzZSBDU1NfU1RSSU5HOgotICAgIGNhc2UgQ1NTX1VSSToKLSAgICBj
YXNlIENTU19BVFRSOgotICAgICAgICBpZiAobV92YWx1ZS5zdHJpbmcpCi0gICAgICAgICAgICBt
X3ZhbHVlLnN0cmluZy0+ZGVyZWYoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfQ09V
TlRFUjoKLSAgICAgICAgbV92YWx1ZS5jb3VudGVyLT5kZXJlZigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU19SRUNUOgotICAgICAgICBtX3ZhbHVlLnJlY3QtPmRlcmVmKCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAgIG1fdmFsdWUucGFpci0+ZGVy
ZWYoKTsKLSAgICAgICAgYnJlYWs7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICAgICAgY2Fz
ZSBDU1NfU1RSSU5HOgorICAgICAgICBjYXNlIENTU19VUkk6CisgICAgICAgIGNhc2UgQ1NTX0FU
VFI6CisgICAgICAgICAgICBpZiAobV92YWx1ZS5zdHJpbmcpCisgICAgICAgICAgICAgICAgbV92
YWx1ZS5zdHJpbmctPmRlcmVmKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
U1NfQ09VTlRFUjoKKyAgICAgICAgICAgIG1fdmFsdWUuY291bnRlci0+ZGVyZWYoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19SRUNUOgorICAgICAgICAgICAgbV92YWx1
ZS5yZWN0LT5kZXJlZigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1BB
SVI6CisgICAgICAgICAgICBtX3ZhbHVlLnBhaXItPmRlcmVmKCk7CisgICAgICAgICAgICBicmVh
azsKICNpZiBQTEFURk9STShNQUMpCi0gICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjoKLSAg
ICAgICAgaWYgKG1fdmFsdWUucmVnaW9uKQotICAgICAgICAgICAgbV92YWx1ZS5yZWdpb24tPmRl
cmVmKCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVHSU9O
OgorICAgICAgICAgICAgaWYgKG1fdmFsdWUucmVnaW9uKQorICAgICAgICAgICAgICAgIG1fdmFs
dWUucmVnaW9uLT5kZXJlZigpOworICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICBkZWZh
dWx0OgotICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KIAogICAgIG1fdHlwZSA9IDA7CiB9CiAKLWludCBDU1NQcmltaXRpdmVWYWx1ZTo6
Y29tcHV0ZUxlbmd0aEludChSZW5kZXJTdHlsZSAqc3R5bGUpCitpbnQgQ1NTUHJpbWl0aXZlVmFs
dWU6OmNvbXB1dGVMZW5ndGhJbnQoUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGRvdWJsZSBy
ZXN1bHQgPSBjb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUpOwotICAgIAorCiAgICAgLy8gVGhpcyBj
b252ZXJzaW9uIGlzIGltcHJlY2lzZSwgb2Z0ZW4gcmVzdWx0aW5nIGluIHZhbHVlcyBvZiwgZS5n
LiwgNDQuOTk5OTguICBXZQogICAgIC8vIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJvdW5kIGlmIHdl
J3JlIHJlYWxseSBjbG9zZSB0byB0aGUgbmV4dCBpbnRlZ2VyIHZhbHVlLgogICAgIHJlc3VsdCAr
PSByZXN1bHQgPCAwID8gLTAuMDEgOiArMC4wMTsKLSAgICAKKwogICAgIGlmIChyZXN1bHQgPiBJ
TlRfTUFYIHx8IHJlc3VsdCA8IElOVF9NSU4pCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biAoaW50KXJlc3VsdDsgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsK
IH0KIAotaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KFJlbmRlclN0eWxl
ICpzdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpCitpbnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVMZW5ndGhJbnQoUmVuZGVyU3R5bGUqIHN0eWxlLCBkb3VibGUgbXVsdGlwbGllcikKIHsKICAg
ICBkb3VibGUgcmVzdWx0ID0gbXVsdGlwbGllciAqIGNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSk7
Ci0gICAgCisKICAgICAvLyBUaGlzIGNvbnZlcnNpb24gaXMgaW1wcmVjaXNlLCBvZnRlbiByZXN1
bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5OC4gIFdlCiAgICAgLy8gbmVlZCB0byBn
byBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5IGNsb3NlIHRvIHRoZSBuZXh0IGludGVn
ZXIgdmFsdWUuCiAgICAgcmVzdWx0ICs9IHJlc3VsdCA8IDAgPyAtMC4wMSA6ICswLjAxOwotICAg
IAorCiAgICAgaWYgKHJlc3VsdCA+IElOVF9NQVggfHwgcmVzdWx0IDwgSU5UX01JTikKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIChpbnQpcmVzdWx0OyAgCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4ocmVzdWx0KTsKIH0KIAogY29uc3QgaW50IGludE1heEZvckxlbmd0aCA9IDB4
N2ZmZmZmZjsgLy8gbWF4IHZhbHVlIGZvciBhIDI4LWJpdCBpbnQKLWNvbnN0IGludCBpbnRNaW5G
b3JMZW5ndGggPSAoLTB4N2ZmZmZmZi0xKTsgLy8gbWluIHZhbHVlIGZvciBhIDI4LWJpdCBpbnQK
K2NvbnN0IGludCBpbnRNaW5Gb3JMZW5ndGggPSAoLTB4N2ZmZmZmZiAtIDEpOyAvLyBtaW4gdmFs
dWUgZm9yIGEgMjgtYml0IGludAogCiAvLyBMZW5ndGhzIGV4cGVjdCBhbiBpbnQgdGhhdCBpcyBv
bmx5IDI4LWJpdHMsIHNvIHdlIGhhdmUgdG8gY2hlY2sgZm9yIGEgZGlmZmVyZW50IG92ZXJmbG93
LgotaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKFJlbmRl
clN0eWxlICpzdHlsZSkKK2ludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludEZv
ckxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgZG91YmxlIHJlc3VsdCA9IGNvbXB1
dGVMZW5ndGhGbG9hdChzdHlsZSk7Ci0gICAgCisKICAgICAvLyBUaGlzIGNvbnZlcnNpb24gaXMg
aW1wcmVjaXNlLCBvZnRlbiByZXN1bHRpbmcgaW4gdmFsdWVzIG9mLCBlLmcuLCA0NC45OTk5OC4g
IFdlCiAgICAgLy8gbmVlZCB0byBnbyBhaGVhZCBhbmQgcm91bmQgaWYgd2UncmUgcmVhbGx5IGNs
b3NlIHRvIHRoZSBuZXh0IGludGVnZXIgdmFsdWUuCiAgICAgcmVzdWx0ICs9IHJlc3VsdCA8IDAg
PyAtMC4wMSA6ICswLjAxOwotICAgIAorCiAgICAgaWYgKHJlc3VsdCA+IGludE1heEZvckxlbmd0
aCB8fCByZXN1bHQgPCBpbnRNaW5Gb3JMZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiAoaW50KXJlc3VsdDsgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0
KTsKIH0KIAogLy8gTGVuZ3RocyBleHBlY3QgYW4gaW50IHRoYXQgaXMgb25seSAyOC1iaXRzLCBz
byB3ZSBoYXZlIHRvIGNoZWNrIGZvciBhIGRpZmZlcmVudCBvdmVyZmxvdy4KLWludCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChSZW5kZXJTdHlsZSAqc3R5bGUs
IGRvdWJsZSBtdWx0aXBsaWVyKQoraW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3Ro
SW50Rm9yTGVuZ3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpCiB7CiAg
ICAgZG91YmxlIHJlc3VsdCA9IG11bHRpcGxpZXIgKiBjb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUp
OwotICAgIAorCiAgICAgLy8gVGhpcyBjb252ZXJzaW9uIGlzIGltcHJlY2lzZSwgb2Z0ZW4gcmVz
dWx0aW5nIGluIHZhbHVlcyBvZiwgZS5nLiwgNDQuOTk5OTguICBXZQogICAgIC8vIG5lZWQgdG8g
Z28gYWhlYWQgYW5kIHJvdW5kIGlmIHdlJ3JlIHJlYWxseSBjbG9zZSB0byB0aGUgbmV4dCBpbnRl
Z2VyIHZhbHVlLgogICAgIHJlc3VsdCArPSByZXN1bHQgPCAwID8gLTAuMDEgOiArMC4wMTsKLSAg
ICAKKwogICAgIGlmIChyZXN1bHQgPiBpbnRNYXhGb3JMZW5ndGggfHwgcmVzdWx0IDwgaW50TWlu
Rm9yTGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gKGludClyZXN1bHQ7ICAK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOwogfQogCi1zaG9ydCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aFNob3J0KFJlbmRlclN0eWxlICpzdHlsZSkKK3Nob3J0
IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoU2hvcnQoUmVuZGVyU3R5bGUqIHN0eWxl
KQogewogICAgIGRvdWJsZSByZXN1bHQgPSBjb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUpOwotICAg
IAorCiAgICAgLy8gVGhpcyBjb252ZXJzaW9uIGlzIGltcHJlY2lzZSwgb2Z0ZW4gcmVzdWx0aW5n
IGluIHZhbHVlcyBvZiwgZS5nLiwgNDQuOTk5OTguICBXZQogICAgIC8vIG5lZWQgdG8gZ28gYWhl
YWQgYW5kIHJvdW5kIGlmIHdlJ3JlIHJlYWxseSBjbG9zZSB0byB0aGUgbmV4dCBpbnRlZ2VyIHZh
bHVlLgogICAgIHJlc3VsdCArPSByZXN1bHQgPCAwID8gLTAuMDEgOiArMC4wMTsKLSAgICAKKwog
ICAgIGlmIChyZXN1bHQgPiBTSFJUX01BWCB8fCByZXN1bHQgPCBTSFJUX01JTikKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgcmV0dXJuIChzaG9ydClyZXN1bHQ7ICAgIAorICAgIHJldHVybiBzdGF0
aWNfY2FzdDxzaG9ydD4ocmVzdWx0KTsKIH0KIAotc2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNv
bXB1dGVMZW5ndGhTaG9ydChSZW5kZXJTdHlsZSAqc3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyKQor
c2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhTaG9ydChSZW5kZXJTdHlsZSog
c3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyKQogewogICAgIGRvdWJsZSByZXN1bHQgPSBtdWx0aXBs
aWVyICogY29tcHV0ZUxlbmd0aEZsb2F0KHN0eWxlKTsKLSAgICAKKwogICAgIC8vIFRoaXMgY29u
dmVyc2lvbiBpcyBpbXByZWNpc2UsIG9mdGVuIHJlc3VsdGluZyBpbiB2YWx1ZXMgb2YsIGUuZy4s
IDQ0Ljk5OTk4LiAgV2UKICAgICAvLyBuZWVkIHRvIGdvIGFoZWFkIGFuZCByb3VuZCBpZiB3ZSdy
ZSByZWFsbHkgY2xvc2UgdG8gdGhlIG5leHQgaW50ZWdlciB2YWx1ZS4KICAgICByZXN1bHQgKz0g
cmVzdWx0IDwgMCA/IC0wLjAxIDogKzAuMDE7Ci0gICAgCisKICAgICBpZiAocmVzdWx0ID4gU0hS
VF9NQVggfHwgcmVzdWx0IDwgU0hSVF9NSU4pCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biAoc2hvcnQpcmVzdWx0OyAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNob3J0PihyZXN1bHQp
OwogfQogCi1kb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhGbG9hdChSZW5k
ZXJTdHlsZSAqc3R5bGUsIGJvb2wgYXBwbHlab29tRmFjdG9yKQorZG91YmxlIENTU1ByaW1pdGl2
ZVZhbHVlOjpjb21wdXRlTGVuZ3RoRmxvYXQoUmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGFwcGx5
Wm9vbUZhY3RvcikKIHsKICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlID0gcHJpbWl0aXZlVHlwZSgp
OwogCiAgICAgLy8gV2UgYWx3YXlzIGFzc3VtZSA5NiBDU1MgcGl4ZWxzIGluIGEgQ1NTIGluY2gu
IFRoaXMgaXMgdGhlIGNvbGQgaGFyZCB0cnV0aCBvZiB0aGUgV2ViLgogICAgIC8vIEF0IGhpZ2gg
RFBJLCB3ZSBtYXkgc2NhbGUgYSBDU1MgcGl4ZWwsIGJ1dCB0aGUgcmF0aW8gb2YgdGhlIENTUyBw
aXhlbCB0byB0aGUgc28tY2FsbGVkCiAgICAgLy8gImFic29sdXRlIiBDU1MgbGVuZ3RoIHVuaXRz
IGxpa2UgaW5jaCBhbmQgcHQgaXMgYWx3YXlzIGZpeGVkIGFuZCBuZXZlciBjaGFuZ2VzLgotICAg
IGRvdWJsZSBjc3NQaXhlbHNQZXJJbmNoID0gOTYuOworICAgIGNvbnN0IGRvdWJsZSBjc3NQaXhl
bHNQZXJJbmNoID0gOTYuMDsKIAotICAgIGRvdWJsZSBmYWN0b3IgPSAxLjsKLSAgICBzd2l0Y2go
dHlwZSkgewotICAgIGNhc2UgQ1NTX0VNUzoKLSAgICAgICAgZmFjdG9yID0gYXBwbHlab29tRmFj
dG9yID8KLSAgICAgICAgICBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCkg
OgotICAgICAgICAgIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTX0VYUzogewotICAgICAgICAvLyBGSVhNRTogV2Ug
aGF2ZSBhIGJ1ZyByaWdodCBub3cgd2hlcmUgdGhlIHpvb20gd2lsbCBiZSBhcHBsaWVkIG11bHRp
cGxlIHRpbWVzIHRvIEVYIHVuaXRzLgotICAgICAgICAvLyBXZSByZWFsbHkgbmVlZCB0byBjb21w
dXRlIEVYIHVzaW5nIGZvbnRNZXRyaWNzIGZvciB0aGUgb3JpZ2luYWwgc3BlY2lmaWVkU2l6ZSBh
bmQgbm90IHVzZQotICAgICAgICAvLyBvdXIgYWN0dWFsIGNvbnN0cnVjdGVkIHJlbmRlcmluZyBm
b250LgotICAgICAgICBmYWN0b3IgPSBzdHlsZS0+Zm9udCgpLnhIZWlnaHQoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ1NTX1BYOgotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU19DTToKLSAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaC8yLjU0OyAvLyAoMi41
NCBjbS9pbikKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfTU06Ci0gICAgICAgIGZhY3Rv
ciA9IGNzc1BpeGVsc1BlckluY2gvMjUuNDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1Nf
SU46Ci0gICAgICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2g7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTX1BUOgotICAgICAgICBmYWN0b3IgPSBjc3NQaXhlbHNQZXJJbmNoLzcyLjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NfUEM6Ci0gICAgICAgIC8vIDEgcGMgPT0gMTIg
cHQKLSAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCoxMi4vNzIuOwotICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gLTE7CisgICAgZG91YmxlIGZhY3Rv
ciA9IDEuMDsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBDU1NfRU1TOgorICAg
ICAgICAgICAgZmFjdG9yID0gYXBwbHlab29tRmFjdG9yID8gc3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLmNvbXB1dGVkU2l6ZSgpIDogc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNp
emUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19FWFM6CisgICAgICAg
ICAgICAvLyBGSVhNRTogV2UgaGF2ZSBhIGJ1ZyByaWdodCBub3cgd2hlcmUgdGhlIHpvb20gd2ls
bCBiZSBhcHBsaWVkIG11bHRpcGxlIHRpbWVzIHRvIEVYIHVuaXRzLgorICAgICAgICAgICAgLy8g
V2UgcmVhbGx5IG5lZWQgdG8gY29tcHV0ZSBFWCB1c2luZyBmb250TWV0cmljcyBmb3IgdGhlIG9y
aWdpbmFsIHNwZWNpZmllZFNpemUgYW5kIG5vdCB1c2UKKyAgICAgICAgICAgIC8vIG91ciBhY3R1
YWwgY29uc3RydWN0ZWQgcmVuZGVyaW5nIGZvbnQuCisgICAgICAgICAgICBmYWN0b3IgPSBzdHls
ZS0+Zm9udCgpLnhIZWlnaHQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENT
U19QWDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19DTToKKyAgICAgICAg
ICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2ggLyAyLjU0OyAvLyAoMi41NCBjbS9pbikKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19NTToKKyAgICAgICAgICAgIGZhY3Rv
ciA9IGNzc1BpeGVsc1BlckluY2ggLyAyNS40OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ1NTX0lOOgorICAgICAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU19QVDoKKyAgICAgICAgICAgIGZhY3Rv
ciA9IGNzc1BpeGVsc1BlckluY2ggLyA3Mi4wOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ1NTX1BDOgorICAgICAgICAgICAgLy8gMSBwYyA9PSAxMiBwdAorICAgICAgICAgICAg
ZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCAqIDEyLjAgLyA3Mi4wOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gLTEuMDsKICAgICB9CiAK
ICAgICByZXR1cm4gZ2V0RmxvYXRWYWx1ZSgpICogZmFjdG9yOwogfQogCi12b2lkIENTU1ByaW1p
dGl2ZVZhbHVlOjpzZXRGbG9hdFZhbHVlKCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgZG91Ymxl
IGZsb2F0VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6
c2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgZG91YmxlIGZsb2F0VmFsdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKLSAgICAKLSAgICAvLyAjIyMgY2hl
Y2sgaWYgcHJvcGVydHkgc3VwcG9ydHMgdGhpcyB0eXBlCisKKyAgICAvLyBGSVhNRTogY2hlY2sg
aWYgcHJvcGVydHkgc3VwcG9ydHMgdGhpcyB0eXBlCiAgICAgaWYgKG1fdHlwZSA+IENTU19ESU1F
TlNJT04pIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIAorCiAgICAgY2xlYW51cCgpOwogCiAgICAgLy9pZihtX3R5cGUgPiBDU1NfRElNRU5T
SU9OKSB0aHJvdyBET01FeGNlcHRpb24oSU5WQUxJRF9BQ0NFU1NfRVJSKTsKQEAgLTM0NywxMCAr
MzQ1LDEwIEBAIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OnNldEZsb2F0VmFsdWUoIHUKIAogZG91
YmxlIHNjYWxlRmFjdG9yRm9yQ29udmVyc2lvbih1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkKIHsK
LSAgICBkb3VibGUgY3NzUGl4ZWxzUGVySW5jaCA9IDk2LjA7CisgICAgY29uc3QgZG91YmxlIGNz
c1BpeGVsc1BlckluY2ggPSA5Ni4wOworCiAgICAgZG91YmxlIGZhY3RvciA9IDEuMDsKLSAgICAK
LSAgICBzd2l0Y2godW5pdFR5cGUpIHsKKyAgICBzd2l0Y2ggKHVuaXRUeXBlKSB7CiAgICAgICAg
IGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ006CkBAIC0zNzEsNyArMzY5LDcgQEAg
ZG91YmxlIHNjYWxlRmFjdG9yRm9yQ29udmVyc2lvbih1bnNpZ25lZAogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIGZhY3RvcjsK
IH0KIApAQCAtMzc5LDMxICszNzcsMzEgQEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRG
bG9hdFZhbHVlKAogewogICAgIGlmICh1bml0VHlwZSA9PSBtX3R5cGUgfHwgdW5pdFR5cGUgPCBD
U1NfUFggfHwgdW5pdFR5cGUgPiBDU1NfUEMpCiAgICAgICAgIHJldHVybiBtX3ZhbHVlLm51bTsK
LSAgICAKKwogICAgIGRvdWJsZSBjb252ZXJ0ZWRWYWx1ZSA9IG1fdmFsdWUubnVtOwotICAgIAor
CiAgICAgLy8gRmlyc3QgY29udmVydCB0aGUgdmFsdWUgZnJvbSBtX3R5cGUgaW50byBDU1NQaXhl
bHMKICAgICBkb3VibGUgZmFjdG9yID0gc2NhbGVGYWN0b3JGb3JDb252ZXJzaW9uKG1fdHlwZSk7
CiAgICAgY29udmVydGVkVmFsdWUgKj0gZmFjdG9yOwotICAgIAorCiAgICAgLy8gTm93IGNvbnZl
cnQgZnJvbSBDU1NQaXhlbHMgdG8gdGhlIHNwZWNpZmllZCB1bml0VHlwZQogICAgIGZhY3RvciA9
IHNjYWxlRmFjdG9yRm9yQ29udmVyc2lvbih1bml0VHlwZSk7CiAgICAgY29udmVydGVkVmFsdWUg
Lz0gZmFjdG9yOwotICAgIAorCiAgICAgcmV0dXJuIGNvbnZlcnRlZFZhbHVlOwogfQogCi12b2lk
IENTU1ByaW1pdGl2ZVZhbHVlOjpzZXRTdHJpbmdWYWx1ZSggdW5zaWduZWQgc2hvcnQgc3RyaW5n
VHlwZSwgY29uc3QgU3RyaW5nICZzdHJpbmdWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lk
IENTU1ByaW1pdGl2ZVZhbHVlOjpzZXRTdHJpbmdWYWx1ZSh1bnNpZ25lZCBzaG9ydCBzdHJpbmdU
eXBlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBlYyA9IDA7Ci0gICAgICAgIAorCiAgICAgLy9pZihtX3R5cGUgPCBDU1NfU1RSSU5HKSB0aHJv
dyBET01FeGNlcHRpb24oSU5WQUxJRF9BQ0NFU1NfRVJSKTsKICAgICAvL2lmKG1fdHlwZSA+IENT
U19BVFRSKSB0aHJvdyBET01FeGNlcHRpb24oSU5WQUxJRF9BQ0NFU1NfRVJSKTsKICAgICBpZiAo
bV90eXBlIDwgQ1NTX1NUUklORyB8fCBtX3R5cGUgPiBDU1NfQVRUUikgewogICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBjbGVhbnVw
KCk7CiAKICAgICBpZiAoc3RyaW5nVHlwZSAhPSBDU1NfSURFTlQpIHsKQEAgLTQxMSw3ICs0MDks
NyBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpzZXRTdHJpbmdWYWx1ZSggCiAgICAgICAgIG1f
dmFsdWUuc3RyaW5nLT5yZWYoKTsKICAgICAgICAgbV90eXBlID0gc3RyaW5nVHlwZTsKICAgICB9
Ci0gICAgLy8gIyMjIHBhcnNlIGlkZW50CisgICAgLy8gRklYTUU6IHBhcnNlIGlkZW50CiB9CiAK
IFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0U3RyaW5nVmFsdWUoKSBjb25zdApAQCAtNDI3
LDcgKzQyNSw3IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0U3RyaW5nVmFsdWUKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGUgQ1NTIDIuMSBzcGVjIHNheXMgeW91IHNob3VsZCB0aHJv
dyBhbiBleGNlcHRpb24gaGVyZS4KICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAKKwog
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApAQCAtNDM2LDI2ICs0MzQsMjcgQEAgdW5zaWduZWQg
c2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1ZhbAogICAgIHJldHVybiBDU1NfUFJJTUlUSVZF
X1ZBTFVFOwogfQogCi1ib29sIENTU1ByaW1pdGl2ZVZhbHVlOjpwYXJzZVN0cmluZyggY29uc3Qg
U3RyaW5nICYvKnN0cmluZyovLCBib29sICkKK2Jvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OnBhcnNl
U3RyaW5nKGNvbnN0IFN0cmluZyYgLypzdHJpbmcqLywgYm9vbCAvKnN0cmljdCovKQogewotICAg
IC8vICMjIworICAgIC8vIEZJWE1FCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBpbnQgQ1NTUHJp
bWl0aXZlVmFsdWU6OmdldElkZW50KCkKIHsKLSAgICBpZihtX3R5cGUgIT0gQ1NTX0lERU5UKSBy
ZXR1cm4gMDsKKyAgICBpZiAobV90eXBlICE9IENTU19JREVOVCkKKyAgICAgICAgcmV0dXJuIDA7
CiAgICAgcmV0dXJuIG1fdmFsdWUuaWRlbnQ7CiB9CiAKIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3NzVGV4dCgpIGNvbnN0CiB7Ci0gICAgLy8gIyMjIHJldHVybiB0aGUgb3JpZ2luYWwgdmFs
dWUgaW5zdGVhZCBvZiBhIGdlbmVyYXRlZCBvbmUgKGUuZy4gY29sb3IKKyAgICAvLyBGSVhNRTog
cmV0dXJuIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbnN0ZWFkIG9mIGEgZ2VuZXJhdGVkIG9uZSAoZS5n
LiBjb2xvcgogICAgIC8vIG5hbWUgaWYgaXQgd2FzIHNwZWNpZmllZCkgLSBjaGVjayB3aGF0IHNw
ZWMgc2F5cyBhYm91dCB0aGlzCiAgICAgU3RyaW5nIHRleHQ7Ci0gICAgc3dpdGNoICggbV90eXBl
ICkgeworICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgQ1NTX1VOS05PV046Ci0g
ICAgICAgICAgICAvLyAjIyMKKyAgICAgICAgICAgIC8vIEZJWE1FCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfTlVNQkVSOgogICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6
bnVtYmVyKG1fdmFsdWUubnVtKTsKQEAgLTUwOSw3ICs1MDgsNyBAQCBTdHJpbmcgQ1NTUHJpbWl0
aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjpudW1i
ZXIobV92YWx1ZS5udW0pICsgImtoeiI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfRElNRU5TSU9OOgotICAgICAgICAgICAgLy8gIyMjCisgICAgICAgICAgICAvLyBGSVhN
RQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1NUUklORzoKICAgICAgICAg
ICAgIHRleHQgPSBxdW90ZVN0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKQEAgLTUyMSw3
ICs1MjAsNyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAg
ICAgICAgICB0ZXh0ID0gZ2V0VmFsdWVOYW1lKG1fdmFsdWUuaWRlbnQpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0FUVFI6Ci0gICAgICAgICAgICAvLyAjIyMKKyAgICAg
ICAgICAgIC8vIEZJWE1FCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfQ09V
TlRFUjoKICAgICAgICAgICAgIHRleHQgPSAiY291bnRlcigiOwpAQCAtNTQwLDE1ICs1MzksMTIg
QEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29ucwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ1NTX1JHQkNPTE9SOiB7CiAgICAgICAgICAgICBDb2xvciBjb2xvcihtX3Zh
bHVlLnJnYmNvbG9yKTsKLSAgICAgICAgICAgIGlmIChjb2xvci5hbHBoYSgpIDwgMHhGRikKLSAg
ICAgICAgICAgICAgICB0ZXh0ID0gInJnYmEoIjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB0ZXh0ID0gInJnYigiOworICAgICAgICAgICAgdGV4dCA9IChjb2xvci5hbHBoYSgp
IDwgMHhGRikgPyAicmdiYSgiIDogInJnYigiOwogICAgICAgICAgICAgdGV4dCArPSBTdHJpbmc6
Om51bWJlcihjb2xvci5yZWQoKSkgKyAiLCAiOwogICAgICAgICAgICAgdGV4dCArPSBTdHJpbmc6
Om51bWJlcihjb2xvci5ncmVlbigpKSArICIsICI7CiAgICAgICAgICAgICB0ZXh0ICs9IFN0cmlu
Zzo6bnVtYmVyKGNvbG9yLmJsdWUoKSk7CiAgICAgICAgICAgICBpZiAoY29sb3IuYWxwaGEoKSA8
IDB4RkYpCi0gICAgICAgICAgICAgICAgdGV4dCArPSAiLCAiICsgU3RyaW5nOjpudW1iZXIoKGZs
b2F0KWNvbG9yLmFscGhhKCkgLyAweEZGKTsKKyAgICAgICAgICAgICAgICB0ZXh0ICs9ICIsICIg
KyBTdHJpbmc6Om51bWJlcihzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3IuYWxwaGEoKSkgLyAweEZG
KTsKICAgICAgICAgICAgIHRleHQgKz0gIikiOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTU4MCw0ICs1NzYsNCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQo
KSBjb25zCiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBA
CiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU1ByaW1p
dGl2ZVZhbHVlX0gKLSNkZWZpbmUgQ1NTUHJpbWl0aXZlVmFsdWVfSAorI2lmbmRlZiBDU1NQcmlt
aXRpdmVWYWx1ZV9oCisjZGVmaW5lIENTU1ByaW1pdGl2ZVZhbHVlX2gKIAogI2luY2x1ZGUgIkNT
U1ZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTM3LDggKzM3LDcgQEAg
Y2xhc3MgU3RyaW5nSW1wbDsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3Mg
Q1NTUHJpbWl0aXZlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUKLXsKK2NsYXNzIENTU1ByaW1pdGl2
ZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKICAgICBlbnVtIFVuaXRUeXBlcyB7
CiAgICAgICAgIENTU19VTktOT1dOID0gMCwKQEAgLTExNywzMCArMTE2LDE4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0U3RyaW5nVmFsdWUodW5zaWduZWQgc2hvcnQgc3RyaW5nVHlwZSwgY29u
c3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyBnZXRT
dHJpbmdWYWx1ZSgpIGNvbnN0OwotICAgIAotICAgIENvdW50ZXIqIGdldENvdW50ZXJWYWx1ZSAo
KSBjb25zdCB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUgIT0gQ1NTX0NPVU5URVIgPyAwIDogbV92
YWx1ZS5jb3VudGVyOwotICAgIH0KLQotICAgIFJlY3RJbXBsKiBnZXRSZWN0VmFsdWUgKCkgY29u
c3QgewotICAgICAgICByZXR1cm4gbV90eXBlICE9IENTU19SRUNUID8gMCA6IG1fdmFsdWUucmVj
dDsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBnZXRSR0JDb2xvclZhbHVlKCkgY29uc3QgewotICAg
ICAgICByZXR1cm4gbV90eXBlICE9IENTU19SR0JDT0xPUiA/IDAgOiBtX3ZhbHVlLnJnYmNvbG9y
OwotICAgIH0KLQotICAgIFBhaXIqIGdldFBhaXJWYWx1ZSgpIGNvbnN0IHsKLSAgICAgICAgcmV0
dXJuIG1fdHlwZSAhPSBDU1NfUEFJUiA/IDAgOiBtX3ZhbHVlLnBhaXI7Ci0gICAgfQorCisgICAg
Q291bnRlciogZ2V0Q291bnRlclZhbHVlICgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBDU1Nf
Q09VTlRFUiA/IDAgOiBtX3ZhbHVlLmNvdW50ZXI7IH0KKyAgICBSZWN0SW1wbCogZ2V0UmVjdFZh
bHVlICgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBDU1NfUkVDVCA/IDAgOiBtX3ZhbHVlLnJl
Y3Q7IH0KKyAgICB1bnNpZ25lZCBnZXRSR0JDb2xvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlICE9IENTU19SR0JDT0xPUiA/IDAgOiBtX3ZhbHVlLnJnYmNvbG9yOyB9CisgICAgUGFpciog
Z2V0UGFpclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9IENTU19QQUlSID8gMCA6IG1f
dmFsdWUucGFpcjsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIERhc2hib2FyZFJlZ2lvbiAq
Z2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUgKCkgY29uc3QgewotICAgICAgICByZXR1cm4gbV90eXBl
ICE9IENTU19EQVNIQk9BUkRfUkVHSU9OID8gMCA6IG1fdmFsdWUucmVnaW9uOwotICAgIH0KKyAg
ICBEYXNoYm9hcmRSZWdpb24gKmdldERhc2hib2FyZFJlZ2lvblZhbHVlICgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSAhPSBDU1NfREFTSEJPQVJEX1JFR0lPTiA/IDAgOiBtX3ZhbHVlLnJlZ2lvbjsg
fQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmltaXRpdmVWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKwogICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgY3NzVmFsdWVUeXBl
KCkgY29uc3Q7CiAKICAgICBpbnQgZ2V0SWRlbnQoKTsKQEAgLTE2Niw2ICsxNTMsNiBAQCBwcm90
ZWN0ZWQ6CiAgICAgfSBtX3ZhbHVlOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ1NTUHJpbWl0aXZlVmFsdWVfaApJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5LmNwcAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDEwIEBACiAgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCiAg
KiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKwogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAKIC8vIE5vdCBpbiBhbnkgaGVhZGVyLCBzbyBqdXN0IGRlY2xhcmUgaXQgaGVyZSBmb3Igbm93
LgpAQCAtMzMsOSArMzUsOSBAQCBTdHJpbmcgQ1NTUHJvcGVydHk6OmNzc1RleHQoKSBjb25zdAog
ICAgIHJldHVybiBnZXRQcm9wZXJ0eU5hbWUoaWQoKSkgKyAiOiAiICsgbV92YWx1ZS0+Y3NzVGV4
dCgpICsgKGlzSW1wb3J0YW50KCkgPyAiICFpbXBvcnRhbnQiIDogIiIpICsgIjsgIjsKIH0KIAot
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1Byb3BlcnR5ICZhLCBjb25zdCBDU1NQcm9wZXJ0eSAm
YikKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQcm9wZXJ0eSYgYSwgY29uc3QgQ1NTUHJvcGVy
dHkmIGIpCiB7CiAgICAgcmV0dXJuIGEubV9pZCA9PSBiLm1faWQgJiYgYS5tX2ltcG9ydGFudCA9
PSBiLm1faW1wb3J0YW50ICYmIGEubV92YWx1ZSA9PSBiLm1fdmFsdWU7CiB9CiAKLX0KK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAkocmV2aXNpb24gMTg4MzQpCisrKyBX
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBA
CiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU1Byb3Bl
cnR5X0gKLSNkZWZpbmUgQ1NTUHJvcGVydHlfSAorI2lmbmRlZiBDU1NQcm9wZXJ0eV9oCisjZGVm
aW5lIENTU1Byb3BlcnR5X2gKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KQEAgLTM5LDE5ICszOSwxOSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV92
YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQotICAgIAotICAgIENTU1Byb3BlcnR5ICZvcGVyYXRv
cj0oY29uc3QgQ1NTUHJvcGVydHkmIG8pCisKKyAgICBDU1NQcm9wZXJ0eSYgb3BlcmF0b3I9KGNv
bnN0IENTU1Byb3BlcnR5JiBvdGhlcikKICAgICB7Ci0gICAgICAgIG1faWQgPSBvLm1faWQ7Ci0g
ICAgICAgIG1fc2hvcnRoYW5kSUQgPSBvLm1fc2hvcnRoYW5kSUQ7Ci0gICAgICAgIG1faW1wb3J0
YW50ID0gby5tX2ltcG9ydGFudDsKLSAgICAgICAgbV92YWx1ZSA9IG8ubV92YWx1ZTsKKyAgICAg
ICAgbV9pZCA9IG90aGVyLm1faWQ7CisgICAgICAgIG1fc2hvcnRoYW5kSUQgPSBvdGhlci5tX3No
b3J0aGFuZElEOworICAgICAgICBtX2ltcG9ydGFudCA9IG90aGVyLm1faW1wb3J0YW50OworICAg
ICAgICBtX3ZhbHVlID0gb3RoZXIubV92YWx1ZTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAg
IH0KLSAgICAKKwogICAgIGludCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBpbnQg
c2hvcnRoYW5kSUQoKSBjb25zdCB7IHJldHVybiBtX3Nob3J0aGFuZElEOyB9Ci0gICAgCisKICAg
ICBib29sIGlzSW1wb3J0YW50KCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRhbnQ7IH0KICAgICBi
b29sIGlzSW1wbGljaXQoKSBjb25zdCB7IHJldHVybiBtX2ltcGxpY2l0OyB9CiAKQEAgLTU5LDE3
ICs1OSwxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKIAor
ICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUHJvcGVydHkmLCBjb25zdCBDU1NQ
cm9wZXJ0eSYpOworCiAgICAgLy8gbWFrZSBzdXJlIHRoZSBmb2xsb3dpbmcgZml0cyBpbiA0IGJ5
dGVzLgogICAgIGludCBtX2lkOwogICAgIGludCBtX3Nob3J0aGFuZElEOyAgLy8gSWYgdGhpcyBw
cm9wZXJ0eSB3YXMgc2V0IGFzIHBhcnQgb2YgYSBzaG9ydGhhbmQsIGdpdmVzIHRoZSBzaG9ydGhh
bmQuCiAgICAgYm9vbCBtX2ltcG9ydGFudCA6IDE7CiAgICAgYm9vbCBtX2ltcGxpY2l0IDogMTsg
Ly8gV2hldGhlciBvciBub3QgdGhlIHByb3BlcnR5IHdhcyBzZXQgaW1wbGljaXRseSBhcyB0aGUg
cmVzdWx0IG9mIGEgc2hvcnRoYW5kLgogCi0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDU1NQcm9wZXJ0eSAmLCBjb25zdCBDU1NQcm9wZXJ0eSAmKTsKLQogICAgIFJlZlB0cjxDU1NW
YWx1ZT4gbV92YWx1ZTsKIH07CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIENTU1Byb3BlcnR5X2gKSW5kZXg6IFdlYkNvcmUvY3Nz
L0NTU1F1aXJrUHJpbWl0aXZlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NR
dWlya1ByaW1pdGl2ZVZhbHVlLmgJKHJldmlzaW9uIDE4ODM0KQorKysgV2ViQ29yZS9jc3MvQ1NT
UXVpcmtQcmltaXRpdmVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBACiAg
KiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU1F1aXJrUHJp
bWl0aXZlVmFsdWVfSAotI2RlZmluZSBDU1NRdWlya1ByaW1pdGl2ZVZhbHVlX0gKKyNpZm5kZWYg
Q1NTUXVpcmtQcmltaXRpdmVWYWx1ZV9oCisjZGVmaW5lIENTU1F1aXJrUHJpbWl0aXZlVmFsdWVf
aAogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKIApAQCAtMzEsMTUgKzMxLDE2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoZSBiYXNpYyBpZGVhIGlzIHRoYXQgYSBzdHlsZXNo
ZWV0IGNhbiB1c2UgdGhlIHZhbHVlIF9fcWVtIChmb3IgcXVpcmt5IGVtKSBpbnN0ZWFkIG9mIGVt
CiAvLyBpbiBhIHN0eWxlc2hlZXQuICBXaGVuIHRoZSBxdWlya3kgdmFsdWUgaXMgdXNlZCwgaWYg
eW91J3JlIGluIHF1aXJrcyBtb2RlLCB0aGUgbWFyZ2luIHdpbGwKIC8vIGNvbGxhcHNlIGF3YXkg
aW5zaWRlIGEgdGFibGUgY2VsbC4KLWNsYXNzIENTU1F1aXJrUHJpbWl0aXZlVmFsdWUgOiBwdWJs
aWMgQ1NTUHJpbWl0aXZlVmFsdWUKLXsKK2NsYXNzIENTU1F1aXJrUHJpbWl0aXZlVmFsdWUgOiBw
dWJsaWMgQ1NTUHJpbWl0aXZlVmFsdWUgewogcHVibGljOgogICAgIENTU1F1aXJrUHJpbWl0aXZl
VmFsdWUoZG91YmxlIG51bSwgVW5pdFR5cGVzIHR5cGUpCi0gICAgICAgIDogQ1NTUHJpbWl0aXZl
VmFsdWUobnVtLCB0eXBlKSB7fQorICAgICAgICA6IENTU1ByaW1pdGl2ZVZhbHVlKG51bSwgdHlw
ZSkKKyAgICB7CisgICAgfQogCiAgICAgdmlydHVhbCBib29sIGlzUXVpcmtWYWx1ZSgpIHsgcmV0
dXJuIHRydWU7IH0KIH07CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZgorI2VuZGlmIC8vIENTU1F1aXJrUHJpbWl0aXZlVmFsdWVfaApJbmRleDogV2Vi
Q29yZS9jc3MvQ1NTUnVsZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1J1
bGVMaXN0LmNwcAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3JlL2Nzcy9DU1NSdWxlTGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3Rv
biwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDU1NSdWxlTGlzdC5oIgogCkBAIC0zMiwxMiArMzMsMTIgQEAgQ1NTUnVsZUxpc3Q6OkNT
U1J1bGVMaXN0KCkKIHsKIH0KIAotQ1NTUnVsZUxpc3Q6OkNTU1J1bGVMaXN0KFN0eWxlTGlzdCog
bHN0LCBib29sIG9taXRDaGFyc2V0UnVsZXMpCitDU1NSdWxlTGlzdDo6Q1NTUnVsZUxpc3QoU3R5
bGVMaXN0KiBsaXN0LCBib29sIG9taXRDaGFyc2V0UnVsZXMpCiB7Ci0gICAgaWYgKGxzdCkgewot
ICAgICAgICB1bnNpZ25lZCBsZW4gPSBsc3QtPmxlbmd0aCgpOworICAgIGlmIChsaXN0KSB7Cisg
ICAgICAgIHVuc2lnbmVkIGxlbiA9IGxpc3QtPmxlbmd0aCgpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgICAgIFN0eWxlQmFzZSogc3R5bGUg
PSBsc3QtPml0ZW0oaSk7CisgICAgICAgICAgICBTdHlsZUJhc2UqIHN0eWxlID0gbGlzdC0+aXRl
bShpKTsKICAgICAgICAgICAgIGlmIChzdHlsZS0+aXNSdWxlKCkgJiYgIShvbWl0Q2hhcnNldFJ1
bGVzICYmIHN0eWxlLT5pc0NoYXJzZXRSdWxlKCkpKQogICAgICAgICAgICAgICAgIGFwcGVuZChz
dGF0aWNfY2FzdDxDU1NSdWxlKj4oc3R5bGUpKTsKICAgICAgICAgfQpAQCAtNTcsNyArNTgsNyBA
QCB2b2lkIENTU1J1bGVMaXN0OjpkZWxldGVSdWxlKHVuc2lnbmVkIGluCiAgICAgaWYgKHJ1bGUp
CiAgICAgICAgIHJ1bGUtPmRlcmVmKCk7CiAgICAgZWxzZQotICAgICAgICA7IC8vICMjIyBUaHJv
dyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24gaGVyZSAoVE9ETykKKyAgICAgICAgOyAvLyBGSVhN
RTogVGhyb3cgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uIGhlcmUKIH0KIAogdm9pZCBDU1NSdWxl
TGlzdDo6YXBwZW5kKENTU1J1bGUqIHJ1bGUpCkBAIC03Miw4ICs3Myw4IEBAIHVuc2lnbmVkIENT
U1J1bGVMaXN0OjppbnNlcnRSdWxlKENTU1J1bGUKICAgICAgICAgcmV0dXJuIGluZGV4OwogICAg
IH0KIAotICAgIC8vICMjIyBTaG91bGQgdGhyb3cgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uIGlu
c3RlYWQhIChUT0RPKQorICAgIC8vIEZJWE1FOiBTaG91bGQgdGhyb3cgSU5ERVhfU0laRV9FUlIg
ZXhjZXB0aW9uIGluc3RlYWQhCiAgICAgcmV0dXJuIDA7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1J1bGVMaXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3JlL2Nz
cy9DU1NSdWxlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwzNiArMjEsMzUgQEAKICAqIEJv
c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCiAKLSNpZm5kZWYgQ1NTUnVsZUxpc3RfSAot
I2RlZmluZSBDU1NSdWxlTGlzdF9ICisjaWZuZGVmIENTU1J1bGVMaXN0X2gKKyNkZWZpbmUgQ1NT
UnVsZUxpc3RfaAogCi0jaW5jbHVkZSAiU2hhcmVkLmgiCiAjaW5jbHVkZSAiRGVwcmVjYXRlZFB0
ckxpc3QuaCIKKyNpbmNsdWRlICJTaGFyZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDU1NSdWxlOwogY2xhc3MgU3R5bGVMaXN0OwogCi1jbGFzcyBDU1NSdWxlTGlzdCA6IHB1
YmxpYyBTaGFyZWQ8Q1NTUnVsZUxpc3Q+Ci17CitjbGFzcyBDU1NSdWxlTGlzdCA6IHB1YmxpYyBT
aGFyZWQ8Q1NTUnVsZUxpc3Q+IHsKIHB1YmxpYzoKICAgICBDU1NSdWxlTGlzdCgpOwogICAgIENT
U1J1bGVMaXN0KFN0eWxlTGlzdCosIGJvb2wgb21pdENoYXJzZXRSdWxlcyA9IGZhbHNlKTsKICAg
ICB+Q1NTUnVsZUxpc3QoKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbHN0Q1NTUnVsZXMuY291bnQoKTsgfQotICAgIENTU1J1bGUqIGl0ZW0gKHVuc2lnbmVkIGlu
ZGV4KSB7IHJldHVybiBtX2xzdENTU1J1bGVzLmF0KGluZGV4KTsgfQorICAgIENTU1J1bGUqIGl0
ZW0odW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIG1fbHN0Q1NTUnVsZXMuYXQoaW5kZXgpOyB9CiAK
ICAgICAvKiBub3QgcGFydCBvZiB0aGUgRE9NICovCi0gICAgdW5zaWduZWQgaW5zZXJ0UnVsZSAo
Q1NTUnVsZSogcnVsZSwgdW5zaWduZWQgaW5kZXgpOwotICAgIHZvaWQgZGVsZXRlUnVsZSAodW5z
aWduZWQgaW5kZXgpOwotICAgIHZvaWQgYXBwZW5kKENTU1J1bGUqIHJ1bGUpOworICAgIHVuc2ln
bmVkIGluc2VydFJ1bGUoQ1NTUnVsZSosIHVuc2lnbmVkIGluZGV4KTsKKyAgICB2b2lkIGRlbGV0
ZVJ1bGUodW5zaWduZWQgaW5kZXgpOworICAgIHZvaWQgYXBwZW5kKENTU1J1bGUqKTsKIAogcHJv
dGVjdGVkOgogICAgIERlcHJlY2F0ZWRQdHJMaXN0PENTU1J1bGU+IG1fbHN0Q1NTUnVsZXM7CiB9
OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNl
bmRpZiAvLyBDU1NSdWxlTGlzdF9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxODgz
NCkKKysrIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIs
NiArMjIsNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAg
Ki8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAKQEAg
LTI5LDQ1ICszMCw0NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgQ1NTU2VsZWN0b3I6
OnByaW50KCkKIHsKLSAgICBpZiAodGFnSGlzdG9yeSkKLSAgICAgICAgdGFnSGlzdG9yeS0+cHJp
bnQoKTsKKyAgICBpZiAobV90YWdIaXN0b3J5KQorICAgICAgICBtX3RhZ0hpc3RvcnktPnByaW50
KCk7CiB9CiAKIHVuc2lnbmVkIGludCBDU1NTZWxlY3Rvcjo6c3BlY2lmaWNpdHkoKQogewogICAg
IC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYW5kIHBzZXVkby1jbGFzc2VzIGRvIG5vdCBoYXZl
IHRoZSBzYW1lIHNwZWNpZmljaXR5LiBUaGlzIGZ1bmN0aW9uCiAgICAgLy8gaXNuJ3QgcXVpdGUg
Y29ycmVjdC4KLSAgICBpbnQgcyA9ICh0YWcubG9jYWxOYW1lKCkgPT0gc3RhckF0b20gPyAwIDog
MSk7Ci0gICAgc3dpdGNoKG1hdGNoKQotICAgIHsKLSAgICBjYXNlIElkOgotICAgICAgICBzICs9
IDB4MTAwMDA7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhhY3Q6Ci0gICAgY2FzZSBDbGFz
czoKLSAgICBjYXNlIFNldDoKLSAgICBjYXNlIExpc3Q6Ci0gICAgY2FzZSBIeXBoZW46Ci0gICAg
Y2FzZSBQc2V1ZG9DbGFzczoKLSAgICBjYXNlIFBzZXVkb0VsZW1lbnQ6Ci0gICAgY2FzZSBDb250
YWluOgotICAgIGNhc2UgQmVnaW46Ci0gICAgY2FzZSBFbmQ6Ci0gICAgICAgIHMgKz0gMHgxMDA7
Ci0gICAgY2FzZSBOb25lOgotICAgICAgICBicmVhazsKKyAgICBpbnQgcyA9IChtX3RhZy5sb2Nh
bE5hbWUoKSA9PSBzdGFyQXRvbSA/IDAgOiAxKTsKKyAgICBzd2l0Y2ggKG1fbWF0Y2gpIHsKKyAg
ICAgICAgY2FzZSBJZDoKKyAgICAgICAgICAgIHMgKz0gMHgxMDAwMDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEV4YWN0OgorICAgICAgICBjYXNlIENsYXNzOgorICAgICAgICBj
YXNlIFNldDoKKyAgICAgICAgY2FzZSBMaXN0OgorICAgICAgICBjYXNlIEh5cGhlbjoKKyAgICAg
ICAgY2FzZSBQc2V1ZG9DbGFzczoKKyAgICAgICAgY2FzZSBQc2V1ZG9FbGVtZW50OgorICAgICAg
ICBjYXNlIENvbnRhaW46CisgICAgICAgIGNhc2UgQmVnaW46CisgICAgICAgIGNhc2UgRW5kOgor
ICAgICAgICAgICAgcyArPSAweDEwMDsKKyAgICAgICAgY2FzZSBOb25lOgorICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIGlmICh0YWdIaXN0b3J5KQotICAgICAgICBzICs9IHRhZ0hpc3Rv
cnktPnNwZWNpZmljaXR5KCk7CisKKyAgICBpZiAobV90YWdIaXN0b3J5KQorICAgICAgICBzICs9
IG1fdGFnSGlzdG9yeS0+c3BlY2lmaWNpdHkoKTsKKwogICAgIC8vIG1ha2Ugc3VyZSBpdCBkb2Vz
bid0IG92ZXJmbG93CiAgICAgcmV0dXJuIHMgJiAweGZmZmZmZjsKIH0KIAogdm9pZCBDU1NTZWxl
Y3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogewotICAgIGlmIChtYXRjaCAhPSBQc2V1
ZG9DbGFzcyAmJiBtYXRjaCAhPSBQc2V1ZG9FbGVtZW50KQorICAgIGlmIChtX21hdGNoICE9IFBz
ZXVkb0NsYXNzICYmIG1fbWF0Y2ggIT0gUHNldWRvRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwot
ICAgIAorCiAgICAgc3RhdGljIEF0b21pY1N0cmluZyBhY3RpdmUoImFjdGl2ZSIpOwogICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgYWZ0ZXIoImFmdGVyIik7CiAgICAgc3RhdGljIEF0b21pY1N0cmlu
ZyBhbnlMaW5rKCItd2Via2l0LWFueS1saW5rIik7CkBAIC0xMDIsMTE2ICsxMDQsMTIzIEBAIHZv
aWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY28KICAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIHNsaWRlclRodW1iKCItd2Via2l0LXNsaWRlci10aHVtYiIpOwogICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgdGFyZ2V0KCJ0YXJnZXQiKTsKICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHZp
c2l0ZWQoInZpc2l0ZWQiKTsKLSAgICBib29sIGVsZW1lbnQgPSBmYWxzZTsgICAgICAgLy8gcHNl
dWRvLWVsZW1lbnQKLSAgICBib29sIGNvbXBhdCA9IGZhbHNlOyAgICAgICAgLy8gc2luZ2xlIGNv
bG9uIGNvbXBhdGJpbGl0eSBtb2RlCi0gICAgCi0gICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9PdGhl
cjsKLSAgICBpZiAodmFsdWUgPT0gYWN0aXZlKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVk
b0FjdGl2ZTsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBhZnRlcikgewotICAgICAgICBfcHNldWRv
VHlwZSA9IFBzZXVkb0FmdGVyOwotICAgICAgICBlbGVtZW50ID0gY29tcGF0ID0gdHJ1ZTsKLSAg
ICB9IGVsc2UgaWYgKHZhbHVlID09IGFueUxpbmspCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNl
dWRvQW55TGluazsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBhdXRvZmlsbCkKLSAgICAgICAgX3Bz
ZXVkb1R5cGUgPSBQc2V1ZG9BdXRvZmlsbDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBiZWZvcmUp
IHsKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9CZWZvcmU7Ci0gICAgICAgIGVsZW1lbnQg
PSBjb21wYXQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gY2hlY2tlZCkKLSAgICAg
ICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9DaGVja2VkOwotICAgIGVsc2UgaWYgKHZhbHVlID09IGZp
bGVVcGxvYWRCdXR0b24pIHsKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9GaWxlVXBsb2Fk
QnV0dG9uOwotICAgICAgICBlbGVtZW50ID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKHZhbHVlID09
IGRpc2FibGVkKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0Rpc2FibGVkOwotICAgIGVs
c2UgaWYgKHZhbHVlID09IGRyYWcpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvRHJhZzsK
LSAgICBlbHNlIGlmICh2YWx1ZSA9PSBlbmFibGVkKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBz
ZXVkb0VuYWJsZWQ7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gZW1wdHkpCi0gICAgICAgIF9wc2V1
ZG9UeXBlID0gUHNldWRvRW1wdHk7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gZmlyc3RDaGlsZCkK
LSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9GaXJzdENoaWxkOwotICAgIGVsc2UgaWYgKHZh
bHVlID09IGZpcnN0TGV0dGVyKSB7Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvRmlyc3RM
ZXR0ZXI7Ci0gICAgICAgIGVsZW1lbnQgPSBjb21wYXQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAo
dmFsdWUgPT0gZmlyc3RMaW5lKSB7Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvRmlyc3RM
aW5lOwotICAgICAgICBlbGVtZW50ID0gY29tcGF0ID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKHZh
bHVlID09IGZpcnN0T2ZUeXBlKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0ZpcnN0T2ZU
eXBlOwotICAgIGVsc2UgaWYgKHZhbHVlID09IGZvY3VzKQotICAgICAgICBfcHNldWRvVHlwZSA9
IFBzZXVkb0ZvY3VzOwotICAgIGVsc2UgaWYgKHZhbHVlID09IGhvdmVyKQotICAgICAgICBfcHNl
dWRvVHlwZSA9IFBzZXVkb0hvdmVyOwotICAgIGVsc2UgaWYgKHZhbHVlID09IGluZGV0ZXJtaW5h
dGUpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvSW5kZXRlcm1pbmF0ZTsKLSAgICBlbHNl
IGlmICh2YWx1ZSA9PSBsaW5rKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0xpbms7Ci0g
ICAgZWxzZSBpZiAodmFsdWUgPT0gbGFuZykKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9M
YW5nOwotICAgIGVsc2UgaWYgKHZhbHVlID09IGxhc3RDaGlsZCkKLSAgICAgICAgX3BzZXVkb1R5
cGUgPSBQc2V1ZG9MYXN0Q2hpbGQ7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gbGFzdE9mVHlwZSkK
LSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9MYXN0T2ZUeXBlOwotICAgIGVsc2UgaWYgKHZh
bHVlID09IG5vdFN0cikKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9Ob3Q7Ci0gICAgZWxz
ZSBpZiAodmFsdWUgPT0gb25seUNoaWxkKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb09u
bHlDaGlsZDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBvbmx5T2ZUeXBlKQotICAgICAgICBfcHNl
dWRvVHlwZSA9IFBzZXVkb09ubHlPZlR5cGU7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gcm9vdCkK
LSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9Sb290OwotICAgIGVsc2UgaWYgKHZhbHVlID09
IHNlYXJjaENhbmNlbEJ1dHRvbikgewotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb1NlYXJj
aENhbmNlbEJ1dHRvbjsKLSAgICAgICAgZWxlbWVudCA9IHRydWU7Ci0gICAgfSBlbHNlIGlmICh2
YWx1ZSA9PSBzZWFyY2hEZWNvcmF0aW9uKSB7Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRv
U2VhcmNoRGVjb3JhdGlvbjsKLSAgICAgICAgZWxlbWVudCA9IHRydWU7Ci0gICAgfSBlbHNlIGlm
ICh2YWx1ZSA9PSBzZWFyY2hSZXN1bHRzRGVjb3JhdGlvbikgewotICAgICAgICBfcHNldWRvVHlw
ZSA9IFBzZXVkb1NlYXJjaFJlc3VsdHNEZWNvcmF0aW9uOwotICAgICAgICBlbGVtZW50ID0gdHJ1
ZTsKLSAgICB9IGVsc2UgaWYgKHZhbHVlID09IHNlYXJjaFJlc3VsdHNCdXR0b24pIHsKLSAgICAg
ICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9TZWFyY2hSZXN1bHRzQnV0dG9uOwotICAgICAgICBlbGVt
ZW50ID0gdHJ1ZTsKLSAgICB9ICBlbHNlIGlmICh2YWx1ZSA9PSBzZWxlY3Rpb24pIHsKLSAgICAg
ICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9TZWxlY3Rpb247Ci0gICAgICAgIGVsZW1lbnQgPSB0cnVl
OwotICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gc2xpZGVyVGh1bWIpIHsKLSAgICAgICAgX3BzZXVk
b1R5cGUgPSBQc2V1ZG9TbGlkZXJUaHVtYjsKLSAgICAgICAgZWxlbWVudCA9IHRydWU7Ci0gICAg
fSBlbHNlIGlmICh2YWx1ZSA9PSB0YXJnZXQpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRv
VGFyZ2V0OwotICAgIGVsc2UgaWYgKHZhbHVlID09IHZpc2l0ZWQpCi0gICAgICAgIF9wc2V1ZG9U
eXBlID0gUHNldWRvVmlzaXRlZDsKLSAgICAKLSAgICBpZiAobWF0Y2ggPT0gUHNldWRvQ2xhc3Mg
JiYgZWxlbWVudCkKKworICAgIGJvb2wgZWxlbWVudCA9IGZhbHNlOyAvLyBwc2V1ZG8tZWxlbWVu
dAorICAgIGJvb2wgY29tcGF0ID0gZmFsc2U7IC8vIHNpbmdsZSBjb2xvbiBjb21wYXRiaWxpdHkg
bW9kZQorCisgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvT3RoZXI7CisgICAgaWYgKG1fdmFsdWUg
PT0gYWN0aXZlKQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9BY3RpdmU7CisgICAgZWxz
ZSBpZiAobV92YWx1ZSA9PSBhZnRlcikgeworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9B
ZnRlcjsKKyAgICAgICAgZWxlbWVudCA9IHRydWU7CisgICAgICAgIGNvbXBhdCA9IHRydWU7Cisg
ICAgfSBlbHNlIGlmIChtX3ZhbHVlID09IGFueUxpbmspCisgICAgICAgIG1fcHNldWRvVHlwZSA9
IFBzZXVkb0FueUxpbms7CisgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBhdXRvZmlsbCkKKyAgICAg
ICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvQXV0b2ZpbGw7CisgICAgZWxzZSBpZiAobV92YWx1ZSA9
PSBiZWZvcmUpIHsKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvQmVmb3JlOworICAgICAg
ICBlbGVtZW50ID0gdHJ1ZTsKKyAgICAgICAgY29tcGF0ID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYg
KG1fdmFsdWUgPT0gY2hlY2tlZCkKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvQ2hlY2tl
ZDsKKyAgICBlbHNlIGlmIChtX3ZhbHVlID09IGZpbGVVcGxvYWRCdXR0b24pIHsKKyAgICAgICAg
bV9wc2V1ZG9UeXBlID0gUHNldWRvRmlsZVVwbG9hZEJ1dHRvbjsKKyAgICAgICAgZWxlbWVudCA9
IHRydWU7CisgICAgfSBlbHNlIGlmIChtX3ZhbHVlID09IGRpc2FibGVkKQorICAgICAgICBtX3Bz
ZXVkb1R5cGUgPSBQc2V1ZG9EaXNhYmxlZDsKKyAgICBlbHNlIGlmIChtX3ZhbHVlID09IGRyYWcp
CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0RyYWc7CisgICAgZWxzZSBpZiAobV92YWx1
ZSA9PSBlbmFibGVkKQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9FbmFibGVkOworICAg
IGVsc2UgaWYgKG1fdmFsdWUgPT0gZW1wdHkpCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVk
b0VtcHR5OworICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gZmlyc3RDaGlsZCkKKyAgICAgICAgbV9w
c2V1ZG9UeXBlID0gUHNldWRvRmlyc3RDaGlsZDsKKyAgICBlbHNlIGlmIChtX3ZhbHVlID09IGZp
cnN0TGV0dGVyKSB7CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0ZpcnN0TGV0dGVyOwor
ICAgICAgICBlbGVtZW50ID0gdHJ1ZTsKKyAgICAgICAgY29tcGF0ID0gdHJ1ZTsKKyAgICB9IGVs
c2UgaWYgKG1fdmFsdWUgPT0gZmlyc3RMaW5lKSB7CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBz
ZXVkb0ZpcnN0TGluZTsKKyAgICAgICAgZWxlbWVudCA9IHRydWU7CisgICAgICAgIGNvbXBhdCA9
IHRydWU7CisgICAgfSBlbHNlIGlmIChtX3ZhbHVlID09IGZpcnN0T2ZUeXBlKQorICAgICAgICBt
X3BzZXVkb1R5cGUgPSBQc2V1ZG9GaXJzdE9mVHlwZTsKKyAgICBlbHNlIGlmIChtX3ZhbHVlID09
IGZvY3VzKQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Gb2N1czsKKyAgICBlbHNlIGlm
IChtX3ZhbHVlID09IGhvdmVyKQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Ib3ZlcjsK
KyAgICBlbHNlIGlmIChtX3ZhbHVlID09IGluZGV0ZXJtaW5hdGUpCisgICAgICAgIG1fcHNldWRv
VHlwZSA9IFBzZXVkb0luZGV0ZXJtaW5hdGU7CisgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBsaW5r
KQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9MaW5rOworICAgIGVsc2UgaWYgKG1fdmFs
dWUgPT0gbGFuZykKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvTGFuZzsKKyAgICBlbHNl
IGlmIChtX3ZhbHVlID09IGxhc3RDaGlsZCkKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRv
TGFzdENoaWxkOworICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gbGFzdE9mVHlwZSkKKyAgICAgICAg
bV9wc2V1ZG9UeXBlID0gUHNldWRvTGFzdE9mVHlwZTsKKyAgICBlbHNlIGlmIChtX3ZhbHVlID09
IG5vdFN0cikKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvTm90OworICAgIGVsc2UgaWYg
KG1fdmFsdWUgPT0gb25seUNoaWxkKQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Pbmx5
Q2hpbGQ7CisgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBvbmx5T2ZUeXBlKQorICAgICAgICBtX3Bz
ZXVkb1R5cGUgPSBQc2V1ZG9Pbmx5T2ZUeXBlOworICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gcm9v
dCkKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvUm9vdDsKKyAgICBlbHNlIGlmIChtX3Zh
bHVlID09IHNlYXJjaENhbmNlbEJ1dHRvbikgeworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1
ZG9TZWFyY2hDYW5jZWxCdXR0b247CisgICAgICAgIGVsZW1lbnQgPSB0cnVlOworICAgIH0gZWxz
ZSBpZiAobV92YWx1ZSA9PSBzZWFyY2hEZWNvcmF0aW9uKSB7CisgICAgICAgIG1fcHNldWRvVHlw
ZSA9IFBzZXVkb1NlYXJjaERlY29yYXRpb247CisgICAgICAgIGVsZW1lbnQgPSB0cnVlOworICAg
IH0gZWxzZSBpZiAobV92YWx1ZSA9PSBzZWFyY2hSZXN1bHRzRGVjb3JhdGlvbikgeworICAgICAg
ICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9TZWFyY2hSZXN1bHRzRGVjb3JhdGlvbjsKKyAgICAgICAg
ZWxlbWVudCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChtX3ZhbHVlID09IHNlYXJjaFJlc3VsdHNC
dXR0b24pIHsKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvU2VhcmNoUmVzdWx0c0J1dHRv
bjsKKyAgICAgICAgZWxlbWVudCA9IHRydWU7CisgICAgfSAgZWxzZSBpZiAobV92YWx1ZSA9PSBz
ZWxlY3Rpb24pIHsKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvU2VsZWN0aW9uOworICAg
ICAgICBlbGVtZW50ID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKG1fdmFsdWUgPT0gc2xpZGVyVGh1
bWIpIHsKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvU2xpZGVyVGh1bWI7CisgICAgICAg
IGVsZW1lbnQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAobV92YWx1ZSA9PSB0YXJnZXQpCisgICAg
ICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1RhcmdldDsKKyAgICBlbHNlIGlmIChtX3ZhbHVlID09
IHZpc2l0ZWQpCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1Zpc2l0ZWQ7CisKKyAgICBp
ZiAobV9tYXRjaCA9PSBQc2V1ZG9DbGFzcyAmJiBlbGVtZW50KSB7CiAgICAgICAgIGlmICghY29t
cGF0KSAKLSAgICAgICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvT3RoZXI7CisgICAgICAgICAg
ICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9PdGhlcjsKICAgICAgICAgZWxzZSAKLSAgICAgICAgICAg
bWF0Y2ggPSBQc2V1ZG9FbGVtZW50OwotICAgIGVsc2UgaWYgKG1hdGNoID09IFBzZXVkb0VsZW1l
bnQgJiYgIWVsZW1lbnQpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvT3RoZXI7CisgICAg
ICAgICAgIG1fbWF0Y2ggPSBQc2V1ZG9FbGVtZW50OworICAgIH0gZWxzZSBpZiAobV9tYXRjaCA9
PSBQc2V1ZG9FbGVtZW50ICYmICFlbGVtZW50KQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1
ZG9PdGhlcjsKIH0KIAotYm9vbCBDU1NTZWxlY3Rvcjo6b3BlcmF0b3IgPT0gKGNvbnN0IENTU1Nl
bGVjdG9yICZvdGhlcikKK2Jvb2wgQ1NTU2VsZWN0b3I6Om9wZXJhdG9yPT0oY29uc3QgQ1NTU2Vs
ZWN0b3ImIG90aGVyKQogewotICAgIGNvbnN0IENTU1NlbGVjdG9yICpzZWwxID0gdGhpczsKLSAg
ICBjb25zdCBDU1NTZWxlY3RvciAqc2VsMiA9ICZvdGhlcjsKKyAgICBjb25zdCBDU1NTZWxlY3Rv
ciogc2VsMSA9IHRoaXM7CisgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbDIgPSAmb3RoZXI7CiAK
ICAgICB3aGlsZSAoc2VsMSAmJiBzZWwyKSB7Ci0gICAgICAgIGlmIChzZWwxLT50YWcgIT0gc2Vs
Mi0+dGFnIHx8IHNlbDEtPmF0dHIgIT0gc2VsMi0+YXR0ciB8fAotICAgICAgICAgICAgIHNlbDEt
PnJlbGF0aW9uKCkgIT0gc2VsMi0+cmVsYXRpb24oKSB8fCBzZWwxLT5tYXRjaCAhPSBzZWwyLT5t
YXRjaCB8fAotICAgICAgICAgICAgIHNlbDEtPnZhbHVlICE9IHNlbDItPnZhbHVlIHx8CisgICAg
ICAgIGlmIChzZWwxLT5tX3RhZyAhPSBzZWwyLT5tX3RhZyB8fCBzZWwxLT5tX2F0dHIgIT0gc2Vs
Mi0+bV9hdHRyIHx8CisgICAgICAgICAgICAgc2VsMS0+cmVsYXRpb24oKSAhPSBzZWwyLT5yZWxh
dGlvbigpIHx8IHNlbDEtPm1fbWF0Y2ggIT0gc2VsMi0+bV9tYXRjaCB8fAorICAgICAgICAgICAg
IHNlbDEtPm1fdmFsdWUgIT0gc2VsMi0+bV92YWx1ZSB8fAogICAgICAgICAgICAgIHNlbDEtPnBz
ZXVkb1R5cGUoKSAhPSBzZWwyLT5wc2V1ZG9UeXBlKCkgfHwKLSAgICAgICAgICAgICBzZWwxLT5h
cmd1bWVudCAhPSBzZWwyLT5hcmd1bWVudCkKKyAgICAgICAgICAgICBzZWwxLT5tX2FyZ3VtZW50
ICE9IHNlbDItPm1fYXJndW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHNlbDEgPSBzZWwxLT50YWdIaXN0b3J5OwotICAgICAgICBzZWwyID0gc2VsMi0+dGFnSGlzdG9y
eTsKKyAgICAgICAgc2VsMSA9IHNlbDEtPm1fdGFnSGlzdG9yeTsKKyAgICAgICAgc2VsMiA9IHNl
bDItPm1fdGFnSGlzdG9yeTsKICAgICB9CisKICAgICBpZiAoc2VsMSB8fCBzZWwyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjIwLDI4ICsyMjks
MzAgQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQoKSBjb25zdAogICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IG5hbWVzcGFjZXMgd2hlbiBkdW1waW5nIHRoZSBzZWxlY3RvciB0ZXh0LiAt
ZHdoCiAgICAgU3RyaW5nIHN0cjsKICAgICBjb25zdCBDU1NTZWxlY3RvciogY3MgPSB0aGlzOwot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gY3MtPnRhZy5sb2NhbE5hbWUoKTsK
LSAgICBpZiAoY3MtPm1hdGNoID09IENTU1NlbGVjdG9yOjpOb25lIHx8IGxvY2FsTmFtZSAhPSBz
dGFyQXRvbSkKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IGNzLT5tX3RhZy5s
b2NhbE5hbWUoKTsKKworICAgIGlmIChjcy0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Tm9uZSB8
fCBsb2NhbE5hbWUgIT0gc3RhckF0b20pCiAgICAgICAgIHN0ciA9IGxvY2FsTmFtZTsKKwogICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChjcy0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6Oklk
KSB7CisgICAgICAgIGlmIChjcy0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQpIHsKICAgICAg
ICAgICAgIHN0ciArPSAiIyI7Ci0gICAgICAgICAgICBzdHIgKz0gY3MtPnZhbHVlOwotICAgICAg
ICB9IGVsc2UgaWYgKGNzLT5tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3MpIHsKKyAgICAgICAg
ICAgIHN0ciArPSBjcy0+bV92YWx1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChjcy0+bV9tYXRjaCA9
PSBDU1NTZWxlY3Rvcjo6Q2xhc3MpIHsKICAgICAgICAgICAgIHN0ciArPSAiLiI7Ci0gICAgICAg
ICAgICBzdHIgKz0gY3MtPnZhbHVlOwotICAgICAgICB9IGVsc2UgaWYgKGNzLT5tYXRjaCA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpIHsKKyAgICAgICAgICAgIHN0ciArPSBjcy0+bV92YWx1
ZTsKKyAgICAgICAgfSBlbHNlIGlmIChjcy0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3MpIHsKICAgICAgICAgICAgIHN0ciArPSAiOiI7Ci0gICAgICAgICAgICBzdHIgKz0gY3Mt
PnZhbHVlOwotICAgICAgICB9IGVsc2UgaWYgKGNzLT5tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvRWxlbWVudCkgeworICAgICAgICAgICAgc3RyICs9IGNzLT5tX3ZhbHVlOworICAgICAgICB9
IGVsc2UgaWYgKGNzLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KSB7CiAg
ICAgICAgICAgICBzdHIgKz0gIjo6IjsKLSAgICAgICAgICAgIHN0ciArPSBjcy0+dmFsdWU7Cisg
ICAgICAgICAgICBzdHIgKz0gY3MtPm1fdmFsdWU7CiAgICAgICAgIH0gZWxzZSBpZiAoY3MtPmhh
c0F0dHJpYnV0ZSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGR1
bXBpbmcgbmFtZXNwYWNlcy4KLSAgICAgICAgICAgIFN0cmluZyBhdHRyTmFtZSA9IGNzLT5hdHRy
LmxvY2FsTmFtZSgpOworICAgICAgICAgICAgU3RyaW5nIGF0dHJOYW1lID0gY3MtPm1fYXR0ci5s
b2NhbE5hbWUoKTsKICAgICAgICAgICAgIHN0ciArPSAiWyI7CiAgICAgICAgICAgICBzdHIgKz0g
YXR0ck5hbWU7Ci0gICAgICAgICAgICBzd2l0Y2ggKGNzLT5tYXRjaCkgeworICAgICAgICAgICAg
c3dpdGNoIChjcy0+bV9tYXRjaCkgewogICAgICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OkV4YWN0OgogICAgICAgICAgICAgICAgICAgICBzdHIgKz0gIj0iOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTI2NywyOCArMjc4LDMxIEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2Vs
ZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjcy0+bWF0Y2gg
IT0gQ1NTU2VsZWN0b3I6OlNldCkgeworICAgICAgICAgICAgaWYgKGNzLT5tX21hdGNoICE9IENT
U1NlbGVjdG9yOjpTZXQpIHsKICAgICAgICAgICAgICAgICBzdHIgKz0gIlwiIjsKLSAgICAgICAg
ICAgICAgICBzdHIgKz0gY3MtPnZhbHVlOworICAgICAgICAgICAgICAgIHN0ciArPSBjcy0+bV92
YWx1ZTsKICAgICAgICAgICAgICAgICBzdHIgKz0gIlwiXSI7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKGNzLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxl
Y3RvciB8fCAhY3MtPnRhZ0hpc3RvcnkpCisgICAgICAgIGlmIChjcy0+cmVsYXRpb24oKSAhPSBD
U1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IgfHwgIWNzLT5tX3RhZ0hpc3RvcnkpCiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY3MgPSBjcy0+dGFnSGlzdG9yeTsKKyAgICAgICAgY3MgPSBjcy0+
bV90YWdIaXN0b3J5OwogICAgIH0KLSAgICBpZiAoY3MtPnRhZ0hpc3RvcnkpIHsKLSAgICAgICAg
U3RyaW5nIHRhZ0hpc3RvcnlUZXh0ID0gY3MtPnRhZ0hpc3RvcnktPnNlbGVjdG9yVGV4dCgpOwor
CisgICAgaWYgKGNzLT5tX3RhZ0hpc3RvcnkpIHsKKyAgICAgICAgU3RyaW5nIHRhZ0hpc3RvcnlU
ZXh0ID0gY3MtPm1fdGFnSGlzdG9yeS0+c2VsZWN0b3JUZXh0KCk7CiAgICAgICAgIGlmIChjcy0+
cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQpCiAgICAgICAgICAgICBz
dHIgPSB0YWdIaXN0b3J5VGV4dCArICIgKyAiICsgc3RyOwogICAgICAgICBlbHNlIGlmIChjcy0+
cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudCkKICAgICAgICAgICAg
IHN0ciA9IHRhZ0hpc3RvcnlUZXh0ICsgIiB+ICIgKyBzdHI7CiAgICAgICAgIGVsc2UgaWYgKGNz
LT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpDaGlsZCkKICAgICAgICAgICAgIHN0ciA9IHRh
Z0hpc3RvcnlUZXh0ICsgIiA+ICIgKyBzdHI7Ci0gICAgICAgIGVsc2UgLy8gRGVzY2VuZGFudAor
ICAgICAgICBlbHNlCisgICAgICAgICAgICAvLyBEZXNjZW5kYW50CiAgICAgICAgICAgICBzdHIg
PSB0YWdIaXN0b3J5VGV4dCArICIgIiArIHN0cjsKICAgICB9CisKICAgICByZXR1cm4gc3RyOwog
fQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgJKHJldmlzaW9u
IDE4ODM0KQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MjEsNTYgKzIxLDU4IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0j
aWZuZGVmIENTU1NlbGVjdG9yX0gKLSNkZWZpbmUgQ1NTU2VsZWN0b3JfSAorI2lmbmRlZiBDU1NT
ZWxlY3Rvcl9oCisjZGVmaW5lIENTU1NlbGVjdG9yX2gKIAogI2luY2x1ZGUgIlF1YWxpZmllZE5h
bWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyB0aGlzIGNsYXNzIHJlcHJlc2VudHMg
YSBzZWxlY3RvciBmb3IgYSBTdHlsZVJ1bGUKLSAgICBjbGFzcyBDU1NTZWxlY3RvcgotICAgIHsK
KyAgICAvLyB0aGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzZWxlY3RvciBmb3IgYSBTdHlsZVJ1bGUK
KyAgICBjbGFzcyBDU1NTZWxlY3RvciB7CiAgICAgcHVibGljOgogICAgICAgICBDU1NTZWxlY3Rv
cigpCi0gICAgICAgICAgICA6IHRhZ0hpc3RvcnkoMCkKLSAgICAgICAgICAgICwgc2ltcGxlU2Vs
ZWN0b3IoMCkKLSAgICAgICAgICAgICwgbmV4dFNlbGVjdG9yKDApCi0gICAgICAgICAgICAsIGFy
Z3VtZW50KG51bGxBdG9tKQotICAgICAgICAgICAgLCBhdHRyKGFueVFOYW1lKCkpCi0gICAgICAg
ICAgICAsIHRhZyhhbnlRTmFtZSgpKQorICAgICAgICAgICAgOiBtX3RhZ0hpc3RvcnkoMCkKKyAg
ICAgICAgICAgICwgbV9zaW1wbGVTZWxlY3RvcigwKQorICAgICAgICAgICAgLCBtX25leHRTZWxl
Y3RvcigwKQorICAgICAgICAgICAgLCBtX2FyZ3VtZW50KG51bGxBdG9tKQorICAgICAgICAgICAg
LCBtX2F0dHIoYW55UU5hbWUoKSkKKyAgICAgICAgICAgICwgbV90YWcoYW55UU5hbWUoKSkKICAg
ICAgICAgICAgICwgbV9yZWxhdGlvbihEZXNjZW5kYW50KQotICAgICAgICAgICAgLCBtYXRjaChO
b25lKQotICAgICAgICAgICAgLCBwc2V1ZG9JZCgwKQotICAgICAgICAgICAgLCBfcHNldWRvVHlw
ZShQc2V1ZG9Ob3RQYXJzZWQpCi0gICAgICAgIHt9Ci0gICAgICAgIAorICAgICAgICAgICAgLCBt
X21hdGNoKE5vbmUpCisgICAgICAgICAgICAsIG1fcHNldWRvVHlwZShQc2V1ZG9Ob3RQYXJzZWQp
CisgICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIENTU1NlbGVjdG9yKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHFOYW1lKQotICAgICAgICAgICAgOiB0YWdIaXN0b3J5KDApCi0gICAgICAgICAg
ICAsIHNpbXBsZVNlbGVjdG9yKDApCi0gICAgICAgICAgICAsIG5leHRTZWxlY3RvcigwKQotICAg
ICAgICAgICAgLCBhcmd1bWVudChudWxsQXRvbSkKLSAgICAgICAgICAgICwgYXR0cihhbnlRTmFt
ZSgpKQotICAgICAgICAgICAgLCB0YWcocU5hbWUpCisgICAgICAgICAgICA6IG1fdGFnSGlzdG9y
eSgwKQorICAgICAgICAgICAgLCBtX3NpbXBsZVNlbGVjdG9yKDApCisgICAgICAgICAgICAsIG1f
bmV4dFNlbGVjdG9yKDApCisgICAgICAgICAgICAsIG1fYXJndW1lbnQobnVsbEF0b20pCisgICAg
ICAgICAgICAsIG1fYXR0cihhbnlRTmFtZSgpKQorICAgICAgICAgICAgLCBtX3RhZyhxTmFtZSkK
ICAgICAgICAgICAgICwgbV9yZWxhdGlvbihEZXNjZW5kYW50KQotICAgICAgICAgICAgLCBtYXRj
aChOb25lKQotICAgICAgICAgICAgLCBwc2V1ZG9JZCgwKQotICAgICAgICAgICAgLCBfcHNldWRv
VHlwZShQc2V1ZG9Ob3RQYXJzZWQpCi0gICAgICAgIHt9Ci0KLSAgICAgICAgfkNTU1NlbGVjdG9y
KCkgewotICAgICAgICAgICAgZGVsZXRlIHRhZ0hpc3Rvcnk7Ci0gICAgICAgICAgICBkZWxldGUg
c2ltcGxlU2VsZWN0b3I7Ci0gICAgICAgICAgICBkZWxldGUgbmV4dFNlbGVjdG9yOworICAgICAg
ICAgICAgLCBtX21hdGNoKE5vbmUpCisgICAgICAgICAgICAsIG1fcHNldWRvVHlwZShQc2V1ZG9O
b3RQYXJzZWQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIH5DU1NTZWxlY3Rvcigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtX3RhZ0hpc3Rvcnk7CisgICAgICAgICAg
ICBkZWxldGUgbV9zaW1wbGVTZWxlY3RvcjsKKyAgICAgICAgICAgIGRlbGV0ZSBtX25leHRTZWxl
Y3RvcjsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgYXBwZW5kKENTU1NlbGVjdG9yKiBuKSB7
CisgICAgICAgIHZvaWQgYXBwZW5kKENTU1NlbGVjdG9yKiBuKQorICAgICAgICB7CiAgICAgICAg
ICAgICBDU1NTZWxlY3RvciogZW5kID0gdGhpczsKLSAgICAgICAgICAgIHdoaWxlIChlbmQtPm5l
eHRTZWxlY3RvcikKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPm5leHRTZWxlY3RvcjsKLSAg
ICAgICAgICAgIGVuZC0+bmV4dFNlbGVjdG9yID0gbjsKKyAgICAgICAgICAgIHdoaWxlIChlbmQt
Pm1fbmV4dFNlbGVjdG9yKQorICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+bV9uZXh0U2VsZWN0
b3I7CisgICAgICAgICAgICBlbmQtPm1fbmV4dFNlbGVjdG9yID0gbjsKICAgICAgICAgfQotICAg
ICAgICBDU1NTZWxlY3RvciogbmV4dCgpIHsgcmV0dXJuIG5leHRTZWxlY3RvcjsgfQorCisgICAg
ICAgIENTU1NlbGVjdG9yKiBuZXh0KCkgeyByZXR1cm4gbV9uZXh0U2VsZWN0b3I7IH0KIAogICAg
ICAgICAvKioKICAgICAgICAgICogUHJpbnQgZGVidWcgb3V0cHV0IGZvciB0aGlzIHNlbGVjdG9y
CkBAIC04Myw3ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIHNl
bGVjdG9yVGV4dCgpIGNvbnN0OwogCiAgICAgICAgIC8vIGNoZWNrcyBpZiB0aGUgMiBzZWxlY3Rv
cnMgKGluY2x1ZGluZyBzdWIgc2VsZWN0b3JzKSBhZ3JlZS4KLSAgICAgICAgYm9vbCBvcGVyYXRv
ciA9PShjb25zdCBDU1NTZWxlY3RvciYpOworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q1NTU2VsZWN0b3ImKTsKIAogICAgICAgICAvLyB0YWcgPT0gLTEgbWVhbnMgYXBwbHkgdG8gYWxs
IGVsZW1lbnRzIChTZWxlY3RvciA9ICopCiAKQEAgLTE1NCwzMyArMTU2LDMzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICBQc2V1ZG9UeXBlIHBzZXVkb1R5cGUoKSBjb25zdAogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoX3BzZXVkb1R5cGUgPT0gUHNldWRvTm90UGFyc2VkKQor
ICAgICAgICAgICAgaWYgKG1fcHNldWRvVHlwZSA9PSBQc2V1ZG9Ob3RQYXJzZWQpCiAgICAgICAg
ICAgICAgICAgZXh0cmFjdFBzZXVkb1R5cGUoKTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxQc2V1ZG9UeXBlPihfcHNldWRvVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8UHNldWRvVHlwZT4obV9wc2V1ZG9UeXBlKTsKICAgICAgICAgfQogCi0gICAgICAgIGJv
b2wgaGFzVGFnKCkgY29uc3QgeyByZXR1cm4gdGFnICE9IGFueVFOYW1lKCk7IH0KLSAgICAgICAg
Ym9vbCBoYXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBhdHRyICE9IGFueVFOYW1lKCk7IH0K
KyAgICAgICAgYm9vbCBoYXNUYWcoKSBjb25zdCB7IHJldHVybiBtX3RhZyAhPSBhbnlRTmFtZSgp
OyB9CisgICAgICAgIGJvb2wgaGFzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyICE9
IGFueVFOYW1lKCk7IH0KIAotICAgICAgICBtdXRhYmxlIEF0b21pY1N0cmluZyB2YWx1ZTsKLSAg
ICAgICAgQ1NTU2VsZWN0b3IqIHRhZ0hpc3Rvcnk7Ci0gICAgICAgIENTU1NlbGVjdG9yKiBzaW1w
bGVTZWxlY3RvcjsgLy8gVXNlZCBmb3IgOm5vdC4KLSAgICAgICAgQ1NTU2VsZWN0b3IqIG5leHRT
ZWxlY3RvcjsgLy8gdXNlZCBmb3IgLC1jaGFpbmVkIHNlbGVjdG9ycwotICAgICAgICBBdG9taWNT
dHJpbmcgYXJndW1lbnQ7IC8vIFVzZWQgZm9yIDpjb250YWlucywgOmxhbmcgYW5kIDpudGgtKgot
ICAgICAgICAKLSAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyOwotICAgICAgICBRdWFsaWZpZWRO
YW1lIHRhZzsKLSAgICAgICAgCiAgICAgICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRpb24pOyB9CiAKLSAgICAgICAgdW5z
aWduZWQgbV9yZWxhdGlvbiAgICAgICAgICA6IDM7IC8vIGVudW0gUmVsYXRpb24KLSAgICAgICAg
bXV0YWJsZSB1bnNpZ25lZCBtYXRjaCAgICAgICA6IDQ7IC8vIGVudW0gTWF0Y2gKLSAgICAgICAg
dW5zaWduZWQgcHNldWRvSWQgICAgICAgICAgICA6IDQ7Ci0gICAgICAgIG11dGFibGUgdW5zaWdu
ZWQgX3BzZXVkb1R5cGUgOiA2OyAvLyBQc2V1ZG9UeXBlCisgICAgICAgIG11dGFibGUgQXRvbWlj
U3RyaW5nIG1fdmFsdWU7CisgICAgICAgIENTU1NlbGVjdG9yKiBtX3RhZ0hpc3Rvcnk7CisgICAg
ICAgIENTU1NlbGVjdG9yKiBtX3NpbXBsZVNlbGVjdG9yOyAvLyBVc2VkIGZvciA6bm90LgorICAg
ICAgICBDU1NTZWxlY3RvciogbV9uZXh0U2VsZWN0b3I7IC8vIHVzZWQgZm9yICwtY2hhaW5lZCBz
ZWxlY3RvcnMKKyAgICAgICAgQXRvbWljU3RyaW5nIG1fYXJndW1lbnQ7IC8vIFVzZWQgZm9yIDpj
b250YWlucywgOmxhbmcgYW5kIDpudGgtKgorCisgICAgICAgIFF1YWxpZmllZE5hbWUgbV9hdHRy
OworICAgICAgICBRdWFsaWZpZWROYW1lIG1fdGFnOworCisgICAgICAgIHVuc2lnbmVkIG1fcmVs
YXRpb24gICAgICAgICAgIDogMzsgLy8gZW51bSBSZWxhdGlvbgorICAgICAgICBtdXRhYmxlIHVu
c2lnbmVkIG1fbWF0Y2ggICAgICA6IDQ7IC8vIGVudW0gTWF0Y2gKKyAgICAgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX3BzZXVkb1R5cGUgOiA2OyAvLyBQc2V1ZG9UeXBlCiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2b2lkIGV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3Q7CiAgICAgfTsKLX0KIAotI2Vu
ZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NTZWxlY3Rvcl9oCklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMTg4MzQpCisrKyBX
ZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTks
NiArMTksNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAg
Ki8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24u
aCIKIApAQCAtNTIsMTIgKzUzLDEyIEBAIHN0YXRpYyBpbnQgcHJvcGVydHlJRChjb25zdCBTdHJp
bmcmIHMpCiAgICAgICAgIGJ1ZmZlcltpXSA9IGM7CiAgICAgfQogCi0gICAgaW50IGlkID0gZ2V0
UHJvcGVydHlJRChidWZmZXIsIGxlbik7CisgICAgaW50IHByb3BJRCA9IGdldFByb3BlcnR5SUQo
YnVmZmVyLCBsZW4pOwogI2lmZGVmIFNWR19TVVBQT1JUCi0gICAgaWYgKGlkID09IDApCi0gICAg
ICAgIGlkID0gU1ZHOjpnZXRTVkdDU1NQcm9wZXJ0eUlEKGJ1ZmZlciwgbGVuKTsKKyAgICBpZiAo
IXByb3BJRCkKKyAgICAgICAgcHJvcElEID0gU1ZHOjpnZXRTVkdDU1NQcm9wZXJ0eUlEKGJ1ZmZl
ciwgbGVuKTsKICNlbmRpZgotICAgIHJldHVybiBpZDsKKyAgICByZXR1cm4gcHJvcElEOwogfQog
CiBDU1NTdHlsZURlY2xhcmF0aW9uOjpDU1NTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVu
dCkKQEAgLTg2LDcgKzg3LDcgQEAgU3RyaW5nIENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5VgogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlKHByb3BJRCk7CiB9CiAKLVN0cmluZyBD
U1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyAmcHJv
cGVydHlOYW1lKQorU3RyaW5nIENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5UHJpb3Jp
dHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaW50IHByb3BJRCA9IHByb3Bl
cnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BJRCkKQEAgLTk0LDcgKzk1LDcgQEAg
U3RyaW5nIENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5UAogICAgIHJldHVybiBnZXRQ
cm9wZXJ0eVByaW9yaXR5KHByb3BJRCkgPyAiaW1wb3J0YW50IiA6ICIiOwogfQogCi1TdHJpbmcg
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nICZw
cm9wZXJ0eU5hbWUpCitTdHJpbmcgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlTaG9y
dGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaW50IHByb3BJRCA9IHBy
b3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BJRCkKQEAgLTEwNSw3ICsxMDYs
NyBAQCBTdHJpbmcgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlTCiAgICAgcmV0dXJu
IGdldFByb3BlcnR5TmFtZShzaG9ydGhhbmRJRCk7CiB9CiAKLWJvb2wgQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6aXNQcm9wZXJ0eUltcGxpY2l0KGNvbnN0IFN0cmluZyAmcHJvcGVydHlOYW1lKQorYm9v
bCBDU1NTdHlsZURlY2xhcmF0aW9uOjppc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgaW50IHByb3BJRCA9IHByb3BlcnR5SUQocHJvcGVydHlOYW1l
KTsKICAgICBpZiAoIXByb3BJRCkKQEAgLTEyNSw3ICsxMjYsOCBAQCB2b2lkIENTU1N0eWxlRGVj
bGFyYXRpb246OnNldFByb3BlcnR5KGNvCiB2b2lkIENTU1N0eWxlRGVjbGFyYXRpb246OnNldFBy
b3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBj
b25zdCBTdHJpbmcmIHByaW9yaXR5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpbnQgcHJv
cElEID0gcHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwotICAgIGlmICghcHJvcElEKSAvLyBzZXQg
ZXhjZXB0aW9uPworICAgIGlmICghcHJvcElEKQorICAgICAgICAvLyBGSVhNRTogc2V0IGV4Y2Vw
dGlvbj8KICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgaW1wb3J0YW50ID0gcHJpb3JpdHkuZmlu
ZCgiaW1wb3J0YW50IiwgMCwgZmFsc2UpICE9IC0xOwogICAgIHNldFByb3BlcnR5KHByb3BJRCwg
dmFsdWUsIGltcG9ydGFudCwgZWMpOwpAQCAtMTM5LDE3ICsxNDEsMTcgQEAgU3RyaW5nIENTU1N0
eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcgogICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eShw
cm9wSUQsIGVjKTsKIH0KIAotYm9vbCBDU1NTdHlsZURlY2xhcmF0aW9uOjppc1Byb3BlcnR5TmFt
ZShjb25zdCBTdHJpbmcgJnByb3BlcnR5TmFtZSkKK2Jvb2wgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
aXNQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJu
IHByb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKIH0KIAotQ1NTUnVsZSAqQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6cGFyZW50UnVsZSgpIGNvbnN0CitDU1NSdWxlKiBDU1NTdHlsZURlY2xhcmF0aW9uOjpw
YXJlbnRSdWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKHBhcmVudCgpICYmIHBhcmVudCgpLT5p
c1J1bGUoKSkgPyBzdGF0aWNfY2FzdDxDU1NSdWxlICo+KHBhcmVudCgpKSA6IDA7CisgICAgcmV0
dXJuIChwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNSdWxlKCkpID8gc3RhdGljX2Nhc3Q8Q1NTUnVs
ZSo+KHBhcmVudCgpKSA6IDA7CiB9CiAKLXZvaWQgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6ZGlmZihD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiAqc3R5bGUpIGNvbnN0Cit2b2lkIENTU1N0eWxlRGVj
bGFyYXRpb246OmRpZmYoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdAog
ewogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybjsKQEAgLTE2Nyw3ICsxNjksNyBAQCB2
b2lkIENTU1N0eWxlRGVjbGFyYXRpb246OmRpZmYoQ1NTTXV0YWJsCiAgICAgICAgIHN0eWxlLT5y
ZW1vdmVQcm9wZXJ0eShwcm9wZXJ0aWVzW2ldKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbj4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3BlcnRpZXNJblNl
dChjb25zdCBpbnQgKnNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorUGFzc1JlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3BlcnRp
ZXNJblNldChjb25zdCBpbnQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewogICAgIERl
cHJlY2F0ZWRWYWx1ZUxpc3Q8Q1NTUHJvcGVydHk+IGxpc3Q7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CkBAIC0xNzgsNCArMTgwLDQgQEAgUGFzc1JlZlB0cjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gQwogICAgIHJldHVybiBuZXcgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24oMCwgbGlzdCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDE4ODM0KQorKysgV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsy
MCw4IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENT
U1N0eWxlRGVjbGFyYXRpb25fSAotI2RlZmluZSBDU1NTdHlsZURlY2xhcmF0aW9uX0gKKyNpZm5k
ZWYgQ1NTU3R5bGVEZWNsYXJhdGlvbl9oCisjZGVmaW5lIENTU1N0eWxlRGVjbGFyYXRpb25faAog
CiAjaW5jbHVkZSAiU3R5bGVCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAg
LTgxLDYgKzgxLDYgQEAgcHJpdmF0ZToKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uJiBvcGVyYXRv
cj0oY29uc3QgQ1NTU3R5bGVEZWNsYXJhdGlvbiYpOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ1NTU3R5bGVEZWNsYXJh
dGlvbl9oCkluZGV4OiBXZWJDb3JlL2Nzcy9Db3VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9jc3MvQ291bnRlci5oCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvY3NzL0NvdW50ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogICogQm9zdG9uLCBNQSAwMjExMS0x
MzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDb3VudGVyX0gKLSNkZWZpbmUgQ291bnRlcl9ICisj
aWZuZGVmIENvdW50ZXJfaAorI2RlZmluZSBDb3VudGVyX2gKIAogI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTMyLDI2ICszMiwy
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvdW50ZXIgOiBwdWJsaWMgU2hhcmVk
PENvdW50ZXI+IHsKIHB1YmxpYzoKLSAgICBDb3VudGVyKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpc3RTdHls
ZSwKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2VwYXJhdG9yKQotICAg
ICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKSwgbV9saXN0U3R5bGUobGlzdFN0eWxlKSwg
bV9zZXBhcmF0b3Ioc2VwYXJhdG9yKSB7IH0KKyAgICBDb3VudGVyKFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxp
c3RTdHlsZSwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2VwYXJhdG9yKQorICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fbGlzdFN0eWxlKGxpc3RT
dHlsZSkKKyAgICAgICAgLCBtX3NlcGFyYXRvcihzZXBhcmF0b3IpCisgICAgeworICAgIH0KIAog
ICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyID8gbV9p
ZGVudGlmaWVyLT5nZXRTdHJpbmdWYWx1ZSgpIDogU3RyaW5nKCk7IH0KICAgICBTdHJpbmcgbGlz
dFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGUgPyBtX2xpc3RTdHlsZS0+Z2V0U3Ry
aW5nVmFsdWUoKSA6IFN0cmluZygpOyB9CiAgICAgU3RyaW5nIHNlcGFyYXRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fc2VwYXJhdG9yID8gbV9zZXBhcmF0b3ItPmdldFN0cmluZ1ZhbHVlKCkgOiBTdHJp
bmcoKTsgfQogCi0gICAgaW50IGxpc3RTdHlsZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGlz
dFN0eWxlID8gKGludCkgbV9saXN0U3R5bGUtPmdldEZsb2F0VmFsdWUoKSA6IDA7IH0KLSAgICAK
KyAgICBpbnQgbGlzdFN0eWxlTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGUgPyBz
dGF0aWNfY2FzdDxpbnQ+KG1fbGlzdFN0eWxlLT5nZXRGbG9hdFZhbHVlKCkpIDogMDsgfQorCiAg
ICAgdm9pZCBzZXRJZGVudGlmaWVyKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGlkZW50
aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0TGlzdFN0
eWxlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpc3RTdHlsZSkgeyBtX2xpc3RTdHls
ZSA9IGxpc3RTdHlsZTsgfQogICAgIHZvaWQgc2V0U2VwYXJhdG9yKFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHNlcGFyYXRvcikgeyBtX3NlcGFyYXRvciA9IHNlcGFyYXRvcjsgfQotIAor
CiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2lkZW50aWZpZXI7
IC8vIFN0cmluZwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9saXN0U3R5bGU7ICAv
LyBpbnQKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fc2VwYXJhdG9yOyAgLy8gU3Ry
aW5nCi0gfTsKK307CiAKLX0gLy9uYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmCisjZW5kaWYgLy8gQ291bnRlcl9oCkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NoZWxwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc2hlbHBlci5jcHAJKHJldmlzaW9uIDE4
ODM0KQorKysgV2ViQ29yZS9jc3MvY3NzaGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NyArNDIsNyBAQCBTdHJpbmcgcGFyc2VVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgICsr
bzsKICAgICAgICAgLS1sOwogICAgIH0KLSAgICB3aGlsZSAobCA+IDAgJiYgKCppKVtvK2wtMV0g
PD0gJyAnKQorICAgIHdoaWxlIChsID4gMCAmJiAoKmkpW28gKyBsIC0gMV0gPD0gJyAnKQogICAg
ICAgICAtLWw7CiAKICAgICBpZiAobCA+PSA1CkBAIC01OSwxMCArNTksMTAgQEAgU3RyaW5nIHBh
cnNlVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICArK287CiAgICAgICAgIC0tbDsKICAg
ICB9Ci0gICAgd2hpbGUgKGwgPiAwICYmICgqaSlbbytsLTFdIDw9ICcgJykKKyAgICB3aGlsZSAo
bCA+IDAgJiYgKCppKVtvICsgbCAtIDFdIDw9ICcgJykKICAgICAgICAgLS1sOwogCi0gICAgaWYg
KGwgPj0gMiAmJiAoKmkpW29dID09ICgqaSlbbytsLTFdICYmICgoKmkpW29dID09ICdcJycgfHwg
KCppKVtvXSA9PSAnXCInKSkgeworICAgIGlmIChsID49IDIgJiYgKCppKVtvXSA9PSAoKmkpW28g
KyBsIC0gMV0gJiYgKCgqaSlbb10gPT0gJ1wnJyB8fCAoKmkpW29dID09ICdcIicpKSB7CiAgICAg
ICAgIG8rKzsKICAgICAgICAgbCAtPSAyOwogICAgIH0KQEAgLTcxLDcgKzcxLDcgQEAgU3RyaW5n
IHBhcnNlVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICArK287CiAgICAgICAgIC0tbDsK
ICAgICB9Ci0gICAgd2hpbGUgKGwgPiAwICYmICgqaSlbbytsLTFdIDw9ICcgJykKKyAgICB3aGls
ZSAobCA+IDAgJiYgKCppKVtvICsgbCAtIDFdIDw9ICcgJykKICAgICAgICAgLS1sOwogCiAgICAg
VmVjdG9yPFVDaGFyLCAyMDQ4PiBidWZmZXIobCk7CkBAIC04Niw0ICs4Niw0IEBAIFN0cmluZyBw
YXJzZVVSTChjb25zdCBTdHJpbmcmIHVybCkKICAgICByZXR1cm4gbmV3IFN0cmluZ0ltcGwoYnVm
ZmVyLmRhdGEoKSwgbmwpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL2Nzcy9jc3NoZWxwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NoZWxw
ZXIuaAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3JlL2Nzcy9jc3NoZWxwZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogICoKICAqLwogCi0jaWZuZGVmIGNzc19oZWxwZXJf
aAotI2RlZmluZSBjc3NfaGVscGVyX2gKKyNpZm5kZWYgY3NzaGVscGVyX2gKKyNkZWZpbmUgY3Nz
aGVscGVyX2gKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMCw4ICszMCw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAvKgogICAgICAqIG1vc3RseSBqdXN0IHJlbW92ZXMgdGhlIHVy
bCgiLi4uIikgYnJhY2UKICAgICAgKi8KLSAgICBTdHJpbmcgcGFyc2VVUkwoY29uc3QgU3RyaW5n
ICZ1cmwpOworICAgIFN0cmluZyBwYXJzZVVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gY3NzaGVscGVyX2gKSW5k
ZXg6IFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nz
c3BhcnNlci5oCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCwxNCArMjAsMTQgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLgogICovCiAKLSNpZm5kZWYgQ1NTX2Nzc3BhcnNlcl9oXwotI2RlZmluZSBDU1NfY3Nz
cGFyc2VyX2hfCisjaWZuZGVmIGNzc3BhcnNlcl9oCisjZGVmaW5lIGNzc3BhcnNlcl9oCiAKICNp
bmNsdWRlICJBdG9taWNTdHJpbmcuaCIKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIk1l
ZGlhUXVlcnkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLSNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNDIsMjEgKzQyLDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDU1NWYWx1
ZUxpc3Q7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgTWVkaWFMaXN0OwotICAgIGNs
YXNzIFN0eWxlQmFzZTsKLSAgICBjbGFzcyBTdHlsZUxpc3Q7CiAgICAgY2xhc3MgTWVkaWFMaXN0
OwogICAgIGNsYXNzIE1lZGlhUXVlcnlFeHA7Ci0KKyAgICBjbGFzcyBTdHlsZUJhc2U7CisgICAg
Y2xhc3MgU3R5bGVMaXN0OworICAgIHN0cnVjdCBGdW5jdGlvbjsKIAogICAgIHN0cnVjdCBQYXJz
ZVN0cmluZyB7CiAgICAgICAgIFVDaGFyKiBjaGFyYWN0ZXJzOwogICAgICAgICBpbnQgbGVuZ3Ro
OwotICAgICAgICAKKwogICAgICAgICB2b2lkIGxvd2VyKCk7CiAgICAgfTsKIAotICAgIHN0cnVj
dCBGdW5jdGlvbjsKLSAgICAKICAgICBzdHJ1Y3QgVmFsdWUgewogICAgICAgICBpbnQgaWQ7CiAg
ICAgICAgIGJvb2wgaXNJbnQ7CkBAIC03NSwxMCArNzMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIH07CiAKICAgICBEZXByZWNhdGVkU3RyaW5nIGRlcHJlY2F0ZWRTdHJpbmcoY29uc3Qg
UGFyc2VTdHJpbmcmKTsKLSAgICBzdGF0aWMgaW5saW5lIFN0cmluZyBkb21TdHJpbmcoY29uc3Qg
UGFyc2VTdHJpbmcmIHBzKSB7CisKKyAgICBzdGF0aWMgaW5saW5lIFN0cmluZyBkb21TdHJpbmco
Y29uc3QgUGFyc2VTdHJpbmcmIHBzKQorICAgIHsKICAgICAgICAgcmV0dXJuIFN0cmluZyhwcy5j
aGFyYWN0ZXJzLCBwcy5sZW5ndGgpOwogICAgIH0KLSAgICBzdGF0aWMgaW5saW5lIEF0b21pY1N0
cmluZyBhdG9taWNTdHJpbmcoY29uc3QgUGFyc2VTdHJpbmcmIHBzKSB7CisKKyAgICBzdGF0aWMg
aW5saW5lIEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmcoY29uc3QgUGFyc2VTdHJpbmcmIHBzKQor
ICAgIHsKICAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhwcy5jaGFyYWN0ZXJzLCBwcy5sZW5n
dGgpOwogICAgIH0KIApAQCAtODYsMTAgKzg4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFZhbHVlTGlzdCgpIDogbV9jdXJyZW50KDApIHsgfQogICAgICAg
ICB+VmFsdWVMaXN0KCk7CisKICAgICAgICAgdm9pZCBhZGRWYWx1ZShjb25zdCBWYWx1ZSYgdikg
eyBtX3ZhbHVlcy5hcHBlbmQodik7IH0KICAgICAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWVzLnNpemUoKTsgfQogICAgICAgICBWYWx1ZSogY3VycmVudCgpIHsgcmV0
dXJuIG1fY3VycmVudCA8IG1fdmFsdWVzLnNpemUoKSA/ICZtX3ZhbHVlc1ttX2N1cnJlbnRdIDog
MDsgfQogICAgICAgICBWYWx1ZSogbmV4dCgpIHsgKyttX2N1cnJlbnQ7IHJldHVybiBjdXJyZW50
KCk7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxWYWx1ZSwgMTY+IG1fdmFsdWVz
OwogICAgICAgICB1bnNpZ25lZCBtX2N1cnJlbnQ7CkBAIC0xMDEsMTYgKzEwNSwxNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgfkZ1bmN0aW9uKCkgeyBkZWxldGUgYXJnczsgfQog
ICAgIH07Ci0gICAgCi0gICAgY2xhc3MgQ1NTUGFyc2VyCi0gICAgeworCisgICAgY2xhc3MgQ1NT
UGFyc2VyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIENTU1BhcnNlcihib29sIHN0cmljdFBhcnNp
bmcgPSB0cnVlKTsKICAgICAgICAgfkNTU1BhcnNlcigpOwogCiAgICAgICAgIHZvaWQgcGFyc2VT
aGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgU3RyaW5nJik7CiAgICAgICAgIFBhc3NSZWZQdHI8
Q1NTUnVsZT4gcGFyc2VSdWxlKENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmKTsKLSAgICAg
ICAgYm9vbCBwYXJzZVZhbHVlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgaW50IGlkLCBj
b25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCk7CisgICAgICAgIGJvb2wgcGFyc2VWYWx1ZShD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIGludCBwcm9wSWQsIGNvbnN0IFN0cmluZyYsIGJv
b2wgaW1wb3J0YW50KTsKICAgICAgICAgc3RhdGljIFJHQkEzMiBwYXJzZUNvbG9yKGNvbnN0IFN0
cmluZyYsIGJvb2wgc3RyaWN0ID0gZmFsc2UpOwogICAgICAgICBib29sIHBhcnNlQ29sb3IoQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmKTsKICAgICAgICAgYm9vbCBw
YXJzZURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgU3RyaW5n
Jik7CkBAIC0xMzIsMjggKzEzNSwzMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENT
U1ZhbHVlKiBwYXJzZUJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBDU1NWYWx1ZSogcGFyc2VC
YWNrZ3JvdW5kSW1hZ2UoKTsKICAgICAgICAgQ1NTVmFsdWUqIHBhcnNlQmFja2dyb3VuZFBvc2l0
aW9uWFkoYm9vbCYgeEZvdW5kLCBib29sJiB5Rm91bmQpOwotICAgICAgICB2b2lkIHBhcnNlQmFj
a2dyb3VuZFBvc2l0aW9uKENTU1ZhbHVlKiYgdmFsdWUxLCBDU1NWYWx1ZSomIHZhbHVlMik7Cisg
ICAgICAgIHZvaWQgcGFyc2VCYWNrZ3JvdW5kUG9zaXRpb24oQ1NTVmFsdWUqJiwgQ1NTVmFsdWUq
Jik7CiAgICAgICAgIENTU1ZhbHVlKiBwYXJzZUJhY2tncm91bmRTaXplKCk7CiAgICAgICAgIAot
ICAgICAgICBib29sIHBhcnNlQmFja2dyb3VuZFByb3BlcnR5KGludCBwcm9wSWQsIGludCYgcHJv
cElkMSwgaW50JiBwcm9wSWQyLCBDU1NWYWx1ZSomIHJldFZhbHVlMSwgQ1NTVmFsdWUqJiByZXRW
YWx1ZTIpOworICAgICAgICBib29sIHBhcnNlQmFja2dyb3VuZFByb3BlcnR5KGludCBwcm9wSWQs
IGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBDU1NWYWx1ZSomLCBDU1NWYWx1ZSomKTsKICAg
ICAgICAgYm9vbCBwYXJzZUJhY2tncm91bmRTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpOwogCiAg
ICAgICAgIHZvaWQgYWRkQmFja2dyb3VuZFZhbHVlKENTU1ZhbHVlKiYgbHZhbCwgQ1NTVmFsdWUq
IHJ2YWwpOwotICAgICAgCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGJvb2wgcGFyc2VE
YXNoYm9hcmRSZWdpb25zKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKICNlbmRpZgogCiAg
ICAgICAgIGJvb2wgcGFyc2VTaGFwZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CisKICAg
ICAgICAgYm9vbCBwYXJzZUZvbnQoYm9vbCBpbXBvcnRhbnQpOwotICAgICAgICBib29sIHBhcnNl
Q291bnRlcihpbnQgcHJvcElkLCBpbnQgZGVmYXVsdFZhbHVlLCBib29sIGltcG9ydGFudCk7CiAg
ICAgICAgIENTU1ZhbHVlTGlzdCogcGFyc2VGb250RmFtaWx5KCk7CisKKyAgICAgICAgYm9vbCBw
YXJzZUNvdW50ZXIoaW50IHByb3BJZCwgaW50IGRlZmF1bHRWYWx1ZSwgYm9vbCBpbXBvcnRhbnQp
OworICAgICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUNvdW50ZXJDb250ZW50KFZhbHVl
TGlzdCogYXJncywgYm9vbCBjb3VudGVycyk7CisKICAgICAgICAgYm9vbCBwYXJzZUNvbG9yUGFy
YW1ldGVycyhWYWx1ZSosIGludCogY29sb3JWYWx1ZXMsIGJvb2wgcGFyc2VBbHBoYSk7CiAgICAg
ICAgIGJvb2wgcGFyc2VIU0xQYXJhbWV0ZXJzKFZhbHVlKiwgZG91YmxlKiBjb2xvclZhbHVlcywg
Ym9vbCBwYXJzZUFscGhhKTsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhcnNlQ29sb3Io
VmFsdWUqID0gMCk7CiAgICAgICAgIGJvb2wgcGFyc2VDb2xvckZyb21WYWx1ZShWYWx1ZSosIFJH
QkEzMiYsIGJvb2wgPSBmYWxzZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNl
Q291bnRlckNvbnRlbnQoVmFsdWVMaXN0KiBhcmdzLCBib29sIGNvdW50ZXJzKTsKLSAgICAgICAg
CisKKyAgICAgICAgc3RhdGljIGJvb2wgcGFyc2VDb2xvcihjb25zdCBTdHJpbmcmLCBSR0JBMzIm
IHJnYiwgYm9vbCBzdHJpY3QpOworCiAjaWZkZWYgU1ZHX1NVUFBPUlQKICAgICAgICAgYm9vbCBw
YXJzZVNWR1ZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKICAgICAgICAgQ1NTVmFs
dWUqIHBhcnNlU1ZHUGFpbnQoKTsKQEAgLTE2MSw4ICsxNjksNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIENTU1ZhbHVlKiBwYXJzZVNWR1N0cm9rZURhc2hhcnJheSgpOwogI2VuZGlm
CiAKLSAgICAgICAgc3RhdGljIGJvb2wgcGFyc2VDb2xvcihjb25zdCBTdHJpbmcmLCBSR0JBMzIm
IHJnYiwgYm9vbCBzdHJpY3QpOwotCiAgICAgICAgIC8vIENTUzMgUGFyc2luZyBSb3V0aW5lcyAo
Zm9yIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gQ1NTMykKICAgICAgICAgYm9vbCBwYXJzZVNoYWRv
dyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAgICAgICAgIGJvb2wgcGFyc2VCb3JkZXJJ
bWFnZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CkBAIC0yMDUsNyArMjExLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDU1NQcm9wZXJ0eSoqIHBhcnNlZFByb3BlcnRpZXM7
CiAgICAgICAgIGludCBudW1QYXJzZWRQcm9wZXJ0aWVzOwogICAgICAgICBpbnQgbWF4UGFyc2Vk
UHJvcGVydGllczsKLSAgICAgICAgCisKICAgICAgICAgaW50IG1faW5QYXJzZVNob3J0aGFuZDsK
ICAgICAgICAgaW50IG1fY3VycmVudFNob3J0aGFuZDsKICAgICAgICAgYm9vbCBtX2ltcGxpY2l0
U2hvcnRoYW5kOwpAQCAtMjYzLDExICsyNjksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB9OwogCiAgICAgICAgIGZyaWVuZCBpbmxpbmUgVW5pdHMgb3BlcmF0b3J8KFVuaXRzIGEs
IFVuaXRzIGIpCi0gICAgICAgICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxVbml0cz4oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGEpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGIpKTsgfQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VW5pdHM+KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihhKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihiKSk7CisgICAgICAgIH0KIAogICAg
ICAgICBzdGF0aWMgYm9vbCB2YWxpZFVuaXQoVmFsdWUqLCBVbml0cywgYm9vbCBzdHJpY3QpOwog
ICAgIH07CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZgorI2VuZGlmIC8vIGNzc3BhcnNlcl9oCkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAko
cmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0
Y2hSdWxlc0Zvckxpc3QKICAgICBmb3IgKENTU1J1bGVEYXRhKiBkID0gcnVsZXMtPmZpcnN0KCk7
IGQ7IGQgPSBkLT5uZXh0KCkpIHsKICAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxlID0gZC0+cnVs
ZSgpOwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IGVsZW1lbnQtPmxv
Y2FsTmFtZSgpOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9yTG9jYWxOYW1l
ID0gZC0+c2VsZWN0b3IoKS0+dGFnLmxvY2FsTmFtZSgpOworICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHNlbGVjdG9yTG9jYWxOYW1lID0gZC0+c2VsZWN0b3IoKS0+bV90YWcubG9jYWxOYW1l
KCk7CiAgICAgICAgIGlmICgobG9jYWxOYW1lID09IHNlbGVjdG9yTG9jYWxOYW1lIHx8IHNlbGVj
dG9yTG9jYWxOYW1lID09IHN0YXJBdG9tKSAmJiBjaGVja1NlbGVjdG9yKGQtPnNlbGVjdG9yKCks
IGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVydGll
cyB0byBhcHBseSwgdGhlbiBpZ25vcmUgaXQuCiAgICAgICAgICAgICBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbiogZGVjbCA9IHJ1bGUtPmRlY2xhcmF0aW9uKCk7CkBAIC0xMjE2LDcgKzEyMTYs
NyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoQ1NTCiAgICAgLy8gc28s
IHdlIGNhbid0IGFsbG93IHRoYXQgdG8gYXBwbHkgdG8gZXZlcnkgZWxlbWVudCBvbiB0aGUgcGFn
ZS4gIFdlIGFzc3VtZSB0aGUgYXV0aG9yIGludGVuZGVkCiAgICAgLy8gdG8gYXBwbHkgdGhlIHJ1
bGVzIG9ubHkgdG8gbGlua3MuCiAgICAgYm9vbCBvbmx5SG92ZXJBY3RpdmUgPSAoIXNlbC0+aGFz
VGFnKCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsLT5tYXRjaCA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3MgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Vs
LT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyAmJgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHNlbC0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9I
b3ZlciB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbC0+cHNldWRvVHlwZSgp
ID09IENTU1NlbGVjdG9yOjpQc2V1ZG9BY3RpdmUpKSk7CiAgICAgYm9vbCBhZmZlY3RlZEJ5SG92
ZXIgPSBzdHlsZSA/IHN0eWxlLT5hZmZlY3RlZEJ5SG92ZXJSdWxlcygpIDogZmFsc2U7CkBAIC0x
MjI5LDcgKzEyMjksNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoQ1NT
CiAKICAgICAvLyBjaGVjayB0aGUgc3Vic2VsZWN0b3JzCiAgICAgQ1NTU2VsZWN0b3I6OlJlbGF0
aW9uIHJlbGF0aW9uID0gc2VsLT5yZWxhdGlvbigpOwotICAgIHdoaWxlKChzZWwgPSBzZWwtPnRh
Z0hpc3RvcnkpKSB7CisgICAgd2hpbGUoKHNlbCA9IHNlbC0+bV90YWdIaXN0b3J5KSkgewogICAg
ICAgICBpZiAoIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKHJlbGF0aW9uICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikgewpAQCAt
MTI4NCw3ICsxMjg0LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKENT
UwogICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yOgogICAgICAgIHsKICAgICAg
ICAgICAgIGlmIChvbmx5SG92ZXJBY3RpdmUpCi0gICAgICAgICAgICAgICAgb25seUhvdmVyQWN0
aXZlID0gKHNlbC0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzICYmCisgICAgICAg
ICAgICAgICAgb25seUhvdmVyQWN0aXZlID0gKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3MgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbC0+
cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlciB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb0FjdGl2ZSkpOwogICAgICAgICAgICAgCkBAIC0xMzI4LDggKzEzMjgsOCBAQCBib29s
IENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAgICAgaWYgKHNlbC0+aGFzVGFn
KCkpIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBlLT5sb2NhbE5h
bWUoKTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBucyA9IGUtPm5hbWVzcGFjZVVSSSgp
OwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbExvY2FsTmFtZSA9IHNlbC0+dGFnLmxv
Y2FsTmFtZSgpOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbE5TID0gc2VsLT50YWcu
bmFtZXNwYWNlVVJJKCk7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsTG9jYWxOYW1l
ID0gc2VsLT5tX3RhZy5sb2NhbE5hbWUoKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBz
ZWxOUyA9IHNlbC0+bV90YWcubmFtZXNwYWNlVVJJKCk7CiAgICAgCiAgICAgICAgIGlmICgoc2Vs
TG9jYWxOYW1lICE9IHN0YXJBdG9tICYmIGxvY2FsTmFtZSAhPSBzZWxMb2NhbE5hbWUpIHx8CiAg
ICAgICAgICAgICAoc2VsTlMgIT0gc3RhckF0b20gJiYgbnMgIT0gc2VsTlMpKQpAQCAtMTMzNyw0
MyArMTMzNyw0MyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAg
ICAgfQogCiAgICAgaWYgKHNlbC0+aGFzQXR0cmlidXRlKCkpIHsKLSAgICAgICAgaWYgKHNlbC0+
bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkNsYXNzKSB7CisgICAgICAgIGlmIChzZWwtPm1fbWF0Y2gg
PT0gQ1NTU2VsZWN0b3I6OkNsYXNzKSB7CiAgICAgICAgICAgICBpZiAoIWUtPmhhc0NsYXNzKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgZm9yIChjb25zdCBB
dG9taWNTdHJpbmdMaXN0KiBjID0gZS0+Z2V0Q2xhc3NMaXN0KCk7IGM7IGMgPSBjLT5uZXh0KCkp
Ci0gICAgICAgICAgICAgICAgaWYgKGMtPnN0cmluZygpID09IHNlbC0+dmFsdWUpCisgICAgICAg
ICAgICAgICAgaWYgKGMtPnN0cmluZygpID09IHNlbC0+bV92YWx1ZSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
LSAgICAgICAgZWxzZSBpZiAoc2VsLT5tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQpCi0gICAgICAg
ICAgICByZXR1cm4gZS0+aGFzSUQoKSAmJiBlLT5nZXRJREF0dHJpYnV0ZSgpID09IHNlbC0+dmFs
dWU7Ci0gICAgICAgIGVsc2UgaWYgKHN0eWxlICYmIChlICE9IGVsZW1lbnQgfHwgIXN0eWxlZEVs
ZW1lbnQgfHwgKCFzdHlsZWRFbGVtZW50LT5pc01hcHBlZEF0dHJpYnV0ZShzZWwtPmF0dHIpICYm
IHNlbC0+YXR0ciAhPSB0eXBlQXR0ciAmJiBzZWwtPmF0dHIgIT0gcmVhZG9ubHlBdHRyKSkpIHsK
KyAgICAgICAgZWxzZSBpZiAoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCkKKyAgICAg
ICAgICAgIHJldHVybiBlLT5oYXNJRCgpICYmIGUtPmdldElEQXR0cmlidXRlKCkgPT0gc2VsLT5t
X3ZhbHVlOworICAgICAgICBlbHNlIGlmIChzdHlsZSAmJiAoZSAhPSBlbGVtZW50IHx8ICFzdHls
ZWRFbGVtZW50IHx8ICghc3R5bGVkRWxlbWVudC0+aXNNYXBwZWRBdHRyaWJ1dGUoc2VsLT5tX2F0
dHIpICYmIHNlbC0+bV9hdHRyICE9IHR5cGVBdHRyICYmIHNlbC0+bV9hdHRyICE9IHJlYWRvbmx5
QXR0cikpKSB7CiAgICAgICAgICAgICBzdHlsZS0+c2V0QWZmZWN0ZWRCeUF0dHJpYnV0ZVNlbGVj
dG9ycygpOyAvLyBTcGVjaWFsLWNhc2UgdGhlICJ0eXBlIiBhbmQgInJlYWRvbmx5IiBhdHRyaWJ1
dGVzIHNvIGlucHV0IGZvcm0gY29udHJvbHMgY2FuIHNoYXJlIHN0eWxlLgotICAgICAgICAgICAg
bV9zZWxlY3RvckF0dHJzLmFkZChzZWwtPmF0dHIubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAg
ICAgICAgIG1fc2VsZWN0b3JBdHRycy5hZGQoc2VsLT5tX2F0dHIubG9jYWxOYW1lKCkuaW1wbCgp
KTsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBlLT5n
ZXRBdHRyaWJ1dGUoc2VsLT5hdHRyKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSA9IGUtPmdldEF0dHJpYnV0ZShzZWwtPm1fYXR0cik7CiAgICAgICAgIGlmICh2YWx1ZS5pc051
bGwoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0cmlidXRlIGlzIG5vdCBzZXQK
IAotICAgICAgICBzd2l0Y2goc2VsLT5tYXRjaCkgeworICAgICAgICBzd2l0Y2goc2VsLT5tX21h
dGNoKSB7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgotICAgICAgICAgICAgaWYg
KChpc1hNTERvYyAmJiBzZWwtPnZhbHVlICE9IHZhbHVlKSB8fCAoIWlzWE1MRG9jICYmICFlcXVh
bElnbm9yaW5nQ2FzZShzZWwtPnZhbHVlLCB2YWx1ZSkpKQorICAgICAgICAgICAgaWYgKChpc1hN
TERvYyAmJiBzZWwtPm1fdmFsdWUgIT0gdmFsdWUpIHx8ICghaXNYTUxEb2MgJiYgIWVxdWFsSWdu
b3JpbmdDYXNlKHNlbC0+bV92YWx1ZSwgdmFsdWUpKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6TGlz
dDoKICAgICAgICAgewogICAgICAgICAgICAgLy8gVGhlIHNlbGVjdG9yJ3MgdmFsdWUgY2FuJ3Qg
Y29udGFpbiBhIHNwYWNlLCBvciBpdCdzIHRvdGFsbHkgYm9ndXMuCi0gICAgICAgICAgICBpZiAo
c2VsLT52YWx1ZS5jb250YWlucygnICcpKQorICAgICAgICAgICAgaWYgKHNlbC0+bV92YWx1ZS5j
b250YWlucygnICcpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAg
ICAgaW50IHN0YXJ0U2VhcmNoQXQgPSAwOwogICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgICAgICAgICBpbnQgZm91bmRQb3MgPSB2YWx1ZS5maW5kKHNlbC0+dmFsdWUsIHN0YXJ0
U2VhcmNoQXQsIGlzWE1MRG9jKTsKKyAgICAgICAgICAgICAgICBpbnQgZm91bmRQb3MgPSB2YWx1
ZS5maW5kKHNlbC0+bV92YWx1ZSwgc3RhcnRTZWFyY2hBdCwgaXNYTUxEb2MpOwogICAgICAgICAg
ICAgICAgIGlmIChmb3VuZFBvcyA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgICAgIGlmIChmb3VuZFBvcyA9PSAwIHx8IHZhbHVlW2ZvdW5kUG9z
LTFdID09ICcgJykgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBlbmRTdHIgPSBmb3Vu
ZFBvcyArIHNlbC0+dmFsdWUubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGVuZFN0ciA9IGZvdW5kUG9zICsgc2VsLT5tX3ZhbHVlLmxlbmd0aCgpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoZW5kU3RyID09IHZhbHVlLmxlbmd0aCgpIHx8IHZhbHVlW2VuZFN0cl0gPT0g
JyAnKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIFdlIGZvdW5kIGEgbWF0Y2gu
CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM4NCwyNCArMTM4NCwyNCBAQCBib29sIENTU1N0eWxl
U2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpDb250YWluOgotICAgICAgICAgICAgaWYgKCF2
YWx1ZS5jb250YWlucyhzZWwtPnZhbHVlLCBpc1hNTERvYykpCisgICAgICAgICAgICBpZiAoIXZh
bHVlLmNvbnRhaW5zKHNlbC0+bV92YWx1ZSwgaXNYTUxEb2MpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpCZWdpbjoKLSAgICAgICAgICAgIGlmICghdmFsdWUuc3RhcnRzV2l0aChzZWwtPnZhbHVlLCBp
c1hNTERvYykpCisgICAgICAgICAgICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoc2VsLT5tX3ZhbHVl
LCBpc1hNTERvYykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkVuZDoKLSAgICAgICAgICAgIGlmICgh
dmFsdWUuZW5kc1dpdGgoc2VsLT52YWx1ZSwgaXNYTUxEb2MpKQorICAgICAgICAgICAgaWYgKCF2
YWx1ZS5lbmRzV2l0aChzZWwtPm1fdmFsdWUsIGlzWE1MRG9jKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6SHlwaGVuOgotICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCgpIDwgc2VsLT52YWx1ZS5s
ZW5ndGgoKSkKKyAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA8IHNlbC0+bV92YWx1ZS5s
ZW5ndGgoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAo
IXZhbHVlLnN0YXJ0c1dpdGgoc2VsLT52YWx1ZSwgaXNYTUxEb2MpKQorICAgICAgICAgICAgaWYg
KCF2YWx1ZS5zdGFydHNXaXRoKHNlbC0+bV92YWx1ZSwgaXNYTUxEb2MpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIC8vIEl0IHRoZXkgc3RhcnQgdGhlIHNhbWUs
IGNoZWNrIGZvciBleGFjdCBtYXRjaCBvciBmb2xsb3dpbmcgJy0nOgotICAgICAgICAgICAgaWYg
KHZhbHVlLmxlbmd0aCgpICE9IHNlbC0+dmFsdWUubGVuZ3RoKCkgJiYgdmFsdWVbc2VsLT52YWx1
ZS5sZW5ndGgoKV0gIT0gJy0nKQorICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCgpICE9IHNl
bC0+bV92YWx1ZS5sZW5ndGgoKSAmJiB2YWx1ZVtzZWwtPm1fdmFsdWUubGVuZ3RoKCldICE9ICct
JykKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3M6CkBAIC0xNDEwLDcgKzE0MTAsNyBA
QCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBpZihzZWwtPm1hdGNoID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzcyB8fCBzZWwtPm1hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50
KQorICAgIGlmKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MgfHwgc2Vs
LT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KQogICAgIHsKICAgICAgICAg
Ly8gUHNldWRvIGVsZW1lbnRzLiBXZSBuZWVkIHRvIGNoZWNrIGZpcnN0IGNoaWxkIGhlcmUuIE5v
IGR5bmFtaWMgcHNldWRvCiAgICAgICAgIC8vIGVsZW1lbnRzIGZvciB0aGUgbW9tZW50CkBAIC0x
NjAwLDE4ICsxNjAwLDE4IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3Rv
cigKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0xhbmc6IHsKICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
ID0gZS0+Z2V0QXR0cmlidXRlKGxhbmdBdHRyKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUu
aXNFbXB0eSgpIHx8ICF2YWx1ZS5zdGFydHNXaXRoKHNlbC0+YXJndW1lbnQsIGZhbHNlKSkKKyAg
ICAgICAgICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpIHx8ICF2YWx1ZS5zdGFydHNXaXRoKHNl
bC0+bV9hcmd1bWVudCwgZmFsc2UpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gc2VsLT5hcmd1bWVudC5sZW5ndGgoKSAm
JiB2YWx1ZVtzZWwtPmFyZ3VtZW50Lmxlbmd0aCgpXSAhPSAnLScpCisgICAgICAgICAgICAgICAg
aWYgKHZhbHVlLmxlbmd0aCgpICE9IHNlbC0+bV9hcmd1bWVudC5sZW5ndGgoKSAmJiB2YWx1ZVtz
ZWwtPm1fYXJndW1lbnQubGVuZ3RoKCldICE9ICctJykKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ob3Q6IHsKICAgICAgICAgICAgICAgICAvLyBj
aGVjayB0aGUgc2ltcGxlIHNlbGVjdG9yCi0gICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rv
ciogc3ViU2VsID0gc2VsLT5zaW1wbGVTZWxlY3Rvcjsgc3ViU2VsOyBzdWJTZWwgPSBzdWJTZWwt
PnRhZ0hpc3RvcnkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKENTU1NlbGVjdG9yKiBzdWJTZWwg
PSBzZWwtPm1fc2ltcGxlU2VsZWN0b3I7IHN1YlNlbDsgc3ViU2VsID0gc3ViU2VsLT5tX3RhZ0hp
c3RvcnkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gOm5vdCBjYW5ub3QgbmVzdC4gSSBkb24n
dCByZWFsbHkga25vdyB3aHkgdGhpcyBpcyBhCiAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3Ry
aWN0aW9uIGluIENTUzMsIGJ1dCBpdCBpcywgc28gbGV0J3MgaG9ub3VyIGl0LgotICAgICAgICAg
ICAgICAgICAgICBpZiAoc3ViU2VsLT5zaW1wbGVTZWxlY3RvcikKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHN1YlNlbC0+bV9zaW1wbGVTZWxlY3RvcikKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc3ViU2Vs
LCBlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTcwMywxNiAr
MTcwMywxNiBAQCB2b2lkIENTU1J1bGVTZXQ6OmFkZFRvUnVsZVNldChBdG9taWNTdHJpCiAKIHZv
aWQgQ1NTUnVsZVNldDo6YWRkUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUsIENTU1NlbGVjdG9yKiBz
ZWwpCiB7Ci0gICAgaWYgKHNlbC0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkKSB7Ci0gICAgICAg
IGFkZFRvUnVsZVNldChzZWwtPnZhbHVlLmltcGwoKSwgbV9pZFJ1bGVzLCBydWxlLCBzZWwpOwor
ICAgIGlmIChzZWwtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkKSB7CisgICAgICAgIGFkZFRv
UnVsZVNldChzZWwtPm1fdmFsdWUuaW1wbCgpLCBtX2lkUnVsZXMsIHJ1bGUsIHNlbCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHNlbC0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkNs
YXNzKSB7Ci0gICAgICAgIGFkZFRvUnVsZVNldChzZWwtPnZhbHVlLmltcGwoKSwgbV9jbGFzc1J1
bGVzLCBydWxlLCBzZWwpOworICAgIGlmIChzZWwtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkNs
YXNzKSB7CisgICAgICAgIGFkZFRvUnVsZVNldChzZWwtPm1fdmFsdWUuaW1wbCgpLCBtX2NsYXNz
UnVsZXMsIHJ1bGUsIHNlbCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgIAotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gc2VsLT50YWcubG9jYWxOYW1lKCk7CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBzZWwtPm1fdGFnLmxvY2FsTmFtZSgpOwog
ICAgIGlmIChsb2NhbE5hbWUgIT0gc3RhckF0b20pIHsKICAgICAgICAgYWRkVG9SdWxlU2V0KGxv
Y2FsTmFtZS5pbXBsKCksIG1fdGFnUnVsZXMsIHJ1bGUsIHNlbCk7CiAgICAgICAgIHJldHVybjsK
</data>
<flag name="review"
          id="4674"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12420</attachid>
            <date>2007-01-13 12:20:40 -0800</date>
            <delta_ts>2007-01-13 14:49:49 -0800</delta_ts>
            <desc>patch without white space changes</desc>
            <filename>cssCleanupNoWhiteSpace.diff</filename>
            <type>text/plain</type>
            <size>107151</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTM5IEBACisyMDA3LTAxLTEzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2gg
Zm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjI4CisgICAgICAg
IENsZWFudXAgYXNzb3J0ZWQgQ1NTIGNsYXNzZXMKKworICAgICAgICAqIGNzcy9DU1NCb3JkZXJJ
bWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0JvcmRlckltYWdlVmFsdWU6OkNT
U0JvcmRlckltYWdlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQm9yZGVySW1hZ2VWYWx1
ZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yQm9yZGVyU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JUZXh0QWxpZ24pOgorICAgICAgICAoV2Vi
Q29yZTo6dmFsdWVGb3JTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UG9zaXRpb25PZmZz
ZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OmNzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6cHJpbWl0aXZlVmFsdWVGcm9tTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVy
dHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5UHJpb3JpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6aXRlbSk6CisgICAgICAgICogY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OkNTU0N1cnNv
ckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU0dyYW1tYXIueToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6
CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW5oZXJp
dGVkVmFsdWUuY3BwOgorICAgICAgICAqIGNzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oOgorICAgICAg
ICAqIGNzcy9DU1NJbml0aWFsVmFsdWUuY3BwOgorICAgICAgICAqIGNzcy9DU1NJbml0aWFsVmFs
dWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OmdldDRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmdldFNob3J0aGFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlQcmlvcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlTaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmlzUHJvcGVydHlJbXBsaWNpdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldEltYWdlUHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnBhcnNlRGVjbGFyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmFkZFBh
cnNlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OnNldExlbmd0aFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjptZXJnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydGllc0luU2V0KToKKyAgICAgICAgKiBjc3MvQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NO
YW1lc3BhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU05hbWVzcGFjZTo6Q1NTTmFtZXNwYWNl
KToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Y29tcHV0ZUxlbmd0aEludCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aFNob3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6OnNldEZsb2F0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6c2NhbGVG
YWN0b3JGb3JDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpnZXRGbG9hdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpz
ZXRTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0
U3RyaW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OnBhcnNl
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRJZGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpnZXRSZWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmdldFJHQkNvbG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OmdldFBhaXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
Z2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVy
dHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpvcGVyYXRvcj0pOgorICAgICAg
ICAqIGNzcy9DU1NRdWlya1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NR
dWlya1ByaW1pdGl2ZVZhbHVlOjpDU1NRdWlya1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTUnVsZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZUxpc3Q6OkNTU1J1
bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVMaXN0OjpkZWxldGVSdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1J1bGVMaXN0OjppbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3Mv
Q1NTUnVsZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVMaXN0OjppdGVtKToKKyAg
ICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OnByaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzcGVjaWZpY2l0eSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6On5DU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTZWxlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpu
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9UeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpoYXNUYWcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2VsZWN0b3I6Omhhc0F0dHJpYnV0ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5U2hvcnRoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OmlzUHJvcGVydHlJbXBsaWNpdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uOjppc1Byb3BlcnR5TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uOjpwYXJlbnRSdWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OmRpZmYpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3BlcnRpZXNJblNldCk6CisgICAgICAgICogY3Nz
L0NTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ291bnRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q291bnRlcjo6Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVy
OjpsaXN0U3R5bGVOdW1iZXIpOgorICAgICAgICAqIGNzcy9jc3NoZWxwZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VVUkwpOgorICAgICAgICAqIGNzcy9jc3NoZWxwZXIuaDoKKyAgICAg
ICAgKiBjc3MvY3NzcGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpkb21TdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6YXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6b3BlcmF0b3J8KToKKyAgICAgICAgKiBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzRm9yTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUnVsZVNldDo6YWRkUnVsZSk6CisKIDIwMDctMDEtMTMgIE1hcnRpbiBSZWRk
eSAgPHJlZGR5QHBpeGFyLmNvbT4KIAogICAgICAgICBGaXggZm9yIGJ1ZyAxMTkyNDogV2ViQ29y
ZSB3b3VsZCBjcmFzaCBvbiBhbnkgSFRNTCBjb250ZW50CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgJKHJldmlz
aW9uIDE4ODM0KQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMjEsNTcgKzIxLDU5IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwog
Ci0jaWZuZGVmIENTU1NlbGVjdG9yX0gKLSNkZWZpbmUgQ1NTU2VsZWN0b3JfSAorI2lmbmRlZiBD
U1NTZWxlY3Rvcl9oCisjZGVmaW5lIENTU1NlbGVjdG9yX2gKIAogI2luY2x1ZGUgIlF1YWxpZmll
ZE5hbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyB0aGlzIGNsYXNzIHJlcHJlc2Vu
dHMgYSBzZWxlY3RvciBmb3IgYSBTdHlsZVJ1bGUKLSAgICBjbGFzcyBDU1NTZWxlY3RvcgotICAg
IHsKKyAgICBjbGFzcyBDU1NTZWxlY3RvciB7CiAgICAgcHVibGljOgogICAgICAgICBDU1NTZWxl
Y3RvcigpCi0gICAgICAgICAgICA6IHRhZ0hpc3RvcnkoMCkKLSAgICAgICAgICAgICwgc2ltcGxl
U2VsZWN0b3IoMCkKLSAgICAgICAgICAgICwgbmV4dFNlbGVjdG9yKDApCi0gICAgICAgICAgICAs
IGFyZ3VtZW50KG51bGxBdG9tKQotICAgICAgICAgICAgLCBhdHRyKGFueVFOYW1lKCkpCi0gICAg
ICAgICAgICAsIHRhZyhhbnlRTmFtZSgpKQorICAgICAgICAgICAgOiBtX3RhZ0hpc3RvcnkoMCkK
KyAgICAgICAgICAgICwgbV9zaW1wbGVTZWxlY3RvcigwKQorICAgICAgICAgICAgLCBtX25leHRT
ZWxlY3RvcigwKQorICAgICAgICAgICAgLCBtX2FyZ3VtZW50KG51bGxBdG9tKQorICAgICAgICAg
ICAgLCBtX2F0dHIoYW55UU5hbWUoKSkKKyAgICAgICAgICAgICwgbV90YWcoYW55UU5hbWUoKSkK
ICAgICAgICAgICAgICwgbV9yZWxhdGlvbihEZXNjZW5kYW50KQotICAgICAgICAgICAgLCBtYXRj
aChOb25lKQotICAgICAgICAgICAgLCBwc2V1ZG9JZCgwKQotICAgICAgICAgICAgLCBfcHNldWRv
VHlwZShQc2V1ZG9Ob3RQYXJzZWQpCi0gICAgICAgIHt9CisgICAgICAgICAgICAsIG1fbWF0Y2go
Tm9uZSkKKyAgICAgICAgICAgICwgbV9wc2V1ZG9UeXBlKFBzZXVkb05vdFBhcnNlZCkKKyAgICAg
ICAgeworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBDU1NTZWxlY3Rvcihjb25zdCBRdWFs
aWZpZWROYW1lJiBxTmFtZSkKLSAgICAgICAgICAgIDogdGFnSGlzdG9yeSgwKQotICAgICAgICAg
ICAgLCBzaW1wbGVTZWxlY3RvcigwKQotICAgICAgICAgICAgLCBuZXh0U2VsZWN0b3IoMCkKLSAg
ICAgICAgICAgICwgYXJndW1lbnQobnVsbEF0b20pCi0gICAgICAgICAgICAsIGF0dHIoYW55UU5h
bWUoKSkKLSAgICAgICAgICAgICwgdGFnKHFOYW1lKQorICAgICAgICAgICAgOiBtX3RhZ0hpc3Rv
cnkoMCkKKyAgICAgICAgICAgICwgbV9zaW1wbGVTZWxlY3RvcigwKQorICAgICAgICAgICAgLCBt
X25leHRTZWxlY3RvcigwKQorICAgICAgICAgICAgLCBtX2FyZ3VtZW50KG51bGxBdG9tKQorICAg
ICAgICAgICAgLCBtX2F0dHIoYW55UU5hbWUoKSkKKyAgICAgICAgICAgICwgbV90YWcocU5hbWUp
CiAgICAgICAgICAgICAsIG1fcmVsYXRpb24oRGVzY2VuZGFudCkKLSAgICAgICAgICAgICwgbWF0
Y2goTm9uZSkKLSAgICAgICAgICAgICwgcHNldWRvSWQoMCkKLSAgICAgICAgICAgICwgX3BzZXVk
b1R5cGUoUHNldWRvTm90UGFyc2VkKQotICAgICAgICB7fQorICAgICAgICAgICAgLCBtX21hdGNo
KE5vbmUpCisgICAgICAgICAgICAsIG1fcHNldWRvVHlwZShQc2V1ZG9Ob3RQYXJzZWQpCisgICAg
ICAgIHsKKyAgICAgICAgfQogCi0gICAgICAgIH5DU1NTZWxlY3RvcigpIHsKLSAgICAgICAgICAg
IGRlbGV0ZSB0YWdIaXN0b3J5OwotICAgICAgICAgICAgZGVsZXRlIHNpbXBsZVNlbGVjdG9yOwot
ICAgICAgICAgICAgZGVsZXRlIG5leHRTZWxlY3RvcjsKKyAgICAgICAgfkNTU1NlbGVjdG9yKCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVsZXRlIG1fdGFnSGlzdG9yeTsKKyAgICAgICAgICAg
IGRlbGV0ZSBtX3NpbXBsZVNlbGVjdG9yOworICAgICAgICAgICAgZGVsZXRlIG1fbmV4dFNlbGVj
dG9yOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBhcHBlbmQoQ1NTU2VsZWN0b3IqIG4pIHsK
KyAgICAgICAgdm9pZCBhcHBlbmQoQ1NTU2VsZWN0b3IqIG4pCisgICAgICAgIHsKICAgICAgICAg
ICAgIENTU1NlbGVjdG9yKiBlbmQgPSB0aGlzOwotICAgICAgICAgICAgd2hpbGUgKGVuZC0+bmV4
dFNlbGVjdG9yKQotICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+bmV4dFNlbGVjdG9yOwotICAg
ICAgICAgICAgZW5kLT5uZXh0U2VsZWN0b3IgPSBuOworICAgICAgICAgICAgd2hpbGUgKGVuZC0+
bV9uZXh0U2VsZWN0b3IpCisgICAgICAgICAgICAgICAgZW5kID0gZW5kLT5tX25leHRTZWxlY3Rv
cjsKKyAgICAgICAgICAgIGVuZC0+bV9uZXh0U2VsZWN0b3IgPSBuOwogICAgICAgICB9Ci0gICAg
ICAgIENTU1NlbGVjdG9yKiBuZXh0KCkgeyByZXR1cm4gbmV4dFNlbGVjdG9yOyB9CiAKKyAgICAg
ICAgQ1NTU2VsZWN0b3IqIG5leHQoKSB7IHJldHVybiBtX25leHRTZWxlY3RvcjsgfQorCiAgICAg
ICAgIC8qKgogICAgICAgICAgKiBQcmludCBkZWJ1ZyBvdXRwdXQgZm9yIHRoaXMgc2VsZWN0b3IK
ICAgICAgICAgICovCkBAIC0xNTQsMzMgKzE1NiwzMyBAQAogCiAgICAgICAgIFBzZXVkb1R5cGUg
cHNldWRvVHlwZSgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChfcHNldWRvVHlw
ZSA9PSBQc2V1ZG9Ob3RQYXJzZWQpCisgICAgICAgICAgICBpZiAobV9wc2V1ZG9UeXBlID09IFBz
ZXVkb05vdFBhcnNlZCkKICAgICAgICAgICAgICAgICBleHRyYWN0UHNldWRvVHlwZSgpOwotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBzZXVkb1R5cGU+KF9wc2V1ZG9UeXBlKTsKKyAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQc2V1ZG9UeXBlPihtX3BzZXVkb1R5cGUpOwog
ICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBoYXNUYWcoKSBjb25zdCB7IHJldHVybiB0YWcgIT0g
YW55UU5hbWUoKTsgfQotICAgICAgICBib29sIGhhc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJu
IGF0dHIgIT0gYW55UU5hbWUoKTsgfQorICAgICAgICBib29sIGhhc1RhZygpIGNvbnN0IHsgcmV0
dXJuIG1fdGFnICE9IGFueVFOYW1lKCk7IH0KKyAgICAgICAgYm9vbCBoYXNBdHRyaWJ1dGUoKSBj
b25zdCB7IHJldHVybiBtX2F0dHIgIT0gYW55UU5hbWUoKTsgfQogCi0gICAgICAgIG11dGFibGUg
QXRvbWljU3RyaW5nIHZhbHVlOwotICAgICAgICBDU1NTZWxlY3RvciogdGFnSGlzdG9yeTsKLSAg
ICAgICAgQ1NTU2VsZWN0b3IqIHNpbXBsZVNlbGVjdG9yOyAvLyBVc2VkIGZvciA6bm90LgotICAg
ICAgICBDU1NTZWxlY3RvciogbmV4dFNlbGVjdG9yOyAvLyB1c2VkIGZvciAsLWNoYWluZWQgc2Vs
ZWN0b3JzCi0gICAgICAgIEF0b21pY1N0cmluZyBhcmd1bWVudDsgLy8gVXNlZCBmb3IgOmNvbnRh
aW5zLCA6bGFuZyBhbmQgOm50aC0qCisgICAgICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRpb24pOyB9CiAgICAgICAgIAot
ICAgICAgICBRdWFsaWZpZWROYW1lIGF0dHI7Ci0gICAgICAgIFF1YWxpZmllZE5hbWUgdGFnOwor
ICAgICAgICBtdXRhYmxlIEF0b21pY1N0cmluZyBtX3ZhbHVlOworICAgICAgICBDU1NTZWxlY3Rv
ciogbV90YWdIaXN0b3J5OworICAgICAgICBDU1NTZWxlY3RvciogbV9zaW1wbGVTZWxlY3Rvcjsg
Ly8gVXNlZCBmb3IgOm5vdC4KKyAgICAgICAgQ1NTU2VsZWN0b3IqIG1fbmV4dFNlbGVjdG9yOyAv
LyB1c2VkIGZvciAsLWNoYWluZWQgc2VsZWN0b3JzCisgICAgICAgIEF0b21pY1N0cmluZyBtX2Fy
Z3VtZW50OyAvLyBVc2VkIGZvciA6Y29udGFpbnMsIDpsYW5nIGFuZCA6bnRoLSoKICAgICAgICAg
Ci0gICAgICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
UmVsYXRpb24+KG1fcmVsYXRpb24pOyB9CisgICAgICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyOwor
ICAgICAgICBRdWFsaWZpZWROYW1lIG1fdGFnOwogCiAgICAgICAgIHVuc2lnbmVkIG1fcmVsYXRp
b24gICAgICAgICAgOiAzOyAvLyBlbnVtIFJlbGF0aW9uCi0gICAgICAgIG11dGFibGUgdW5zaWdu
ZWQgbWF0Y2ggICAgICAgOiA0OyAvLyBlbnVtIE1hdGNoCi0gICAgICAgIHVuc2lnbmVkIHBzZXVk
b0lkICAgICAgICAgICAgOiA0OwotICAgICAgICBtdXRhYmxlIHVuc2lnbmVkIF9wc2V1ZG9UeXBl
IDogNjsgLy8gUHNldWRvVHlwZQorICAgICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fbWF0Y2ggICAg
ICA6IDQ7IC8vIGVudW0gTWF0Y2gKKyAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3BzZXVkb1R5
cGUgOiA2OyAvLyBQc2V1ZG9UeXBlCiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGV4dHJh
Y3RQc2V1ZG9UeXBlKCkgY29uc3Q7CiAgICAgfTsKLX0KIAotI2VuZGlmCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NTZWxlY3Rvcl9oCkluZGV4OiBXZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgJKHJl
dmlzaW9uIDE4ODM0KQorKysgV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjAsOCArMjAsOCBAQAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8K
IAotI2lmbmRlZiBDU1NQcm9wZXJ0eV9ICi0jZGVmaW5lIENTU1Byb3BlcnR5X0gKKyNpZm5kZWYg
Q1NTUHJvcGVydHlfaAorI2RlZmluZSBDU1NQcm9wZXJ0eV9oCiAKICNpbmNsdWRlICJDU1NWYWx1
ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC00MCwxMiArNDAsMTIgQEAKICAg
ICB7CiAgICAgfQogICAgIAotICAgIENTU1Byb3BlcnR5ICZvcGVyYXRvcj0oY29uc3QgQ1NTUHJv
cGVydHkmIG8pCisgICAgQ1NTUHJvcGVydHkmIG9wZXJhdG9yPShjb25zdCBDU1NQcm9wZXJ0eSYg
b3RoZXIpCiAgICAgewotICAgICAgICBtX2lkID0gby5tX2lkOwotICAgICAgICBtX3Nob3J0aGFu
ZElEID0gby5tX3Nob3J0aGFuZElEOwotICAgICAgICBtX2ltcG9ydGFudCA9IG8ubV9pbXBvcnRh
bnQ7Ci0gICAgICAgIG1fdmFsdWUgPSBvLm1fdmFsdWU7CisgICAgICAgIG1faWQgPSBvdGhlci5t
X2lkOworICAgICAgICBtX3Nob3J0aGFuZElEID0gb3RoZXIubV9zaG9ydGhhbmRJRDsKKyAgICAg
ICAgbV9pbXBvcnRhbnQgPSBvdGhlci5tX2ltcG9ydGFudDsKKyAgICAgICAgbV92YWx1ZSA9IG90
aGVyLm1fdmFsdWU7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAgICAgCkBAIC01OSwx
NyArNTksMTcgQEAKICAgICAKICAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCisgICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQcm9wZXJ0eSYsIGNvbnN0IENTU1Byb3BlcnR5
Jik7CisKICAgICAvLyBtYWtlIHN1cmUgdGhlIGZvbGxvd2luZyBmaXRzIGluIDQgYnl0ZXMuCiAg
ICAgaW50IG1faWQ7CiAgICAgaW50IG1fc2hvcnRoYW5kSUQ7ICAvLyBJZiB0aGlzIHByb3BlcnR5
IHdhcyBzZXQgYXMgcGFydCBvZiBhIHNob3J0aGFuZCwgZ2l2ZXMgdGhlIHNob3J0aGFuZC4KICAg
ICBib29sIG1faW1wb3J0YW50IDogMTsKICAgICBib29sIG1faW1wbGljaXQgOiAxOyAvLyBXaGV0
aGVyIG9yIG5vdCB0aGUgcHJvcGVydHkgd2FzIHNldCBpbXBsaWNpdGx5IGFzIHRoZSByZXN1bHQg
b2YgYSBzaG9ydGhhbmQuCiAKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1By
b3BlcnR5ICYsIGNvbnN0IENTU1Byb3BlcnR5ICYpOwotCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBt
X3ZhbHVlOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmCisjZW5kaWYgLy8gQ1NTUHJvcGVydHlfaApJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw0IEBACiAvKioKLSAqIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKICAqCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCkBAIC0yMywxNSAr
MjIsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uaCIKIAotI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCi0jaW5jbHVkZSAiRGFz
aGJvYXJkUmVnaW9uLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIK
ICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0Lmgi
CisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJEYXNoYm9hcmRSZWdpb24uaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2hhZG93
VmFsdWUuaCIKQEAgLTE4MiwxMSArMTgxLDEwIEBACiAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKGxlbmd0aC5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSk7CiAgICAgICAgIGNhc2UgUmVsYXRpdmU6CiAgICAgICAgIGNhc2UgU3RhdGlj
OgotICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuCiAgICAgICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgLy8gU2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQsIGJ1dCBpZiB3ZSBk
bywganVzdCByZXR1cm4gImF1dG8iLgotICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9BVVRPKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsK
IH0KIAogLy8gSGFuZGxlcyBzcGVjaWFsIHZhbHVlIGZvciAibm9uZSIuCkBAIC0yNTMsNiArMjUx
LDcgQEAKIHsKICAgICBpZiAoIXNoYWRvdykKICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX05PTkUpOworCiAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gbmV3IENT
U1ZhbHVlTGlzdDsKICAgICBmb3IgKGNvbnN0IFNoYWRvd0RhdGEqIHMgPSBzaGFkb3c7IHM7IHMg
PSBzLT5uZXh0KSB7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB4ID0gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHMtPngsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwpAQCAtMzI0LDcgKzMy
Myw3IEBACiAgICAgU3RyaW5nIHJlc3VsdCgiIik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bUNvbXB1dGVkUHJvcGVydGllczsgaSsrKSB7Ci0gICAgICAgIGlmIChpICE9
IDApCisgICAgICAgIGlmIChpKQogICAgICAgICAgICAgcmVzdWx0ICs9ICIgIjsKICAgICAgICAg
cmVzdWx0ICs9IGdldFByb3BlcnR5TmFtZShjb21wdXRlZFByb3BlcnRpZXNbaV0pOwogICAgICAg
ICByZXN1bHQgKz0gIjogIjsKQEAgLTM1NSwxMiArMzU0LDE5IEBACiBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWVGcm9tTGVuZ3RoKExlbmd0aCBsZW5ndGgsIFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBTdHJpbmcgc3RyaW5nOwotICAg
IGlmIChsZW5ndGguaXNQZXJjZW50KCkpCisgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7Cisg
ICAgICAgIGNhc2UgUGVyY2VudDoKICAgICAgICAgc3RyaW5nID0gbnVtYmVyQXNTdHJpbmcobGVu
Z3RoLnBlcmNlbnQoKSkgKyAiJSI7Ci0gICAgZWxzZSBpZiAobGVuZ3RoLmlzRml4ZWQoKSkKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpeGVkOgogICAgICAgICBzdHJpbmcgPSBu
dW1iZXJBc1N0cmluZyhsZW5ndGguY2FsY01pblZhbHVlKDApKTsKLSAgICBlbHNlIGlmIChsZW5n
dGguaXNBdXRvKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdXRvOgogICAg
ICAgICBzdHJpbmcgPSAiYXV0byI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKHN0cmluZywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogfQogCkBAIC0z
NzgsMTIgKzM4NCwxMiBAQAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5k
ZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiAwOworCiAgICAgUmVu
ZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgaWYgKCFzdHlsZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBzd2l0Y2ggKHByb3BlcnR5SUQpCi0gICAgeworICAgIHN3
aXRjaCAocHJvcGVydHlJRCkgewogICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9DT0xPUjoK
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+YmFja2dyb3VuZENv
bG9yKCkucmdiKCkpOwogICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9JTUFHRToKQEAgLTQ1
MSwxNCArNDU3LDE4IEBACiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRfQ0xJ
UDoKICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQkFDS0dST1VORF9PUklHSU46IHsKICAgICAg
ICAgRUJhY2tncm91bmRCb3ggYm94ID0gKHByb3BlcnR5SUQgPT0gQ1NTX1BST1BfX1dFQktJVF9C
QUNLR1JPVU5EX0NMSVAgPyBzdHlsZS0+YmFja2dyb3VuZENsaXAoKSA6IHN0eWxlLT5iYWNrZ3Jv
dW5kT3JpZ2luKCkpOwotICAgICAgICBpZiAoYm94ID09IEJHQk9SREVSKQorICAgICAgICAgICAg
c3dpdGNoIChib3gpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEJHQk9SREVSOgogICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JPUkRFUik7Ci0gICAgICAg
IGlmIChib3ggPT0gQkdQQURESU5HKQorICAgICAgICAgICAgICAgIGNhc2UgQkdQQURESU5HOgog
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BBRERJTkcp
OworICAgICAgICAgICAgICAgIGNhc2UgQkdDT05URU5UOgogICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ09OVEVOVCk7CiAgICAgfQotICAgIGNhc2UgQ1NTX1BS
T1BfQkFDS0dST1VORF9QT1NJVElPTjoKLSAgICB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
Q1NTX1BST1BfQkFDS0dST1VORF9QT1NJVElPTjogewogICAgICAgICBTdHJpbmcgc3RyaW5nOwog
ICAgICAgICBMZW5ndGggbGVuZ3RoKHN0eWxlLT5iYWNrZ3JvdW5kWFBvc2l0aW9uKCkpOwogICAg
ICAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQpAQCAtNDg1LDEwICs0OTUsOCBAQAogICAgIGNh
c2UgQ1NTX1BST1BfQk9SREVSX0NPTExBUFNFOgogICAgICAgICBpZiAoc3R5bGUtPmJvcmRlckNv
bGxhcHNlKCkpCiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfQ09MTEFQU0UpOwotICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfU0VQQVJBVEUpOwotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVS
X1NQQUNJTkc6Ci0gICAgeworICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9TUEFDSU5HOiB7
CiAgICAgICAgIFN0cmluZyBzdHJpbmcobnVtYmVyQXNTdHJpbmcoc3R5bGUtPmhvcml6b250YWxC
b3JkZXJTcGFjaW5nKCkpICsgInB4ICIgKyBudW1iZXJBc1N0cmluZyhzdHlsZS0+dmVydGljYWxC
b3JkZXJTcGFjaW5nKCkpICsgInB4Iik7CiAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoc3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiAgICAgfQpAQCAt
Njg1LDEzICs2OTMsMTMgQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NfUFJPUF9DVVJT
T1I6IHsKICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gMDsKLSAgICAgICAgQ1NTVmFsdWUq
IHZhbHVlID0gMDsKICAgICAgICAgQ3Vyc29yTGlzdCogY3Vyc29ycyA9IHN0eWxlLT5jdXJzb3Jz
KCk7CiAgICAgICAgIGlmIChjdXJzb3JzICYmIGN1cnNvcnMtPnNpemUoKSA+IDApIHsKICAgICAg
ICAgICAgIGxpc3QgPSBuZXcgQ1NTVmFsdWVMaXN0OwogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGN1cnNvcnMtPnNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoKCpjdXJzb3JzKVtpXS5jdXJzb3JJbWFnZS0+
dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7CiAgICAgICAgIH0KKyAgICAgICAg
ICAgIENTU1ZhbHVlKiB2YWx1ZSA9IDA7CiAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmN1cnNvcigp
KSB7CiAgICAgICAgICAgICBjYXNlIENVUlNPUl9BVVRPOgogICAgICAgICAgICAgICAgIHZhbHVl
ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CkBAIC04NzAsNTggKzg3OCwz
NyBAQAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgY2FzZSBDU1NfUFJPUF9GT05UX0ZBTUlMWToKLSAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIG9ubHkgcmV0dXJucyB0aGUgZmlyc3QgZmFtaWx5LgotICAgICAgICBjb25zdCBGb250RGVz
Y3JpcHRpb24mIGRlc2MgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoZGVzYy5mYW1pbHkoKS5mYW1pbHkoKS5kb21TdHJpbmco
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmZhbWls
eSgpLmZhbWlseSgpLmRvbVN0cmluZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7
CiAgICAgY2FzZSBDU1NfUFJPUF9GT05UX1NJWkU6Ci0gICAgewotICAgICAgICBGb250RGVzY3Jp
cHRpb24gZGVzYyA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShkZXNjLmNvbXB1dGVkUGl4ZWxTaXplKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOwotICAgIH0KKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogICAgIGNhc2UgQ1NTX1BST1BfRk9OVF9TVFJFVENI
OgogICAgICAgICAvLyBGSVhNRTogdW5pbXBsZW1lbnRlZAogICAgICAgICBicmVhazsKICAgICBj
YXNlIENTU19QUk9QX0ZPTlRfU1RZTEU6Ci0gICAgewotICAgICAgICAvLyBGSVhNRTogaGFuZGxl
IG9ibGlxdWU/Ci0gICAgICAgIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzYyA9IHN0eWxlLT5m
b250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgaWYgKGRlc2MuaXRhbGljKCkpCisgICAgICAgICAg
ICBpZiAoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpKQogICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0lUQUxJQyk7Ci0gICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1JNQUwp
OwotICAgIH0KICAgICBjYXNlIENTU19QUk9QX0ZPTlRfVkFSSUFOVDoKLSAgICB7Ci0gICAgICAg
IGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzYyA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKTsK
LSAgICAgICAgaWYgKGRlc2Muc21hbGxDYXBzKCkpCisgICAgICAgICAgICBpZiAoc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLnNtYWxsQ2FwcygpKQogICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX1NNQUxMX0NBUFMpOwotICAgICAgICBlbHNlCiAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKLSAgICB9
CiAgICAgY2FzZSBDU1NfUFJPUF9GT05UX1dFSUdIVDoKLSAgICB7CiAgICAgICAgIC8vIEZJWE1F
OiB0aGlzIGRvZXMgbm90IHJlZmxlY3QgdGhlIGZ1bGwgcmFuZ2Ugb2Ygd2VpZ2h0cwogICAgICAg
ICAvLyB0aGF0IGNhbiBiZSBleHByZXNzZWQgd2l0aCBDU1MKLSAgICAgICAgY29uc3QgRm9udERl
c2NyaXB0aW9uJiBkZXNjID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBpZiAo
ZGVzYy53ZWlnaHQoKSA9PSBjQm9sZFdlaWdodCkKKyAgICAgICAgICAgIGlmIChzdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCkud2VpZ2h0KCkgPT0gY0JvbGRXZWlnaHQpCiAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQk9MRCk7Ci0gICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOwot
ICAgIH0KICAgICBjYXNlIENTU19QUk9QX0hFSUdIVDoKICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShyZW5kZXJlci0+Y29udGVudEhlaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BYKTsKLSAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfSElHSExJR0hUOiB7CisgICAg
ICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9ISUdITElHSFQ6CiAgICAgICAgIGlmIChzdHlsZS0+
aGlnaGxpZ2h0KCkgPT0gbnVsbEF0b20pCiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0gICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmhpZ2hsaWdodCgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1NUUklORyk7Ci0gICAgfQogICAgIGNhc2UgQ1NTX1BST1BfTEVGVDoKICAgICAg
ICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUocmVuZGVyZXIsIENTU19QUk9QX0xFRlQp
OwogICAgIGNhc2UgQ1NTX1BST1BfTEVUVEVSX1NQQUNJTkc6Ci0gICAgICAgIGlmIChzdHlsZS0+
bGV0dGVyU3BhY2luZygpID09IDApCisgICAgICAgICAgICBpZiAoIXN0eWxlLT5sZXR0ZXJTcGFj
aW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
Tk9STUFMKTsKICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+bGV0
dGVyU3BhY2luZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKICAgICBjYXNlIENTU19Q
Uk9QX19XRUJLSVRfTElORV9DTEFNUDoKQEAgLTkyOSwyMSArOTE2LDE3IEBACiAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7CiAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmxpbmVDbGFtcCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIGNhc2UgQ1NTX1BST1BfTElORV9IRUlHSFQ6
IHsKLSAgICAgICAgTGVuZ3RoIGxlbmd0aChzdHlsZS0+bGluZUhlaWdodCgpKTsKKyAgICAgICAg
ICAgIExlbmd0aCBsZW5ndGggPSBzdHlsZS0+bGluZUhlaWdodCgpOwogICAgICAgICBpZiAobGVu
Z3RoLmlzTmVnYXRpdmUoKSkKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9OT1JNQUwpOwotICAgICAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKSB7Cisg
ICAgICAgICAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQogICAgICAgICAgICAgLy8gVGhpcyBp
cyBpbXBlcmZlY3QsIGJlY2F1c2UgaXQgZG9lc24ndCBpbmNsdWRlIHRoZSB6b29tIGZhY3RvciBh
bmQgdGhlIHJlYWwgY29tcHV0YXRpb24KICAgICAgICAgICAgIC8vIGZvciBob3cgaGlnaCB0byBi
ZSBpbiBwaXhlbHMgZG9lcyBpbmNsdWRlIHRoaW5ncyBsaWtlIG1pbmltdW0gZm9udCBzaXplIGFu
ZCB0aGUgem9vbSBmYWN0b3IuCiAgICAgICAgICAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgc2lu
Y2UgZm9udC1zaXplIGRvZXNuJ3QgaW5jbHVkZSB0aGUgem9vbSBmYWN0b3IsIHdlIHJlYWxseSBj
YW4ndCBkbwogICAgICAgICAgICAgLy8gdGhhdCBoZXJlIGVpdGhlci4KLSAgICAgICAgICAgIGZs
b2F0IGZvbnRTaXplID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKTsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoKGludCkobGVuZ3RoLnBl
cmNlbnQoKSAqIGZvbnRTaXplKSAvIDEwMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aC5wZXJjZW50KCkgKiBzdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpKSAvIDEwMCwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QWCk7CiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKGxl
bmd0aC52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKICAgICAgICAgfQotICAg
IH0KICAgICBjYXNlIENTU19QUk9QX0xJU1RfU1RZTEVfSU1BR0U6CiAgICAgICAgIGlmIChzdHls
ZS0+bGlzdFN0eWxlSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoc3R5bGUtPmxpc3RTdHlsZUltYWdlKCktPnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1VSSSk7CkBAIC0xMDk5LDcgKzEwODIsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNl
IENTU19QUk9QX09WRVJGTE9XOgogICAgIGNhc2UgQ1NTX1BST1BfT1ZFUkZMT1dfWDoKLSAgICBj
YXNlIENTU19QUk9QX09WRVJGTE9XX1k6CisgICAgICAgIGNhc2UgQ1NTX1BST1BfT1ZFUkZMT1df
WTogewogICAgICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3c7CiAgICAgICAgIHN3aXRjaCAocHJvcGVy
dHlJRCkgewogICAgICAgICAgICAgY2FzZSBDU1NfUFJPUF9PVkVSRkxPV19YOgpAQCAtMTEyNyw2
ICsxMTEwLDcgQEAKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICBjYXNlIENTU19QUk9QX1BBRERJTkdfVE9Q
OgogICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5wYWRkaW5n
VG9wKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogICAgIGNhc2UgQ1NTX1BST1BfUEFE
RElOR19SSUdIVDoKQEAgLTEyMDMsNTEgKzExODcsNDkgQEAKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgY2FzZSBDU1NfUFJPUF9URVhUX0FMSUdOOgogICAgICAgICByZXR1cm4gdmFsdWVGb3JUZXh0
QWxpZ24oc3R5bGUtPnRleHRBbGlnbigpKTsKLSAgICBjYXNlIENTU19QUk9QX1RFWFRfREVDT1JB
VElPTjoKLSAgICB7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfVEVYVF9ERUNPUkFUSU9OOiB7CiAg
ICAgICAgIFN0cmluZyBzdHJpbmc7CiAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb24o
KSAmIFVOREVSTElORSkKICAgICAgICAgICAgIHN0cmluZyArPSAidW5kZXJsaW5lIjsKICAgICAg
ICAgaWYgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgT1ZFUkxJTkUpIHsKLSAgICAgICAgICAg
IGlmIChzdHJpbmcubGVuZ3RoKCkgPiAwKQorICAgICAgICAgICAgICAgIGlmIChzdHJpbmcubGVu
Z3RoKCkpCiAgICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgIjsKICAgICAgICAgICAgIHN0cmlu
ZyArPSAib3ZlcmxpbmUiOwogICAgICAgICB9CiAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29y
YXRpb24oKSAmIExJTkVfVEhST1VHSCkgewotICAgICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgo
KSA+IDApCisgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgICAg
ICAgICBzdHJpbmcgKz0gIiAiOwogICAgICAgICAgICAgc3RyaW5nICs9ICJsaW5lLXRocm91Z2gi
OwogICAgICAgICB9CiAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIEJMSU5L
KSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gMCkKKyAgICAgICAgICAgICAg
ICBpZiAoc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7CiAg
ICAgICAgICAgICBzdHJpbmcgKz0gImJsaW5rIjsKICAgICAgICAgfQotICAgICAgICBpZiAoc3Ry
aW5nLmxlbmd0aCgpID09IDApCisgICAgICAgICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHJpbmcsIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfU1RSSU5HKTsKICAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX1RFWFRf
REVDT1JBVElPTlNfSU5fRUZGRUNUOgotICAgIHsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VC
S0lUX1RFWFRfREVDT1JBVElPTlNfSU5fRUZGRUNUOiB7CiAgICAgICAgIFN0cmluZyBzdHJpbmc7
CiAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFVOREVSTElO
RSkKICAgICAgICAgICAgIHN0cmluZyArPSAidW5kZXJsaW5lIjsKICAgICAgICAgaWYgKHN0eWxl
LT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgT1ZFUkxJTkUpIHsKLSAgICAgICAgICAgIGlm
IChzdHJpbmcubGVuZ3RoKCkgPiAwKQorICAgICAgICAgICAgICAgIGlmIChzdHJpbmcubGVuZ3Ro
KCkpCiAgICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgIjsKICAgICAgICAgICAgIHN0cmluZyAr
PSAib3ZlcmxpbmUiOwogICAgICAgICB9CiAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRp
b25zSW5FZmZlY3QoKSAmIExJTkVfVEhST1VHSCkgewotICAgICAgICAgICAgaWYgKHN0cmluZy5s
ZW5ndGgoKSA+IDApCisgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSkKICAgICAg
ICAgICAgICAgICBzdHJpbmcgKz0gIiAiOwogICAgICAgICAgICAgc3RyaW5nICs9ICJsaW5lLXRo
cm91Z2giOwogICAgICAgICB9CiAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb25zSW5F
ZmZlY3QoKSAmIEJMSU5LKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gMCkK
KyAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICAgICAgICAgIHN0
cmluZyArPSAiICI7CiAgICAgICAgICAgICBzdHJpbmcgKz0gImJsaW5rIjsKICAgICAgICAgfQot
ICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID09IDApCisgICAgICAgICAgICBpZiAoIXN0cmlu
Zy5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9OT05FKTsKICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHJpbmcs
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKICAgICB9CkBAIC0xMjU4LDcgKzEyNDAs
NiBAQAogICAgIGNhc2UgQ1NTX1BST1BfVEVYVF9TSEFET1c6CiAgICAgICAgIHJldHVybiB2YWx1
ZUZvclNoYWRvdyhzdHlsZS0+dGV4dFNoYWRvdygpKTsKICAgICBjYXNlIENTU19QUk9QX19XRUJL
SVRfVEVYVF9TRUNVUklUWToKLSAgICB7CiAgICAgICAgIHN3aXRjaCAoc3R5bGUtPnRleHRTZWN1
cml0eSgpKSB7CiAgICAgICAgICAgICBjYXNlIFRTTk9ORToKICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7CkBAIC0xMjcxLDExICsxMjUy
LDkgQEAKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9URVhUX1NJWkVfQURK
VVNUOgogICAgICAgICBpZiAoc3R5bGUtPnRleHRTaXplQWRqdXN0KCkpIAogICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICBlbHNl
CiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7
CiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX1RFWFRfU1RST0tFX0NPTE9SOgogICAgICAgICBy
ZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLCBzdHlsZS0+dGV4dFN0cm9rZUNv
bG9yKCkpOwpAQCAtMTQxMSw5ICsxMzkwLDEwIEBACiAgICAgICAgICAgICBjYXNlIFJFU0laRV9W
RVJUSUNBTDoKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfVkVSVElDQUwpOwogICAgICAgICAgICAgY2FzZSBSRVNJWkVfTk9ORToKLSAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX05PTkUpOwogICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgQ1NTX1BST1BfWl9JTkRFWDoK
ICAgICAgICAgaWYgKHN0eWxlLT5oYXNBdXRvWkluZGV4KCkpCiAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKQEAgLTE1MDUsMTkgKzE0ODUs
MTkgQEAKICAgICByZXR1cm4gIiI7CiB9CiAKLWJvb2wgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KGludCkgY29uc3QKK2Jvb2wgQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KGludCAvKnByb3BlcnR5SUQqLykgY29u
c3QKIHsKICAgICAvLyBBbGwgY29tcHV0ZWQgc3R5bGVzIGhhdmUgYSBwcmlvcml0eSBvZiBmYWxz
ZSAobm90ICJpbXBvcnRhbnQiKS4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KGludCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0
eShpbnQgLypwcm9wZXJ0eUlEKi8sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9f
TU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9p
ZCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGludCwgY29uc3QgU3Ry
aW5nJiwgYm9vbCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbjo6c2V0UHJvcGVydHkoaW50IC8qcHJvcGVydHlJRCovLCBjb25zdCBTdHJpbmcmIC8q
dmFsdWUqLywgYm9vbCAvKmltcG9ydGFudCovLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBl
YyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKIH0KQEAgLTE1MjcsMTIgKzE1MDcsMTUg
QEAKICAgICBOb2RlKiBub2RlID0gbV9ub2RlLmdldCgpOwogICAgIGlmICghbm9kZSkKICAgICAg
ICAgcmV0dXJuIDA7CisKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVy
ZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gMDsKKwogICAgIFJlbmRl
clN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogICAgIGlmICghc3R5bGUpCiAgICAg
ICAgIHJldHVybiAwOworCiAgICAgcmV0dXJuIG51bUNvbXB1dGVkUHJvcGVydGllczsKIH0KIApJ
bmRleDogV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUv
Y3NzL0NTU0luaGVyaXRlZFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDIwICsyMCwxOSBA
QAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NJbmhl
cml0ZWRWYWx1ZV9ICi0jZGVmaW5lIENTU0luaGVyaXRlZFZhbHVlX0gKKyNpZm5kZWYgQ1NTSW5o
ZXJpdGVkVmFsdWVfaAorI2RlZmluZSBDU1NJbmhlcml0ZWRWYWx1ZV9oCiAKICNpbmNsdWRlICJD
U1NWYWx1ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENTU0luaGVyaXRlZFZh
bHVlIDogcHVibGljIENTU1ZhbHVlCi17CitjbGFzcyBDU1NJbmhlcml0ZWRWYWx1ZSA6IHB1Ymxp
YyBDU1NWYWx1ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBjc3NWYWx1
ZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiB9Owog
Ci19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRp
ZiAvLyBDU1NJbmhlcml0ZWRWYWx1ZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAx
ODgzNCkKKysrIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjIsNiArMjIsNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkg
VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAK
QEAgLTI5LDE3ICszMCwxNiBAQAogCiB2b2lkIENTU1NlbGVjdG9yOjpwcmludCgpCiB7Ci0gICAg
aWYgKHRhZ0hpc3RvcnkpCi0gICAgICAgIHRhZ0hpc3RvcnktPnByaW50KCk7CisgICAgaWYgKG1f
dGFnSGlzdG9yeSkKKyAgICAgICAgbV90YWdIaXN0b3J5LT5wcmludCgpOwogfQogCiB1bnNpZ25l
ZCBpbnQgQ1NTU2VsZWN0b3I6OnNwZWNpZmljaXR5KCkKIHsKICAgICAvLyBGSVhNRTogUHNldWRv
LWVsZW1lbnRzIGFuZCBwc2V1ZG8tY2xhc3NlcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBzcGVjaWZp
Y2l0eS4gVGhpcyBmdW5jdGlvbgogICAgIC8vIGlzbid0IHF1aXRlIGNvcnJlY3QuCi0gICAgaW50
IHMgPSAodGFnLmxvY2FsTmFtZSgpID09IHN0YXJBdG9tID8gMCA6IDEpOwotICAgIHN3aXRjaCht
YXRjaCkKLSAgICB7CisgICAgaW50IHMgPSAobV90YWcubG9jYWxOYW1lKCkgPT0gc3RhckF0b20g
PyAwIDogMSk7CisgICAgc3dpdGNoIChtX21hdGNoKSB7CiAgICAgY2FzZSBJZDoKICAgICAgICAg
cyArPSAweDEwMDAwOwogICAgICAgICBicmVhazsKQEAgLTU3LDE1ICs1NywxNyBAQAogICAgIGNh
c2UgTm9uZToKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGlmICh0YWdIaXN0b3J5KQotICAg
ICAgICBzICs9IHRhZ0hpc3RvcnktPnNwZWNpZmljaXR5KCk7CisKKyAgICBpZiAobV90YWdIaXN0
b3J5KQorICAgICAgICBzICs9IG1fdGFnSGlzdG9yeS0+c3BlY2lmaWNpdHkoKTsKKwogICAgIC8v
IG1ha2Ugc3VyZSBpdCBkb2Vzbid0IG92ZXJmbG93CiAgICAgcmV0dXJuIHMgJiAweGZmZmZmZjsK
IH0KIAogdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogewotICAg
IGlmIChtYXRjaCAhPSBQc2V1ZG9DbGFzcyAmJiBtYXRjaCAhPSBQc2V1ZG9FbGVtZW50KQorICAg
IGlmIChtX21hdGNoICE9IFBzZXVkb0NsYXNzICYmIG1fbWF0Y2ggIT0gUHNldWRvRWxlbWVudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgYWN0aXZlKCJh
Y3RpdmUiKTsKQEAgLTEwMiw5NyArMTA0LDEwMiBAQAogICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
c2xpZGVyVGh1bWIoIi13ZWJraXQtc2xpZGVyLXRodW1iIik7CiAgICAgc3RhdGljIEF0b21pY1N0
cmluZyB0YXJnZXQoInRhcmdldCIpOwogICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdmlzaXRlZCgi
dmlzaXRlZCIpOworCiAgICAgYm9vbCBlbGVtZW50ID0gZmFsc2U7ICAgICAgIC8vIHBzZXVkby1l
bGVtZW50CiAgICAgYm9vbCBjb21wYXQgPSBmYWxzZTsgICAgICAgIC8vIHNpbmdsZSBjb2xvbiBj
b21wYXRiaWxpdHkgbW9kZQogICAgIAotICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvT3RoZXI7Ci0g
ICAgaWYgKHZhbHVlID09IGFjdGl2ZSkKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9BY3Rp
dmU7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gYWZ0ZXIpIHsKLSAgICAgICAgX3BzZXVkb1R5cGUg
PSBQc2V1ZG9BZnRlcjsKLSAgICAgICAgZWxlbWVudCA9IGNvbXBhdCA9IHRydWU7Ci0gICAgfSBl
bHNlIGlmICh2YWx1ZSA9PSBhbnlMaW5rKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0Fu
eUxpbms7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gYXV0b2ZpbGwpCi0gICAgICAgIF9wc2V1ZG9U
eXBlID0gUHNldWRvQXV0b2ZpbGw7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gYmVmb3JlKSB7Ci0g
ICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvQmVmb3JlOwotICAgICAgICBlbGVtZW50ID0gY29t
cGF0ID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKHZhbHVlID09IGNoZWNrZWQpCi0gICAgICAgIF9w
c2V1ZG9UeXBlID0gUHNldWRvQ2hlY2tlZDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBmaWxlVXBs
b2FkQnV0dG9uKSB7Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvRmlsZVVwbG9hZEJ1dHRv
bjsKKyAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9PdGhlcjsKKyAgICBpZiAobV92YWx1ZSA9PSBh
Y3RpdmUpCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0FjdGl2ZTsKKyAgICBlbHNlIGlm
IChtX3ZhbHVlID09IGFmdGVyKSB7CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0FmdGVy
OwogICAgICAgICBlbGVtZW50ID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKHZhbHVlID09IGRpc2Fi
bGVkKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0Rpc2FibGVkOwotICAgIGVsc2UgaWYg
KHZhbHVlID09IGRyYWcpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvRHJhZzsKLSAgICBl
bHNlIGlmICh2YWx1ZSA9PSBlbmFibGVkKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0Vu
YWJsZWQ7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gZW1wdHkpCi0gICAgICAgIF9wc2V1ZG9UeXBl
ID0gUHNldWRvRW1wdHk7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gZmlyc3RDaGlsZCkKLSAgICAg
ICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9GaXJzdENoaWxkOwotICAgIGVsc2UgaWYgKHZhbHVlID09
IGZpcnN0TGV0dGVyKSB7Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvRmlyc3RMZXR0ZXI7
Ci0gICAgICAgIGVsZW1lbnQgPSBjb21wYXQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAodmFsdWUg
PT0gZmlyc3RMaW5lKSB7Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvRmlyc3RMaW5lOwot
ICAgICAgICBlbGVtZW50ID0gY29tcGF0ID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKHZhbHVlID09
IGZpcnN0T2ZUeXBlKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0ZpcnN0T2ZUeXBlOwot
ICAgIGVsc2UgaWYgKHZhbHVlID09IGZvY3VzKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVk
b0ZvY3VzOwotICAgIGVsc2UgaWYgKHZhbHVlID09IGhvdmVyKQotICAgICAgICBfcHNldWRvVHlw
ZSA9IFBzZXVkb0hvdmVyOwotICAgIGVsc2UgaWYgKHZhbHVlID09IGluZGV0ZXJtaW5hdGUpCi0g
ICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvSW5kZXRlcm1pbmF0ZTsKLSAgICBlbHNlIGlmICh2
YWx1ZSA9PSBsaW5rKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0xpbms7Ci0gICAgZWxz
ZSBpZiAodmFsdWUgPT0gbGFuZykKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9MYW5nOwot
ICAgIGVsc2UgaWYgKHZhbHVlID09IGxhc3RDaGlsZCkKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQ
c2V1ZG9MYXN0Q2hpbGQ7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gbGFzdE9mVHlwZSkKLSAgICAg
ICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9MYXN0T2ZUeXBlOwotICAgIGVsc2UgaWYgKHZhbHVlID09
IG5vdFN0cikKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9Ob3Q7Ci0gICAgZWxzZSBpZiAo
dmFsdWUgPT0gb25seUNoaWxkKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb09ubHlDaGls
ZDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBvbmx5T2ZUeXBlKQotICAgICAgICBfcHNldWRvVHlw
ZSA9IFBzZXVkb09ubHlPZlR5cGU7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gcm9vdCkKLSAgICAg
ICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9Sb290OwotICAgIGVsc2UgaWYgKHZhbHVlID09IHNlYXJj
aENhbmNlbEJ1dHRvbikgewotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb1NlYXJjaENhbmNl
bEJ1dHRvbjsKKyAgICAgICAgY29tcGF0ID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKG1fdmFsdWUg
PT0gYW55TGluaykKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvQW55TGluazsKKyAgICBl
bHNlIGlmIChtX3ZhbHVlID09IGF1dG9maWxsKQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1
ZG9BdXRvZmlsbDsKKyAgICBlbHNlIGlmIChtX3ZhbHVlID09IGJlZm9yZSkgeworICAgICAgICBt
X3BzZXVkb1R5cGUgPSBQc2V1ZG9CZWZvcmU7CiAgICAgICAgIGVsZW1lbnQgPSB0cnVlOwotICAg
IH0gZWxzZSBpZiAodmFsdWUgPT0gc2VhcmNoRGVjb3JhdGlvbikgewotICAgICAgICBfcHNldWRv
VHlwZSA9IFBzZXVkb1NlYXJjaERlY29yYXRpb247CisgICAgICAgIGNvbXBhdCA9IHRydWU7Cisg
ICAgfSBlbHNlIGlmIChtX3ZhbHVlID09IGNoZWNrZWQpCisgICAgICAgIG1fcHNldWRvVHlwZSA9
IFBzZXVkb0NoZWNrZWQ7CisgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBmaWxlVXBsb2FkQnV0dG9u
KSB7CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0ZpbGVVcGxvYWRCdXR0b247CiAgICAg
ICAgIGVsZW1lbnQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gc2VhcmNoUmVzdWx0
c0RlY29yYXRpb24pIHsKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9TZWFyY2hSZXN1bHRz
RGVjb3JhdGlvbjsKKyAgICB9IGVsc2UgaWYgKG1fdmFsdWUgPT0gZGlzYWJsZWQpCisgICAgICAg
IG1fcHNldWRvVHlwZSA9IFBzZXVkb0Rpc2FibGVkOworICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0g
ZHJhZykKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvRHJhZzsKKyAgICBlbHNlIGlmICht
X3ZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0VuYWJsZWQ7
CisgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBlbXB0eSkKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0g
UHNldWRvRW1wdHk7CisgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBmaXJzdENoaWxkKQorICAgICAg
ICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9GaXJzdENoaWxkOworICAgIGVsc2UgaWYgKG1fdmFsdWUg
PT0gZmlyc3RMZXR0ZXIpIHsKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvRmlyc3RMZXR0
ZXI7CiAgICAgICAgIGVsZW1lbnQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gc2Vh
cmNoUmVzdWx0c0J1dHRvbikgewotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb1NlYXJjaFJl
c3VsdHNCdXR0b247CisgICAgICAgIGNvbXBhdCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChtX3Zh
bHVlID09IGZpcnN0TGluZSkgeworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9GaXJzdExp
bmU7CiAgICAgICAgIGVsZW1lbnQgPSB0cnVlOwotICAgIH0gIGVsc2UgaWYgKHZhbHVlID09IHNl
bGVjdGlvbikgewotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb1NlbGVjdGlvbjsKKyAgICAg
ICAgY29tcGF0ID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKG1fdmFsdWUgPT0gZmlyc3RPZlR5cGUp
CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0ZpcnN0T2ZUeXBlOworICAgIGVsc2UgaWYg
KG1fdmFsdWUgPT0gZm9jdXMpCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0ZvY3VzOwor
ICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gaG92ZXIpCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBz
ZXVkb0hvdmVyOworICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gaW5kZXRlcm1pbmF0ZSkKKyAgICAg
ICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvSW5kZXRlcm1pbmF0ZTsKKyAgICBlbHNlIGlmIChtX3Zh
bHVlID09IGxpbmspCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0xpbms7CisgICAgZWxz
ZSBpZiAobV92YWx1ZSA9PSBsYW5nKQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9MYW5n
OworICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gbGFzdENoaWxkKQorICAgICAgICBtX3BzZXVkb1R5
cGUgPSBQc2V1ZG9MYXN0Q2hpbGQ7CisgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBsYXN0T2ZUeXBl
KQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9MYXN0T2ZUeXBlOworICAgIGVsc2UgaWYg
KG1fdmFsdWUgPT0gbm90U3RyKQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Ob3Q7Cisg
ICAgZWxzZSBpZiAobV92YWx1ZSA9PSBvbmx5Q2hpbGQpCisgICAgICAgIG1fcHNldWRvVHlwZSA9
IFBzZXVkb09ubHlDaGlsZDsKKyAgICBlbHNlIGlmIChtX3ZhbHVlID09IG9ubHlPZlR5cGUpCisg
ICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb09ubHlPZlR5cGU7CisgICAgZWxzZSBpZiAobV92
YWx1ZSA9PSByb290KQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Sb290OworICAgIGVs
c2UgaWYgKG1fdmFsdWUgPT0gc2VhcmNoQ2FuY2VsQnV0dG9uKSB7CisgICAgICAgIG1fcHNldWRv
VHlwZSA9IFBzZXVkb1NlYXJjaENhbmNlbEJ1dHRvbjsKICAgICAgICAgZWxlbWVudCA9IHRydWU7
Ci0gICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBzbGlkZXJUaHVtYikgewotICAgICAgICBfcHNldWRv
VHlwZSA9IFBzZXVkb1NsaWRlclRodW1iOworICAgIH0gZWxzZSBpZiAobV92YWx1ZSA9PSBzZWFy
Y2hEZWNvcmF0aW9uKSB7CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1NlYXJjaERlY29y
YXRpb247CiAgICAgICAgIGVsZW1lbnQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAodmFsdWUgPT0g
dGFyZ2V0KQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb1RhcmdldDsKLSAgICBlbHNlIGlm
ICh2YWx1ZSA9PSB2aXNpdGVkKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb1Zpc2l0ZWQ7
CisgICAgfSBlbHNlIGlmIChtX3ZhbHVlID09IHNlYXJjaFJlc3VsdHNEZWNvcmF0aW9uKSB7Cisg
ICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1NlYXJjaFJlc3VsdHNEZWNvcmF0aW9uOworICAg
ICAgICBlbGVtZW50ID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKG1fdmFsdWUgPT0gc2VhcmNoUmVz
dWx0c0J1dHRvbikgeworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9TZWFyY2hSZXN1bHRz
QnV0dG9uOworICAgICAgICBlbGVtZW50ID0gdHJ1ZTsKKyAgICB9ICBlbHNlIGlmIChtX3ZhbHVl
ID09IHNlbGVjdGlvbikgeworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9TZWxlY3Rpb247
CisgICAgICAgIGVsZW1lbnQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAobV92YWx1ZSA9PSBzbGlk
ZXJUaHVtYikgeworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9TbGlkZXJUaHVtYjsKKyAg
ICAgICAgZWxlbWVudCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChtX3ZhbHVlID09IHRhcmdldCkK
KyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvVGFyZ2V0OworICAgIGVsc2UgaWYgKG1fdmFs
dWUgPT0gdmlzaXRlZCkKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvVmlzaXRlZDsKICAg
ICAKLSAgICBpZiAobWF0Y2ggPT0gUHNldWRvQ2xhc3MgJiYgZWxlbWVudCkKKyAgICBpZiAobV9t
YXRjaCA9PSBQc2V1ZG9DbGFzcyAmJiBlbGVtZW50KSB7CiAgICAgICAgIGlmICghY29tcGF0KSAK
LSAgICAgICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvT3RoZXI7CisgICAgICAgICAgICBtX3Bz
ZXVkb1R5cGUgPSBQc2V1ZG9PdGhlcjsKICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgbWF0Y2gg
PSBQc2V1ZG9FbGVtZW50OwotICAgIGVsc2UgaWYgKG1hdGNoID09IFBzZXVkb0VsZW1lbnQgJiYg
IWVsZW1lbnQpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvT3RoZXI7CisgICAgICAgICAg
IG1fbWF0Y2ggPSBQc2V1ZG9FbGVtZW50OworICAgIH0gZWxzZSBpZiAobV9tYXRjaCA9PSBQc2V1
ZG9FbGVtZW50ICYmICFlbGVtZW50KQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9PdGhl
cjsKIH0KIAogYm9vbCBDU1NTZWxlY3Rvcjo6b3BlcmF0b3IgPT0gKGNvbnN0IENTU1NlbGVjdG9y
ICZvdGhlcikKQEAgLTIwMSwxNyArMjA4LDE5IEBACiAgICAgY29uc3QgQ1NTU2VsZWN0b3IgKnNl
bDIgPSAmb3RoZXI7CiAKICAgICB3aGlsZSAoc2VsMSAmJiBzZWwyKSB7Ci0gICAgICAgIGlmIChz
ZWwxLT50YWcgIT0gc2VsMi0+dGFnIHx8IHNlbDEtPmF0dHIgIT0gc2VsMi0+YXR0ciB8fAotICAg
ICAgICAgICAgIHNlbDEtPnJlbGF0aW9uKCkgIT0gc2VsMi0+cmVsYXRpb24oKSB8fCBzZWwxLT5t
YXRjaCAhPSBzZWwyLT5tYXRjaCB8fAotICAgICAgICAgICAgIHNlbDEtPnZhbHVlICE9IHNlbDIt
PnZhbHVlIHx8CisgICAgICAgIGlmIChzZWwxLT5tX3RhZyAhPSBzZWwyLT5tX3RhZyB8fCBzZWwx
LT5tX2F0dHIgIT0gc2VsMi0+bV9hdHRyIHx8CisgICAgICAgICAgICAgc2VsMS0+cmVsYXRpb24o
KSAhPSBzZWwyLT5yZWxhdGlvbigpIHx8IHNlbDEtPm1fbWF0Y2ggIT0gc2VsMi0+bV9tYXRjaCB8
fAorICAgICAgICAgICAgIHNlbDEtPm1fdmFsdWUgIT0gc2VsMi0+bV92YWx1ZSB8fAogICAgICAg
ICAgICAgIHNlbDEtPnBzZXVkb1R5cGUoKSAhPSBzZWwyLT5wc2V1ZG9UeXBlKCkgfHwKLSAgICAg
ICAgICAgICBzZWwxLT5hcmd1bWVudCAhPSBzZWwyLT5hcmd1bWVudCkKKyAgICAgICAgICAgICBz
ZWwxLT5tX2FyZ3VtZW50ICE9IHNlbDItPm1fYXJndW1lbnQpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHNlbDEgPSBzZWwxLT50YWdIaXN0b3J5OwotICAgICAgICBzZWwyID0g
c2VsMi0+dGFnSGlzdG9yeTsKKyAgICAgICAgc2VsMSA9IHNlbDEtPm1fdGFnSGlzdG9yeTsKKyAg
ICAgICAgc2VsMiA9IHNlbDItPm1fdGFnSGlzdG9yeTsKICAgICB9CisKICAgICBpZiAoc2VsMSB8
fCBzZWwyKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMjIwLDI4ICsyMjksMzAgQEAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBuYW1lc3BhY2VzIHdo
ZW4gZHVtcGluZyB0aGUgc2VsZWN0b3IgdGV4dC4gLWR3aAogICAgIFN0cmluZyBzdHI7CiAgICAg
Y29uc3QgQ1NTU2VsZWN0b3IqIGNzID0gdGhpczsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsTmFtZSA9IGNzLT50YWcubG9jYWxOYW1lKCk7Ci0gICAgaWYgKGNzLT5tYXRjaCA9PSBDU1NT
ZWxlY3Rvcjo6Tm9uZSB8fCBsb2NhbE5hbWUgIT0gc3RhckF0b20pCisgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUgPSBjcy0+bV90YWcubG9jYWxOYW1lKCk7CisKKyAgICBpZiAoY3Mt
Pm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6Ok5vbmUgfHwgbG9jYWxOYW1lICE9IHN0YXJBdG9tKQog
ICAgICAgICBzdHIgPSBsb2NhbE5hbWU7CisKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBp
ZiAoY3MtPm1hdGNoID09IENTU1NlbGVjdG9yOjpJZCkgeworICAgICAgICBpZiAoY3MtPm1fbWF0
Y2ggPT0gQ1NTU2VsZWN0b3I6OklkKSB7CiAgICAgICAgICAgICBzdHIgKz0gIiMiOwotICAgICAg
ICAgICAgc3RyICs9IGNzLT52YWx1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChjcy0+bWF0Y2ggPT0g
Q1NTU2VsZWN0b3I6OkNsYXNzKSB7CisgICAgICAgICAgICBzdHIgKz0gY3MtPm1fdmFsdWU7Cisg
ICAgICAgIH0gZWxzZSBpZiAoY3MtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkNsYXNzKSB7CiAg
ICAgICAgICAgICBzdHIgKz0gIi4iOwotICAgICAgICAgICAgc3RyICs9IGNzLT52YWx1ZTsKLSAg
ICAgICAgfSBlbHNlIGlmIChjcy0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSB7
CisgICAgICAgICAgICBzdHIgKz0gY3MtPm1fdmFsdWU7CisgICAgICAgIH0gZWxzZSBpZiAoY3Mt
Pm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSB7CiAgICAgICAgICAgICBzdHIg
Kz0gIjoiOwotICAgICAgICAgICAgc3RyICs9IGNzLT52YWx1ZTsKLSAgICAgICAgfSBlbHNlIGlm
IChjcy0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpIHsKKyAgICAgICAgICAg
IHN0ciArPSBjcy0+bV92YWx1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChjcy0+bV9tYXRjaCA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCkgewogICAgICAgICAgICAgc3RyICs9ICI6OiI7Ci0g
ICAgICAgICAgICBzdHIgKz0gY3MtPnZhbHVlOworICAgICAgICAgICAgc3RyICs9IGNzLT5tX3Zh
bHVlOwogICAgICAgICB9IGVsc2UgaWYgKGNzLT5oYXNBdHRyaWJ1dGUoKSkgewogICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBkdW1waW5nIG5hbWVzcGFjZXMuCi0gICAgICAg
ICAgICBTdHJpbmcgYXR0ck5hbWUgPSBjcy0+YXR0ci5sb2NhbE5hbWUoKTsKKyAgICAgICAgICAg
IFN0cmluZyBhdHRyTmFtZSA9IGNzLT5tX2F0dHIubG9jYWxOYW1lKCk7CiAgICAgICAgICAgICBz
dHIgKz0gIlsiOwogICAgICAgICAgICAgc3RyICs9IGF0dHJOYW1lOwotICAgICAgICAgICAgc3dp
dGNoIChjcy0+bWF0Y2gpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY3MtPm1fbWF0Y2gpIHsKICAg
ICAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpFeGFjdDoKICAgICAgICAgICAgICAgICAg
ICAgc3RyICs9ICI9IjsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjcsMjggKzI3
OCwzMSBAQAogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNzLT5tYXRjaCAhPSBDU1NTZWxl
Y3Rvcjo6U2V0KSB7CisgICAgICAgICAgICBpZiAoY3MtPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6
OlNldCkgewogICAgICAgICAgICAgICAgIHN0ciArPSAiXCIiOwotICAgICAgICAgICAgICAgIHN0
ciArPSBjcy0+dmFsdWU7CisgICAgICAgICAgICAgICAgc3RyICs9IGNzLT5tX3ZhbHVlOwogICAg
ICAgICAgICAgICAgIHN0ciArPSAiXCJdIjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICBpZiAoY3MtPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yIHx8ICFj
cy0+dGFnSGlzdG9yeSkKKyAgICAgICAgaWYgKGNzLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9y
OjpTdWJTZWxlY3RvciB8fCAhY3MtPm1fdGFnSGlzdG9yeSkKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjcyA9IGNzLT50YWdIaXN0b3J5OworICAgICAgICBjcyA9IGNzLT5tX3RhZ0hpc3Rv
cnk7CiAgICAgfQotICAgIGlmIChjcy0+dGFnSGlzdG9yeSkgewotICAgICAgICBTdHJpbmcgdGFn
SGlzdG9yeVRleHQgPSBjcy0+dGFnSGlzdG9yeS0+c2VsZWN0b3JUZXh0KCk7CisKKyAgICBpZiAo
Y3MtPm1fdGFnSGlzdG9yeSkgeworICAgICAgICBTdHJpbmcgdGFnSGlzdG9yeVRleHQgPSBjcy0+
bV90YWdIaXN0b3J5LT5zZWxlY3RvclRleHQoKTsKICAgICAgICAgaWYgKGNzLT5yZWxhdGlvbigp
ID09IENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudCkKICAgICAgICAgICAgIHN0ciA9IHRhZ0hp
c3RvcnlUZXh0ICsgIiArICIgKyBzdHI7CiAgICAgICAgIGVsc2UgaWYgKGNzLT5yZWxhdGlvbigp
ID09IENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50KQogICAgICAgICAgICAgc3RyID0gdGFn
SGlzdG9yeVRleHQgKyAiIH4gIiArIHN0cjsKICAgICAgICAgZWxzZSBpZiAoY3MtPnJlbGF0aW9u
KCkgPT0gQ1NTU2VsZWN0b3I6OkNoaWxkKQogICAgICAgICAgICAgc3RyID0gdGFnSGlzdG9yeVRl
eHQgKyAiID4gIiArIHN0cjsKLSAgICAgICAgZWxzZSAvLyBEZXNjZW5kYW50CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIC8vIERlc2NlbmRhbnQKICAgICAgICAgICAgIHN0ciA9IHRhZ0hpc3Rv
cnlUZXh0ICsgIiAiICsgc3RyOwogICAgIH0KKwogICAgIHJldHVybiBzdHI7CiB9CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFs
dWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgJKHJl
dmlzaW9uIDE4ODM0KQorKysgV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOSwxOCArMTksMTcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgogICovCiAKLSNpZm5kZWYgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZV9ICi0jZGVmaW5lIENTU0N1
cnNvckltYWdlVmFsdWVfSAorI2lmbmRlZiBDU1NDdXJzb3JJbWFnZVZhbHVlX2gKKyNkZWZpbmUg
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZV9oCiAKKyNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5j
bHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NJbWFn
ZVZhbHVlCi17CitjbGFzcyBDU1NDdXJzb3JJbWFnZVZhbHVlIDogcHVibGljIENTU0ltYWdlVmFs
dWUgewogcHVibGljOgotICAgIENTU0N1cnNvckltYWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IEludFBvaW50JiwgU3R5bGVCYXNlKik7CisgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZShj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgSW50UG9pbnQmIGhvdHNwb3QsIFN0eWxlQmFzZSopOwog
ICAgIHZpcnR1YWwgfkNTU0N1cnNvckltYWdlVmFsdWUoKTsKIAogICAgIEludFBvaW50IGhvdHNw
b3QoKSBjb25zdCB7IHJldHVybiBtX2hvdHNwb3Q7IH0KQEAgLTM4LDYgKzM3LDcgQEAKIHByb3Rl
Y3RlZDoKICAgICBJbnRQb2ludCBtX2hvdHNwb3Q7CiB9OwotfSAvLyBuYW1lc3BhY2UKIAotI2Vu
ZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NDdXJzb3JJbWFnZVZh
bHVlX2gKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDE4ODM0KQorKysgV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw4ICsxOSwxMCBAQAogICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp
dGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogCiAvLyBOb3QgaW4gYW55IGhlYWRlciwgc28ganVzdCBkZWNsYXJlIGl0IGhl
cmUgZm9yIG5vdy4KQEAgLTM4LDQgKzQwLDQgQEAKICAgICByZXR1cm4gYS5tX2lkID09IGIubV9p
ZCAmJiBhLm1faW1wb3J0YW50ID09IGIubV9pbXBvcnRhbnQgJiYgYS5tX3ZhbHVlID09IGIubV92
YWx1ZTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUu
aAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB
LgogICovCiAKLSNpZm5kZWYgQ1NTSW1hZ2VWYWx1ZV9ICi0jZGVmaW5lIENTU0ltYWdlVmFsdWVf
SAorI2lmbmRlZiBDU1NJbWFnZVZhbHVlX2gKKyNkZWZpbmUgQ1NTSW1hZ2VWYWx1ZV9oCiAKICNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xp
ZW50LmgiCkBAIC0zMCw4ICszMCw3IEBACiAKIGNsYXNzIERvY0xvYWRlcjsKIAotY2xhc3MgQ1NT
SW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NQcmltaXRpdmVWYWx1ZSwgcHVibGljIENhY2hlZFJlc291
cmNlQ2xpZW50Ci17CitjbGFzcyBDU1NJbWFnZVZhbHVlIDogcHVibGljIENTU1ByaW1pdGl2ZVZh
bHVlLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgogICAgIENTU0ltYWdl
VmFsdWUoKTsKICAgICBDU1NJbWFnZVZhbHVlKGNvbnN0IFN0cmluZyYgdXJsLCBTdHlsZUJhc2Uq
KTsKQEAgLTQ0LDYgKzQzLDYgQEAKICAgICBib29sIG1fYWNjZXNzZWRJbWFnZTsKIH07CiAKLX0g
Ly8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8v
IENTU0ltYWdlVmFsdWVfaApJbmRleDogV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbi5oCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDExICsyMCwxMSBAQAogICogQm9zdG9u
LCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbl9ICi0jZGVmaW5lIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uX0gKKyNpZm5kZWYg
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25faAorI2RlZmluZSBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbl9oCiAKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAi
Q1NTUHJpbWl0aXZlVmFsdWUuaCIgLy8gZm9yIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMK
KyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1
ZUxpc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCkBAIC0zMyw4ICszMyw3IEBA
CiBjbGFzcyBDU1NQcm9wZXJ0eTsKIGNsYXNzIE5vZGU7CiAKLWNsYXNzIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uIDogcHVibGljIENTU1N0eWxlRGVjbGFyYXRpb24KLXsKK2NsYXNzIENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uIDogcHVibGljIENTU1N0eWxlRGVjbGFyYXRpb24gewogcHVi
bGljOgogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKCk7CiAgICAgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50UnVsZSk7CkBAIC02OCwxMSArNjcsMTcgQEAK
ICAgICBib29sIHNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBpbnQgdmFsdWUsIGJvb2wgaW1w
b3J0YW50ID0gZmFsc2UsIGJvb2wgbm90aWZ5Q2hhbmdlZCA9IHRydWUpOwogICAgIGJvb2wgc2V0
UHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0
YW50LCBib29sIG5vdGlmeUNoYW5nZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIHNldFBy
b3BlcnR5KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFu
dCA9IGZhbHNlLCBib29sIG5vdGlmeUNoYW5nZWQgPSB0cnVlKQotICAgICAgICB7IEV4Y2VwdGlv
bkNvZGUgZWM7IHJldHVybiBzZXRQcm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZSwgaW1wb3J0YW50
LCBub3RpZnlDaGFuZ2VkLCBlYyk7IH0KKyAgICB7IAorICAgICAgICBFeGNlcHRpb25Db2RlIGVj
OworICAgICAgICByZXR1cm4gc2V0UHJvcGVydHkocHJvcGVydHlJZCwgdmFsdWUsIGltcG9ydGFu
dCwgbm90aWZ5Q2hhbmdlZCwgZWMpOworICAgIH0KIAogICAgIFN0cmluZyByZW1vdmVQcm9wZXJ0
eShpbnQgcHJvcGVydHlJRCwgYm9vbCBub3RpZnlDaGFuZ2VkLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBib29sIG5vdGlmeUNoYW5n
ZWQgPSB0cnVlKQotICAgICAgICB7IEV4Y2VwdGlvbkNvZGUgZWM7IHJldHVybiByZW1vdmVQcm9w
ZXJ0eShwcm9wZXJ0eUlELCBub3RpZnlDaGFuZ2VkLCBlYyk7IH0KKyAgICB7CisgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eUlE
LCBub3RpZnlDaGFuZ2VkLCBlYyk7CisgICAgfQogCiAgICAgdm9pZCBjbGVhcigpOwogCkBAIC04
MSw3ICs4Niw3IEBACiAgICAgLy8gc2V0TGVuZ3RoUHJvcGVydHkgdHJlYXRzIGludGVnZXJzIGFz
IHBpeGVscyEgKE5lZWRlZCBmb3IgY29udmVyc2lvbiBvZiBIVE1MIGF0dHJpYnV0ZXMuKQogICAg
IHZvaWQgc2V0TGVuZ3RoUHJvcGVydHkoaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGJvb2wgaW1wb3J0YW50LCBib29sIG11bHRpTGVuZ3RoID0gZmFsc2UpOwogICAgIHZvaWQg
c2V0U3RyaW5nUHJvcGVydHkoaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOyAvLyBw
YXJzZWQgc3RyaW5nIHZhbHVlCi0gICAgdm9pZCBzZXRJbWFnZVByb3BlcnR5KGludCBwcm9wZXJ0
eUlkLCBjb25zdCBTdHJpbmcmIFVSTCwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAgdm9p
ZCBzZXRJbWFnZVByb3BlcnR5KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHVybCwgYm9v
bCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAgCiAgICAgLy8gVGhlIGZvbGxvd2luZyBwYXJzZXMgYW4g
ZW50aXJlIG5ldyBzdHlsZSBkZWNsYXJhdGlvbi4KICAgICB2b2lkIHBhcnNlRGVjbGFyYXRpb24o
Y29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uKTsKQEAgLTk3LDEzICsxMDIsMTMgQEAKICAg
ICB2b2lkIG1lcmdlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgYm9vbCBhcmdPdmVycmlk
ZXNPbkNvbmZsaWN0ID0gdHJ1ZSk7CiAgCiBwcml2YXRlOgotICAgIFN0cmluZyBnZXRTaG9ydEhh
bmRWYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBudW1iZXIpIGNvbnN0OworICAgIFN0
cmluZyBnZXRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBudW1iZXIp
IGNvbnN0OwogICAgIFN0cmluZyBnZXQ0VmFsdWVzKGNvbnN0IGludCogcHJvcGVydGllcykgY29u
c3Q7CiAgCiAgICAgRGVwcmVjYXRlZFZhbHVlTGlzdDxDU1NQcm9wZXJ0eT4gbV92YWx1ZXM7CiAg
ICAgTm9kZSogbV9ub2RlOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25faApJ
bmRleDogV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Y3NzcGFyc2VyLmgJKHJldmlzaW9uIDE4ODM0KQorKysgV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwLDE0ICsyMCwxNCBAQAogICogQm9zdG9uLCBNQSAwMjExMS0x
MzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NfY3NzcGFyc2VyX2hfCi0jZGVmaW5lIENTU19j
c3NwYXJzZXJfaF8KKyNpZm5kZWYgY3NzcGFyc2VyX2gKKyNkZWZpbmUgY3NzcGFyc2VyX2gKIAog
I2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAi
TWVkaWFRdWVyeS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotI2luY2x1ZGUgIk1lZGlhUXVlcnkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00MiwxMiArNDIsMTIgQEAKICAgICBjbGFzcyBDU1NWYWx1ZUxpc3Q7CiAgICAgY2xhc3Mg
RG9jdW1lbnQ7CiAgICAgY2xhc3MgTWVkaWFMaXN0OworICAgIGNsYXNzIE1lZGlhTGlzdDsKKyAg
ICBjbGFzcyBNZWRpYVF1ZXJ5RXhwOwogICAgIGNsYXNzIFN0eWxlQmFzZTsKICAgICBjbGFzcyBT
dHlsZUxpc3Q7Ci0gICAgY2xhc3MgTWVkaWFMaXN0OwotICAgIGNsYXNzIE1lZGlhUXVlcnlFeHA7
CisgICAgc3RydWN0IEZ1bmN0aW9uOwogCi0KICAgICBzdHJ1Y3QgUGFyc2VTdHJpbmcgewogICAg
ICAgICBVQ2hhciogY2hhcmFjdGVyczsKICAgICAgICAgaW50IGxlbmd0aDsKQEAgLTU1LDggKzU1
LDYgQEAKICAgICAgICAgdm9pZCBsb3dlcigpOwogICAgIH07CiAKLSAgICBzdHJ1Y3QgRnVuY3Rp
b247Ci0gICAgCiAgICAgc3RydWN0IFZhbHVlIHsKICAgICAgICAgaW50IGlkOwogICAgICAgICBi
b29sIGlzSW50OwpAQCAtNzUsMTAgKzczLDE0IEBACiAgICAgfTsKIAogICAgIERlcHJlY2F0ZWRT
dHJpbmcgZGVwcmVjYXRlZFN0cmluZyhjb25zdCBQYXJzZVN0cmluZyYpOwotICAgIHN0YXRpYyBp
bmxpbmUgU3RyaW5nIGRvbVN0cmluZyhjb25zdCBQYXJzZVN0cmluZyYgcHMpIHsKKworICAgIHN0
YXRpYyBpbmxpbmUgU3RyaW5nIGRvbVN0cmluZyhjb25zdCBQYXJzZVN0cmluZyYgcHMpCisgICAg
ewogICAgICAgICByZXR1cm4gU3RyaW5nKHBzLmNoYXJhY3RlcnMsIHBzLmxlbmd0aCk7CiAgICAg
fQotICAgIHN0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIGF0b21pY1N0cmluZyhjb25zdCBQYXJz
ZVN0cmluZyYgcHMpIHsKKworICAgIHN0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIGF0b21pY1N0
cmluZyhjb25zdCBQYXJzZVN0cmluZyYgcHMpCisgICAgewogICAgICAgICByZXR1cm4gQXRvbWlj
U3RyaW5nKHBzLmNoYXJhY3RlcnMsIHBzLmxlbmd0aCk7CiAgICAgfQogCkBAIC04NiwxMCArODgs
MTIgQEAKICAgICBwdWJsaWM6CiAgICAgICAgIFZhbHVlTGlzdCgpIDogbV9jdXJyZW50KDApIHsg
fQogICAgICAgICB+VmFsdWVMaXN0KCk7CisKICAgICAgICAgdm9pZCBhZGRWYWx1ZShjb25zdCBW
YWx1ZSYgdikgeyBtX3ZhbHVlcy5hcHBlbmQodik7IH0KICAgICAgICAgdW5zaWduZWQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLnNpemUoKTsgfQogICAgICAgICBWYWx1ZSogY3VycmVu
dCgpIHsgcmV0dXJuIG1fY3VycmVudCA8IG1fdmFsdWVzLnNpemUoKSA/ICZtX3ZhbHVlc1ttX2N1
cnJlbnRdIDogMDsgfQogICAgICAgICBWYWx1ZSogbmV4dCgpIHsgKyttX2N1cnJlbnQ7IHJldHVy
biBjdXJyZW50KCk7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxWYWx1ZSwgMTY+
IG1fdmFsdWVzOwogICAgICAgICB1bnNpZ25lZCBtX2N1cnJlbnQ7CkBAIC0xMDIsMTUgKzEwNiwx
NCBAQAogICAgICAgICB+RnVuY3Rpb24oKSB7IGRlbGV0ZSBhcmdzOyB9CiAgICAgfTsKICAgICAK
LSAgICBjbGFzcyBDU1NQYXJzZXIKLSAgICB7CisgICAgY2xhc3MgQ1NTUGFyc2VyIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIENTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcgPSB0cnVlKTsKICAg
ICAgICAgfkNTU1BhcnNlcigpOwogCiAgICAgICAgIHZvaWQgcGFyc2VTaGVldChDU1NTdHlsZVNo
ZWV0KiwgY29uc3QgU3RyaW5nJik7CiAgICAgICAgIFBhc3NSZWZQdHI8Q1NTUnVsZT4gcGFyc2VS
dWxlKENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgYm9vbCBwYXJzZVZh
bHVlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgaW50IGlkLCBjb25zdCBTdHJpbmcmLCBi
b29sIGltcG9ydGFudCk7CisgICAgICAgIGJvb2wgcGFyc2VWYWx1ZShDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbiosIGludCBwcm9wSWQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50KTsK
ICAgICAgICAgc3RhdGljIFJHQkEzMiBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYsIGJvb2wgc3Ry
aWN0ID0gZmFsc2UpOwogICAgICAgICBib29sIHBhcnNlQ29sb3IoQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24qLCBjb25zdCBTdHJpbmcmKTsKICAgICAgICAgYm9vbCBwYXJzZURlY2xhcmF0aW9u
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgU3RyaW5nJik7CkBAIC0xMzIsMTAg
KzEzNSwxMCBAQAogICAgICAgICBDU1NWYWx1ZSogcGFyc2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAg
ICAgICAgQ1NTVmFsdWUqIHBhcnNlQmFja2dyb3VuZEltYWdlKCk7CiAgICAgICAgIENTU1ZhbHVl
KiBwYXJzZUJhY2tncm91bmRQb3NpdGlvblhZKGJvb2wmIHhGb3VuZCwgYm9vbCYgeUZvdW5kKTsK
LSAgICAgICAgdm9pZCBwYXJzZUJhY2tncm91bmRQb3NpdGlvbihDU1NWYWx1ZSomIHZhbHVlMSwg
Q1NTVmFsdWUqJiB2YWx1ZTIpOworICAgICAgICB2b2lkIHBhcnNlQmFja2dyb3VuZFBvc2l0aW9u
KENTU1ZhbHVlKiYsIENTU1ZhbHVlKiYpOwogICAgICAgICBDU1NWYWx1ZSogcGFyc2VCYWNrZ3Jv
dW5kU2l6ZSgpOwogICAgICAgICAKLSAgICAgICAgYm9vbCBwYXJzZUJhY2tncm91bmRQcm9wZXJ0
eShpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgQ1NTVmFsdWUqJiByZXRW
YWx1ZTEsIENTU1ZhbHVlKiYgcmV0VmFsdWUyKTsKKyAgICAgICAgYm9vbCBwYXJzZUJhY2tncm91
bmRQcm9wZXJ0eShpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgQ1NTVmFs
dWUqJiwgQ1NTVmFsdWUqJik7CiAgICAgICAgIGJvb2wgcGFyc2VCYWNrZ3JvdW5kU2hvcnRoYW5k
KGJvb2wgaW1wb3J0YW50KTsKIAogICAgICAgICB2b2lkIGFkZEJhY2tncm91bmRWYWx1ZShDU1NW
YWx1ZSomIGx2YWwsIENTU1ZhbHVlKiBydmFsKTsKQEAgLTE0NSwxNSArMTQ4LDIwIEBACiAjZW5k
aWYKIAogICAgICAgICBib29sIHBhcnNlU2hhcGUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
OworCiAgICAgICAgIGJvb2wgcGFyc2VGb250KGJvb2wgaW1wb3J0YW50KTsKKyAgICAgICAgQ1NT
VmFsdWVMaXN0KiBwYXJzZUZvbnRGYW1pbHkoKTsKKwogICAgICAgICBib29sIHBhcnNlQ291bnRl
cihpbnQgcHJvcElkLCBpbnQgZGVmYXVsdFZhbHVlLCBib29sIGltcG9ydGFudCk7Ci0gICAgICAg
IENTU1ZhbHVlTGlzdCogcGFyc2VGb250RmFtaWx5KCk7CisgICAgICAgIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IHBhcnNlQ291bnRlckNvbnRlbnQoVmFsdWVMaXN0KiBhcmdzLCBib29sIGNvdW50ZXJz
KTsKKwogICAgICAgICBib29sIHBhcnNlQ29sb3JQYXJhbWV0ZXJzKFZhbHVlKiwgaW50KiBjb2xv
clZhbHVlcywgYm9vbCBwYXJzZUFscGhhKTsKICAgICAgICAgYm9vbCBwYXJzZUhTTFBhcmFtZXRl
cnMoVmFsdWUqLCBkb3VibGUqIGNvbG9yVmFsdWVzLCBib29sIHBhcnNlQWxwaGEpOwogICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2VDb2xvcihWYWx1ZSogPSAwKTsKICAgICAgICAgYm9v
bCBwYXJzZUNvbG9yRnJvbVZhbHVlKFZhbHVlKiwgUkdCQTMyJiwgYm9vbCA9IGZhbHNlKTsKLSAg
ICAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VDb3VudGVyQ29udGVudChWYWx1ZUxpc3Qq
IGFyZ3MsIGJvb2wgY291bnRlcnMpOwogICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgcGFy
c2VDb2xvcihjb25zdCBTdHJpbmcmLCBSR0JBMzImIHJnYiwgYm9vbCBzdHJpY3QpOworCiAjaWZk
ZWYgU1ZHX1NVUFBPUlQKICAgICAgICAgYm9vbCBwYXJzZVNWR1ZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KTsKICAgICAgICAgQ1NTVmFsdWUqIHBhcnNlU1ZHUGFpbnQoKTsKQEAgLTE2
MSw4ICsxNjksNiBAQAogICAgICAgICBDU1NWYWx1ZSogcGFyc2VTVkdTdHJva2VEYXNoYXJyYXko
KTsKICNlbmRpZgogCi0gICAgICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5n
JiwgUkdCQTMyJiByZ2IsIGJvb2wgc3RyaWN0KTsKLQogICAgICAgICAvLyBDU1MzIFBhcnNpbmcg
Um91dGluZXMgKGZvciBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIENTUzMpCiAgICAgICAgIGJvb2wg
cGFyc2VTaGFkb3coaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICBib29sIHBh
cnNlQm9yZGVySW1hZ2UoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwpAQCAtMjYzLDExICsy
NjksMTMgQEAKICAgICAgICAgfTsKIAogICAgICAgICBmcmllbmQgaW5saW5lIFVuaXRzIG9wZXJh
dG9yfChVbml0cyBhLCBVbml0cyBiKQotICAgICAgICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
VW5pdHM+KHN0YXRpY19jYXN0PHVuc2lnbmVkPihhKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihi
KSk7IH0KKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVuaXRzPihz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYSkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYikpOworICAg
ICAgICB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgdmFsaWRVbml0KFZhbHVlKiwgVW5pdHMsIGJv
b2wgc3RyaWN0KTsKICAgICB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBjc3NwYXJzZXJfaApJbmRleDogV2ViQ29yZS9jc3Mv
Y3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3Nzc3R5bGVz
ZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE4ODM0KQorKysgV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMSw3ICs0MzEsNyBAQAogICAgIGZvciAoQ1NT
UnVsZURhdGEqIGQgPSBydWxlcy0+Zmlyc3QoKTsgZDsgZCA9IGQtPm5leHQoKSkgewogICAgICAg
ICBDU1NTdHlsZVJ1bGUqIHJ1bGUgPSBkLT5ydWxlKCk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxOYW1lID0gZWxlbWVudC0+bG9jYWxOYW1lKCk7Ci0gICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgc2VsZWN0b3JMb2NhbE5hbWUgPSBkLT5zZWxlY3RvcigpLT50YWcubG9jYWxO
YW1lKCk7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JMb2NhbE5hbWUgPSBk
LT5zZWxlY3RvcigpLT5tX3RhZy5sb2NhbE5hbWUoKTsKICAgICAgICAgaWYgKChsb2NhbE5hbWUg
PT0gc2VsZWN0b3JMb2NhbE5hbWUgfHwgc2VsZWN0b3JMb2NhbE5hbWUgPT0gc3RhckF0b20pICYm
IGNoZWNrU2VsZWN0b3IoZC0+c2VsZWN0b3IoKSwgZWxlbWVudCkpIHsKICAgICAgICAgICAgIC8v
IElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdC4K
ICAgICAgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsID0gcnVsZS0+ZGVj
bGFyYXRpb24oKTsKQEAgLTEyMTYsNyArMTIxNiw3IEBACiAgICAgLy8gc28sIHdlIGNhbid0IGFs
bG93IHRoYXQgdG8gYXBwbHkgdG8gZXZlcnkgZWxlbWVudCBvbiB0aGUgcGFnZS4gIFdlIGFzc3Vt
ZSB0aGUgYXV0aG9yIGludGVuZGVkCiAgICAgLy8gdG8gYXBwbHkgdGhlIHJ1bGVzIG9ubHkgdG8g
bGlua3MuCiAgICAgYm9vbCBvbmx5SG92ZXJBY3RpdmUgPSAoIXNlbC0+aGFzVGFnKCkgJiYKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsLT5tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3MgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsLT5tX21hdGNoID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHNlbC0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlciB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbC0+cHNldWRvVHlwZSgpID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9BY3RpdmUpKSk7CiAgICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIgPSBzdHlsZSA/
IHN0eWxlLT5hZmZlY3RlZEJ5SG92ZXJSdWxlcygpIDogZmFsc2U7CkBAIC0xMjI5LDcgKzEyMjks
NyBAQAogCiAgICAgLy8gY2hlY2sgdGhlIHN1YnNlbGVjdG9ycwogICAgIENTU1NlbGVjdG9yOjpS
ZWxhdGlvbiByZWxhdGlvbiA9IHNlbC0+cmVsYXRpb24oKTsKLSAgICB3aGlsZSgoc2VsID0gc2Vs
LT50YWdIaXN0b3J5KSkgeworICAgIHdoaWxlKChzZWwgPSBzZWwtPm1fdGFnSGlzdG9yeSkpIHsK
ICAgICAgICAgaWYgKCFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGlmIChyZWxhdGlvbiAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpIHsK
QEAgLTEyODQsNyArMTI4NCw3IEBACiAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0
b3I6CiAgICAgICAgewogICAgICAgICAgICAgaWYgKG9ubHlIb3ZlckFjdGl2ZSkKLSAgICAgICAg
ICAgICAgICBvbmx5SG92ZXJBY3RpdmUgPSAoc2VsLT5tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3MgJiYKKyAgICAgICAgICAgICAgICBvbmx5SG92ZXJBY3RpdmUgPSAoc2VsLT5tX21h
dGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyAmJgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoc2VsLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0hv
dmVyIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWwtPnBzZXVkb1R5
cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQWN0aXZlKSk7CiAgICAgICAgICAgICAKQEAgLTEz
MjgsOCArMTMyOCw4IEBACiAgICAgaWYgKHNlbC0+aGFzVGFnKCkpIHsKICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBlLT5sb2NhbE5hbWUoKTsKICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBucyA9IGUtPm5hbWVzcGFjZVVSSSgpOwotICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHNlbExvY2FsTmFtZSA9IHNlbC0+dGFnLmxvY2FsTmFtZSgpOwotICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHNlbE5TID0gc2VsLT50YWcubmFtZXNwYWNlVVJJKCk7CisgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsTG9jYWxOYW1lID0gc2VsLT5tX3RhZy5sb2NhbE5h
bWUoKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxOUyA9IHNlbC0+bV90YWcubmFt
ZXNwYWNlVVJJKCk7CiAgICAgCiAgICAgICAgIGlmICgoc2VsTG9jYWxOYW1lICE9IHN0YXJBdG9t
ICYmIGxvY2FsTmFtZSAhPSBzZWxMb2NhbE5hbWUpIHx8CiAgICAgICAgICAgICAoc2VsTlMgIT0g
c3RhckF0b20gJiYgbnMgIT0gc2VsTlMpKQpAQCAtMTMzNyw0MyArMTMzNyw0MyBAQAogICAgIH0K
IAogICAgIGlmIChzZWwtPmhhc0F0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIGlmIChzZWwtPm1hdGNo
ID09IENTU1NlbGVjdG9yOjpDbGFzcykgeworICAgICAgICBpZiAoc2VsLT5tX21hdGNoID09IENT
U1NlbGVjdG9yOjpDbGFzcykgewogICAgICAgICAgICAgaWYgKCFlLT5oYXNDbGFzcygpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGZvciAoY29uc3QgQXRvbWlj
U3RyaW5nTGlzdCogYyA9IGUtPmdldENsYXNzTGlzdCgpOyBjOyBjID0gYy0+bmV4dCgpKQotICAg
ICAgICAgICAgICAgIGlmIChjLT5zdHJpbmcoKSA9PSBzZWwtPnZhbHVlKQorICAgICAgICAgICAg
ICAgIGlmIChjLT5zdHJpbmcoKSA9PSBzZWwtPm1fdmFsdWUpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
ICAgIGVsc2UgaWYgKHNlbC0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkKQotICAgICAgICAgICAg
cmV0dXJuIGUtPmhhc0lEKCkgJiYgZS0+Z2V0SURBdHRyaWJ1dGUoKSA9PSBzZWwtPnZhbHVlOwot
ICAgICAgICBlbHNlIGlmIChzdHlsZSAmJiAoZSAhPSBlbGVtZW50IHx8ICFzdHlsZWRFbGVtZW50
IHx8ICghc3R5bGVkRWxlbWVudC0+aXNNYXBwZWRBdHRyaWJ1dGUoc2VsLT5hdHRyKSAmJiBzZWwt
PmF0dHIgIT0gdHlwZUF0dHIgJiYgc2VsLT5hdHRyICE9IHJlYWRvbmx5QXR0cikpKSB7CisgICAg
ICAgIGVsc2UgaWYgKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQpCisgICAgICAgICAg
ICByZXR1cm4gZS0+aGFzSUQoKSAmJiBlLT5nZXRJREF0dHJpYnV0ZSgpID09IHNlbC0+bV92YWx1
ZTsKKyAgICAgICAgZWxzZSBpZiAoc3R5bGUgJiYgKGUgIT0gZWxlbWVudCB8fCAhc3R5bGVkRWxl
bWVudCB8fCAoIXN0eWxlZEVsZW1lbnQtPmlzTWFwcGVkQXR0cmlidXRlKHNlbC0+bV9hdHRyKSAm
JiBzZWwtPm1fYXR0ciAhPSB0eXBlQXR0ciAmJiBzZWwtPm1fYXR0ciAhPSByZWFkb25seUF0dHIp
KSkgewogICAgICAgICAgICAgc3R5bGUtPnNldEFmZmVjdGVkQnlBdHRyaWJ1dGVTZWxlY3RvcnMo
KTsgLy8gU3BlY2lhbC1jYXNlIHRoZSAidHlwZSIgYW5kICJyZWFkb25seSIgYXR0cmlidXRlcyBz
byBpbnB1dCBmb3JtIGNvbnRyb2xzIGNhbiBzaGFyZSBzdHlsZS4KLSAgICAgICAgICAgIG1fc2Vs
ZWN0b3JBdHRycy5hZGQoc2VsLT5hdHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgICAg
ICBtX3NlbGVjdG9yQXR0cnMuYWRkKHNlbC0+bV9hdHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZS0+Z2V0QXR0
cmlidXRlKHNlbC0+YXR0cik7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBl
LT5nZXRBdHRyaWJ1dGUoc2VsLT5tX2F0dHIpOwogICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dHJpYnV0ZSBpcyBub3Qgc2V0CiAKLSAg
ICAgICAgc3dpdGNoKHNlbC0+bWF0Y2gpIHsKKyAgICAgICAgc3dpdGNoKHNlbC0+bV9tYXRjaCkg
ewogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpFeGFjdDoKLSAgICAgICAgICAgIGlmICgoaXNY
TUxEb2MgJiYgc2VsLT52YWx1ZSAhPSB2YWx1ZSkgfHwgKCFpc1hNTERvYyAmJiAhZXF1YWxJZ25v
cmluZ0Nhc2Uoc2VsLT52YWx1ZSwgdmFsdWUpKSkKKyAgICAgICAgICAgIGlmICgoaXNYTUxEb2Mg
JiYgc2VsLT5tX3ZhbHVlICE9IHZhbHVlKSB8fCAoIWlzWE1MRG9jICYmICFlcXVhbElnbm9yaW5n
Q2FzZShzZWwtPm1fdmFsdWUsIHZhbHVlKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6Okxpc3Q6CiAg
ICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBzZWxlY3RvcidzIHZhbHVlIGNhbid0IGNvbnRh
aW4gYSBzcGFjZSwgb3IgaXQncyB0b3RhbGx5IGJvZ3VzLgotICAgICAgICAgICAgaWYgKHNlbC0+
dmFsdWUuY29udGFpbnMoJyAnKSkKKyAgICAgICAgICAgIGlmIChzZWwtPm1fdmFsdWUuY29udGFp
bnMoJyAnKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIGlu
dCBzdGFydFNlYXJjaEF0ID0gMDsKICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAg
ICAgICAgICAgaW50IGZvdW5kUG9zID0gdmFsdWUuZmluZChzZWwtPnZhbHVlLCBzdGFydFNlYXJj
aEF0LCBpc1hNTERvYyk7CisgICAgICAgICAgICAgICAgaW50IGZvdW5kUG9zID0gdmFsdWUuZmlu
ZChzZWwtPm1fdmFsdWUsIHN0YXJ0U2VhcmNoQXQsIGlzWE1MRG9jKTsKICAgICAgICAgICAgICAg
ICBpZiAoZm91bmRQb3MgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgICAgICBpZiAoZm91bmRQb3MgPT0gMCB8fCB2YWx1ZVtmb3VuZFBvcy0xXSA9
PSAnICcpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZW5kU3RyID0gZm91bmRQb3Mg
KyBzZWwtPnZhbHVlLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBlbmRT
dHIgPSBmb3VuZFBvcyArIHNlbC0+bV92YWx1ZS5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGVuZFN0ciA9PSB2YWx1ZS5sZW5ndGgoKSB8fCB2YWx1ZVtlbmRTdHJdID09ICcgJykK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBXZSBmb3VuZCBhIG1hdGNoLgogICAg
ICAgICAgICAgICAgIH0KQEAgLTEzODQsMjQgKzEzODQsMjQgQEAKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNvbnRhaW46Ci0gICAgICAg
ICAgICBpZiAoIXZhbHVlLmNvbnRhaW5zKHNlbC0+dmFsdWUsIGlzWE1MRG9jKSkKKyAgICAgICAg
ICAgIGlmICghdmFsdWUuY29udGFpbnMoc2VsLT5tX3ZhbHVlLCBpc1hNTERvYykpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OkJlZ2luOgotICAgICAgICAgICAgaWYgKCF2YWx1ZS5zdGFydHNXaXRoKHNl
bC0+dmFsdWUsIGlzWE1MRG9jKSkKKyAgICAgICAgICAgIGlmICghdmFsdWUuc3RhcnRzV2l0aChz
ZWwtPm1fdmFsdWUsIGlzWE1MRG9jKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RW5kOgotICAgICAg
ICAgICAgaWYgKCF2YWx1ZS5lbmRzV2l0aChzZWwtPnZhbHVlLCBpc1hNTERvYykpCisgICAgICAg
ICAgICBpZiAoIXZhbHVlLmVuZHNXaXRoKHNlbC0+bV92YWx1ZSwgaXNYTUxEb2MpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpIeXBoZW46Ci0gICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkgPCBz
ZWwtPnZhbHVlLmxlbmd0aCgpKQorICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCgpIDwgc2Vs
LT5tX3ZhbHVlLmxlbmd0aCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIGlmICghdmFsdWUuc3RhcnRzV2l0aChzZWwtPnZhbHVlLCBpc1hNTERvYykpCisgICAg
ICAgICAgICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoc2VsLT5tX3ZhbHVlLCBpc1hNTERvYykpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgLy8gSXQgdGhleSBzdGFy
dCB0aGUgc2FtZSwgY2hlY2sgZm9yIGV4YWN0IG1hdGNoIG9yIGZvbGxvd2luZyAnLSc6Ci0gICAg
ICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gc2VsLT52YWx1ZS5sZW5ndGgoKSAmJiB2YWx1
ZVtzZWwtPnZhbHVlLmxlbmd0aCgpXSAhPSAnLScpCisgICAgICAgICAgICBpZiAodmFsdWUubGVu
Z3RoKCkgIT0gc2VsLT5tX3ZhbHVlLmxlbmd0aCgpICYmIHZhbHVlW3NlbC0+bV92YWx1ZS5sZW5n
dGgoKV0gIT0gJy0nKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzczoKQEAgLTE0MTAs
NyArMTQxMCw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBp
ZihzZWwtPm1hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyB8fCBzZWwtPm1hdGNoID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KQorICAgIGlmKHNlbC0+bV9tYXRjaCA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3MgfHwgc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9FbGVtZW50KQogICAgIHsKICAgICAgICAgLy8gUHNldWRvIGVsZW1lbnRzLiBXZSBuZWVkIHRv
IGNoZWNrIGZpcnN0IGNoaWxkIGhlcmUuIE5vIGR5bmFtaWMgcHNldWRvCiAgICAgICAgIC8vIGVs
ZW1lbnRzIGZvciB0aGUgbW9tZW50CkBAIC0xNjAwLDE4ICsxNjAwLDE4IEBACiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MYW5nOiB7
CiAgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGUtPmdldEF0dHJp
YnV0ZShsYW5nQXR0cik7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSB8fCAh
dmFsdWUuc3RhcnRzV2l0aChzZWwtPmFyZ3VtZW50LCBmYWxzZSkpCisgICAgICAgICAgICAgICAg
aWYgKHZhbHVlLmlzRW1wdHkoKSB8fCAhdmFsdWUuc3RhcnRzV2l0aChzZWwtPm1fYXJndW1lbnQs
IGZhbHNlKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgaWYg
KHZhbHVlLmxlbmd0aCgpICE9IHNlbC0+YXJndW1lbnQubGVuZ3RoKCkgJiYgdmFsdWVbc2VsLT5h
cmd1bWVudC5sZW5ndGgoKV0gIT0gJy0nKQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5n
dGgoKSAhPSBzZWwtPm1fYXJndW1lbnQubGVuZ3RoKCkgJiYgdmFsdWVbc2VsLT5tX2FyZ3VtZW50
Lmxlbmd0aCgpXSAhPSAnLScpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvTm90OiB7CiAgICAgICAgICAgICAgICAgLy8gY2hlY2sgdGhlIHNpbXBs
ZSBzZWxlY3RvcgotICAgICAgICAgICAgICAgIGZvciAoQ1NTU2VsZWN0b3IqIHN1YlNlbCA9IHNl
bC0+c2ltcGxlU2VsZWN0b3I7IHN1YlNlbDsgc3ViU2VsID0gc3ViU2VsLT50YWdIaXN0b3J5KSB7
CisgICAgICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rvciogc3ViU2VsID0gc2VsLT5tX3NpbXBs
ZVNlbGVjdG9yOyBzdWJTZWw7IHN1YlNlbCA9IHN1YlNlbC0+bV90YWdIaXN0b3J5KSB7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIDpub3QgY2Fubm90IG5lc3QuIEkgZG9uJ3QgcmVhbGx5IGtub3cg
d2h5IHRoaXMgaXMgYQogICAgICAgICAgICAgICAgICAgICAvLyByZXN0cmljdGlvbiBpbiBDU1Mz
LCBidXQgaXQgaXMsIHNvIGxldCdzIGhvbm91ciBpdC4KLSAgICAgICAgICAgICAgICAgICAgaWYg
KHN1YlNlbC0+c2ltcGxlU2VsZWN0b3IpCisgICAgICAgICAgICAgICAgICAgIGlmIChzdWJTZWwt
Pm1fc2ltcGxlU2VsZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3MDMsMTYgKzE3MDMsMTYgQEAKIAog
dm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlKENTU1N0eWxlUnVsZSogcnVsZSwgQ1NTU2VsZWN0b3Iq
IHNlbCkKIHsKLSAgICBpZiAoc2VsLT5tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQpIHsKLSAgICAg
ICAgYWRkVG9SdWxlU2V0KHNlbC0+dmFsdWUuaW1wbCgpLCBtX2lkUnVsZXMsIHJ1bGUsIHNlbCk7
CisgICAgaWYgKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQpIHsKKyAgICAgICAgYWRk
VG9SdWxlU2V0KHNlbC0+bV92YWx1ZS5pbXBsKCksIG1faWRSdWxlcywgcnVsZSwgc2VsKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoc2VsLT5tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6
Q2xhc3MpIHsKLSAgICAgICAgYWRkVG9SdWxlU2V0KHNlbC0+dmFsdWUuaW1wbCgpLCBtX2NsYXNz
UnVsZXMsIHJ1bGUsIHNlbCk7CisgICAgaWYgKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6
Q2xhc3MpIHsKKyAgICAgICAgYWRkVG9SdWxlU2V0KHNlbC0+bV92YWx1ZS5pbXBsKCksIG1fY2xh
c3NSdWxlcywgcnVsZSwgc2VsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgCi0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBzZWwtPnRhZy5sb2NhbE5hbWUoKTsKKyAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IHNlbC0+bV90YWcubG9jYWxOYW1lKCk7
CiAgICAgaWYgKGxvY2FsTmFtZSAhPSBzdGFyQXRvbSkgewogICAgICAgICBhZGRUb1J1bGVTZXQo
bG9jYWxOYW1lLmltcGwoKSwgbV90YWdSdWxlcywgcnVsZSwgc2VsKTsKICAgICAgICAgcmV0dXJu
OwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNpb24gMTg4MzQpCisrKyBX
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDE3
ICsxOSwxNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAg
Ki8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgi
CiAKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNp
bmNsdWRlICJDb3VudGVyLmgiCi0jaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1
ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLQogI2luY2x1ZGUgPGN0eXBl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDkgKzUwLDEwIEBACiAgICAgKytwOwog
CiAgICAgLy8ge25tY2hhcn0qCi0gICAgZm9yICg7IHAgIT0gZW5kOyArK3ApCisgICAgZm9yICg7
IHAgIT0gZW5kOyArK3ApIHsKICAgICAgICAgaWYgKCEocFswXSA9PSAnXycgfHwgcFswXSA9PSAn
LScgfHwgaXNhbG51bShwWzBdKSB8fCBwWzBdID49IDEyOCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDYsNTkgKzEwNyw1OSBA
QAogfQogCiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoKQorICAgIDogbV90
eXBlKDApCiB7Ci0gICAgbV90eXBlID0gMDsKIH0KIAogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKGludCBpZGVudCkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCiB7CiAgICAg
bV92YWx1ZS5pZGVudCA9IGlkZW50OwotICAgIG1fdHlwZSA9IENTU19JREVOVDsKIH0KIAogQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKGRvdWJsZSBudW0sIFVuaXRUeXBlcyB0
eXBlKQorICAgIDogbV90eXBlKHR5cGUpCiB7CiAgICAgbV92YWx1ZS5udW0gPSBudW07Ci0gICAg
bV90eXBlID0gdHlwZTsKIH0KIAogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KGNvbnN0IFN0cmluZyYgc3RyLCBVbml0VHlwZXMgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQog
ewogICAgIGlmICgobV92YWx1ZS5zdHJpbmcgPSBzdHIuaW1wbCgpKSkKICAgICAgICAgbV92YWx1
ZS5zdHJpbmctPnJlZigpOwotICAgIG1fdHlwZSA9IHR5cGU7CiB9CiAKIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShQYXNzUmVmUHRyPENvdW50ZXI+IGMpCisgICAgOiBtX3R5
cGUoQ1NTX0NPVU5URVIpCiB7CiAgICAgbV92YWx1ZS5jb3VudGVyID0gYy5yZWxlYXNlUmVmKCk7
Ci0gICAgbV90eXBlID0gQ1NTX0NPVU5URVI7CiB9CiAKIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShQYXNzUmVmUHRyPFJlY3RJbXBsPiByKQorICAgIDogbV90eXBlKENTU19S
RUNUKQogewogICAgIG1fdmFsdWUucmVjdCA9IHIucmVsZWFzZVJlZigpOwotICAgIG1fdHlwZSA9
IENTU19SRUNUOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQogQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKFBhc3NSZWZQdHI8RGFzaGJvYXJkUmVnaW9uPiByKQorICAgIDogbV90
eXBlKENTU19EQVNIQk9BUkRfUkVHSU9OKQogewogICAgIG1fdmFsdWUucmVnaW9uID0gci5yZWxl
YXNlUmVmKCk7Ci0gICAgbV90eXBlID0gQ1NTX0RBU0hCT0FSRF9SRUdJT047CiB9CiAjZW5kaWYK
IAogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFJHQkEzMiBjb2xvcikKKyAg
ICA6IG1fdHlwZShDU1NfUkdCQ09MT1IpCiB7CiAgICAgbV92YWx1ZS5yZ2Jjb2xvciA9IGNvbG9y
OwotICAgIG1fdHlwZSA9IENTU19SR0JDT0xPUjsKIH0KIAogQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKFBhc3NSZWZQdHI8UGFpcj4gcCkKKyAgICA6IG1fdHlwZShDU1NfUEFJ
UikKIHsKICAgICBtX3ZhbHVlLnBhaXIgPSBwLnJlbGVhc2VSZWYoKTsKLSAgICBtX3R5cGUgPSBD
U1NfUEFJUjsKIH0KIAogQ1NTUHJpbWl0aXZlVmFsdWU6On5DU1NQcmltaXRpdmVWYWx1ZSgpCkBA
IC0yMDcsNyArMjA4LDcgQEAKICAgICAKICAgICBpZiAocmVzdWx0ID4gSU5UX01BWCB8fCByZXN1
bHQgPCBJTlRfTUlOKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gKGludClyZXN1bHQ7
ICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCk7CiB9CiAKIGludCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludChSZW5kZXJTdHlsZSAqc3R5bGUsIGRvdWJs
ZSBtdWx0aXBsaWVyKQpAQCAtMjIwLDcgKzIyMSw3IEBACiAgICAgCiAgICAgaWYgKHJlc3VsdCA+
IElOVF9NQVggfHwgcmVzdWx0IDwgSU5UX01JTikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIChpbnQpcmVzdWx0OyAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsK
IH0KIAogY29uc3QgaW50IGludE1heEZvckxlbmd0aCA9IDB4N2ZmZmZmZjsgLy8gbWF4IHZhbHVl
IGZvciBhIDI4LWJpdCBpbnQKQEAgLTIzNyw3ICsyMzgsNyBAQAogICAgIAogICAgIGlmIChyZXN1
bHQgPiBpbnRNYXhGb3JMZW5ndGggfHwgcmVzdWx0IDwgaW50TWluRm9yTGVuZ3RoKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICByZXR1cm4gKGludClyZXN1bHQ7ICAgIAorICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KHJlc3VsdCk7CiB9CiAKIC8vIExlbmd0aHMgZXhwZWN0IGFuIGludCB0aGF0
IGlzIG9ubHkgMjgtYml0cywgc28gd2UgaGF2ZSB0byBjaGVjayBmb3IgYSBkaWZmZXJlbnQgb3Zl
cmZsb3cuCkBAIC0yNTEsNyArMjUyLDcgQEAKICAgICAKICAgICBpZiAocmVzdWx0ID4gaW50TWF4
Rm9yTGVuZ3RoIHx8IHJlc3VsdCA8IGludE1pbkZvckxlbmd0aCkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgcmV0dXJuIChpbnQpcmVzdWx0OyAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
cmVzdWx0KTsKIH0KIAogc2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhTaG9y
dChSZW5kZXJTdHlsZSAqc3R5bGUpCkBAIC0yNjQsNyArMjY1LDcgQEAKICAgICAKICAgICBpZiAo
cmVzdWx0ID4gU0hSVF9NQVggfHwgcmVzdWx0IDwgU0hSVF9NSU4pCiAgICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiAoc2hvcnQpcmVzdWx0OyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
c2hvcnQ+KHJlc3VsdCk7CiB9CiAKIHNob3J0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVu
Z3RoU2hvcnQoUmVuZGVyU3R5bGUgKnN0eWxlLCBkb3VibGUgbXVsdGlwbGllcikKQEAgLTI3Nyw3
ICsyNzgsNyBAQAogICAgIAogICAgIGlmIChyZXN1bHQgPiBTSFJUX01BWCB8fCByZXN1bHQgPCBT
SFJUX01JTikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIChzaG9ydClyZXN1bHQ7ICAK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2hvcnQ+KHJlc3VsdCk7CiB9CiAKIGRvdWJsZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEZsb2F0KFJlbmRlclN0eWxlICpzdHlsZSwgYm9v
bCBhcHBseVpvb21GYWN0b3IpCkBAIC0yODcsMjIgKzI4OCwxOSBAQAogICAgIC8vIFdlIGFsd2F5
cyBhc3N1bWUgOTYgQ1NTIHBpeGVscyBpbiBhIENTUyBpbmNoLiBUaGlzIGlzIHRoZSBjb2xkIGhh
cmQgdHJ1dGggb2YgdGhlIFdlYi4KICAgICAvLyBBdCBoaWdoIERQSSwgd2UgbWF5IHNjYWxlIGEg
Q1NTIHBpeGVsLCBidXQgdGhlIHJhdGlvIG9mIHRoZSBDU1MgcGl4ZWwgdG8gdGhlIHNvLWNhbGxl
ZAogICAgIC8vICJhYnNvbHV0ZSIgQ1NTIGxlbmd0aCB1bml0cyBsaWtlIGluY2ggYW5kIHB0IGlz
IGFsd2F5cyBmaXhlZCBhbmQgbmV2ZXIgY2hhbmdlcy4KLSAgICBkb3VibGUgY3NzUGl4ZWxzUGVy
SW5jaCA9IDk2LjsKKyAgICBjb25zdCBkb3VibGUgY3NzUGl4ZWxzUGVySW5jaCA9IDk2LjA7CiAK
LSAgICBkb3VibGUgZmFjdG9yID0gMS47CisgICAgZG91YmxlIGZhY3RvciA9IDEuMDsKICAgICBz
d2l0Y2godHlwZSkgewogICAgIGNhc2UgQ1NTX0VNUzoKLSAgICAgICAgZmFjdG9yID0gYXBwbHla
b29tRmFjdG9yID8KLSAgICAgICAgICBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRT
aXplKCkgOgotICAgICAgICAgIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXpl
KCk7CisgICAgICAgICAgICBmYWN0b3IgPSBhcHBseVpvb21GYWN0b3IgPyBzdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCkgOiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuc3Bl
Y2lmaWVkU2l6ZSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU19FWFM6IHsKKyAgICAg
ICAgY2FzZSBDU1NfRVhTOgogICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSBhIGJ1ZyByaWdodCBu
b3cgd2hlcmUgdGhlIHpvb20gd2lsbCBiZSBhcHBsaWVkIG11bHRpcGxlIHRpbWVzIHRvIEVYIHVu
aXRzLgogICAgICAgICAvLyBXZSByZWFsbHkgbmVlZCB0byBjb21wdXRlIEVYIHVzaW5nIGZvbnRN
ZXRyaWNzIGZvciB0aGUgb3JpZ2luYWwgc3BlY2lmaWVkU2l6ZSBhbmQgbm90IHVzZQogICAgICAg
ICAvLyBvdXIgYWN0dWFsIGNvbnN0cnVjdGVkIHJlbmRlcmluZyBmb250LgogICAgICAgICBmYWN0
b3IgPSBzdHlsZS0+Zm9udCgpLnhIZWlnaHQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogICAg
IGNhc2UgQ1NTX1BYOgogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU19DTToKQEAgLTMxNSwx
NCArMzEzLDE0IEBACiAgICAgICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2g7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ1NTX1BUOgotICAgICAgICBmYWN0b3IgPSBjc3NQaXhlbHNQZXJJ
bmNoLzcyLjsKKyAgICAgICAgICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2ggLyA3Mi4wOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENTU19QQzoKICAgICAgICAgLy8gMSBwYyA9PSAxMiBw
dAotICAgICAgICBmYWN0b3IgPSBjc3NQaXhlbHNQZXJJbmNoKjEyLi83Mi47CisgICAgICAgICAg
ICBmYWN0b3IgPSBjc3NQaXhlbHNQZXJJbmNoICogMTIuMCAvIDcyLjA7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiAt
MS4wOwogICAgIH0KIAogICAgIHJldHVybiBnZXRGbG9hdFZhbHVlKCkgKiBmYWN0b3I7CkBAIC0z
MzIsNyArMzMwLDcgQEAKIHsKICAgICBlYyA9IDA7CiAgICAgCi0gICAgLy8gIyMjIGNoZWNrIGlm
IHByb3BlcnR5IHN1cHBvcnRzIHRoaXMgdHlwZQorICAgIC8vIEZJWE1FOiBjaGVjayBpZiBwcm9w
ZXJ0eSBzdXBwb3J0cyB0aGlzIHR5cGUKICAgICBpZiAobV90eXBlID4gQ1NTX0RJTUVOU0lPTikg
ewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTM0Nyw5ICsz
NDUsOSBAQAogCiBkb3VibGUgc2NhbGVGYWN0b3JGb3JDb252ZXJzaW9uKHVuc2lnbmVkIHNob3J0
IHVuaXRUeXBlKQogewotICAgIGRvdWJsZSBjc3NQaXhlbHNQZXJJbmNoID0gOTYuMDsKLSAgICBk
b3VibGUgZmFjdG9yID0gMS4wOworICAgIGNvbnN0IGRvdWJsZSBjc3NQaXhlbHNQZXJJbmNoID0g
OTYuMDsKICAgICAKKyAgICBkb3VibGUgZmFjdG9yID0gMS4wOwogICAgIHN3aXRjaCh1bml0VHlw
ZSkgewogICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg6CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTQxMSw3ICs0MDksNyBAQAogICAgICAgICBtX3ZhbHVlLnN0cmluZy0+cmVm
KCk7CiAgICAgICAgIG1fdHlwZSA9IHN0cmluZ1R5cGU7CiAgICAgfQotICAgIC8vICMjIyBwYXJz
ZSBpZGVudAorICAgIC8vIEZJWE1FOiBwYXJzZSBpZGVudAogfQogCiBTdHJpbmcgQ1NTUHJpbWl0
aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKCkgY29uc3QKQEAgLTQzNiwyNiArNDM0LDI3IEBACiAg
ICAgcmV0dXJuIENTU19QUklNSVRJVkVfVkFMVUU7CiB9CiAKLWJvb2wgQ1NTUHJpbWl0aXZlVmFs
dWU6OnBhcnNlU3RyaW5nKCBjb25zdCBTdHJpbmcgJi8qc3RyaW5nKi8sIGJvb2wgKQorYm9vbCBD
U1NQcmltaXRpdmVWYWx1ZTo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiAvKnN0cmluZyovLCBi
b29sIC8qc3RyaWN0Ki8pCiB7Ci0gICAgLy8gIyMjCisgICAgLy8gRklYTUUKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0SWRlbnQoKQogewotICAgIGlm
KG1fdHlwZSAhPSBDU1NfSURFTlQpIHJldHVybiAwOworICAgIGlmIChtX3R5cGUgIT0gQ1NTX0lE
RU5UKQorICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbV92YWx1ZS5pZGVudDsKIH0KIAog
U3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKIHsKLSAgICAvLyAjIyMg
cmV0dXJuIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbnN0ZWFkIG9mIGEgZ2VuZXJhdGVkIG9uZSAoZS5n
LiBjb2xvcgorICAgIC8vIEZJWE1FOiByZXR1cm4gdGhlIG9yaWdpbmFsIHZhbHVlIGluc3RlYWQg
b2YgYSBnZW5lcmF0ZWQgb25lIChlLmcuIGNvbG9yCiAgICAgLy8gbmFtZSBpZiBpdCB3YXMgc3Bl
Y2lmaWVkKSAtIGNoZWNrIHdoYXQgc3BlYyBzYXlzIGFib3V0IHRoaXMKICAgICBTdHJpbmcgdGV4
dDsKICAgICBzd2l0Y2ggKCBtX3R5cGUgKSB7CiAgICAgICAgIGNhc2UgQ1NTX1VOS05PV046Ci0g
ICAgICAgICAgICAvLyAjIyMKKyAgICAgICAgICAgIC8vIEZJWE1FCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfTlVNQkVSOgogICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6
bnVtYmVyKG1fdmFsdWUubnVtKTsKQEAgLTUwOSw3ICs1MDgsNyBAQAogICAgICAgICAgICAgdGV4
dCA9IFN0cmluZzo6bnVtYmVyKG1fdmFsdWUubnVtKSArICJraHoiOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTX0RJTUVOU0lPTjoKLSAgICAgICAgICAgIC8vICMjIworICAg
ICAgICAgICAgLy8gRklYTUUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19T
VFJJTkc6CiAgICAgICAgICAgICB0ZXh0ID0gcXVvdGVTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0
cmluZyk7CkBAIC01MjEsNyArNTIwLDcgQEAKICAgICAgICAgICAgIHRleHQgPSBnZXRWYWx1ZU5h
bWUobV92YWx1ZS5pZGVudCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1Nf
QVRUUjoKLSAgICAgICAgICAgIC8vICMjIworICAgICAgICAgICAgLy8gRklYTUUKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19DT1VOVEVSOgogICAgICAgICAgICAgdGV4dCA9
ICJjb3VudGVyKCI7CkBAIC01NDAsMTUgKzUzOSwxMiBAQAogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ1NTX1JHQkNPTE9SOiB7CiAgICAgICAgICAgICBDb2xvciBjb2xvcihtX3ZhbHVlLnJnYmNv
bG9yKTsKLSAgICAgICAgICAgIGlmIChjb2xvci5hbHBoYSgpIDwgMHhGRikKLSAgICAgICAgICAg
ICAgICB0ZXh0ID0gInJnYmEoIjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0
ZXh0ID0gInJnYigiOworICAgICAgICAgICAgdGV4dCA9IChjb2xvci5hbHBoYSgpIDwgMHhGRikg
PyAicmdiYSgiIDogInJnYigiOwogICAgICAgICAgICAgdGV4dCArPSBTdHJpbmc6Om51bWJlcihj
b2xvci5yZWQoKSkgKyAiLCAiOwogICAgICAgICAgICAgdGV4dCArPSBTdHJpbmc6Om51bWJlcihj
b2xvci5ncmVlbigpKSArICIsICI7CiAgICAgICAgICAgICB0ZXh0ICs9IFN0cmluZzo6bnVtYmVy
KGNvbG9yLmJsdWUoKSk7CiAgICAgICAgICAgICBpZiAoY29sb3IuYWxwaGEoKSA8IDB4RkYpCi0g
ICAgICAgICAgICAgICAgdGV4dCArPSAiLCAiICsgU3RyaW5nOjpudW1iZXIoKGZsb2F0KWNvbG9y
LmFscGhhKCkgLyAweEZGKTsKKyAgICAgICAgICAgICAgICB0ZXh0ICs9ICIsICIgKyBTdHJpbmc6
Om51bWJlcihzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3IuYWxwaGEoKSkgLyAweEZGKTsKICAgICAg
ICAgICAgIHRleHQgKz0gIikiOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU4
MCw0ICs1NzYsNCBAQAogICAgIHJldHVybiB0ZXh0OwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuY3BwCShyZXZpc2lvbiAxODgzNCkK
KysrIFdlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTksNiArMTksNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkg
VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0luaGVyaXRlZFZhbHVl
LmgiCiAKQEAgLTM2LDQgKzM3LDQgQEAKICAgICByZXR1cm4gImluaGVyaXQiOwogfQogCi19Cit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Nzcy9Db3VudGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ291bnRlci5oCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNv
cmUvY3NzL0NvdW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogICogQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDb3VudGVyX0gKLSNkZWZp
bmUgQ291bnRlcl9ICisjaWZuZGVmIENvdW50ZXJfaAorI2RlZmluZSBDb3VudGVyX2gKIAogI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
QEAgLTMyLDE1ICszMiwxOCBAQAogCiBjbGFzcyBDb3VudGVyIDogcHVibGljIFNoYXJlZDxDb3Vu
dGVyPiB7CiBwdWJsaWM6Ci0gICAgQ291bnRlcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsaXN0U3R5bGUsCi0g
ICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRvcikKLSAgICAgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllciksIG1fbGlzdFN0eWxlKGxpc3RTdHlsZSksIG1fc2Vw
YXJhdG9yKHNlcGFyYXRvcikgeyB9CisgICAgQ291bnRlcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsaXN0U3R5
bGUsIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRvcikKKyAgICAgICAgOiBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX2xpc3RTdHlsZShsaXN0U3R5bGUp
CisgICAgICAgICwgbV9zZXBhcmF0b3Ioc2VwYXJhdG9yKQorICAgIHsKKyAgICB9CiAKICAgICBT
dHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllciA/IG1faWRlbnRp
Zmllci0+Z2V0U3RyaW5nVmFsdWUoKSA6IFN0cmluZygpOyB9CiAgICAgU3RyaW5nIGxpc3RTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdFN0eWxlID8gbV9saXN0U3R5bGUtPmdldFN0cmluZ1Zh
bHVlKCkgOiBTdHJpbmcoKTsgfQogICAgIFN0cmluZyBzZXBhcmF0b3IoKSBjb25zdCB7IHJldHVy
biBtX3NlcGFyYXRvciA/IG1fc2VwYXJhdG9yLT5nZXRTdHJpbmdWYWx1ZSgpIDogU3RyaW5nKCk7
IH0KIAotICAgIGludCBsaXN0U3R5bGVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpc3RTdHls
ZSA/IChpbnQpIG1fbGlzdFN0eWxlLT5nZXRGbG9hdFZhbHVlKCkgOiAwOyB9CisgICAgaW50IGxp
c3RTdHlsZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdFN0eWxlID8gc3RhdGljX2Nhc3Q8
aW50PihtX2xpc3RTdHlsZS0+Z2V0RmxvYXRWYWx1ZSgpKSA6IDA7IH0KICAgICAKICAgICB2b2lk
IHNldElkZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaWRlbnRpZmllcikg
eyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAgICAgdm9pZCBzZXRMaXN0U3R5bGUoUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxlKSB7IG1fbGlzdFN0eWxlID0gbGlz
dFN0eWxlOyB9CkBAIC01Miw2ICs1NSw2IEBACiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBtX3NlcGFyYXRvcjsgIC8vIFN0cmluZwogIH07CiAKLX0gLy9uYW1lc3BhY2UKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ291bnRlcl9oCkluZGV4OiBXZWJD
b3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogICog
Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NTdHlsZURlY2xh
cmF0aW9uX0gKLSNkZWZpbmUgQ1NTU3R5bGVEZWNsYXJhdGlvbl9ICisjaWZuZGVmIENTU1N0eWxl
RGVjbGFyYXRpb25faAorI2RlZmluZSBDU1NTdHlsZURlY2xhcmF0aW9uX2gKIAogI2luY2x1ZGUg
IlN0eWxlQmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC04MSw2ICs4MSw2
IEBACiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IENTU1N0eWxlRGVj
bGFyYXRpb24mKTsKIH07CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZgorI2VuZGlmIC8vIENTU1N0eWxlRGVjbGFyYXRpb25faApJbmRleDogV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDE4ODM0KQorKysg
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw0IEBACiAvKioKLSAqIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCiAg
KgogICogQ29weXJpZ2h0IChDKSAgMjAwNCAgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCkBAIC0y
MCw4ICsxOSw4IEBACiAgKiAwMjExMS0xMzA3ICBVU0EKICAqLwogCi0jaWZuZGVmIENTU19DT01Q
VVRFRFNUWUxFX0gKLSNkZWZpbmUgQ1NTX0NPTVBVVEVEU1RZTEVfSAorI2lmbmRlZiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb25faAorI2RlZmluZSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b25faAogCiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGUu
aCIKQEAgLTYyLDEyICs2MSwxMyBAQAogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRD
c3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIHZpcnR1YWwgU3Ry
aW5nIHJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIHNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBib29sIGltcG9ydGFudCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUmVmUHRyPE5vZGU+
IG1fbm9kZTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5k
aWYgLy8gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uX2gKSW5kZXg6IFdlYkNvcmUvY3NzL0NT
U0JvcmRlckltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0JvcmRl
ckltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvY3NzL0NTU0JvcmRl
ckltYWdlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSw3IEBACiAgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz
MzAsCiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oIgogCkBAIC0yOCw4ICsyOSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTQm9yZGVySW1hZ2VWYWx1ZTo6Q1NTQm9y
ZGVySW1hZ2VWYWx1ZShQYXNzUmVmUHRyPENTU0ltYWdlVmFsdWU+IGltYWdlLAotICAgIFBhc3NS
ZWZQdHI8UmVjdEltcGw+IGltYWdlUmVjdCwgaW50IGhvcml6b250YWxSdWxlLCBpbnQgdmVydGlj
YWxSdWxlKQorQ1NTQm9yZGVySW1hZ2VWYWx1ZTo6Q1NTQm9yZGVySW1hZ2VWYWx1ZShQYXNzUmVm
UHRyPENTU0ltYWdlVmFsdWU+IGltYWdlLCBQYXNzUmVmUHRyPFJlY3RJbXBsPiBpbWFnZVJlY3Qs
IGludCBob3Jpem9udGFsUnVsZSwgaW50IHZlcnRpY2FsUnVsZSkKICAgICA6IG1faW1hZ2UoaW1h
Z2UpCiAgICAgLCBtX2ltYWdlU2xpY2VSZWN0KGltYWdlUmVjdCkKICAgICAsIG1faG9yaXpvbnRh
bFNpemVSdWxlKGhvcml6b250YWxSdWxlKQpAQCAtNjEsNCArNjEsNCBAQAogICAgIHJldHVybiB0
ZXh0OwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Nzcy9j
c3NoZWxwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc2hlbHBlci5jcHAJKHJl
dmlzaW9uIDE4ODM0KQorKysgV2ViQ29yZS9jc3MvY3NzaGVscGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODYsNCArODYsNCBAQAogICAgIHJldHVybiBuZXcgU3RyaW5nSW1wbChidWZmZXIuZGF0
YSgpLCBubCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
Y3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDE4ODM0KQorKysg
V2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOSw2ICsxOSw3IEBACiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KICAqLworCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24uaCIKIApAQCAtNjUsMTAgKzY2LDEwIEBACiAgICAgLy8gRklYTUU6IFRo
aXMgYWxsb3dzIGR1cGxpY2F0ZSBwcm9wZXJ0aWVzLgogfQogCi1DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiYgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246Om9wZXJhdG9yPShjb25zdCBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbiYgbykKK0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uJiBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6b3BlcmF0b3I9KGNvbnN0IENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uJiBvdGhlcikKIHsKICAgICAvLyBkb24ndCBhdHRhY2ggaXQgdG8gdGhlIHNh
bWUgbm9kZSwganVzdCBsZWF2ZSB0aGUgY3VycmVudCBtX25vZGUgdmFsdWUKLSAgICBtX3ZhbHVl
cyA9IG8ubV92YWx1ZXM7CisgICAgbV92YWx1ZXMgPSBvdGhlci5tX3ZhbHVlczsKICAgICByZXR1
cm4gKnRoaXM7CiB9CiAKQEAgLTgwLDkxICs4MSw3NyBAQAogCiAgICAgLy8gU2hvcnRoYW5kIGFu
ZCA0LXZhbHVlcyBwcm9wZXJ0aWVzCiAgICAgc3dpdGNoICggcHJvcGVydHlJRCApIHsKLSAgICBj
YXNlIENTU19QUk9QX0JBQ0tHUk9VTkRfUE9TSVRJT046Ci0gICAgewotICAgICAgICAvLyAjIyBJ
cyB0aGlzIGNvcnJlY3Q/IFRoZSBjb2RlIGluIGNzc3BhcnNlci5jcHAgaXMgY29uZnVzaW5nCisg
ICAgICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9QT1NJVElPTjogeworICAgICAgICAgICAg
Ly8gRklYTUU6IElzIHRoaXMgY29ycmVjdD8gVGhlIGNvZGUgaW4gY3NzcGFyc2VyLmNwcCBpcyBj
b25mdXNpbmcKICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU19QUk9QX0JB
Q0tHUk9VTkRfUE9TSVRJT05fWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU19QUk9QX0JBQ0tHUk9VTkRfUE9TSVRJT05fWSB9OwotICAgICAgICByZXR1cm4gZ2V0U2hv
cnRIYW5kVmFsdWUoIHByb3BlcnRpZXMsIDIgKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRTaG9y
dGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAyKTsKICAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9CQUNL
R1JPVU5EOgotICAgIHsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EOiB7CiAgICAg
ICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzVdID0geyBDU1NfUFJPUF9CQUNLR1JPVU5EX0lNQUdF
LCBDU1NfUFJPUF9CQUNLR1JPVU5EX1JFUEVBVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU19QUk9QX0JBQ0tHUk9VTkRfQVRUQUNITUVOVCwgQ1NTX1BST1BfQkFDS0dS
T1VORF9QT1NJVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19Q
Uk9QX0JBQ0tHUk9VTkRfQ09MT1IgfTsKLSAgICAgICAgcmV0dXJuIGdldFNob3J0SGFuZFZhbHVl
KCBwcm9wZXJ0aWVzLCA1ICk7CisgICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUo
cHJvcGVydGllcywgNSk7CiAgICAgfQotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSOgotICAgIHsK
KyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVI6IHsKICAgICAgICAgY29uc3QgaW50IHByb3Bl
cnRpZXNbM10gPSB7IENTU19QUk9QX0JPUkRFUl9XSURUSCwgQ1NTX1BST1BfQk9SREVSX1NUWUxF
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTX1BST1BfQk9SREVSX0NP
TE9SIH07Ci0gICAgICAgIHJldHVybiBnZXRTaG9ydEhhbmRWYWx1ZSggcHJvcGVydGllcywgMyAp
OworICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDMpOwog
ICAgIH0KLSAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9UT1A6Ci0gICAgeworICAgICAgICBjYXNl
IENTU19QUk9QX0JPUkRFUl9UT1A6IHsKICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10g
PSB7IENTU19QUk9QX0JPUkRFUl9UT1BfV0lEVEgsIENTU19QUk9QX0JPUkRFUl9UT1BfU1RZTEUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9CT1JERVJfVE9Q
X0NPTE9SfTsKLSAgICAgICAgcmV0dXJuIGdldFNob3J0SGFuZFZhbHVlKCBwcm9wZXJ0aWVzLCAz
ICk7CisgICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywgMyk7
CiAgICAgfQotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX1JJR0hUOgotICAgIHsKKyAgICAgICAg
Y2FzZSBDU1NfUFJPUF9CT1JERVJfUklHSFQ6IHsKICAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbM10gPSB7IENTU19QUk9QX0JPUkRFUl9SSUdIVF9XSURUSCwgQ1NTX1BST1BfQk9SREVSX1JJ
R0hUX1NUWUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTX1BST1Bf
Qk9SREVSX1JJR0hUX0NPTE9SfTsKLSAgICAgICAgcmV0dXJuIGdldFNob3J0SGFuZFZhbHVlKCBw
cm9wZXJ0aWVzLCAzICk7CisgICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJv
cGVydGllcywgMyk7CiAgICAgfQotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0JPVFRPTToKLSAg
ICB7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0JPVFRPTTogewogICAgICAgICBjb25z
dCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTX1BST1BfQk9SREVSX0JPVFRPTV9XSURUSCwgQ1NT
X1BST1BfQk9SREVSX0JPVFRPTV9TVFlMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU19QUk9QX0JPUkRFUl9CT1RUT01fQ09MT1J9OwotICAgICAgICByZXR1cm4gZ2V0
U2hvcnRIYW5kVmFsdWUoIHByb3BlcnRpZXMsIDMgKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRT
aG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAzKTsKICAgICB9Ci0gICAgY2FzZSBDU1NfUFJPUF9C
T1JERVJfTEVGVDoKLSAgICB7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0xFRlQ6IHsK
ICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU19QUk9QX0JPUkRFUl9MRUZU
X1dJRFRILCBDU1NfUFJPUF9CT1JERVJfTEVGVF9TVFlMRSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENTU19QUk9QX0JPUkRFUl9MRUZUX0NPTE9SfTsKLSAgICAgICAgcmV0
dXJuIGdldFNob3J0SGFuZFZhbHVlKCBwcm9wZXJ0aWVzLCAzICk7CisgICAgICAgICAgICByZXR1
cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywgMyk7CiAgICAgfQotICAgIGNhc2UgQ1NT
X1BST1BfT1VUTElORToKLSAgICB7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfT1VUTElORTogewog
ICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTX1BST1BfT1VUTElORV9XSURU
SCwgQ1NTX1BST1BfT1VUTElORV9TVFlMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU19QUk9QX09VVExJTkVfQ09MT1IgfTsKLSAgICAgICAgcmV0dXJuIGdldFNob3J0
SGFuZFZhbHVlKCBwcm9wZXJ0aWVzLCAzICk7CisgICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRo
YW5kVmFsdWUocHJvcGVydGllcywgMyk7CiAgICAgfQotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVS
X0NPTE9SOgotICAgIHsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfQ09MT1I6IHsKICAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU19QUk9QX0JPUkRFUl9UT1BfQ09M
T1IsIENTU19QUk9QX0JPUkRFUl9SSUdIVF9DT0xPUiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU19QUk9QX0JPUkRFUl9CT1RUT01fQ09MT1IsIENTU19QUk9QX0JPUkRF
Ul9MRUZUX0NPTE9SIH07CiAgICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKCBwcm9wZXJ0aWVzICk7
CiAgICAgfQotICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX1dJRFRIOgotICAgIHsKKyAgICAgICAg
Y2FzZSBDU1NfUFJPUF9CT1JERVJfV0lEVEg6IHsKICAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbNF0gPSB7IENTU19QUk9QX0JPUkRFUl9UT1BfV0lEVEgsIENTU19QUk9QX0JPUkRFUl9SSUdI
VF9XSURUSCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9QX0JP
UkRFUl9CT1RUT01fV0lEVEgsIENTU19QUk9QX0JPUkRFUl9MRUZUX1dJRFRIIH07CiAgICAgICAg
IHJldHVybiBnZXQ0VmFsdWVzKCBwcm9wZXJ0aWVzICk7CiAgICAgfQotICAgIGNhc2UgQ1NTX1BS
T1BfQk9SREVSX1NUWUxFOgotICAgIHsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfU1RZ
TEU6IHsKICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU19QUk9QX0JPUkRF
Ul9UT1BfU1RZTEUsIENTU19QUk9QX0JPUkRFUl9SSUdIVF9TVFlMRSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9QX0JPUkRFUl9CT1RUT01fU1RZTEUsIENTU19Q
Uk9QX0JPUkRFUl9MRUZUX1NUWUxFIH07CiAgICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKCBwcm9w
ZXJ0aWVzICk7CiAgICAgfQotICAgIGNhc2UgQ1NTX1BST1BfTUFSR0lOOgotICAgIHsKKyAgICAg
ICAgY2FzZSBDU1NfUFJPUF9NQVJHSU46IHsKICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNb
NF0gPSB7IENTU19QUk9QX01BUkdJTl9UT1AsIENTU19QUk9QX01BUkdJTl9SSUdIVCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19QUk9QX01BUkdJTl9CT1RUT00sIENT
U19QUk9QX01BUkdJTl9MRUZUIH07CiAgICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKCBwcm9wZXJ0
aWVzICk7CiAgICAgfQotICAgIGNhc2UgQ1NTX1BST1BfUEFERElORzoKLSAgICB7CisgICAgICAg
IGNhc2UgQ1NTX1BST1BfUEFERElORzogewogICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0
XSA9IHsgQ1NTX1BST1BfUEFERElOR19UT1AsIENTU19QUk9QX1BBRERJTkdfUklHSFQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfUFJPUF9QQURESU5HX0JPVFRPTSwg
Q1NTX1BST1BfUEFERElOR19MRUZUIH07CiAgICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKCBwcm9w
ZXJ0aWVzICk7CiAgICAgfQotICAgIGNhc2UgQ1NTX1BST1BfTElTVF9TVFlMRToKLSAgICB7Cisg
ICAgICAgIGNhc2UgQ1NTX1BST1BfTElTVF9TVFlMRTogewogICAgICAgICBjb25zdCBpbnQgcHJv
cGVydGllc1szXSA9IHsgQ1NTX1BST1BfTElTVF9TVFlMRV9UWVBFLCBDU1NfUFJPUF9MSVNUX1NU
WUxFX1BPU0lUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTX1BS
T1BfTElTVF9TVFlMRV9JTUFHRSB9OwotICAgICAgICByZXR1cm4gZ2V0U2hvcnRIYW5kVmFsdWUo
IHByb3BlcnRpZXMsIDMgKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShw
cm9wZXJ0aWVzLCAzKTsKICAgICB9CiAgICAgfQogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE3
Niw4ICsxNjMsMTEgQEAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgewogICAgICAg
ICBpZiAoIWlzUHJvcGVydHlJbXBsaWNpdChwcm9wZXJ0aWVzW2ldKSkgewogICAgICAgICAgICAg
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1tp
XSk7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlKSAvLyBhcHBhcmVudGx5IGFsbCA0IHByb3BlcnRp
ZXMgbXVzdCBiZSBzcGVjaWZpZWQuCisKKyAgICAgICAgICAgIC8vIGFwcGFyZW50bHkgYWxsIDQg
cHJvcGVydGllcyBtdXN0IGJlIHNwZWNpZmllZC4KKyAgICAgICAgICAgIGlmICghdmFsdWUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworCiAgICAgICAgICAgICBpZiAoIXJlcy5p
c051bGwoKSkKICAgICAgICAgICAgICAgICByZXMgKz0gIiAiOwogICAgICAgICAgICAgcmVzICs9
IHZhbHVlLT5jc3NUZXh0KCk7CkBAIC0xODYsMTMgKzE3NiwxNCBAQAogICAgIHJldHVybiByZXM7
CiB9CiAKLVN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0U2hvcnRIYW5kVmFs
dWUoIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bWJlciApIGNvbnN0CitTdHJpbmcgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldFNob3J0aGFuZFZhbHVlKGNvbnN0IGludCogcHJv
cGVydGllcywgaW50IG51bWJlcikgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzOwogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtYmVyOyArK2kpIHsKICAgICAgICAgaWYgKCFpc1Byb3BlcnR5SW1w
bGljaXQocHJvcGVydGllc1tpXSkpIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFs
dWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnRpZXNbaV0pOwotICAgICAgICAgICAgaWYg
KHZhbHVlKSB7IC8vIFRPRE8gcHJvdmlkZSBkZWZhdWx0IHZhbHVlIGlmICF2YWx1ZQorICAgICAg
ICAgICAgLy8gRklYTUU6IHByb3ZpZGUgZGVmYXVsdCB2YWx1ZSBpZiAhdmFsdWUKKyAgICAgICAg
ICAgIGlmICh2YWx1ZSkgewogICAgICAgICAgICAgICAgIGlmICghcmVzLmlzTnVsbCgpKQogICAg
ICAgICAgICAgICAgICAgICByZXMgKz0gIiAiOwogICAgICAgICAgICAgICAgIHJlcyArPSB2YWx1
ZS0+Y3NzVGV4dCgpOwpAQCAtMjA1LDkgKzE5NiwxMCBAQAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3Bl
cnR5SUQpIGNvbnN0CiB7CiAgICAgRGVwcmVjYXRlZFZhbHVlTGlzdENvbnN0SXRlcmF0b3I8Q1NT
UHJvcGVydHk+IGVuZDsKLSAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJhdG9y
PENTU1Byb3BlcnR5PiBpdCA9IG1fdmFsdWVzLmZyb21MYXN0KCk7IGl0ICE9IGVuZDsgLS1pdCkK
KyAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBp
dCA9IG1fdmFsdWVzLmZyb21MYXN0KCk7IGl0ICE9IGVuZDsgLS1pdCkgewogICAgICAgICBpZiAo
cHJvcGVydHlJRCA9PSAoKml0KS5tX2lkKQogICAgICAgICAgICAgcmV0dXJuICgqaXQpLnZhbHVl
KCk7CisgICAgfQogICAgIHJldHVybiAwOwogfQogCkBAIC0zODIsNyArMzc0LDcgQEAKICAgICBT
dHJpbmcgdmFsdWU7CiAKICAgICBEZXByZWNhdGVkVmFsdWVMaXN0SXRlcmF0b3I8Q1NTUHJvcGVy
dHk+IGVuZDsKLSAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3RJdGVyYXRvcjxDU1NQcm9wZXJ0
eT4gaXQgPSBtX3ZhbHVlcy5mcm9tTGFzdCgpOyBpdCAhPSBlbmQ7IC0taXQpCisgICAgZm9yIChE
ZXByZWNhdGVkVmFsdWVMaXN0SXRlcmF0b3I8Q1NTUHJvcGVydHk+IGl0ID0gbV92YWx1ZXMuZnJv
bUxhc3QoKTsgaXQgIT0gZW5kOyAtLWl0KSB7CiAgICAgICAgIGlmIChwcm9wZXJ0eUlEID09ICgq
aXQpLm1faWQpIHsKICAgICAgICAgICAgIHZhbHVlID0gKCppdCkudmFsdWUoKS0+Y3NzVGV4dCgp
OwogICAgICAgICAgICAgbV92YWx1ZXMucmVtb3ZlKGl0KTsKQEAgLTM5MCw2ICszODIsNyBAQAog
ICAgICAgICAgICAgICAgIHNldENoYW5nZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CisgICAgfQogCiAgICAgcmV0dXJuIHZhbHVlOwogfQpAQCAtNDEyLDcgKzQwNSw3IEBACiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyAjIyMgcXVpY2smZGlydHkgaGFjayBmb3Ig
S0RFIDMuMC4uLiBtYWtlIHRoaXMgTVVDSCBiZXR0ZXIhIChEaXJrKQorICAgIC8vIEZJWE1FOiBx
dWljayZkaXJ0eSBoYWNrIGZvciBLREUgMy4wLi4uIG1ha2UgdGhpcyBNVUNIIGJldHRlciEgKERp
cmspCiAgICAgU3R5bGVCYXNlKiByb290ID0gdGhpczsKICAgICB3aGlsZSAoU3R5bGVCYXNlICpw
YXJlbnQgPSByb290LT5wYXJlbnQoKSkKICAgICAgICAgcm9vdCA9IHBhcmVudDsKQEAgLTQyMywy
NyArNDE2LDMwIEBACiBib29sIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0
eVByaW9yaXR5KGludCBwcm9wZXJ0eUlEKSBjb25zdAogewogICAgIERlcHJlY2F0ZWRWYWx1ZUxp
c3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBlbmQ7Ci0gICAgZm9yIChEZXByZWNhdGVkVmFs
dWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRv
cjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
ICAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gKCppdCkuaWQoKSkKICAgICAgICAgICAgIHJldHVy
biAoKml0KS5pc0ltcG9ydGFudCgpOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGlu
dCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlTaG9ydGhhbmQoaW50IHBy
b3BlcnR5SUQpIGNvbnN0CiB7CiAgICAgRGVwcmVjYXRlZFZhbHVlTGlzdENvbnN0SXRlcmF0b3I8
Q1NTUHJvcGVydHk+IGVuZDsKLSAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJh
dG9yPENTU1Byb3BlcnR5PiBpdCA9IG1fdmFsdWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
KyAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBp
dCA9IG1fdmFsdWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAocHJv
cGVydHlJRCA9PSAoKml0KS5pZCgpKQogICAgICAgICAgICAgcmV0dXJuICgqaXQpLnNob3J0aGFu
ZElEKCk7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6aXNQcm9wZXJ0eUltcGxpY2l0KGludCBwcm9wZXJ0eUlEKSBjb25zdAog
ewogICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBlbmQ7
Ci0gICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4g
aXQgPSBtX3ZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgZm9yIChEZXByZWNh
dGVkVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBtX3ZhbHVlcy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gKCppdCku
aWQoKSkKICAgICAgICAgICAgIHJldHVybiAoKml0KS5pc0ltcGxpY2l0KCk7CisgICAgfQogICAg
IHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDk3LDEwICs0OTMsMTAgQEAKICAgICBzZXRDaGFuZ2Vk
KCk7CiB9CiAKLXZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldEltYWdlUHJvcGVy
dHkoaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyAmVVJMLCBib29sIGltcG9ydGFudCkKK3Zv
aWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldEltYWdlUHJvcGVydHkoaW50IHByb3Bl
cnR5SWQsIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGltcG9ydGFudCkKIHsKICAgICByZW1vdmVQ
cm9wZXJ0eShwcm9wZXJ0eUlkKTsKLSAgICBtX3ZhbHVlcy5hcHBlbmQoQ1NTUHJvcGVydHkocHJv
cGVydHlJZCwgbmV3IENTU0ltYWdlVmFsdWUoVVJMLCB0aGlzKSwgaW1wb3J0YW50KSk7CisgICAg
bV92YWx1ZXMuYXBwZW5kKENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIG5ldyBDU1NJbWFnZVZhbHVl
KHVybCwgdGhpcyksIGltcG9ydGFudCkpOwogICAgIHNldENoYW5nZWQoKTsKIH0KIApAQCAtNTIy
LDExICs1MTgsMTEgQEAKICAgICAvLyBhIG5vdGlmeUNoYW5nZWQgYXJndW1lbnQgdG8gdGhpcyBm
dW5jdGlvbiB0byBmb2xsb3cgdGhlIG1vZGVsIG9mIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIGNs
YXNzLgogfQogCi12b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRMZW5ndGhQcm9w
ZXJ0eShpbnQgaWQsIGNvbnN0IFN0cmluZyAmdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIC8q
IG11bHRpTGVuZ3RoKi8pCit2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRMZW5n
dGhQcm9wZXJ0eShpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBv
cnRhbnQsIGJvb2wgLyptdWx0aUxlbmd0aCovKQogewogICAgIGJvb2wgcGFyc2VNb2RlID0gdXNl
U3RyaWN0UGFyc2luZygpOwogICAgIHNldFN0cmljdFBhcnNpbmcoZmFsc2UpOwotICAgIHNldFBy
b3BlcnR5KGlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICBzZXRQcm9wZXJ0eShwcm9wZXJ0eUlk
LCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICBzZXRTdHJpY3RQYXJzaW5nKHBhcnNlTW9kZSk7CiB9
CiAKQEAgLTYzOCw0ICs2MzQsNCBAQAogICAgIHJldHVybiBuZXcgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24oMCwgbV92YWx1ZXMpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy9DU1NJbml0aWFsVmFsdWUuaAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3JlL2Nzcy9D
U1NJbml0aWFsVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsMjAgKzIwLDE5IEBACiAgKiBC
b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU0luaXRpYWxWYWx1
ZV9ICi0jZGVmaW5lIENTU0luaXRpYWxWYWx1ZV9ICisjaWZuZGVmIENTU0luaXRpYWxWYWx1ZV9o
CisjZGVmaW5lIENTU0luaXRpYWxWYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENTU0luaXRpYWxWYWx1ZSA6IHB1YmxpYyBDU1NW
YWx1ZQoteworY2xhc3MgQ1NTSW5pdGlhbFZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IGNzc1ZhbHVlVHlwZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKIH07CiAKLX0gLy8gbmFtZXNwYWNlCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIENTU0luaXRpYWxWYWx1
ZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NSdWxlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9jc3MvQ1NTUnVsZUxpc3QuY3BwCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvY3Nz
L0NTU1J1bGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQAogICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCiAKQEAgLTMyLDEyICszMywxMiBAQAog
ewogfQogCi1DU1NSdWxlTGlzdDo6Q1NTUnVsZUxpc3QoU3R5bGVMaXN0KiBsc3QsIGJvb2wgb21p
dENoYXJzZXRSdWxlcykKK0NTU1J1bGVMaXN0OjpDU1NSdWxlTGlzdChTdHlsZUxpc3QqIGxpc3Qs
IGJvb2wgb21pdENoYXJzZXRSdWxlcykKIHsKLSAgICBpZiAobHN0KSB7Ci0gICAgICAgIHVuc2ln
bmVkIGxlbiA9IGxzdC0+bGVuZ3RoKCk7CisgICAgaWYgKGxpc3QpIHsKKyAgICAgICAgdW5zaWdu
ZWQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW47ICsraSkgewotICAgICAgICAgICAgU3R5bGVCYXNlKiBzdHlsZSA9IGxzdC0+aXRlbShp
KTsKKyAgICAgICAgICAgIFN0eWxlQmFzZSogc3R5bGUgPSBsaXN0LT5pdGVtKGkpOwogICAgICAg
ICAgICAgaWYgKHN0eWxlLT5pc1J1bGUoKSAmJiAhKG9taXRDaGFyc2V0UnVsZXMgJiYgc3R5bGUt
PmlzQ2hhcnNldFJ1bGUoKSkpCiAgICAgICAgICAgICAgICAgYXBwZW5kKHN0YXRpY19jYXN0PENT
U1J1bGUqPihzdHlsZSkpOwogICAgICAgICB9CkBAIC01Nyw3ICs1OCw3IEBACiAgICAgaWYgKHJ1
bGUpCiAgICAgICAgIHJ1bGUtPmRlcmVmKCk7CiAgICAgZWxzZQotICAgICAgICA7IC8vICMjIyBU
aHJvdyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24gaGVyZSAoVE9ETykKKyAgICAgICAgOyAvLyBG
SVhNRTogVGhyb3cgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uIGhlcmUKIH0KIAogdm9pZCBDU1NS
dWxlTGlzdDo6YXBwZW5kKENTU1J1bGUqIHJ1bGUpCkBAIC03Miw4ICs3Myw4IEBACiAgICAgICAg
IHJldHVybiBpbmRleDsKICAgICB9CiAKLSAgICAvLyAjIyMgU2hvdWxkIHRocm93IElOREVYX1NJ
WkVfRVJSIGV4Y2VwdGlvbiBpbnN0ZWFkISAoVE9ETykKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRo
cm93IElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbiBpbnN0ZWFkIQogICAgIHJldHVybiAwOwogfQog
Ci19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0
aW9uLmNwcAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksNyBAQAogICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICog
Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKIApAQCAtNTIsMTIgKzUzLDEyIEBACiAg
ICAgICAgIGJ1ZmZlcltpXSA9IGM7CiAgICAgfQogCi0gICAgaW50IGlkID0gZ2V0UHJvcGVydHlJ
RChidWZmZXIsIGxlbik7CisgICAgaW50IHByb3BJRCA9IGdldFByb3BlcnR5SUQoYnVmZmVyLCBs
ZW4pOwogI2lmZGVmIFNWR19TVVBQT1JUCi0gICAgaWYgKGlkID09IDApCi0gICAgICAgIGlkID0g
U1ZHOjpnZXRTVkdDU1NQcm9wZXJ0eUlEKGJ1ZmZlciwgbGVuKTsKKyAgICBpZiAoIXByb3BJRCkK
KyAgICAgICAgcHJvcElEID0gU1ZHOjpnZXRTVkdDU1NQcm9wZXJ0eUlEKGJ1ZmZlciwgbGVuKTsK
ICNlbmRpZgotICAgIHJldHVybiBpZDsKKyAgICByZXR1cm4gcHJvcElEOwogfQogCiBDU1NTdHls
ZURlY2xhcmF0aW9uOjpDU1NTdHlsZURlY2xhcmF0aW9uKENTU1J1bGUqIHBhcmVudCkKQEAgLTEy
NSw3ICsxMjYsOCBAQAogdm9pZCBDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5n
JiBwcmlvcml0eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaW50IHByb3BJRCA9IHByb3Bl
cnR5SUQocHJvcGVydHlOYW1lKTsKLSAgICBpZiAoIXByb3BJRCkgLy8gc2V0IGV4Y2VwdGlvbj8K
KyAgICBpZiAoIXByb3BJRCkKKyAgICAgICAgLy8gRklYTUU6IHNldCBleGNlcHRpb24/CiAgICAg
ICAgIHJldHVybjsKICAgICBib29sIGltcG9ydGFudCA9IHByaW9yaXR5LmZpbmQoImltcG9ydGFu
dCIsIDAsIGZhbHNlKSAhPSAtMTsKICAgICBzZXRQcm9wZXJ0eShwcm9wSUQsIHZhbHVlLCBpbXBv
cnRhbnQsIGVjKTsKQEAgLTE3OCw0ICsxODAsNCBAQAogICAgIHJldHVybiBuZXcgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24oMCwgbGlzdCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4
IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU1By
aW1pdGl2ZVZhbHVlX0gKLSNkZWZpbmUgQ1NTUHJpbWl0aXZlVmFsdWVfSAorI2lmbmRlZiBDU1NQ
cmltaXRpdmVWYWx1ZV9oCisjZGVmaW5lIENTU1ByaW1pdGl2ZVZhbHVlX2gKIAogI2luY2x1ZGUg
IkNTU1ZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTM3LDggKzM3LDcg
QEAKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgQ1NTUHJpbWl0aXZlVmFs
dWUgOiBwdWJsaWMgQ1NTVmFsdWUKLXsKK2NsYXNzIENTU1ByaW1pdGl2ZVZhbHVlIDogcHVibGlj
IENTU1ZhbHVlIHsKIHB1YmxpYzoKICAgICBlbnVtIFVuaXRUeXBlcyB7CiAgICAgICAgIENTU19V
TktOT1dOID0gMCwKQEAgLTExOCwyOSArMTE3LDE3IEBACiAgICAgdm9pZCBzZXRTdHJpbmdWYWx1
ZSh1bnNpZ25lZCBzaG9ydCBzdHJpbmdUeXBlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5nIGdldFN0cmluZ1ZhbHVlKCkgY29uc3Q7CiAgICAg
Ci0gICAgQ291bnRlciogZ2V0Q291bnRlclZhbHVlICgpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJu
IG1fdHlwZSAhPSBDU1NfQ09VTlRFUiA/IDAgOiBtX3ZhbHVlLmNvdW50ZXI7Ci0gICAgfQorICAg
IENvdW50ZXIqIGdldENvdW50ZXJWYWx1ZSAoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gQ1NT
X0NPVU5URVIgPyAwIDogbV92YWx1ZS5jb3VudGVyOyB9CisgICAgUmVjdEltcGwqIGdldFJlY3RW
YWx1ZSAoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gQ1NTX1JFQ1QgPyAwIDogbV92YWx1ZS5y
ZWN0OyB9CisgICAgdW5zaWduZWQgZ2V0UkdCQ29sb3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSAhPSBDU1NfUkdCQ09MT1IgPyAwIDogbV92YWx1ZS5yZ2Jjb2xvcjsgfQorICAgIFBhaXIq
IGdldFBhaXJWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBDU1NfUEFJUiA/IDAgOiBt
X3ZhbHVlLnBhaXI7IH0KIAotICAgIFJlY3RJbXBsKiBnZXRSZWN0VmFsdWUgKCkgY29uc3Qgewot
ICAgICAgICByZXR1cm4gbV90eXBlICE9IENTU19SRUNUID8gMCA6IG1fdmFsdWUucmVjdDsKLSAg
ICB9Ci0KLSAgICB1bnNpZ25lZCBnZXRSR0JDb2xvclZhbHVlKCkgY29uc3QgewotICAgICAgICBy
ZXR1cm4gbV90eXBlICE9IENTU19SR0JDT0xPUiA/IDAgOiBtX3ZhbHVlLnJnYmNvbG9yOwotICAg
IH0KLQotICAgIFBhaXIqIGdldFBhaXJWYWx1ZSgpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIG1f
dHlwZSAhPSBDU1NfUEFJUiA/IDAgOiBtX3ZhbHVlLnBhaXI7Ci0gICAgfQotCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIERhc2hib2FyZFJlZ2lvbiAqZ2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUgKCkg
Y29uc3QgewotICAgICAgICByZXR1cm4gbV90eXBlICE9IENTU19EQVNIQk9BUkRfUkVHSU9OID8g
MCA6IG1fdmFsdWUucmVnaW9uOwotICAgIH0KKyAgICBEYXNoYm9hcmRSZWdpb24gKmdldERhc2hi
b2FyZFJlZ2lvblZhbHVlICgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBDU1NfREFTSEJPQVJE
X1JFR0lPTiA/IDAgOiBtX3ZhbHVlLnJlZ2lvbjsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNQcmltaXRpdmVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHZpcnR1
YWwgdW5zaWduZWQgc2hvcnQgY3NzVmFsdWVUeXBlKCkgY29uc3Q7CiAKICAgICBpbnQgZ2V0SWRl
bnQoKTsKQEAgLTE2Niw2ICsxNTMsNiBAQAogICAgIH0gbV92YWx1ZTsKIH07CiAKLX0gLy8gbmFt
ZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIENTU1By
aW1pdGl2ZVZhbHVlX2gKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkJKHJldmlzaW9uIDE4ODM0KQorKysgV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55CSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBACiAgICAg
cmV0dXJuIHByb3BzUHRyLT5pZDsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBz
dGF0aWMgaW5saW5lIGludCBnZXRWYWx1ZUlEKGNvbnN0IGNoYXIqIHRhZ1N0ciwgaW50IGxlbikK
IHsKQEAgLTYwMywxMCArNjAzLDkgQEAKICAgICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRp
Y19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAg
ICAgICAgJCQtPmFwcGVuZChwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCkpOwotICAgICAgICB9
IGVsc2UgeworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICQkID0gMDsKICAgICAgICAgfQot
ICAgIH0KICAgfCBzZWxlY3Rvcl9saXN0IGVycm9yIHsKICAgICAgICAgJCQgPSAwOwogICAgIH0K
QEAgLTYxOCwxNiArNjE3LDE1IEBACiAgICAgfQogICAgIHwgc2VsZWN0b3IgY29tYmluYXRvciBz
aW1wbGVfc2VsZWN0b3IgewogICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoISQxKSB7Cisg
ICAgICAgIGlmICghJDEpCiAgICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIH0KICAgICAgICAg
ZWxzZSBpZiAoJCQpIHsKICAgICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENT
U1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICAgICBDU1NTZWxlY3RvciogZW5kID0gJCQ7Ci0g
ICAgICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KQotICAgICAgICAgICAgICAgIGVuZCA9
IGVuZC0+dGFnSGlzdG9yeTsKKyAgICAgICAgICAgIHdoaWxlIChlbmQtPm1fdGFnSGlzdG9yeSkK
KyAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPm1fdGFnSGlzdG9yeTsKICAgICAgICAgICAgIGVu
ZC0+bV9yZWxhdGlvbiA9ICQyOwotICAgICAgICAgICAgZW5kLT50YWdIaXN0b3J5ID0gcC0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3IoJDEpOworICAgICAgICAgICAgZW5kLT5tX3RhZ0hpc3RvcnkgPSBw
LT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSk7CiAgICAgICAgICAgICBpZiAoJDIgPT0gQ1NTU2Vs
ZWN0b3I6OkRlc2NlbmRhbnQgfHwgJDIgPT0gQ1NTU2VsZWN0b3I6OkNoaWxkKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBwLT5kb2N1bWVudCgpKQogICAgICAgICAgICAg
ICAgICAgICBkb2MtPnNldFVzZXNEZXNjZW5kYW50UnVsZXModHJ1ZSk7CkBAIC02NTIsMzEgKzY1
MCwzMSBAQAogICAgIGVsZW1lbnRfbmFtZSBtYXliZV9zcGFjZSB7CiAgICAgICAgIENTU1BhcnNl
ciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlciAqPihwYXJzZXIpOwogICAgICAgICAkJCA9IHAt
PmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnRhZyA9IFF1YWxpZmllZE5h
bWUobnVsbEF0b20sIGF0b21pY1N0cmluZygkMSksIHAtPmRlZmF1bHROYW1lc3BhY2UpOworICAg
ICAgICAkJC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBhdG9taWNTdHJpbmcoJDEp
LCBwLT5kZWZhdWx0TmFtZXNwYWNlKTsKICAgICB9CiAgICAgfCBlbGVtZW50X25hbWUgc3BlY2lm
aWVyX2xpc3QgbWF5YmVfc3BhY2UgewogICAgICAgICAkJCA9ICQyOwogICAgICAgICBpZiAoJCQp
IHsKICAgICAgICAgICAgIENTU1BhcnNlciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlciAqPihw
YXJzZXIpOwotICAgICAgICAgICAgJCQtPnRhZyA9IFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGF0
b21pY1N0cmluZygkMSksIHAtPmRlZmF1bHROYW1lc3BhY2UpOworICAgICAgICAgICAgJCQtPm1f
dGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgYXRvbWljU3RyaW5nKCQxKSwgcC0+ZGVmYXVs
dE5hbWVzcGFjZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCBtYXli
ZV9zcGFjZSB7CiAgICAgICAgICQkID0gJDE7CiAgICAgICAgIENTU1BhcnNlciAqcCA9IHN0YXRp
Y19jYXN0PENTU1BhcnNlciAqPihwYXJzZXIpOwogICAgICAgICBpZiAoJCQgJiYgcC0+ZGVmYXVs
dE5hbWVzcGFjZSAhPSBzdGFyQXRvbSkKLSAgICAgICAgICAgICQkLT50YWcgPSBRdWFsaWZpZWRO
YW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgcC0+ZGVmYXVsdE5hbWVzcGFjZSk7CisgICAgICAgICAg
ICAkJC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgcC0+ZGVmYXVs
dE5hbWVzcGFjZSk7CiAgICAgfQogICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFt
ZSBtYXliZV9zcGFjZSB7CiAgICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSBh
dG9taWNTdHJpbmcoJDEpOwogICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQ
YXJzZXIgKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7CiAgICAgICAgIGlmIChwLT5zdHlsZUVsZW1lbnQgJiYgcC0+c3R5bGVFbGVtZW50LT5pc0NT
U1N0eWxlU2hlZXQoKSkKLSAgICAgICAgICAgICQkLT50YWcgPSBRdWFsaWZpZWROYW1lKG5hbWVz
cGFjZVByZWZpeCwKKyAgICAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobmFtZXNw
YWNlUHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljU3Ry
aW5nKCQyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PENTU1N0eWxlU2hlZXQqPihwLT5zdHlsZUVsZW1lbnQpLT5kZXRlcm1pbmVOYW1lc3BhY2UobmFt
ZXNwYWNlUHJlZml4KSk7CiAgICAgICAgIGVsc2UgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlzIGNh
c2UgYmUgYW4gZXJyb3I/Ci0gICAgICAgICAgICAkJC0+dGFnID0gUXVhbGlmaWVkTmFtZShudWxs
QXRvbSwgYXRvbWljU3RyaW5nKCQyKSwgcC0+ZGVmYXVsdE5hbWVzcGFjZSk7CisgICAgICAgICAg
ICAkJC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBhdG9taWNTdHJpbmcoJDIpLCBw
LT5kZWZhdWx0TmFtZXNwYWNlKTsKICAgICB9CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxl
bWVudF9uYW1lIHNwZWNpZmllcl9saXN0IG1heWJlX3NwYWNlIHsKICAgICAgICAgJCQgPSAkMzsK
QEAgLTY4NCwxMSArNjgyLDExIEBACiAgICAgICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNwYWNl
UHJlZml4ID0gYXRvbWljU3RyaW5nKCQxKTsKICAgICAgICAgICAgIENTU1BhcnNlciAqcCA9IHN0
YXRpY19jYXN0PENTU1BhcnNlciAqPihwYXJzZXIpOwogICAgICAgICAgICAgaWYgKHAtPnN0eWxl
RWxlbWVudCAmJiBwLT5zdHlsZUVsZW1lbnQtPmlzQ1NTU3R5bGVTaGVldCgpKQotICAgICAgICAg
ICAgICAgICQkLT50YWcgPSBRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwKKyAgICAgICAg
ICAgICAgICAkJC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdG9taWNTdHJpbmcoJDIpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1N0eWxl
U2hlZXQqPihwLT5zdHlsZUVsZW1lbnQpLT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJl
Zml4KSk7CiAgICAgICAgICAgICBlbHNlIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyBjYXNlIGJl
IGFuIGVycm9yPwotICAgICAgICAgICAgICAgICQkLT50YWcgPSBRdWFsaWZpZWROYW1lKG51bGxB
dG9tLCBhdG9taWNTdHJpbmcoJDIpLCBwLT5kZWZhdWx0TmFtZXNwYWNlKTsKKyAgICAgICAgICAg
ICAgICAkJC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBhdG9taWNTdHJpbmcoJDIp
LCBwLT5kZWZhdWx0TmFtZXNwYWNlKTsKICAgICAgICAgfQogICAgIH0KICAgICB8IG5hbWVzcGFj
ZV9zZWxlY3RvciBzcGVjaWZpZXJfbGlzdCBtYXliZV9zcGFjZSB7CkBAIC02OTcsNyArNjk1LDcg
QEAKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSBhdG9taWNTdHJp
bmcoJDEpOwogICAgICAgICAgICAgQ1NTUGFyc2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2Vy
ICo+KHBhcnNlcik7CiAgICAgICAgICAgICBpZiAocC0+c3R5bGVFbGVtZW50ICYmIHAtPnN0eWxl
RWxlbWVudC0+aXNDU1NTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICAgICAgJCQtPnRhZyA9IFF1
YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LAorICAgICAgICAgICAgICAgICQkLT5tX3RhZyA9
IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXJBdG9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihwLT5zdHlsZUVsZW1lbnQpLT5k
ZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSk7CiAgICAgICAgIH0KQEAgLTcyOSwx
MCArNzI3LDEwIEBACiAgICAgICAgIGlmICgkJCkgewogICAgICAgICAgICAgQ1NTUGFyc2VyKiBw
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgICAgIENTU1NlbGVj
dG9yKiBlbmQgPSAkMTsKLSAgICAgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkpCi0gICAg
ICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5OworICAgICAgICAgICAgd2hpbGUgKGVu
ZC0+bV90YWdIaXN0b3J5KQorICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+bV90YWdIaXN0b3J5
OwogICAgICAgICAgICAgZW5kLT5tX3JlbGF0aW9uID0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9y
OwotICAgICAgICAgICAgZW5kLT50YWdIaXN0b3J5ID0gcC0+c2lua0Zsb2F0aW5nU2VsZWN0b3Io
JDIpOworICAgICAgICAgICAgZW5kLT5tX3RhZ0hpc3RvcnkgPSBwLT5zaW5rRmxvYXRpbmdTZWxl
Y3RvcigkMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCBlcnJvciB7
CkBAIC03NDQsMTEgKzc0MiwxMSBAQAogICAgIEhBU0ggewogICAgICAgICBDU1NQYXJzZXIgKnAg
PSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5jcmVh
dGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5tYXRjaCA9IENTU1NlbGVjdG9yOjpJ
ZDsKKyAgICAgICAgJCQtPm1fbWF0Y2ggPSBDU1NTZWxlY3Rvcjo6SWQ7CiAgICAgICAgIGlmICgh
cC0+c3RyaWN0KQogICAgICAgICAgICAgJDEubG93ZXIoKTsKLSAgICAgICAgJCQtPmF0dHIgPSBp
ZEF0dHI7Ci0gICAgICAgICQkLT52YWx1ZSA9IGF0b21pY1N0cmluZygkMSk7CisgICAgICAgICQk
LT5tX2F0dHIgPSBpZEF0dHI7CisgICAgICAgICQkLT5tX3ZhbHVlID0gYXRvbWljU3RyaW5nKCQx
KTsKICAgICB9CiAgIHwgY2xhc3MKICAgfCBhdHRyaWIKQEAgLTc1OSwxMSArNzU3LDExIEBACiAg
ICAgJy4nIElERU5UIHsKICAgICAgICAgQ1NTUGFyc2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFy
c2VyICo+KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rvcigp
OwotICAgICAgICAkJC0+bWF0Y2ggPSBDU1NTZWxlY3Rvcjo6Q2xhc3M7CisgICAgICAgICQkLT5t
X21hdGNoID0gQ1NTU2VsZWN0b3I6OkNsYXNzOwogICAgICAgICBpZiAoIXAtPnN0cmljdCkKICAg
ICAgICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQkLT5hdHRyID0gY2xhc3NBdHRyOwotICAg
ICAgICAkJC0+dmFsdWUgPSBhdG9taWNTdHJpbmcoJDIpOworICAgICAgICAkJC0+bV9hdHRyID0g
Y2xhc3NBdHRyOworICAgICAgICAkJC0+bV92YWx1ZSA9IGF0b21pY1N0cmluZygkMik7CiAgICAg
fQogICA7CiAKQEAgLTc4MSwzMyArNzc5LDMzIEBACiBhdHRyaWI6CiAgICAgJ1snIG1heWJlX3Nw
YWNlIGF0dHJfbmFtZSAnXScgewogICAgICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+
KHBhcnNlciktPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPmF0dHIgPSBR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCBhdG9taWNTdHJpbmcoJDMpLCBudWxsQXRvbSk7Ci0gICAg
ICAgICQkLT5tYXRjaCA9IENTU1NlbGVjdG9yOjpTZXQ7CisgICAgICAgICQkLT5tX2F0dHIgPSBR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCBhdG9taWNTdHJpbmcoJDMpLCBudWxsQXRvbSk7CisgICAg
ICAgICQkLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OlNldDsKICAgICB9CiAgICAgfCAnWycgbWF5
YmVfc3BhY2UgYXR0cl9uYW1lIG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29yX3N0cmluZyBtYXli
ZV9zcGFjZSAnXScgewogICAgICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNl
ciktPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPmF0dHIgPSBRdWFsaWZp
ZWROYW1lKG51bGxBdG9tLCBhdG9taWNTdHJpbmcoJDMpLCBudWxsQXRvbSk7Ci0gICAgICAgICQk
LT5tYXRjaCA9IChDU1NTZWxlY3Rvcjo6TWF0Y2gpJDQ7Ci0gICAgICAgICQkLT52YWx1ZSA9IGF0
b21pY1N0cmluZygkNik7CisgICAgICAgICQkLT5tX2F0dHIgPSBRdWFsaWZpZWROYW1lKG51bGxB
dG9tLCBhdG9taWNTdHJpbmcoJDMpLCBudWxsQXRvbSk7CisgICAgICAgICQkLT5tX21hdGNoID0g
KENTU1NlbGVjdG9yOjpNYXRjaCkkNDsKKyAgICAgICAgJCQtPm1fdmFsdWUgPSBhdG9taWNTdHJp
bmcoJDYpOwogICAgIH0KICAgICB8ICdbJyBtYXliZV9zcGFjZSBuYW1lc3BhY2Vfc2VsZWN0b3Ig
YXR0cl9uYW1lICddJyB7CiAgICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSBh
dG9taWNTdHJpbmcoJDMpOwogICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQ
YXJzZXIgKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7Ci0gICAgICAgICQkLT5hdHRyID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsCisg
ICAgICAgICQkLT5tX2F0dHIgPSBRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0b21pY1N0cmluZygkNCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4ocC0+c3R5
bGVFbGVtZW50KS0+ZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkpOwotICAgICAg
ICAkJC0+bWF0Y2ggPSBDU1NTZWxlY3Rvcjo6U2V0OworICAgICAgICAkJC0+bV9tYXRjaCA9IENT
U1NlbGVjdG9yOjpTZXQ7CiAgICAgfQogICAgIHwgJ1snIG1heWJlX3NwYWNlIG5hbWVzcGFjZV9z
ZWxlY3RvciBhdHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5nIG1heWJl
X3NwYWNlICddJyB7CiAgICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSBhdG9t
aWNTdHJpbmcoJDMpOwogICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJz
ZXIgKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
Ci0gICAgICAgICQkLT5hdHRyID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsCisgICAg
ICAgICQkLT5tX2F0dHIgPSBRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF0b21pY1N0cmluZygkNCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4ocC0+c3R5bGVF
bGVtZW50KS0+ZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkpOwotICAgICAgICAk
JC0+bWF0Y2ggPSAoQ1NTU2VsZWN0b3I6Ok1hdGNoKSQ1OwotICAgICAgICAkJC0+dmFsdWUgPSBh
dG9taWNTdHJpbmcoJDcpOworICAgICAgICAkJC0+bV9tYXRjaCA9IChDU1NTZWxlY3Rvcjo6TWF0
Y2gpJDU7CisgICAgICAgICQkLT5tX3ZhbHVlID0gYXRvbWljU3RyaW5nKCQ3KTsKICAgICB9CiAg
IDsKIApAQCAtODQwLDExICs4MzgsMTEgQEAKIHBzZXVkbzoKICAgICAnOicgSURFTlQgewogICAg
ICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUZsb2F0aW5n
U2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPm1hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
OworICAgICAgICAkJC0+bV9tYXRjaCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzczsKICAgICAg
ICAgJDIubG93ZXIoKTsKLSAgICAgICAgJCQtPnZhbHVlID0gYXRvbWljU3RyaW5nKCQyKTsKLSAg
ICAgICAgaWYgKCQkLT52YWx1ZSA9PSAiZW1wdHkiIHx8ICQkLT52YWx1ZSA9PSAib25seS1jaGls
ZCIgfHwKLSAgICAgICAgICAgICQkLT52YWx1ZSA9PSAiZmlyc3QtY2hpbGQiIHx8ICQkLT52YWx1
ZSA9PSAibGFzdC1jaGlsZCIpIHsKKyAgICAgICAgJCQtPm1fdmFsdWUgPSBhdG9taWNTdHJpbmco
JDIpOworICAgICAgICBpZiAoJCQtPm1fdmFsdWUgPT0gImVtcHR5IiB8fCAkJC0+bV92YWx1ZSA9
PSAib25seS1jaGlsZCIgfHwKKyAgICAgICAgICAgICQkLT5tX3ZhbHVlID09ICJmaXJzdC1jaGls
ZCIgfHwgJCQtPm1fdmFsdWUgPT0gImxhc3QtY2hpbGQiKSB7CiAgICAgICAgICAgICBDU1NQYXJz
ZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2VyKTsKICAgICAgICAgICAgIERv
Y3VtZW50ICpkb2MgPSBwLT5kb2N1bWVudCgpOwogICAgICAgICAgICAgaWYgKGRvYykKQEAgLTg1
MywyNiArODUxLDI2IEBACiAgICAgfQogICAgIHwgJzonICc6JyBJREVOVCB7CiAgICAgICAgICQk
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOwotICAgICAgICAkJC0+bWF0Y2ggPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudDsKKyAg
ICAgICAgJCQtPm1fbWF0Y2ggPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudDsKICAgICAgICAg
JDMubG93ZXIoKTsKLSAgICAgICAgJCQtPnZhbHVlID0gYXRvbWljU3RyaW5nKCQzKTsKKyAgICAg
ICAgJCQtPm1fdmFsdWUgPSBhdG9taWNTdHJpbmcoJDMpOwogICAgIH0KICAgICAvLyB1c2VkIGJ5
IDpsYW5nCiAgICAgfCAnOicgRlVOQ1RJT04gSURFTlQgJyknIHsKICAgICAgICAgJCQgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0g
ICAgICAgICQkLT5tYXRjaCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzczsKLSAgICAgICAgJCQt
PmFyZ3VtZW50ID0gYXRvbWljU3RyaW5nKCQzKTsKKyAgICAgICAgJCQtPm1fbWF0Y2ggPSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3M7CisgICAgICAgICQkLT5tX2FyZ3VtZW50ID0gYXRvbWljU3Ry
aW5nKCQzKTsKICAgICAgICAgJDIubG93ZXIoKTsKLSAgICAgICAgJCQtPnZhbHVlID0gYXRvbWlj
U3RyaW5nKCQyKTsKKyAgICAgICAgJCQtPm1fdmFsdWUgPSBhdG9taWNTdHJpbmcoJDIpOwogICAg
IH0KICAgICAvLyB1c2VkIGJ5IDpub3QKICAgICB8ICc6JyBOT1RGVU5DVElPTiBtYXliZV9zcGFj
ZSBzaW1wbGVfc2VsZWN0b3IgJyknIHsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nh
c3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1Nl
bGVjdG9yKCk7Ci0gICAgICAgICQkLT5tYXRjaCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzczsK
LSAgICAgICAgJCQtPnNpbXBsZVNlbGVjdG9yID0gcC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQp
OworICAgICAgICAkJC0+bV9tYXRjaCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzczsKKyAgICAg
ICAgJCQtPm1fc2ltcGxlU2VsZWN0b3IgPSBwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCk7CiAg
ICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQkLT52YWx1ZSA9IGF0b21pY1N0cmluZygkMik7
CisgICAgICAgICQkLT5tX3ZhbHVlID0gYXRvbWljU3RyaW5nKCQyKTsKICAgICB9CiAgIDsKIApA
QCAtMTAzOSw3ICsxMDM3LDcgQEAKICAgfCBVTklDT0RFUkFOR0UgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLmlWYWx1ZSA9IDA7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VO
S05PV047LyogIyMjICovIH0KICAgfCBoZXhjb2xvciB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JHQkNPTE9SOyB9CiAgIHwgJyMn
IG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSBQYXJzZVN0cmluZygpOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SR0JDT0xPUjsgfSAvKiBIYW5kbGUgZXJyb3Ig
Y2FzZTogImNvbG9yOiAjOyIgKi8KLS8qICMjIyBhY2NvcmRpbmcgdG8gdGhlIHNwZWNzIGEgZnVu
Y3Rpb24gY2FuIGhhdmUgYSB1bmFyeV9vcGVyYXRvciBpbiBmcm9udC4gSSBrbm93IG5vIGNhc2Ug
d2hlcmUgdGhpcyBtYWtlcyBzZW5zZSAqLworLyogRklYTUU6IGFjY29yZGluZyB0byB0aGUgc3Bl
Y3MgYSBmdW5jdGlvbiBjYW4gaGF2ZSBhIHVuYXJ5X29wZXJhdG9yIGluIGZyb250LiBJIGtub3cg
bm8gY2FzZSB3aGVyZSB0aGlzIG1ha2VzIHNlbnNlICovCiAgIHwgZnVuY3Rpb24gewogICAgICAg
JCQgPSAkMTsKICAgfQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuaAkocmV2aXNpb24g
MTg4MzQpCisrKyBXZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDggKzIwLDggQEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICov
CiAKLSNpZm5kZWYgQ1NTQm9yZGVySW1hZ2VWYWx1ZV9ICi0jZGVmaW5lIENTU0JvcmRlckltYWdl
VmFsdWVfSAorI2lmbmRlZiBDU1NCb3JkZXJJbWFnZVZhbHVlX2gKKyNkZWZpbmUgQ1NTQm9yZGVy
SW1hZ2VWYWx1ZV9oCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CkBAIC0zMiw4ICszMiw3IEBACiBjbGFzcyBDU1NJbWFnZVZhbHVlOwogY2xhc3Mg
UmVjdEltcGw7CiAKLWNsYXNzIENTU0JvcmRlckltYWdlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUK
LXsKK2NsYXNzIENTU0JvcmRlckltYWdlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGlj
OgogICAgIENTU0JvcmRlckltYWdlVmFsdWUoKTsKICAgICBDU1NCb3JkZXJJbWFnZVZhbHVlKFBh
c3NSZWZQdHI8Q1NTSW1hZ2VWYWx1ZT4sIFBhc3NSZWZQdHI8UmVjdEltcGw+LCBpbnQgaG9yaXpv
bnRhbFJ1bGUsIGludCB2ZXJ0aWNhbFJ1bGUpOwpAQCAtNTMsNiArNTIsNiBAQAogICAgIGludCBt
X3ZlcnRpY2FsU2l6ZVJ1bGU7IC8vIFJ1bGUgZm9yIGhvdyB0byBhZGp1c3QgdGhlIGhlaWdodHMg
b2YgdGhlIGxlZnQvbWlkZGxlL3JpZ2h0CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBDU1NCb3JkZXJJbWFnZVZhbHVlX2gK
SW5kZXg6IFdlYkNvcmUvY3NzL2Nzc2hlbHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L2Nzc2hlbHBlci5oCShyZXZpc2lvbiAxODgzNCkKKysrIFdlYkNvcmUvY3NzL2Nzc2hlbHBlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBACiAgKgogICovCiAKLSNpZm5kZWYgY3Nz
X2hlbHBlcl9oCi0jZGVmaW5lIGNzc19oZWxwZXJfaAorI2lmbmRlZiBjc3NoZWxwZXJfaAorI2Rl
ZmluZSBjc3NoZWxwZXJfaAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMyLDYgKzMyLDYg
QEAKICAgICAgKi8KICAgICBTdHJpbmcgcGFyc2VVUkwoY29uc3QgU3RyaW5nICZ1cmwpOwogCi19
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIGNzc2hlbHBlcl9o
CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NRdWlya1ByaW1pdGl2ZVZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZS5oCShyZXZpc2lvbiAxODgzNCkK
KysrIFdlYkNvcmUvY3NzL0NTU1F1aXJrUHJpbWl0aXZlVmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjAsOCArMjAsOCBAQAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAot
I2lmbmRlZiBDU1NRdWlya1ByaW1pdGl2ZVZhbHVlX0gKLSNkZWZpbmUgQ1NTUXVpcmtQcmltaXRp
dmVWYWx1ZV9ICisjaWZuZGVmIENTU1F1aXJrUHJpbWl0aXZlVmFsdWVfaAorI2RlZmluZSBDU1NR
dWlya1ByaW1pdGl2ZVZhbHVlX2gKIAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAK
QEAgLTMxLDE1ICszMSwxNiBAQAogLy8gVGhlIGJhc2ljIGlkZWEgaXMgdGhhdCBhIHN0eWxlc2hl
ZXQgY2FuIHVzZSB0aGUgdmFsdWUgX19xZW0gKGZvciBxdWlya3kgZW0pIGluc3RlYWQgb2YgZW0K
IC8vIGluIGEgc3R5bGVzaGVldC4gIFdoZW4gdGhlIHF1aXJreSB2YWx1ZSBpcyB1c2VkLCBpZiB5
b3UncmUgaW4gcXVpcmtzIG1vZGUsIHRoZSBtYXJnaW4gd2lsbAogLy8gY29sbGFwc2UgYXdheSBp
bnNpZGUgYSB0YWJsZSBjZWxsLgotY2xhc3MgQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZSA6IHB1Ymxp
YyBDU1NQcmltaXRpdmVWYWx1ZQoteworY2xhc3MgQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZSA6IHB1
YmxpYyBDU1NQcmltaXRpdmVWYWx1ZSB7CiBwdWJsaWM6CiAgICAgQ1NTUXVpcmtQcmltaXRpdmVW
YWx1ZShkb3VibGUgbnVtLCBVbml0VHlwZXMgdHlwZSkKLSAgICAgICAgOiBDU1NQcmltaXRpdmVW
YWx1ZShudW0sIHR5cGUpIHt9CisgICAgICAgIDogQ1NTUHJpbWl0aXZlVmFsdWUobnVtLCB0eXBl
KQorICAgIHsKKyAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNRdWlya1ZhbHVlKCkgeyByZXR1
cm4gdHJ1ZTsgfQogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotI2VuZGlmCisjZW5kaWYgLy8gQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZV9oCkluZGV4OiBXZWJD
b3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NT
U0luaXRpYWxWYWx1ZS5jcHAJKHJldmlzaW9uIDE4ODM0KQorKysgV2ViQ29yZS9jc3MvQ1NTSW5p
dGlhbFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksNyBAQAogICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw
LAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgogCkBAIC0zNiw0ICszNyw0IEBACiAg
ICAgcmV0dXJuICJpbml0aWFsIjsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTTmFtZXNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Q1NTTmFtZXNwYWNlLmgJKHJldmlzaW9uIDE4ODM0KQorKysgV2ViQ29yZS9jc3MvQ1NTTmFtZXNw
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKICAqIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgogICovCiAKLSNpZm5kZWYgQ1NTTmFtZXNwYWNlX0gKLSNkZWZpbmUgQ1NT
TmFtZXNwYWNlX0gKKyNpZm5kZWYgQ1NTTmFtZXNwYWNlX2gKKyNkZWZpbmUgQ1NTTmFtZXNwYWNl
X2gKIAogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogCkBAIC0zMywxMCArMzMsMTIgQEAKICAg
ICAgICAgQXRvbWljU3RyaW5nIG1fdXJpOwogICAgICAgICBDU1NOYW1lc3BhY2UqIG1fcGFyZW50
OwogCi0gICAgICAgIENTU05hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHAsIGNvbnN0IEF0
b21pY1N0cmluZyYgdSwgQ1NTTmFtZXNwYWNlKiBwYXJlbnQpIAotICAgICAgICAgICAgOiBtX3By
ZWZpeChwKQotICAgICAgICAgICAgLCBtX3VyaSh1KQotICAgICAgICAgICAgLCBtX3BhcmVudChw
YXJlbnQpIHt9CisgICAgICAgIENTU05hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZp
eCwgY29uc3QgQXRvbWljU3RyaW5nJiB1cmksIENTU05hbWVzcGFjZSogcGFyZW50KQorICAgICAg
ICAgICAgOiBtX3ByZWZpeChwcmVmaXgpCisgICAgICAgICAgICAsIG1fdXJpKHVyaSkKKyAgICAg
ICAgICAgICwgbV9wYXJlbnQocGFyZW50KQorICAgICAgICB7CisgICAgICAgIH0KICAgICAgICAg
fkNTU05hbWVzcGFjZSgpIHsgZGVsZXRlIG1fcGFyZW50OyB9CiAgICAgICAgIAogICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHVyaSgpIHsgcmV0dXJuIG1fdXJpOyB9CkBAIC01MSw2ICs1Myw3
IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH07Ci19CiAKLSNlbmRp
ZgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTTmFtZXNwYWNlX2gKSW5k
ZXg6IFdlYkNvcmUvY3NzL0NTU1J1bGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Q1NTUnVsZUxpc3QuaAkocmV2aXNpb24gMTg4MzQpCisrKyBXZWJDb3JlL2Nzcy9DU1NSdWxlTGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxOSArMjEsMTggQEAKICAqIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgogICovCiAKLSNpZm5kZWYgQ1NTUnVsZUxpc3RfSAotI2RlZmluZSBDU1NS
dWxlTGlzdF9ICisjaWZuZGVmIENTU1J1bGVMaXN0X2gKKyNkZWZpbmUgQ1NTUnVsZUxpc3RfaAog
Ci0jaW5jbHVkZSAiU2hhcmVkLmgiCiAjaW5jbHVkZSAiRGVwcmVjYXRlZFB0ckxpc3QuaCIKKyNp
bmNsdWRlICJTaGFyZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NSdWxl
OwogY2xhc3MgU3R5bGVMaXN0OwogCi1jbGFzcyBDU1NSdWxlTGlzdCA6IHB1YmxpYyBTaGFyZWQ8
Q1NTUnVsZUxpc3Q+Ci17CitjbGFzcyBDU1NSdWxlTGlzdCA6IHB1YmxpYyBTaGFyZWQ8Q1NTUnVs
ZUxpc3Q+IHsKIHB1YmxpYzoKICAgICBDU1NSdWxlTGlzdCgpOwogICAgIENTU1J1bGVMaXN0KFN0
eWxlTGlzdCosIGJvb2wgb21pdENoYXJzZXRSdWxlcyA9IGZhbHNlKTsKQEAgLTQzLDE0ICs0Miwx
NCBAQAogICAgIENTU1J1bGUqIGl0ZW0gKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBtX2xzdENT
U1J1bGVzLmF0KGluZGV4KTsgfQogCiAgICAgLyogbm90IHBhcnQgb2YgdGhlIERPTSAqLwotICAg
IHVuc2lnbmVkIGluc2VydFJ1bGUgKENTU1J1bGUqIHJ1bGUsIHVuc2lnbmVkIGluZGV4KTsKKyAg
ICB1bnNpZ25lZCBpbnNlcnRSdWxlKENTU1J1bGUqLCB1bnNpZ25lZCBpbmRleCk7CiAgICAgdm9p
ZCBkZWxldGVSdWxlICh1bnNpZ25lZCBpbmRleCk7Ci0gICAgdm9pZCBhcHBlbmQoQ1NTUnVsZSog
cnVsZSk7CisgICAgdm9pZCBhcHBlbmQoQ1NTUnVsZSopOwogCiBwcm90ZWN0ZWQ6CiAgICAgRGVw
cmVjYXRlZFB0ckxpc3Q8Q1NTUnVsZT4gbV9sc3RDU1NSdWxlczsKIH07CiAKLX0gLy8gbmFtZXNw
YWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIENTU1J1bGVM
aXN0X2gKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAxODgz
NCkKKysrIFdlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOCwxOCArMTgsMjAgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLgogICovCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJ
bWFnZVZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgSW50UG9pbnQm
IHAsIFN0eWxlQmFzZSogc3R5bGUpCitDU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFn
ZVZhbHVlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBJbnRQb2ludCYgaG90c3BvdCwgU3R5bGVC
YXNlKiBzdHlsZSkKICAgICA6IENTU0ltYWdlVmFsdWUodXJsLCBzdHlsZSkKLSAgICAsIG1faG90
c3BvdChwKQorICAgICwgbV9ob3RzcG90KGhvdHNwb3QpCiB7CiB9CiAKIENTU0N1cnNvckltYWdl
VmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKCkKIHsKIH0KLX0KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDE4ODM0KQorKysgV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDEyICsxOSwx
MyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBs
YWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KKwog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKIAorI2luY2x1
ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDYWNoZS5oIgogI2luY2x1ZGUgIkNh
Y2hlZEltYWdlLmgiCi0jaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkRv
Y0xvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw0ICs2OCw0IEBACiAgICAg
cmV0dXJuIG1faW1hZ2U7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>